diff --git a/backend/routes/rooms.py b/backend/routes/rooms.py index 6be2179f..8ccc582f 100644 --- a/backend/routes/rooms.py +++ b/backend/routes/rooms.py @@ -649,12 +649,14 @@ def post_stroke(roomId): try: import nacl.signing, nacl.encoding vk = nacl.signing.VerifyKey(spk, encoder=nacl.encoding.HexEncoder) - msg = json.dumps({ + msg_data = { "roomId": roomId, "user": stroke["user"], "color": stroke["color"], "lineWidth": stroke["lineWidth"], "pathData": stroke["pathData"], "timestamp": stroke.get("timestamp", stroke["ts"]) - }, separators=(',', ':'), sort_keys=True).encode() + } + msg = json.dumps(msg_data, separators=(',', ':'), sort_keys=True).encode() vk.verify(msg, bytes.fromhex(sig)) - except Exception: + except Exception as e: + logger.error(f"Signature verification failed for room {roomId}: {str(e)}") return jsonify({"status":"error","message":"Bad signature"}), 400 stroke["walletSignature"] = sig stroke["walletPubKey"] = spk diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7a7f393e..212b91ae 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -15,6 +15,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "bs58": "^6.0.0", "clipper-lib": "^6.4.2", "react": "^17.0.0 || ^18.0.0", "react-color": "^2.19.3", @@ -94,7 +95,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.0", @@ -714,7 +714,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -1524,7 +1523,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-module-imports": "^7.25.9", @@ -2328,7 +2326,6 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz", "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -2372,7 +2369,6 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.5.tgz", "integrity": "sha512-gnOQ+nGLPvDXgIx119JqGalys64lhMdnNQA9TMxhDA4K0Hq5+++OE20Zs5GxiCV9r814xQ2K5WmtofSpHVW6BQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -3053,7 +3049,6 @@ "version": "6.4.7", "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.7.tgz", "integrity": "sha512-K65StXUeGAtFJ4ikvHKtmDCO5Ab7g0FZUu2J5VpoKD+O6Y3CjLYzRi+TMlI3kaL4CL158+FccMoOd/eaddmeRQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.26.0", "@mui/core-downloads-tracker": "^6.4.7", @@ -3723,6 +3718,7 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -3741,6 +3737,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "peer": true, "dependencies": { "dequal": "^2.0.3" } @@ -4316,7 +4313,6 @@ "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4440,7 +4436,6 @@ "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -4492,7 +4487,6 @@ "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -4832,7 +4826,6 @@ "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4911,7 +4904,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5566,6 +5558,12 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", + "license": "MIT" + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -5714,7 +5712,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -5728,6 +5725,15 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -7563,7 +7569,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -10383,7 +10388,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "peer": true, "dependencies": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -13429,7 +13433,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -14522,7 +14525,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -14866,7 +14868,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -15029,7 +15030,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -15078,7 +15078,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -15863,7 +15862,6 @@ "version": "2.79.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -16077,7 +16075,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -17621,7 +17618,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "peer": true, "engines": { "node": ">=10" }, @@ -18161,7 +18157,6 @@ "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -18229,7 +18224,6 @@ "version": "4.15.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "peer": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -18628,7 +18622,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -19044,7 +19037,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "peer": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.0", @@ -19461,7 +19453,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.25.9" } @@ -19953,7 +19944,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", - "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-module-imports": "^7.25.9", @@ -20467,7 +20457,6 @@ "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz", "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==", - "peer": true, "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -20500,7 +20489,6 @@ "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.5.tgz", "integrity": "sha512-gnOQ+nGLPvDXgIx119JqGalys64lhMdnNQA9TMxhDA4K0Hq5+++OE20Zs5GxiCV9r814xQ2K5WmtofSpHVW6BQ==", - "peer": true, "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -20990,7 +20978,6 @@ "version": "6.4.7", "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.7.tgz", "integrity": "sha512-K65StXUeGAtFJ4ikvHKtmDCO5Ab7g0FZUu2J5VpoKD+O6Y3CjLYzRi+TMlI3kaL4CL158+FccMoOd/eaddmeRQ==", - "peer": true, "requires": { "@babel/runtime": "^7.26.0", "@mui/core-downloads-tracker": "^6.4.7", @@ -21366,6 +21353,7 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "peer": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -21381,6 +21369,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "peer": true, "requires": { "dequal": "^2.0.3" } @@ -21893,7 +21882,6 @@ "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "peer": true, "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -22014,7 +22002,6 @@ "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "peer": true, "requires": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -22040,7 +22027,6 @@ "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "peer": true, "requires": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -22297,8 +22283,7 @@ "acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "peer": true + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" }, "acorn-globals": { "version": "6.0.0", @@ -22353,7 +22338,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -22813,6 +22797,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==" + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -22927,7 +22916,6 @@ "version": "4.24.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "peer": true, "requires": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -22935,6 +22923,14 @@ "update-browserslist-db": "^1.1.1" } }, + "bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "requires": { + "base-x": "^5.0.0" + } + }, "bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -24236,7 +24232,6 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "peer": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -26187,7 +26182,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "peer": true, "requires": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -28303,7 +28297,6 @@ "version": "8.4.47", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", - "peer": true, "requires": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -28899,7 +28892,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "peer": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -29150,7 +29142,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "peer": true, "requires": { "loose-envify": "^1.1.0" } @@ -29273,7 +29264,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, "requires": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -29309,8 +29299,7 @@ "react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "peer": true + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, "react-router": { "version": "7.0.2", @@ -29848,7 +29837,6 @@ "version": "2.79.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", - "peer": true, "requires": { "fsevents": "~2.3.2" } @@ -29973,7 +29961,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, "requires": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -31149,8 +31136,7 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "peer": true + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" }, "type-is": { "version": "1.6.18", @@ -31526,7 +31512,6 @@ "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "peer": true, "requires": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -31595,7 +31580,6 @@ "version": "4.15.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "peer": true, "requires": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -31862,7 +31846,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, "requires": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", diff --git a/frontend/package.json b/frontend/package.json index b963a141..2d36a83e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "bs58": "^6.0.0", "clipper-lib": "^6.4.2", "react": "^17.0.0 || ^18.0.0", "react-color": "^2.19.3", diff --git a/frontend/src/components/Canvas.js b/frontend/src/components/Canvas.js index 56eb588a..05e8a694 100644 --- a/frontend/src/components/Canvas.js +++ b/frontend/src/components/Canvas.js @@ -773,7 +773,7 @@ function Canvas({ selectionRect, setSelectionRect, cutImageData, setCutImageData, handleCutSelection, - } = useCanvasSelection(canvasRef, currentUser, userData, generateId, drawAllDrawings, currentRoomId, setUndoAvailable, setRedoAvailable, auth); + } = useCanvasSelection(canvasRef, currentUser, userData, generateId, drawAllDrawings, currentRoomId, setUndoAvailable, setRedoAvailable, auth, roomType); // Draw a preview of a shape (for shape mode) const drawShapePreview = (start, end, shape, color, lineWidth) => { diff --git a/frontend/src/components/WalletConnector.jsx b/frontend/src/components/WalletConnector.jsx index c5f4e999..95c2c696 100644 --- a/frontend/src/components/WalletConnector.jsx +++ b/frontend/src/components/WalletConnector.jsx @@ -60,7 +60,20 @@ export default function WalletConnector({ roomType, onConnected, onDisconnected setStatus({ connected: true, publicKey: pubKey }); } catch (err) { console.error('Wallet connection failed:', err); - setError(err.message || 'Failed to connect wallet'); + + // Provide helpful error message + let errorMsg = err.message || 'Failed to connect wallet'; + + if (errorMsg.includes('not connected') || errorMsg.includes('No keys found')) { + errorMsg = 'Please connect your wallet to this site first:\n\n' + + '1. Click the ResVault extension icon in your browser\n' + + '2. Make sure you are logged in to ResVault\n' + + '3. In the ResVault dashboard, select the network you want to use\n' + + '4. Click the connection icon to connect to this site\n' + + '5. Then try connecting again here'; + } + + setError(errorMsg); } finally { setLoading(false); } @@ -144,9 +157,26 @@ export default function WalletConnector({ roomType, onConnected, onDisconnected sx={{ mt: 2 }} onClose={() => setError(null)} > - + + Wallet Connection Failed + + {error} + {error.includes('WALLET_NOT_CONNECTED') && ( + + + How to connect: + + +
  • Click the ResVault extension icon in your browser toolbar
  • +
  • Make sure you're logged in to ResVault
  • +
  • Select your desired network (e.g., ResilientDB Mainnet)
  • +
  • Click the globe/connection icon to connect to this site
  • +
  • Return here and click "Connect Wallet" again
  • +
    +
    + )} {error.includes('extension') && ( Please install the ResVault Chrome extension from:{' '} diff --git a/frontend/src/hooks/useCanvasSelection.js b/frontend/src/hooks/useCanvasSelection.js index e55b47b9..49fffdc3 100644 --- a/frontend/src/hooks/useCanvasSelection.js +++ b/frontend/src/hooks/useCanvasSelection.js @@ -3,7 +3,7 @@ import ClipperLib from 'clipper-lib'; import { submitToDatabase } from '../services/canvasBackendJWT'; import { Drawing } from '../lib/drawing'; -export function useCanvasSelection(canvasRef, currentUser, userData, generateId, drawAllDrawings, currentRoomId, setUndoAvailable, setRedoAvailable, auth) { +export function useCanvasSelection(canvasRef, currentUser, userData, generateId, drawAllDrawings, currentRoomId, setUndoAvailable, setRedoAvailable, auth, roomType) { const [selectionStart, setSelectionStart] = useState(null); const [selectionRect, setSelectionRect] = useState(null); const [cutImageData, setCutImageData] = useState(null); @@ -420,7 +420,7 @@ export function useCanvasSelection(canvasRef, currentUser, userData, generateId, for (const segment of allReplacementSegments) { try { - await submitToDatabase(segment, auth, { roomId: currentRoomId, skipUndoCheck: true, skipUndoStack: true }, setUndoAvailable, setRedoAvailable); + await submitToDatabase(segment, auth, { roomId: currentRoomId, roomType, skipUndoCheck: true, skipUndoStack: true }, setUndoAvailable, setRedoAvailable); } catch (error) { console.error("Failed to submit replacement segment:", segment, error); } @@ -444,7 +444,7 @@ export function useCanvasSelection(canvasRef, currentUser, userData, generateId, ); userData.addDrawing(cutRecord); - await submitToDatabase(cutRecord, auth, { roomId: currentRoomId }, setUndoAvailable, setRedoAvailable); + await submitToDatabase(cutRecord, auth, { roomId: currentRoomId, roomType }, setUndoAvailable, setRedoAvailable); drawAllDrawings(); // Only 1 backend undo operation: the cut record itself diff --git a/frontend/src/wallet/resvault.js b/frontend/src/wallet/resvault.js index c7e0dd11..7f2a6678 100644 --- a/frontend/src/wallet/resvault.js +++ b/frontend/src/wallet/resvault.js @@ -1,4 +1,6 @@ import ResVaultSDK from 'resvault-sdk'; +import nacl from 'tweetnacl'; +import bs58 from 'bs58'; /** * Lightweight wrapper around ResVault postMessage API. @@ -145,6 +147,8 @@ export async function getWalletPublicKey() { */ export async function signMessageHex(messageUint8Array) { return new Promise((resolve, reject) => { + let keysHandler = null; + const handler = (event) => { try { const d = (event && event.data) || {}; @@ -153,10 +157,51 @@ export async function signMessageHex(messageUint8Array) { const wrapped = (d && d.type === 'FROM_CONTENT_SCRIPT' && d.data) ? d.data : d; const payload = wrapped.resvault || wrapped.payload || wrapped.data || wrapped; + // Check if we received keys for signing + if (payload.type === 'signWithKeys' && payload.direction === 'request') { + if (VERBOSE_LOG) console.debug('[resvault] received keys for signing, performing local signature'); + + // Remove this handler since we got the keys + sdk.removeMessageListener(handler); + if (keysHandler) sdk.removeMessageListener(keysHandler); + clearTimeout(timeoutId); + + try { + // Decode the Base58-encoded private key + const privateKeyBytes = bs58.decode(payload.privateKey); + + // Generate keypair from the seed (first 32 bytes) + let keyPair; + if (privateKeyBytes.length === 32) { + keyPair = nacl.sign.keyPair.fromSeed(privateKeyBytes); + } else if (privateKeyBytes.length === 64) { + keyPair = nacl.sign.keyPair.fromSecretKey(privateKeyBytes); + } else { + throw new Error('Invalid private key length: ' + privateKeyBytes.length); + } + + // Sign the message + const signature = nacl.sign.detached(messageUint8Array, keyPair.secretKey); + + // Convert to hex + const signatureHex = Array.from(signature) + .map(b => b.toString(16).padStart(2, '0')) + .join(''); + + if (VERBOSE_LOG) console.debug('[resvault] signature generated:', signatureHex); + resolve(signatureHex); + } catch (error) { + console.error('[resvault] error during local signing:', error); + reject(new Error('Local signing failed: ' + error.message)); + } + return; + } + const signature = payload.signature || payload.sig || (payload.data && payload.data.signature); if ((payload.type === 'sign' && payload.direction === 'response') || signature) { sdk.removeMessageListener(handler); + if (keysHandler) sdk.removeMessageListener(keysHandler); clearTimeout(timeoutId); if (signature) { resolve(signature); @@ -169,6 +214,7 @@ export async function signMessageHex(messageUint8Array) { // If wrapper reported a failure for signing, surface it if (typeof payload.success !== 'undefined' && payload.success === false) { sdk.removeMessageListener(handler); + if (keysHandler) sdk.removeMessageListener(keysHandler); clearTimeout(timeoutId); const errMsg = payload.error || payload.message || 'Wallet signing failed'; reject(new Error(errMsg)); @@ -201,32 +247,61 @@ export async function signMessageHex(messageUint8Array) { */ export async function signStrokeForSecureRoom(roomId, stroke) { try { - const publicKey = await getWalletPublicKey(); - - const canonical = JSON.stringify({ + const publicKeyBase58 = await getWalletPublicKey(); + + // Convert Base58 public key to hex for backend + const publicKeyBytes = bs58.decode(publicKeyBase58); + const publicKeyHex = Array.from(publicKeyBytes) + .map(b => b.toString(16).padStart(2, '0')) + .join(''); + + // Create canonical JSON to match backend's exact format + // Backend uses: json.dumps({...}, separators=(',', ':'), sort_keys=True) + // This creates compact JSON with ALL keys sorted (including nested objects) + const dataToSign = { roomId: roomId, user: stroke.user, color: stroke.color, lineWidth: stroke.lineWidth, pathData: stroke.pathData, timestamp: stroke.timestamp || stroke.ts - }, Object.keys({ - color: null, - lineWidth: null, - pathData: null, - roomId: null, - timestamp: null, - user: null - }).sort()); + }; + + // Deep sort all keys to match Python's sort_keys=True behavior + function sortKeysDeep(obj) { + if (Array.isArray(obj)) { + return obj.map(item => sortKeysDeep(item)); + } else if (obj !== null && typeof obj === 'object') { + return Object.keys(obj).sort().reduce((result, key) => { + result[key] = sortKeysDeep(obj[key]); + return result; + }, {}); + } + return obj; + } + + const sortedData = sortKeysDeep(dataToSign); + const canonical = JSON.stringify(sortedData); + + if (VERBOSE_LOG) { + console.log('[resvault] Data to sign:', dataToSign); + console.log('[resvault] Canonical JSON:', canonical); + } const encoder = new TextEncoder(); const messageBytes = encoder.encode(canonical); const signature = await signMessageHex(messageBytes); + if (VERBOSE_LOG) { + console.log('[resvault] Signature generated:', signature.substring(0, 32) + '...'); + console.log('[resvault] Public key (Base58):', publicKeyBase58); + console.log('[resvault] Public key (Hex):', publicKeyHex.substring(0, 32) + '...'); + } + return { signature, - signerPubKey: publicKey + signerPubKey: publicKeyHex // Send hex format to backend }; } catch (error) { console.error('Failed to sign stroke:', error); @@ -236,19 +311,19 @@ export async function signStrokeForSecureRoom(roomId, stroke) { /** * Connect wallet for secure room usage + * This checks if the wallet is already connected to this domain + * If not, user must manually connect via the ResVault extension popup * @returns {Promise} Connected wallet public key */ export async function connectWalletForSecureRoom() { try { - await walletLogin(); + if (VERBOSE_LOG) console.log('[resvault] Checking wallet connection...'); + // Try to get the public key - this will work if user has already + // connected their wallet to this domain via the ResVault extension const pubKey = await getWalletPublicKey(); - // After obtaining the public key, inform any content-script/extension wrapper - // that may rely on the site's signer public key so it can include it in - // PrepareAsset payloads. Some ResVault wrappers listen for a message with - // type: 'siteSignerInfo' or similar — include a permissive message so - // content scripts can pick it up. + // Inform content script about the public key try { sdk.sendMessage({ type: 'siteSignerInfo', direction: 'info', signerPublicKey: pubKey }); } catch (err) { @@ -258,10 +333,20 @@ export async function connectWalletForSecureRoom() { isConnected = true; currentPublicKey = pubKey; + if (VERBOSE_LOG) console.log('[resvault] Wallet connected successfully:', pubKey); return pubKey; } catch (error) { isConnected = false; currentPublicKey = null; + + if (VERBOSE_LOG) console.error('[resvault] Wallet connection check failed:', error); + + // Provide a clear error message for users + const errorMsg = error.message || 'Wallet connection failed'; + if (errorMsg.includes('No keys found') || errorMsg.includes('not responding')) { + throw new Error('WALLET_NOT_CONNECTED: Please connect your ResVault wallet to this site first'); + } + throw error; } } diff --git a/frontend/tests/signing_unit_test.js b/frontend/tests/signing_unit_test.js new file mode 100644 index 00000000..af5c0586 --- /dev/null +++ b/frontend/tests/signing_unit_test.js @@ -0,0 +1,100 @@ +/** + * Simple unit test for ResVault signing functionality + * Tests that the signing library integration works correctly + */ + +const nacl = require('tweetnacl'); +const bs58 = require('bs58').default || require('bs58'); + +function testSigning() { + console.log('Testing ResVault signing functionality...\n'); + + try { + // Step 1: Generate a test keypair + console.log('1. Generating test keypair...'); + const keyPair = nacl.sign.keyPair(); + const publicKeyBase58 = bs58.encode(keyPair.publicKey); + const privateKeyBase58 = bs58.encode(keyPair.secretKey.slice(0, 32)); // seed only + + console.log(` Public Key (Base58): ${publicKeyBase58}`); + console.log(` Private Key (Base58): ${privateKeyBase58.substring(0, 10)}...`); + + // Step 2: Create a test message (stroke data) + console.log('\n2. Creating test message...'); + const strokeData = { + roomId: 'test-room-123', + user: 'testuser', + color: '#000000', + lineWidth: 2, + pathData: [[100, 100], [200, 200]], + timestamp: Date.now() + }; + + const canonicalJson = JSON.stringify(strokeData, Object.keys(strokeData).sort()); + console.log(` Message: ${canonicalJson.substring(0, 50)}...`); + + // Step 3: Sign the message using the private key + console.log('\n3. Signing message...'); + const messageBytes = Buffer.from(canonicalJson, 'utf-8'); + const privateKeyBytes = bs58.decode(privateKeyBase58); + const reconstructedKeyPair = nacl.sign.keyPair.fromSeed(privateKeyBytes); + const signature = nacl.sign.detached(messageBytes, reconstructedKeyPair.secretKey); + const signatureHex = Buffer.from(signature).toString('hex'); + + console.log(` Signature (hex): ${signatureHex.substring(0, 40)}...`); + + // Step 4: Verify the signature + console.log('\n4. Verifying signature...'); + const publicKeyBytes = bs58.decode(publicKeyBase58); + const isValid = nacl.sign.detached.verify( + messageBytes, + signature, + publicKeyBytes + ); + + console.log(` Verification result: ${isValid ? '✓ VALID' : '✗ INVALID'}`); + + if (!isValid) { + throw new Error('Signature verification failed!'); + } + + // Step 5: Test with tampered data + console.log('\n5. Testing with tampered data...'); + const tamperedData = { ...strokeData, color: '#FF0000' }; // changed color + const tamperedJson = JSON.stringify(tamperedData, Object.keys(tamperedData).sort()); + const tamperedBytes = Buffer.from(tamperedJson, 'utf-8'); + const isTamperedValid = nacl.sign.detached.verify( + tamperedBytes, + signature, + publicKeyBytes + ); + + console.log(` Tampered verification: ${isTamperedValid ? '✗ SHOULD FAIL' : '✓ CORRECTLY REJECTED'}`); + + if (isTamperedValid) { + throw new Error('Tampered data was incorrectly validated!'); + } + + console.log('\n' + '='.repeat(50)); + console.log('✅ All signing tests passed!'); + console.log('='.repeat(50)); + + return { + success: true, + publicKey: publicKeyBase58, + privateKey: privateKeyBase58, + signature: signatureHex + }; + + } catch (error) { + console.error('\n❌ Test failed:', error.message); + throw error; + } +} + +// Run the test +if (require.main === module) { + testSigning(); +} + +module.exports = { testSigning }; diff --git a/frontend/tests/wallet_integration_test.js b/frontend/tests/wallet_integration_test.js new file mode 100644 index 00000000..7ac49554 --- /dev/null +++ b/frontend/tests/wallet_integration_test.js @@ -0,0 +1,202 @@ +/** + * Automated test for ResVault wallet integration with secure rooms + * Tests the complete workflow: login -> create secure room -> connect wallet -> sign strokes + */ + +const { chromium } = require('playwright'); +const path = require('path'); + +// Test configuration +const BACKEND_URL = 'http://localhost:10010'; +const FRONTEND_URL = 'http://localhost:3000'; +const RESVAULT_EXTENSION_PATH = path.join(__dirname, '../../resvault-fixed-20251018-140436/build'); + +// Test user credentials +const TEST_USER = { + username: `wallettest_${Date.now()}`, + email: `wallettest_${Date.now()}@test.com`, + password: 'TestPassword123!' +}; + +async function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +async function testWalletIntegration() { + console.log('🚀 Starting ResVault wallet integration test...\n'); + + let browser; + let context; + let page; + + try { + // Launch browser with ResVault extension + console.log('📦 Loading ResVault extension from:', RESVAULT_EXTENSION_PATH); + browser = await chromium.launchPersistentContext('', { + headless: false, // Must be false for extensions + args: [ + `--disable-extensions-except=${RESVAULT_EXTENSION_PATH}`, + `--load-extension=${RESVAULT_EXTENSION_PATH}`, + '--no-sandbox', + '--disable-setuid-sandbox' + ] + }); + + page = await browser.newPage(); + + // Step 1: Register a new user + console.log('\n✅ Step 1: Registering new user...'); + await page.goto(FRONTEND_URL + '/register'); + await page.fill('input[name="username"]', TEST_USER.username); + await page.fill('input[name="email"]', TEST_USER.email); + await page.fill('input[name="password"]', TEST_USER.password); + await page.click('button[type="submit"]'); + await sleep(2000); + + // Verify we're logged in + await page.waitForURL('**/dashboard', { timeout: 10000 }); + console.log('✓ User registered and logged in'); + + // Step 2: Create a secure room + console.log('\n✅ Step 2: Creating secure room...'); + await page.click('button:has-text("Create Room")'); + await sleep(1000); + + const roomName = `Secure Test Room ${Date.now()}`; + await page.fill('input[name="roomName"]', roomName); + + // Set room type to secure + await page.click('input[value="secure"]'); + await sleep(500); + + await page.click('button:has-text("Create")'); + await sleep(2000); + + // Wait for room page to load + await page.waitForURL('**/room/**', { timeout: 10000 }); + const currentUrl = page.url(); + const roomId = currentUrl.split('/room/')[1]; + console.log('✓ Secure room created with ID:', roomId); + + // Step 3: Check for wallet connection prompt + console.log('\n✅ Step 3: Checking for wallet connection UI...'); + const walletConnector = await page.locator('text=Secure Room - Wallet Required').count(); + if (walletConnector === 0) { + throw new Error('Wallet connector UI not found - secure room not properly configured'); + } + console.log('✓ Wallet connector UI found'); + + // Step 4: Click "Connect Wallet" button + console.log('\n✅ Step 4: Attempting to connect wallet...'); + + // Listen for console messages to debug + page.on('console', msg => { + if (msg.type() === 'error' || msg.text().includes('resvault') || msg.text().includes('wallet')) { + console.log(` [Browser ${msg.type()}]:`, msg.text()); + } + }); + + // Click connect wallet button + await page.click('button:has-text("Connect Wallet")'); + await sleep(3000); + + // Check if ResVault modal appeared + // The extension should show a login modal + console.log(' Waiting for ResVault authentication...'); + await sleep(5000); // Give time for extension to respond + + // Check connection status + const connectedStatus = await page.locator('text=Connected').count(); + if (connectedStatus > 0) { + console.log('✓ Wallet connected successfully!'); + + // Get the public key from the UI + const pubKeyElement = await page.locator('[title^="Full public key:"]').first(); + if (pubKeyElement) { + const fullKey = await pubKeyElement.getAttribute('title'); + console.log(' Public key:', fullKey); + } + } else { + // Check for error messages + const errorElement = await page.locator('[role="alert"], .MuiAlert-root').first(); + if (errorElement) { + const errorText = await errorElement.textContent(); + console.log(' ⚠️ Wallet connection issue:', errorText); + } + + // Take a screenshot for debugging + await page.screenshot({ path: '/tmp/wallet-connection-attempt.png', fullPage: true }); + console.log(' Screenshot saved to /tmp/wallet-connection-attempt.png'); + } + + // Step 5: Test stroke signing (if connected) + if (connectedStatus > 0) { + console.log('\n✅ Step 5: Testing stroke signing...'); + + // Get the canvas element + const canvas = await page.locator('canvas').first(); + + if (canvas) { + // Draw a stroke on the canvas + const box = await canvas.boundingBox(); + await page.mouse.move(box.x + 100, box.y + 100); + await page.mouse.down(); + await page.mouse.move(box.x + 200, box.y + 200); + await page.mouse.up(); + + console.log(' Drew a test stroke'); + await sleep(2000); + + // Check network requests to see if stroke was submitted + console.log(' Checking if stroke was submitted with signature...'); + await sleep(2000); + + console.log('✓ Stroke drawing test completed'); + } + } + + console.log('\n' + '='.repeat(50)); + console.log('📊 TEST SUMMARY'); + console.log('='.repeat(50)); + console.log('User registration: ✓'); + console.log('Secure room creation: ✓'); + console.log('Wallet connector UI: ✓'); + console.log('Wallet connection:', connectedStatus > 0 ? '✓' : '⚠️ (manual setup needed)'); + console.log('\n'); + + // Keep browser open for manual inspection + console.log('Browser will stay open for 30 seconds for manual inspection...'); + await sleep(30000); + + } catch (error) { + console.error('\n❌ Test failed:', error.message); + console.error(error.stack); + + // Take screenshot on error + if (page) { + await page.screenshot({ path: '/tmp/wallet-test-error.png', fullPage: true }); + console.log('Error screenshot saved to /tmp/wallet-test-error.png'); + } + + throw error; + } finally { + if (browser) { + await browser.close(); + } + } +} + +// Run the test +if (require.main === module) { + testWalletIntegration() + .then(() => { + console.log('\n✅ Test completed successfully'); + process.exit(0); + }) + .catch((error) => { + console.error('\n❌ Test failed'); + process.exit(1); + }); +} + +module.exports = { testWalletIntegration }; diff --git a/package-lock.json b/package-lock.json index db3e0841..8da3b4e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,45 @@ "packages": { "": { "dependencies": { - "resvault-sdk": "^1.0.3" + "bs58": "^6.0.0", + "node-fetch": "^2.7.0", + "resvault-sdk": "^1.0.3", + "tweetnacl": "^1.0.3" + } + }, + "node_modules/base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", + "license": "MIT" + }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/resvault-sdk": { @@ -13,6 +51,34 @@ "resolved": "https://registry.npmjs.org/resvault-sdk/-/resvault-sdk-1.0.3.tgz", "integrity": "sha512-pa56eYGaVmCq+XT/rIYAqxCA7F+u3RQuYFp25z0m9SdII5cgs8sc1wY0YGgxCEgsfcjKNt1sK3cXfE6XzbPADA==", "license": "Apache-2.0" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } } } } diff --git a/package.json b/package.json index ab6bd27e..c27b1b95 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,8 @@ { "dependencies": { - "resvault-sdk": "^1.0.3" + "bs58": "^6.0.0", + "node-fetch": "^2.7.0", + "resvault-sdk": "^1.0.3", + "tweetnacl": "^1.0.3" } } diff --git a/resvault-fixed-20251018-140436/build/asset-manifest.json b/resvault-fixed-20251018-140436/build/asset-manifest.json new file mode 100644 index 00000000..2598bba0 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/asset-manifest.json @@ -0,0 +1,23 @@ +{ + "files": { + "main.css": "/static/css/main.43a4f363.css", + "main.js": "/static/js/main.js", + "main.js.map": "/static/js/main.js.map", + "static/js/1.chunk.js": "/static/js/1.chunk.js", + "static/js/1.chunk.js.map": "/static/js/1.chunk.js.map", + "static/js/2.chunk.js": "/static/js/2.chunk.js", + "static/js/2.chunk.js.map": "/static/js/2.chunk.js.map", + "index.html": "/index.html", + "static/css/main.43a4f363.css.map": "/static/css/main.43a4f363.css.map", + "static/js/1.chunk.js.LICENSE.txt": "/static/js/1.chunk.js.LICENSE.txt", + "static/media/arrow-back.32c7f60c.svg": "/static/media/arrow-back.32c7f60c.svg", + "static/media/App.css": "/static/media/checked-simple.8a4f333f.svg", + "static/media/graphql.png": "/static/media/graphql.fc6b9451.png", + "static/media/resvault.6e7d22cc.png": "/static/media/resvault.6e7d22cc.png" + }, + "entrypoints": [ + "static/js/1.chunk.js", + "static/css/main.43a4f363.css", + "static/js/main.js" + ] +} \ No newline at end of file diff --git a/resvault-fixed-20251018-140436/build/background.js b/resvault-fixed-20251018-140436/build/background.js new file mode 100644 index 00000000..cd229d39 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/background.js @@ -0,0 +1,1044 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ + + +let faviconUrls = {}; + +// Helper functions +function arrayBufferToBase64(buffer) { + let binary = ''; + const bytes = new Uint8Array(buffer); + bytes.forEach(b => (binary += String.fromCharCode(b))); + return btoa(binary); +} + +function base64ToArrayBuffer(base64) { + const binary = atob(base64); + const len = binary.length; + const bytes = new Uint8Array(len); + for (let i = 0; i < len; i++) { + bytes[i] = binary.charCodeAt(i); + } + return bytes.buffer; +} + +function uint8ArrayToBase64(uint8Array) { + return arrayBufferToBase64(uint8Array.buffer); +} + +function base64ToUint8Array(base64) { + const arrayBuffer = base64ToArrayBuffer(base64); + return new Uint8Array(arrayBuffer); +} + +function hexToBytes(hex) { + const bytes = new Uint8Array(hex.length / 2); + for (let i = 0; i < hex.length; i += 2) { + bytes[i / 2] = parseInt(hex.substr(i, 2), 16); + } + return bytes; +} + +function bytesToHex(bytes) { + return Array.from(bytes) + .map(b => b.toString(16).padStart(2, '0')) + .join(''); +} + +async function encryptData(data, key) { + const iv = crypto.getRandomValues(new Uint8Array(12)); + const encoded = new TextEncoder().encode(data); + const encrypted = await crypto.subtle.encrypt( + { + name: 'AES-GCM', + iv: iv, + }, + key, + encoded + ); + + // Convert encrypted data and iv to Base64 strings + const ciphertextBase64 = arrayBufferToBase64(encrypted); + const ivBase64 = uint8ArrayToBase64(iv); + + return { ciphertext: ciphertextBase64, iv: ivBase64 }; +} + +async function decryptData(ciphertextBase64, ivBase64, key) { + const ciphertext = base64ToArrayBuffer(ciphertextBase64); + const iv = base64ToUint8Array(ivBase64); + + const decrypted = await crypto.subtle.decrypt( + { + name: 'AES-GCM', + iv: iv, + }, + key, + ciphertext + ); + const dec = new TextDecoder(); + return dec.decode(decrypted); +} + +// Function to get full hostname from URL +function getBaseDomain(url) { + try { + const urlObj = new URL(url); + return urlObj.hostname; + } catch (error) { + console.error('Invalid URL:', error); + return ''; + } +} + +// Function to escape special characters in GraphQL strings (useful for text fields) +function escapeGraphQLString(str) { + if (typeof str !== 'string') { + return ''; + } + return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); +} + +// Function to get the favicon URL when a tab is updated +function updateFaviconUrl(tabId, changeInfo, tab) { + if (changeInfo.status === 'complete' && tab.url) { + const domain = getBaseDomain(tab.url); + if (domain && tab.favIconUrl) { + faviconUrls[domain] = tab.favIconUrl; + + // Also store in chrome.storage.local + chrome.storage.local.get(['faviconUrls'], (result) => { + let storedFavicons = result.faviconUrls || {}; + storedFavicons[domain] = tab.favIconUrl; + chrome.storage.local.set({ faviconUrls: storedFavicons }); + }); + } + } +} + +// Add the listener for tab updates +chrome.tabs.onUpdated.addListener(updateFaviconUrl); + +// Function to generate UUID v4 +function generateUUID() { + // Public Domain/MIT + return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => + (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16) + ); +} + +// KV service helper function +async function callKVService(url, configData, signerPublicKey) { + try { + let graphqlQuery = ''; + + switch (configData.command) { + case 'set_balance': + // Use the correct GraphQL schema with PrepareAsset data format + graphqlQuery = `mutation { + postTransaction( + data: { + asset: "ResDB", + id: "${generateUUID()}", + amount: "${configData.balance || '0'}", + operation: "TRANSFER", + recipient: "${configData.address || '0x0000000000000000000000000000000000000000'}", + type: "CREATE", + signerPublicKey: "${signerPublicKey || ''}" + } + ) { + id + } + }`; + break; + default: + throw new Error(`Unknown KV command: ${configData.command}`); + } + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ query: graphqlQuery }), + }); + + if (!response.ok) { + throw new Error(`Network response was not ok: ${response.statusText}`); + } + + const result = await response.json(); + + if (result.data && result.data.postTransaction) { + return { success: true, transactionId: result.data.postTransaction.id }; + } + + if (result.errors) { + return { success: false, error: result.errors[0].message }; + } + + return { success: true, data: result }; + } catch (error) { + console.error('Error calling KV service:', error); + throw error; + } +} + +// Contract service helper functions +async function callContractService(url, configData) { + try { + // Convert JSON commands to GraphQL mutations + let graphqlQuery = ''; + + switch (configData.command) { + case 'create_account': + graphqlQuery = `mutation { createAccount(config: "/opt/resilientdb/service/tools/config/interface/service.config") }`; + break; + case 'set_balance': + graphqlQuery = `mutation { + setBalance( + config: "/opt/resilientdb/service/tools/config/interface/service.config", + address: "${configData.address}", + balance: "${configData.balance}" + ) + }`; + break; + case 'deploy': + graphqlQuery = `mutation { + deployContract( + config: "/opt/resilientdb/service/tools/config/interface/service.config", + contract: "${configData.contract_path || 'contract.json'}", + name: "${configData.contract_name}", + arguments: "${configData.init_params || ''}", + owner: "${configData.owner_address}" + ) { + ownerAddress + contractAddress + contractName + } + }`; + break; + case 'execute': + graphqlQuery = `mutation { + executeContract( + config: "/opt/resilientdb/service/tools/config/interface/service.config", + sender: "${configData.caller_address}", + contract: "${configData.contract_address}", + functionName: "${configData.func_name}", + arguments: "${configData.params || ''}" + ) + }`; + break; + default: + throw new Error(`Unknown command: ${configData.command}`); + } + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ query: graphqlQuery }), + }); + + if (!response.ok) { + if (response.status === 502) { + throw new Error('Contract service is currently unavailable. Please try again later or use local development.'); + } + throw new Error(`Network response was not ok: ${response.statusText}`); + } + + const result = await response.json(); + + // Convert GraphQL response to expected format + if (result.data) { + const data = result.data; + if (data.createAccount) { + return { success: true, accountAddress: data.createAccount }; + } else if (data.setBalance) { + return { success: true, result: data.setBalance }; + } else if (data.deployContract) { + return { + success: true, + contractAddress: data.deployContract.contractAddress, + ownerAddress: data.deployContract.ownerAddress, + contractName: data.deployContract.contractName + }; + } else if (data.executeContract) { + return { success: true, result: data.executeContract }; + } + } + + if (result.errors) { + return { success: false, error: result.errors[0].message }; + } + + return { success: true, data: result }; + } catch (error) { + console.error('Error calling contract service:', error); + throw error; + } +} + +chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { + if (request.action === 'storeKeys') { + (async function () { + try { + // Generate new key material and encrypt the new keys + const keyMaterial = await crypto.subtle.generateKey( + { name: 'AES-GCM', length: 256 }, + true, + ['encrypt', 'decrypt'] + ); + + const encryptedPublicKey = await encryptData(request.publicKey, keyMaterial); + const encryptedPrivateKey = await encryptData(request.privateKey, keyMaterial); + const encryptedUrl = await encryptData(request.url, keyMaterial); + + // Export the key material to JWK format + const exportedKey = await crypto.subtle.exportKey('jwk', keyMaterial); + + // Store the encrypted keys per domain and net + chrome.storage.local.get(['keys', 'connectedNets'], (result) => { + let keys = result.keys || {}; + let connectedNets = result.connectedNets || {}; + + if (!keys[request.domain]) { + keys[request.domain] = {}; + } + + keys[request.domain][request.net] = { + publicKey: encryptedPublicKey, + privateKey: encryptedPrivateKey, + url: encryptedUrl, + exportedKey: exportedKey, // Store the exported key + }; + + connectedNets[request.domain] = request.net; + + console.log('Storing keys for domain:', request.domain); + console.log('Storing net:', request.net); + console.log('ConnectedNets after storing:', connectedNets); + + chrome.storage.local.set({ keys, connectedNets }, () => { + console.log('Keys stored for domain:', request.domain, 'and net:', request.net); + sendResponse({ success: true }); + }); + }); + } catch (error) { + console.error('Error in storeKeys:', error); + sendResponse({ success: false, error: error.message }); + } + })(); + + return true; // Keep the message channel open for async sendResponse + } else if (request.action === 'disconnectKeys') { + (async function () { + // Remove the keys for the domain and net + chrome.storage.local.get(['keys', 'connectedNets'], (result) => { + let keys = result.keys || {}; + let connectedNets = result.connectedNets || {}; + if (keys[request.domain] && keys[request.domain][request.net]) { + delete keys[request.domain][request.net]; + if (Object.keys(keys[request.domain]).length === 0) { + delete keys[request.domain]; + } + if (connectedNets[request.domain] === request.net) { + delete connectedNets[request.domain]; + } + chrome.storage.local.set({ keys, connectedNets }, () => { + console.log('Keys disconnected for domain:', request.domain, 'and net:', request.net); + console.log('ConnectedNets after disconnecting:', connectedNets); + sendResponse({ success: true }); + }); + } else { + sendResponse({ success: false, error: 'No keys found to disconnect' }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } else if (request.action === 'requestData') { + (async function () { + chrome.storage.local.get(['keys', 'faviconUrls'], async function (result) { + const keys = result.keys || {}; + const storedFavicons = result.faviconUrls || {}; + const faviconUrlForDomain = storedFavicons[request.domain] || ''; + + if (keys[request.domain] && keys[request.domain][request.net]) { + const { publicKey, privateKey, url, exportedKey } = keys[request.domain][request.net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedPublicKey = await decryptData(publicKey.ciphertext, publicKey.iv, keyMaterial); + const decryptedPrivateKey = await decryptData(privateKey.ciphertext, privateKey.iv, keyMaterial); + const decryptedUrl = await decryptData(url.ciphertext, url.iv, keyMaterial); + + sendResponse({ + publicKey: decryptedPublicKey, + privateKey: decryptedPrivateKey, + url: decryptedUrl, + faviconUrl: faviconUrlForDomain, + }); + } catch (error) { + console.error('Error decrypting data:', error); + sendResponse({ error: 'Failed to decrypt data', faviconUrl: faviconUrlForDomain }); + } + } else { + sendResponse({ error: 'No keys found for domain and net', faviconUrl: faviconUrlForDomain }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } else if (request.action === 'getConnectedNet') { + (async function () { + chrome.storage.local.get(['connectedNets'], function (result) { + const connectedNets = result.connectedNets || {}; + const net = connectedNets[request.domain]; + if (net) { + sendResponse({ net: net }); + } else { + sendResponse({ error: 'No connected net for domain' }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + // Handle getPublicKey request + else if (request.action === 'getPublicKey') { + (async function () { + const domain = request.domain; + + chrome.storage.local.get(['keys', 'connectedNets'], async function (result) { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + const net = connectedNets[domain]; + + if (keys[domain] && keys[domain][net]) { + const { publicKey, exportedKey } = keys[domain][net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedPublicKey = await decryptData(publicKey.ciphertext, publicKey.iv, keyMaterial); + + sendResponse({ + success: true, + publicKey: decryptedPublicKey + }); + } catch (error) { + console.error('Error retrieving public key:', error); + sendResponse({ + success: false, + error: 'Failed to retrieve public key' + }); + } + } else { + sendResponse({ + success: false, + error: 'No keys found. Please connect your wallet first.' + }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + // Handle signMessage request (returns keys for client-side signing) + else if (request.action === 'getSigningKeys') { + (async function () { + const domain = request.domain; + + chrome.storage.local.get(['keys', 'connectedNets'], async function (result) { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + const net = connectedNets[domain]; + + if (keys[domain] && keys[domain][net]) { + const { privateKey, publicKey, exportedKey } = keys[domain][net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedPrivateKey = await decryptData(privateKey.ciphertext, privateKey.iv, keyMaterial); + const decryptedPublicKey = await decryptData(publicKey.ciphertext, publicKey.iv, keyMaterial); + + sendResponse({ + success: true, + privateKey: decryptedPrivateKey, + publicKey: decryptedPublicKey + }); + } catch (error) { + console.error('Error retrieving signing keys:', error); + sendResponse({ + success: false, + error: 'Failed to retrieve signing keys: ' + error.message + }); + } + } else { + sendResponse({ + success: false, + error: 'No keys found. Please connect your wallet first.' + }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + // ------------------------------------------------ + // Updated: Using unified contract service for KV operations + // ------------------------------------------------ + + else if (request.action === 'submitTransactionFromDashboard') { + (async function () { + // Retrieve the necessary data + const transactionData = request.transactionData; + const domain = request.domain; + const net = request.net; + + // Validate transactionData + if (!transactionData || !transactionData.asset || !transactionData.recipientAddress || !transactionData.amount) { + sendResponse({ success: false, error: 'Invalid transaction data.' }); + return; + } + + // Retrieve the signer's keys and URL from storage + chrome.storage.local.get(['keys', 'connectedNets'], async function (result) { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + + if (!connectedNets[domain] || connectedNets[domain] !== net) { + sendResponse({ success: false, error: 'Not connected to the specified net for this domain.' }); + return; + } + + if (!keys[domain] || !keys[domain][net]) { + sendResponse({ success: false, error: 'Keys not found for the specified domain and net.' }); + return; + } + + const { publicKey, privateKey, url, exportedKey } = keys[domain][net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedPublicKey = await decryptData(publicKey.ciphertext, publicKey.iv, keyMaterial); + const decryptedUrl = await decryptData(url.ciphertext, url.iv, keyMaterial); + + // Use KV service for balance operations + const configData = { + command: "set_balance", + address: transactionData.recipientAddress, + balance: transactionData.amount.toString() + }; + + // Use KV endpoint for balance operations + const kvUrl = decryptedUrl.replace('8400', '8000'); // Contract endpoint to KV endpoint + const result = await callKVService(kvUrl, configData, decryptedPublicKey); + + if (result.success) { + sendResponse({ success: true, data: { postTransaction: { id: result.transactionId || generateUUID() } } }); + } else { + sendResponse({ success: false, error: result.error || 'Transaction failed' }); + } + } catch (error) { + console.error('Error submitting transaction:', error); + sendResponse({ success: false, error: error.message }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + else if (request.action === 'submitTransaction') { + (async function () { + console.log('Handling submitTransaction action'); + console.log('Sender:', sender); + let senderUrl = null; + if (sender.tab && sender.tab.url) { + senderUrl = sender.tab.url; + } else if (sender.url) { + senderUrl = sender.url; + } else if (sender.origin) { + senderUrl = sender.origin; + } else { + console.error('Sender URL is undefined'); + sendResponse({ success: false, error: 'Cannot determine sender URL' }); + return; + } + console.log('Sender URL:', senderUrl); + + const domain = getBaseDomain(senderUrl); + console.log('Domain:', domain); + + chrome.storage.local.get(['keys', 'connectedNets'], async function (result) { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + console.log('ConnectedNets:', connectedNets); + const net = connectedNets[domain]; + console.log('Net for domain:', domain, 'is', net); + + if (keys[domain] && keys[domain][net]) { + const { publicKey, privateKey, url, exportedKey } = keys[domain][net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedPublicKey = await decryptData(publicKey.ciphertext, publicKey.iv, keyMaterial); + const decryptedUrl = await decryptData(url.ciphertext, url.iv, keyMaterial); + + // Check if required fields are defined + if (!request.recipient) { + console.error('Missing required fields for transaction submission'); + sendResponse({ + success: false, + error: 'Missing required fields for transaction', + }); + return; + } + + // Use KV service for balance operations + const configData = { + command: "set_balance", + address: request.recipient, + balance: request.amount.toString() + }; + + // Use KV endpoint for balance operations + const kvUrl = decryptedUrl.replace('8400', '8000'); // Contract endpoint to KV endpoint + const result = await callKVService(kvUrl, configData, decryptedPublicKey); + + if (result.success) { + sendResponse({ success: true, data: { postTransaction: { id: result.transactionId || generateUUID() } } }); + } else { + sendResponse({ success: false, error: result.error || 'Transaction failed' }); + } + } catch (error) { + console.error('Error submitting transaction:', error); + sendResponse({ success: false, error: error.message }); + } + } else { + console.error('No keys found for domain:', domain, 'and net:', net); + console.log('Available keys:', keys); + sendResponse({ error: 'No keys found for domain and net' }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + else if (request.action === 'submitLoginTransaction') { + (async function () { + console.log('Handling submitLoginTransaction action'); + console.log('Sender:', sender); + let senderUrl = null; + if (sender.tab && sender.tab.url) { + senderUrl = sender.tab.url; + } else if (sender.url) { + senderUrl = sender.url; + } else if (sender.origin) { + senderUrl = sender.origin; + } else { + console.error('Sender URL is undefined'); + sendResponse({ success: false, error: 'Cannot determine sender URL' }); + return; + } + console.log('Sender URL:', senderUrl); + + const domain = getBaseDomain(senderUrl); + console.log('Domain:', domain); + + // For login transactions, get the public key from sync storage and URL from local storage + chrome.storage.sync.get(['store'], async function (syncResult) { + if (!syncResult.store || !syncResult.store.publicKey) { + console.error('No authenticated user found in sync storage'); + sendResponse({ success: false, error: 'User not authenticated. Please log in to ResVault first.' }); + return; + } + + const publicKey = syncResult.store.publicKey; + console.log('Using public key from sync storage:', publicKey); + + // Get the user's active network URL from local storage + chrome.storage.local.get(['activeNetUrl'], async function (localResult) { + let resilientDBUrl = localResult.activeNetUrl; + + // If no active URL is set, use the default mainnet URL + if (!resilientDBUrl) { + resilientDBUrl = 'https://cloud.resilientdb.com/graphql'; + console.log('No active network URL found, using default mainnet:', resilientDBUrl); + } else { + console.log('Using active network URL:', resilientDBUrl); + } + + try { + // Use KV service for login transaction + const configData = { + command: "set_balance", + address: request.ownerAddress || "0x0000000000000000000000000000000000000000", + balance: "1" + }; + + // Use the user's active network URL for login operations + const result = await callKVService(resilientDBUrl, configData, publicKey); + + if (result.success) { + sendResponse({ success: true, data: { postTransaction: { id: result.transactionId || generateUUID() } } }); + } else { + sendResponse({ success: false, error: result.error || 'Login transaction failed' }); + } + } catch (error) { + console.error('Error submitting login transaction:', error); + sendResponse({ success: false, error: error.message }); + } + }); + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + // Updated: Using unified contract service for contract deployment + else if (request.action === 'deployContractChain') { + (async function () { + const domain = request.domain; + const net = request.net; + const ownerAddress = request.ownerAddress; + const soliditySource = request.soliditySource; + const deployConfig = request.deployConfig; + + // Retrieve the signer's keys and URL from storage + chrome.storage.local.get(['keys', 'connectedNets'], async function (result) { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + + if (!connectedNets[domain] || connectedNets[domain] !== net) { + sendResponse({ success: false, error: 'Not connected to the specified net for this domain.' }); + return; + } + + if (!keys[domain] || !keys[domain][net]) { + sendResponse({ success: false, error: 'Keys not found for the specified domain and net.' }); + return; + } + + const { url, exportedKey } = keys[domain][net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedUrl = await decryptData(url.ciphertext, url.iv, keyMaterial); + + // Step 1: Create account for the owner address + const createAccountConfig = { + command: "create_account" + }; + + const createAccountResponse = await fetch(decryptedUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ query: `mutation { createAccount(config: "5 127.0.0.1 10005", type: "data") }` }), + }); + + const createAccountResult = await createAccountResponse.json(); + if (createAccountResult.errors) { + sendResponse({ + success: false, + error: 'Error creating account: ' + createAccountResult.errors[0].message, + }); + return; + } + + // Step 1.5: Use the created account address for deployment + const createdAccountAddress = createAccountResult.data.createAccount; + console.log('Using created account:', createdAccountAddress); + + // Step 2: Deploy the contract using the new unified service + const { arguments: args, contract_name } = request.deployConfig; + + // Step 2: Compile the Solidity contract on the server + const escapedSoliditySource = soliditySource.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n'); + + const compileContractMutation = ` + mutation { + compileContract( + source: "${escapedSoliditySource}", + type: "data" + ) + } + `; + + const compileContractResponse = await fetch(decryptedUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ query: compileContractMutation }), + }); + + if (!compileContractResponse.ok) { + throw new Error(`Network response was not ok: ${compileContractResponse.statusText}`); + } + + const compileContractResult = await compileContractResponse.json(); + if (compileContractResult.errors) { + console.error('GraphQL errors in compileContract:', compileContractResult.errors); + sendResponse({ + success: false, + error: 'Error in compileContract mutation.', + errors: compileContractResult.errors, + }); + return; + } + + const contractFilename = compileContractResult.data.compileContract; + if (!contractFilename) { + sendResponse({ + success: false, + error: 'Failed to compile contract.', + }); + return; + } + + // Step 3: Deploy the contract using the compiled filename + const escapedContractName = contract_name.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); + const escapedArgs = args.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); + const escapedOwnerAddress = createdAccountAddress.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); + const escapedContractFilename = contractFilename.replace(/\\/g, '\\\\').replace(/"/g, '\\"'); + + const deployContractMutation = ` + mutation { + deployContract( + config: "5 127.0.0.1 10005", + contract: "${escapedContractFilename}", + name: "/tmp/${contractFilename.replace('.json', '.sol')}:${contract_name.split(':')[1] || contract_name}", + arguments: "${escapedArgs}", + owner: "${escapedOwnerAddress}", + type: "data" + ) { + ownerAddress + contractAddress + contractName + } + } + `; + + const deployContractResponse = await fetch(decryptedUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ query: deployContractMutation }), + }); + + if (!deployContractResponse.ok) { + throw new Error(`Network response was not ok: ${deployContractResponse.statusText}`); + } + + const deployContractResult = await deployContractResponse.json(); + + // Debug logging to see what we actually receive + console.log('Deploy contract response:', deployContractResult); + + if (deployContractResult.errors) { + console.error('GraphQL errors in deployContract:', deployContractResult.errors); + sendResponse({ + success: false, + error: 'Error in deployContract mutation: ' + deployContractResult.errors[0].message, + }); + return; + } + + // Check for different possible response formats + if (deployContractResult.data && deployContractResult.data.deployContract) { + const deployData = deployContractResult.data.deployContract; + + // Handle both object and string responses + if (typeof deployData === 'string') { + // Parse string response that might contain deployment info + sendResponse({ + success: true, + contractAddress: "deployment_successful", + ownerAddress: ownerAddress, + contractName: contract_name, + rawResponse: deployData + }); + } else if (deployData.contractAddress) { + sendResponse({ + success: true, + contractAddress: deployData.contractAddress, + ownerAddress: deployData.ownerAddress, + contractName: deployData.contractName + }); + } else { + // Deployment succeeded but no specific contract address format + sendResponse({ + success: true, + contractAddress: "deployed_successfully", + ownerAddress: ownerAddress, + contractName: contract_name, + rawResponse: deployData + }); + } + } else { + console.log('Unexpected response format:', deployContractResult); + sendResponse({ + success: false, + error: 'Failed to parse deployment output.', + }); + } + + } catch (error) { + console.error('Error deploying contract chain:', error); + sendResponse({ success: false, error: error.message }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } + + // Updated: Using unified contract service for contract execution + else if (request.action === 'executeContractFunction') { + (async function () { + const domain = request.domain; + const net = request.net; + const ownerAddress = request.ownerAddress; + const contractAddress = request.contractAddress; + const functionName = request.functionName; + const functionArgs = request.functionArgs; + + // Retrieve the signer's keys and URL from storage + chrome.storage.local.get(['keys', 'connectedNets'], async function (result) { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + + if (!connectedNets[domain] || connectedNets[domain] !== net) { + sendResponse({ success: false, error: 'Not connected to the specified net for this domain.' }); + return; + } + + if (!keys[domain] || !keys[domain][net]) { + sendResponse({ success: false, error: 'Keys not found for the specified domain and net.' }); + return; + } + + const { url, exportedKey } = keys[domain][net]; + + try { + // Import the key material from JWK format + const keyMaterial = await crypto.subtle.importKey( + 'jwk', + exportedKey, + { name: 'AES-GCM' }, + true, + ['encrypt', 'decrypt'] + ); + + const decryptedUrl = await decryptData(url.ciphertext, url.iv, keyMaterial); + + // Use unified contract service for contract execution + const configData = { + command: "execute", + contract_address: contractAddress, + caller_address: ownerAddress, + func_name: functionName, + params: functionArgs + }; + + const result = await callContractService(decryptedUrl, configData); + + if (result.success) { + sendResponse({ + success: true, + transactionId: result.transactionId || generateUUID(), + result: result.result, + message: 'Contract function executed successfully.' + }); + } else { + sendResponse({ + success: false, + error: 'Failed to execute contract function: ' + (result.error || 'Unknown error'), + }); + } + + } catch (error) { + console.error('Error executing contract function:', error); + sendResponse({ success: false, error: error.message }); + } + }); + })(); + + return true; // Keep the message channel open for async sendResponse + } +}); diff --git a/resvault-fixed-20251018-140436/build/content.js b/resvault-fixed-20251018-140436/build/content.js new file mode 100644 index 00000000..383305ca --- /dev/null +++ b/resvault-fixed-20251018-140436/build/content.js @@ -0,0 +1,554 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ + + + +/*global chrome*/ + +// Function to get full hostname from URL +function getBaseDomain(url) { + try { + const urlObj = new URL(url); + return urlObj.hostname; + } catch (error) { + return ''; + } +} + +chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + sendMessageToPage(request); + sendResponse(true); +}); + +// Function to send a message to the webpage +function sendMessageToPage(request) { + window.postMessage({ type: 'FROM_CONTENT_SCRIPT', data: request }, '*'); +} + +// Add event listener to listen for messages from the web page +window.addEventListener('message', (event) => { + if (event.source === window) { + const { direction, type } = event.data; + if (direction === 'commit') { + handleCommitOperation(event); + } else if (direction === 'login') { + handleLoginOperation(event); + } else if (direction === 'custom') { + handleCustomOperation(event); + } else if (direction === 'request' && type === 'getPublicKey') { + handleGetPublicKeyOperation(event); + } else if (direction === 'request' && type === 'sign') { + handleSignOperation(event); + } else if (direction === 'info' && type === 'siteSignerInfo') { + // Handle signer info updates from the web app (optional, can be ignored) + console.log('[ResVault] Received siteSignerInfo:', event.data); + } + } +}); + +// Handle commit operation and display the modal +function handleCommitOperation(event) { + const { amount, data, recipient, styles } = event.data; + + // Ensure the amount is present before proceeding + if (amount.trim() !== '') { + const modal = createOrUpdateModal('COMMIT', amount, { amount, data, recipient }, styles); + // Event delegation handles event listeners + } +} + +// Handle custom operation and display the modal +function handleCustomOperation(event) { + const { data, recipient, styles, customMessage } = event.data; + const amount = '1'; // Automatically assigned value 1 + const transactionData = { amount, data, recipient }; + const modal = createOrUpdateModal('', amount, transactionData, styles, true, customMessage || ''); + // Event delegation handles event listeners +} + +// Handle login operation and display the login modal +function handleLoginOperation(event) { + // Create or update the login modal + const modal = createOrUpdateLoginModal(); + // Event delegation handles event listeners +} + +// Create or update the login modal +function createOrUpdateLoginModal() { + let modal = document.getElementById('resVaultLoginModal'); + const modalContent = generateLoginModalContent(); + + if (!modal) { + // Create the modal if it doesn't exist + modal = document.createElement('div'); + modal.id = 'resVaultLoginModal'; + modal.style.cssText = ` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 1000; + display: block; + `; + modal.innerHTML = modalContent; + document.body.appendChild(modal); + + // Attach a single event listener to the modal for event delegation + modal.addEventListener('click', async (event) => { + if (event.target.id === 'resVaultLoginModalClose') { + modal.style.display = 'none'; + } else if (event.target.id === 'resVaultLoginModalAuthenticate') { + const isConnected = await checkConnectionStatus(); + if (isConnected) { + handleLoginTransactionSubmit(); + } else { + sendMessageToPage('error'); + } + modal.style.display = 'none'; + } + }); + } else { + // Update the modal content if it already exists + modal.innerHTML = modalContent; + modal.style.display = 'block'; // Ensure the modal is visible again + } + + return modal; +} + +// Generate the HTML content for the login modal +function generateLoginModalContent() { + return ` +
    +
    +

    + Authenticate with ResVault +

    +
    + +
    + + +
    +
    + `; +} + +// Check if the user is connected to the website and net +function checkConnectionStatus() { + return new Promise((resolve) => { + const domain = window.location.hostname; + + chrome.storage.local.get(['keys', 'connectedNets'], (result) => { + const keys = result.keys || {}; + const connectedNets = result.connectedNets || {}; + + const net = connectedNets[domain]; + if (net && keys[domain] && keys[domain][net]) { + resolve(true); + } else { + resolve(false); + } + }); + }); +} + +// Handle login transaction submission and send data to background script +function handleLoginTransactionSubmit() { + chrome.runtime.sendMessage( + { + action: 'submitLoginTransaction', + }, + (response) => { + if (response) { + // Send the response to the page script + window.postMessage({ type: 'FROM_CONTENT_SCRIPT', data: response }, '*'); + } + } + ); +} + +// Create or update the modal with the necessary transaction details +function createOrUpdateModal(operation, amount, transactionData, styles = {}, isCustom = false, customMessage = '') { + let modal = document.getElementById('resVaultModal'); + const modalContent = generateModalContent(operation, amount, styles, isCustom, customMessage); + + if (!modal) { + // Create the modal if it doesn't exist + modal = document.createElement('div'); + modal.id = 'resVaultModal'; + modal.style.cssText = ` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 1000; + display: block; + `; + modal.innerHTML = modalContent; + document.body.appendChild(modal); + + // Attach a single event listener to the modal for event delegation + modal.addEventListener('click', (event) => { + if (event.target.id === 'resVaultModalClose') { + modal.style.display = 'none'; + } else if (event.target.id === 'resVaultModalSubmit') { + handleTransactionSubmit(modal.transactionData); // Use modal.transactionData + modal.style.display = 'none'; + } + }); + } else { + // Update the modal content if it already exists + modal.innerHTML = modalContent; + modal.style.display = 'block'; // Ensure the modal is visible again + } + + // Update transactionData on the modal element + modal.transactionData = transactionData; + + // Apply user styles if any + applyStylesToModal(modal, styles); + + return modal; +} + +// Generate the HTML content for the commit or custom modal +function generateModalContent(operation, amount, styles = {}, isCustom = false, customMessage = '') { + if (isCustom) { + return ` +
    +
    +
    +
    +
    +

    + ${customMessage || ''} +

    +
    +
    +

    Powered by ResVault

    +
    +
    + + + + +
    `; + } else { + return ` +
    +
    +
    +
    +
    +

    + Operation: ${operation} +

    +
    +
    +
    +

    + ${amount} +

    +
    +
    R
    + RoK +
    +
    +

    Powered by ResVault

    +
    +
    + + + + +
    `; + } +} + +// Apply user styles to the modal elements +function applyStylesToModal(modal, styles) { + const allowedSelectors = [ + '#resVaultModalContent', + "#resVaultMessageBox", + '#amountDisplay', + '#resVaultModalClose', + '#resVaultModalSubmit', + '#customMessage', + '#poweredBy', + ]; + + const allowedStyles = { + '#resVaultModalContent': ['background-color', 'padding', 'border-radius', 'box-shadow', 'font-family', 'width', 'position', 'top', 'left', 'transform', 'z-index'], + '#amountDisplay': ['color', 'font-size', 'text-align', 'border', 'background-color', 'padding', 'border-radius'], + '#resVaultMessageBox': ['width', 'padding', 'background-color', 'border-radius', 'margin-bottom', 'box-shadow'], + '#resVaultModalClose': ['background-color', 'color', 'border', 'padding', 'border-radius', 'cursor', 'width'], + '#resVaultModalSubmit': ['background-color', 'color', 'border', 'padding', 'border-radius', 'cursor', 'width'], + '#customMessage': ['color', 'font-size', 'text-align', 'background-color', 'padding', 'border-radius'], + '#poweredBy': ['color', 'font-size', 'text-align'], + }; + + for (const selector in styles) { + if (!allowedSelectors.includes(selector)) { + continue; // Skip disallowed selectors + } + const elements = modal.querySelectorAll(selector); + elements.forEach(element => { + const styleObj = styles[selector]; + const allowedProperties = allowedStyles[selector] || []; + for (const styleName in styleObj) { + if (allowedProperties.includes(styleName)) { + // Apply the style with !important to ensure precedence + element.style.setProperty(styleName, styleObj[styleName], 'important'); + } + } + }); + } +} + +// Handle transaction submission and send data to background script +function handleTransactionSubmit({ amount, data, recipient }) { + chrome.runtime.sendMessage( + { + action: 'submitTransaction', + amount, + data, + recipient, + }, + (response) => { + if (response) { + // Send the response to the page script + window.postMessage({ type: 'FROM_CONTENT_SCRIPT', data: response }, '*'); + } + } + ); +} + +// Handle getPublicKey request +function handleGetPublicKeyOperation(event) { + const domain = window.location.hostname; + + chrome.runtime.sendMessage( + { + action: 'getPublicKey', + domain: domain + }, + (response) => { + if (response) { + // Send the response back to the page + window.postMessage({ + type: 'FROM_CONTENT_SCRIPT', + data: { + type: 'getPublicKey', + direction: 'response', + publicKey: response.publicKey || null, + pubkey: response.publicKey || null, + success: response.success || false, + error: response.error || null + } + }, '*'); + } + } + ); +} + +// Handle sign request +function handleSignOperation(event) { + const domain = window.location.hostname; + const { payload } = event.data; + + // Send message to background to get the private key for signing + chrome.runtime.sendMessage( + { + action: 'getSigningKeys', + domain: domain, + message: payload + }, + (response) => { + if (response && response.success) { + // We have the keys, now sign in the page context using the web app's nacl library + // We'll send the keys back to the page and let it sign + window.postMessage({ + type: 'FROM_CONTENT_SCRIPT', + data: { + type: 'signWithKeys', + direction: 'request', + privateKey: response.privateKey, + publicKey: response.publicKey, + message: payload + } + }, '*'); + } else { + // Send error response + window.postMessage({ + type: 'FROM_CONTENT_SCRIPT', + data: { + type: 'sign', + direction: 'response', + signature: null, + sig: null, + success: false, + error: response.error || 'Failed to retrieve keys for signing' + } + }, '*'); + } + } + ); +} diff --git a/resvault-fixed-20251018-140436/build/icon-128.png b/resvault-fixed-20251018-140436/build/icon-128.png new file mode 100644 index 00000000..a729733e Binary files /dev/null and b/resvault-fixed-20251018-140436/build/icon-128.png differ diff --git a/resvault-fixed-20251018-140436/build/icon-16.png b/resvault-fixed-20251018-140436/build/icon-16.png new file mode 100644 index 00000000..5055196a Binary files /dev/null and b/resvault-fixed-20251018-140436/build/icon-16.png differ diff --git a/resvault-fixed-20251018-140436/build/icon-32.png b/resvault-fixed-20251018-140436/build/icon-32.png new file mode 100644 index 00000000..efc66a56 Binary files /dev/null and b/resvault-fixed-20251018-140436/build/icon-32.png differ diff --git a/resvault-fixed-20251018-140436/build/icon-64.png b/resvault-fixed-20251018-140436/build/icon-64.png new file mode 100644 index 00000000..1fb10a95 Binary files /dev/null and b/resvault-fixed-20251018-140436/build/icon-64.png differ diff --git a/resvault-fixed-20251018-140436/build/index.html b/resvault-fixed-20251018-140436/build/index.html new file mode 100644 index 00000000..a910de20 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/index.html @@ -0,0 +1 @@ +NexRes Wallet
    \ No newline at end of file diff --git a/resvault-fixed-20251018-140436/build/manifest.json b/resvault-fixed-20251018-140436/build/manifest.json new file mode 100644 index 00000000..291ebbb7 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/manifest.json @@ -0,0 +1,37 @@ +{ + "short_name": "ResVault", + "name": "ResVault", + "icons": { + "16": "icon-16.png", + "32": "icon-32.png", + "64": "icon-64.png", + "128": "icon-128.png" + }, + "content_scripts": [ + { + "matches": [""], + "js": ["content.js"] + } + ], + "permissions": [ + "storage", + "activeTab", + "tabs", + "scripting" + ], + "background": { + "service_worker": "background.js" + }, + "manifest_version": 3, + "version": "1.2.1", + "action": { + "default_popup": "index.html", + "default_title": "ResVault", + "default_icon": { + "16": "icon-16.png", + "32": "icon-32.png", + "64": "icon-64.png", + "128": "icon-128.png" + } + } +} \ No newline at end of file diff --git a/resvault-fixed-20251018-140436/build/robots.txt b/resvault-fixed-20251018-140436/build/robots.txt new file mode 100644 index 00000000..9f3025f5 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/robots.txt @@ -0,0 +1,24 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# + + +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/resvault-fixed-20251018-140436/build/static/css/main.43a4f363.css b/resvault-fixed-20251018-140436/build/static/css/main.43a4f363.css new file mode 100644 index 00000000..a82ff8f6 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/static/css/main.43a4f363.css @@ -0,0 +1,2 @@ +body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.w-100{width:100%}.h-100{height:100%}.d-none{display:none}.d-block{display:block}.d-inline{display:inline-block}.d-flex{display:flex}.flex-wrap{flex-wrap:wrap}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-stretch{align-items:stretch}.align-content-center{align-content:center}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-stretch{align-content:stretch}.justify-space{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.grow-0{flex-grow:0}.grow-1{flex-grow:1}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-white{color:#fff!important}.p0{padding:0!important}.p-10{padding:10px!important}.p-20{padding:20px!important}.p-40{padding:40px!important}.pb-0{padding-bottom:0!important}.pb-10{padding-bottom:10px!important}.pb-20{padding-bottom:20px!important}.pt-0{padding-top:0!important}.pt-10{padding-top:10px!important}.pt-20{padding-top:20px!important}.pt-40{padding-top:40px!important}.pb-40{padding-bottom:40px!important}.pl-0{padding-left:0!important}.pl-10{padding-left:10px!important}.pl-20{padding-left:20px!important}.pl-40{padding-left:40px!important}.pr-0{padding-right:0!important}.pr-10{padding-right:10px!important}.pr-20{padding-right:20px!important}.pr-40{padding-right:40px!important}.m0{margin:0!important}.m-10{margin:10px!important}.m-20{margin:20px!important}.m-40{margin:40px!important}.mb-0{margin-bottom:0!important}.mb-10{margin-bottom:10px!important}.mb-20{margin-bottom:20px!important}.mb-40{margin-bottom:40px!important}.mt-0{margin-top:0!important}.mt-10{margin-top:10px!important}.mt-20{margin-top:20px!important}.mt-40{margin-top:40px!important}.ml-0{margin-left:0!important}.ml-10{margin-left:10px!important}.ml-20{margin-left:20px!important}.ml-40{margin-left:40px!important}.mr-0{margin-right:0!important}.mr-10{margin-right:10px!important}.mr-20{margin-right:20px!important}.mr-40{margin-right:40px!important}.card--style-cover,.slider-cover__slide,.slider-simple__slide{background-size:100%;background-size:cover;background-position:50%}.bottom-navigation__icons li.centered,.button--main,.button--more,.card--style-bg,.card--style-plan-premium,.gradient-lightgreen{background-color:#47e7ce!important;background:linear-gradient(60deg,#47e7ce,#4fa8c4)!important}.account-info,.gradient-purple{background-color:#633a97!important;background:linear-gradient(60deg,#633a97,#4c87c6)!important}body,html{position:relative;width:100%;height:100%;overflow-x:hidden;font-size:62.5%}body{font-family:"Poppins",sans-serif;background-image:#10083a;color:#fff;margin:0;padding:0;font-size:1.4rem;line-height:1.2;-webkit-text-size-adjust:100%;overflow:hidden;font-weight:400;height:600px;width:300px}a{text-decoration:none;color:#47e7ce}p{padding:0 0 10px;margin:0;line-height:1.5}p.welcome{padding-bottom:20px}blockquote,p.highlight{font-size:1.8rem;font-weight:300}blockquote{padding:0 0 0 50px;margin:0 0 20px;line-height:1.5;background-repeat:no-repeat;background-position:0 0;background-size:40px}blockquote span{display:block;font-weight:600;font-size:1.4rem;text-transform:uppercase;color:#292467}h1,h2,h3,h4,h5,h6{font-weight:500;padding:0 0 20px;margin:0;color:#fff}h1{font-size:2.8rem}h2{font-size:1.8rem}h2.page__title{position:relative;padding:0 0 10px;margin:0 0 15px;font-size:1.4rem;font-weight:600}h2.page__title:after{content:"";width:40px;height:1px;background-color:#53539a;position:absolute;left:0;bottom:0;z-index:0}h3{font-size:1.6rem}h4{font-size:1.4rem}h5{font-size:1.2rem}h6{font-size:1.1rem}input,select,textarea{outline:none;font-family:"Poppins",sans-serif}.buttons{width:100%}.buttons--centered{display:flex;align-items:center;justify-content:center}.button{display:inline-block;font-size:1.3rem;text-transform:uppercase;padding:18px 30px;border-radius:25px;letter-spacing:1px;font-weight:600;border:none;cursor:pointer}.button--small{font-size:1.1rem;padding:15px 30px}.button--ex-small{font-size:1.1rem;padding:10px 20px}.button--full{width:100%;text-align:center;padding:18px 0}.button--main{color:#000}.button--secondary{background-color:#291f57;color:#fff}.button--more{color:#000}.button--blue{background-color:#000;color:#fff}.button--green{background-color:#47e7ce;color:#000}.button--disabled{background-color:#291f57;color:#fff;opacity:.5;cursor:default!important}ul.custom-listing li{padding:10px 0;line-height:1.5}ul.custom-listing li span{font-weight:600;color:#47e7ce}.page{height:520px;width:260px}.page__content{width:260px;height:100%;padding:0 20px;overflow:none;position:relative;-webkit-overflow-scrolling:touch;scrollbar-width:none}.page__content--full{width:100%;padding:0}.page__content--with-header{padding-top:70px;height:calc(100% - 70px)}.page__content--with-bottom-nav{height:calc(100% - 85px)}.page__content.page__content--with-bottom-nav.page__content--with-header,.page__content.page__content--with-header.page__content--with-bottom-nav{height:520px}.page__title-bar{display:flex;align-items:center;justify-content:space-between;padding-bottom:20px}.page__title-bar h3{font-size:1.4rem;padding:0}.page__title-bar h3 span{font-size:1.2rem;color:#47e7ce;font-weight:300;display:block}.page__title-right{position:relative;display:flex;align-items:center}.page-inner{width:calc(100% - 40px);padding:0 20px}.page-inner--with-bottom-button{padding:20px 20px 100px}.account-info{width:100%;padding:100px 0;text-align:center;position:relative}.account-info--details{padding:80px 0 50px}.account-info__icon{width:100%;text-align:center;padding-bottom:10px}.account-info__icon img{display:block;width:50px;margin:auto}.account-info__title{font-size:1rem;letter-spacing:2px;padding-bottom:5px}.account-info__total{font-size:3.6rem;letter-spacing:-1px}.account-info__stats{padding-top:5px;font-size:1.3rem}.account-info__stats span{padding:0 5px}.account-info__stats span.plus{color:#47e7ce}.account-info__svg{width:100%;position:absolute;bottom:0;left:0;z-index:1;height:25px}.account-info__chart{width:90%;margin:20px auto 0}.account-buttons{width:100%;position:relative;top:-25px;z-index:2;display:flex;align-items:center;justify-content:center}.account-buttons a{display:block;width:50px;height:50px;background-color:#291f57;color:#47e7ce;text-align:center;border-radius:100%;font-size:1rem;letter-spacing:.5px;margin:0 10px;font-weight:600}.account-buttons a img{display:block;width:12px;margin:10px auto 5px}.account-selectors{width:100%;padding:20px 0 0;display:flex;align-items:center;justify-content:center}.account-selectors span{display:block;width:30px;height:30px;line-height:30px;background-color:#291f57;color:#fff;font-weight:400;text-align:center;border-radius:100%;font-size:1.1rem;margin:0 5px;cursor:pointer}.account-selectors span.selected,.account-selectors span:hover{background-color:#47e7ce;color:#291f57}.panel{z-index:9999;display:block;box-sizing:border-box;overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;width:calc(100% - 64px);top:0;height:100%;transform:translateZ(0);transition-duration:.4s}.panel--left{background-color:#000;left:calc(-100% + 64px)}.panel--right{background-color:#000;right:calc(-100% + 64px)}.panel__navigation{width:100%;overflow:hidden}body.with-panel-left-reveal .bottom-toolbar,body.with-panel-left-reveal .page,body.with-panel-right-reveal .bottom-toolbar,body.with-panel-right-reveal .page{transition-duration:.5s;transition-property:transform}body.with-panel-left-reveal .body-overlay,body.with-panel-right-reveal .body-overlay{display:block}body.with-panel-left-reveal .bottom-toolbar,body.with-panel-left-reveal .page{transform:translate3d(calc(100% - 64px),0,0)}body.with-panel-left-reveal .body-overlay{margin-left:calc(100% - 64px)}body.with-panel-left-reveal .panel--left{transform:translate3d(100%,0,0);transition-duration:.4s}body.with-panel-right-reveal .bottom-toolbar,body.with-panel-right-reveal .page{transform:translate3d(calc(-100% + 64px),0,0)}body.with-panel-right-reveal .body-overlay{margin-left:calc(-100% + 64px)}body.with-panel-right-reveal .panel--right{transform:translate3d(-100%,0,0);transition-duration:.4s}body.panel-closing .bottom-toolbar,body.panel-closing .page{transition-duration:.4s;transition-property:transform}.body-overlay{background:transparent;opacity:0;z-index:5999;display:none}.body-overlay,.popup{position:absolute;left:0;top:0;width:100%;height:100%}.popup{z-index:99999;box-sizing:border-box;display:block;overflow:auto;padding:40px;-webkit-overflow-scrolling:touch;transition-property:transform;transform:translate3d(0,100%,0);transition-duration:.4s;background-color:#000}.popup.active{transform:translateZ(0)}.popup--wider{padding:20px}.popup--half{height:50%;top:50%}.popup--centered{width:80%;height:60%;top:20%;left:10%;transform:translate3d(0,-20px,0);opacity:0;visibility:hidden;transition-property:opacity,transform;transition-duration:.4s}.popup--centered.active{opacity:1;visibility:visible;transform:translateZ(0)}.popup--shadow{box-shadow:0 0 36px 0 rgba(0,0,0,.12)}.popup__title{padding-bottom:20px}.popup__icon img{display:block;max-width:50px;margin-bottom:40px}.popup__close{position:absolute;top:20px;right:20px;z-index:999999}.popup__close img{display:block;max-width:18px}.social-nav ul li{margin:0 0 15px}.social-nav ul li a{display:flex;align-items:center;color:#fff}.social-nav ul li img{display:block;max-width:20px;margin-right:20px}.notifications{padding-bottom:20px}.notifications li{margin:0 0 15px;border-bottom:1px solid hsla(0,0%,100%,.2);padding-bottom:15px}.notifications li a{font-weight:600;color:#fff}.comments{padding-bottom:20px}.comments li{margin:0 0 10px;background-color:#0f0638;padding:10px 20px;border-radius:15px}.comments li a{font-weight:600;color:#fff}.header{padding:20px 0;color:#fff}.header--absolute{position:absolute;top:0;left:0;z-index:888}.header--fixed{position:fixed;top:0;left:0;z-index:888}.header--page{background-color:#000}.header--transparent{background:none}.header--gradient{background:linear-gradient(0deg,transparent,rgba(0,0,0,.3))}.header__inner{width:260px;padding:0 20px;display:flex;align-items:center;justify-content:space-between}.header__icon{cursor:pointer}.header__icon img{display:block;max-width:20px}.header__icon--empty-space{width:20px}.header__icon--menu{width:20px;height:16px;transform:rotate(0deg);transition:.3s ease-in-out;cursor:pointer}.header__icon--menu span{display:block;position:absolute;height:1px;width:50%;background:#fff;opacity:1;left:0;transform:rotate(0deg);transition:.25s ease-in-out;-webkit-tap-highlight-color:transparent}.header__icon--menu span:nth-child(2n){left:50%}.header__icon--menu span:nth-child(odd){left:0}.header__icon--menu span:first-child,.header__icon--menu span:nth-child(2){top:0}.header__icon--menu span:nth-child(3),.header__icon--menu span:nth-child(4){top:6px}.header__icon--menu span:nth-child(5),.header__icon--menu span:nth-child(6){top:12px}.header__icon--menu.open span:first-child,.header__icon--menu.open span:nth-child(6){transform:rotate(45deg);background:#000}.header__icon--menu.open span:nth-child(2),.header__icon--menu.open span:nth-child(5){transform:rotate(-45deg);background:#000}.header__icon--menu.open span:first-child{left:2px;top:4px}.header__icon--menu.open span:nth-child(2){left:calc(50% - 2px);top:4px}.header__icon--menu.open span:nth-child(3){left:-50%;opacity:0}.header__icon--menu.open span:nth-child(4){left:100%;opacity:0}.header__icon--menu.open span:nth-child(5){left:2px;top:12px}.header__icon--menu.open span:nth-child(6){left:calc(50% - 2px);top:12px}.header__icon--cart{position:relative}.header__icon--cart span{position:absolute;top:-10px;right:-10px;width:20px;height:20px;border-radius:50%;text-align:center;line-height:20px;font-size:1.1rem;font-weight:600;background-color:#fff;color:#292467}.header__icon--cart span.animate{animation:cartnr 1.5s cubic-bezier(.39,.01,.17,1);animation-iteration-count:1}.header__icon--more img{width:6px}.header__icons-group{display:flex;align-items:center}.header__icons-group--right .header__icon{margin-left:20px}.header__icons-group--left .header__icon{margin-right:20px}.header__logo--text{color:#fff;font-size:1.8rem;font-weight:400}.header__logo--text strong{font-weight:600;color:#47e7ce}.header__logo--text a{color:#fff}.header__logo--intro{font-size:2.8rem;width:100%;text-align:center}.header__title{color:#000;font-size:1.8rem;font-weight:300}@keyframes cartnr{0%{transform:scale(1.5)}50%{transform:scale(.8)}to{transform:scale(1.5)}}.bottom-navigation{width:100%;position:absolute;bottom:0;left:0;z-index:888;background-color:#000;padding:10px 0;overflow:hidden}.bottom-navigation--gradient{background:linear-gradient(180deg,rgba(41,31,87,0),rgba(41,31,87,0) 30%,#291f57 0,#291f57)}.bottom-navigation--white{background-color:#fff}.bottom-navigation__icons{width:calc(100% - 60px);margin:auto;display:flex;align-items:center;justify-content:space-between}.bottom-navigation__icons li{text-align:center;margin:20px 0 0;position:relative}.bottom-navigation__icons li a{color:#909db3}.bottom-navigation__icons li img{display:block;max-width:22px;margin:auto}.bottom-navigation__icons li span{text-transform:uppercase;font-size:.9rem;display:block;padding-top:5px}.bottom-navigation__icons li i{position:absolute;top:-10px;right:-10px;width:20px;height:20px;border-radius:50%;text-align:center;line-height:20px;font-size:1.1rem;font-weight:600;background-color:#000;color:#47e7ce;font-style:normal}.bottom-navigation__icons li.centered{width:60px;height:60px;border-radius:100%;display:flex;align-items:center;justify-content:center;margin:0}.bottom-navigation__icons li.centered img{display:block;max-width:26px;margin:auto}.bottom-navigation__icons--photos li{margin:0}.bottom-navigation__icons--centered{justify-content:center}.bottom-navigation__icons--centered li{padding:0 5px}.bottom-navigation__icons--centered li img{max-width:32px}.bottom-navigation__pagination{position:absolute;width:100%;bottom:0!important;top:auto!important;text-align:center}.bottom-navigation__pagination .swiper-pagination-bullet{width:10px;height:1px;display:inline-block;border-radius:0;background:#909db3;opacity:.2;margin:0 2px}.bottom-navigation__pagination .swiper-pagination-bullet-active{background:#909db3;opacity:1}.bottom-navigation__pagination .swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 2px}.bottom-navigation__more{position:absolute;top:20px;right:15px;cursor:pointer;z-index:999999}.bottom-navigation__more img{display:block;max-width:4px}.bottom-navigation__shop{width:calc(100% - 20px);padding:0 10px;display:flex;align-items:center;justify-content:space-between}.bottom-fixed-button{width:calc(100% - 40px);position:absolute;bottom:0;left:0;z-index:888;padding:20px;overflow:hidden}.main-nav{width:calc(100% - 60px);padding:30px}.main-nav ul{display:flex;flex-wrap:wrap}.main-nav ul li{margin:0 0 5px;padding:10px 0;font-size:1.2rem;display:block;width:100%}.main-nav ul li a{display:flex;align-items:center;color:#fff}.main-nav ul li img{display:block;max-width:18px;margin-right:20px}.main-nav ul li span{display:block}.subnav-header{padding:20px;display:flex;align-items:center;justify-content:flex-end}.subnav-header img{display:block;max-width:16px}.user-profile{width:100vw;margin-left:-20px;padding:60px 0 20px;background-color:#000;position:relative}.user-profile__thumb{width:100%;text-align:center}.user-profile__thumb img{display:block;width:120px;border-radius:100%;margin:auto}.user-profile__name{width:100%;text-align:center;padding:15px 0;font-size:2.2rem;font-weight:600;color:#fff}.info-box{text-align:center;padding:0 15px}.info-box span{display:block;font-weight:600;font-size:1.2rem;color:#fff}.user-details{padding:20px 0 0;display:block;text-align:center}.user-details__thumb{margin:0 auto 20px;text-align:center}.user-details__thumb img{display:block;max-width:120px;margin:auto;border-radius:100%}.user-details__title{color:#fff;font-weight:600;font-size:1.8rem;letter-spacing:-.5px}.user-details__title span{display:block;font-weight:300;font-size:1.6rem}.search{padding:40px}.search__form{background-color:#291f57;border-radius:15px;padding:10px 20px;margin-bottom:20px}.search__form form{display:flex}.search__input{border:none;background:none;font-size:1.2rem;font-weight:500;width:100%;color:#fff}.search__results{padding:40px 0 0}.search-result{display:flex;align-items:center;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid hsla(0,0%,100%,.2)}.search-result__thumb{margin-right:20px}.search-result__thumb img{display:block;max-width:50px;border-radius:10px}.search-result__details p strong{color:#47e7ce}.cards{display:flex;flex-wrap:wrap}.cards--11 .card{width:calc(100% - 40px);padding:20px;margin-bottom:20px}.cards--11 .card__icon img{max-width:65px!important}.cards--11 .card__title{font-size:1.8rem!important}.cards--11 .card--style-thumb{width:100%;padding:0}.cards--11 .card--style-inline{width:100%;padding:0 0 10px}.cards--11 .card--style-inline-bg{width:calc(100% - 30px);padding:20px 10px 20px 20px}.cards--11 .card--style-inline .card__icon{flex:0 0 40px;margin-right:20px;margin-bottom:0!important}.cards--11 .card--style-inline .card__icon img{max-width:40px!important}.cards--11 .card--style-inline .card__thumb{margin-right:20px;margin-bottom:0!important}.cards--11 .card--style-inline .card__thumb img{max-width:60px!important}.cards--11 .card--style-inline .card__details{flex-grow:1;padding-right:10px}.cards--11 .card--style-inline .card__title{font-size:1.6rem!important;padding-bottom:5px}.cards--11 .card--style-inline .card__more{flex:0 0 5px}.cards--11 .card--style-inline .card__more--play{flex:0 0 35px}.cards--12 .card{width:calc(50% - 50px);padding:20px;margin-right:20px;margin-bottom:20px}.cards--12 .card:nth-child(2n+2){margin-right:0}.cards--12 .card__title{padding-bottom:5px!important;font-size:1.4rem}.cards--12 .card--style-thumb{width:calc(50% - 10px);padding:0}.cards--13 .card{width:calc(33.333% - 28.333px);padding:10px;margin-right:10px;margin-bottom:10px}.cards--13 .card:nth-child(3n+3){margin-right:0}.cards--13 .card__icon img{max-width:34px!important}.cards--13 .card__title{font-size:1.1rem!important;padding-bottom:5px!important}.cards--13 .card--style-cover{width:calc(33.333% - 28.333px);padding:10px}.cards--13 .card--style-thumb{width:calc(33.333% - 8.333px);padding:0}.cards--14 .card{width:calc(25% - 55px);padding:20px;margin-right:20px;margin-bottom:20px}.cards--14 .card:nth-child(4n+4){margin-right:0}.cards--14 .card__icon img{max-width:16px!important}.cards--14 .card__title{font-size:1.2rem!important;padding-bottom:0!important}.cards--14 .card--style-thumb{width:calc(25% - 15px);padding:0}.card{position:relative;overflow:hidden}.card__icon{margin-bottom:10px;position:relative;z-index:33}.card__icon img{display:block;max-width:50px}.card__icon--centered{width:100%;text-align:center}.card__icon--centered img{margin-left:auto;margin-right:auto}.card__thumb{margin-bottom:10px;position:relative}.card__thumb img{display:block;max-width:100%}.card__thumb--round-corners img{border-radius:15px}.card__thumb--round-corners-full img{border-radius:100%}.card__thumb--round-corners-top img{border-top-left-radius:15px;border-top-right-radius:15px}.card__plan{font-size:3.6rem;width:100%;text-align:center;color:#fff;font-weight:600;letter-spacing:-1px;margin-bottom:10px}.card__plan--premium{font-size:4.8rem}.card__title{padding-bottom:10px;position:relative;z-index:33}.card__title--centered{width:100%;text-align:center}.card__title a{color:#fff;font-weight:500}.card__text{font-size:1.2rem;position:relative;z-index:333}.card__text--centered{width:100%;text-align:center}.card__text a{color:#fff;font-weight:400}.card__more{width:5px;padding:5px}.card__more a img{display:block;max-width:100%}.card__top-left-info{position:absolute;top:10px;left:10px;z-index:88}.card__top-right-info{position:absolute;top:10px;right:10px;z-index:88}.card__bottom-left-info{position:absolute;bottom:10px;left:10px;z-index:88}.card__bottom-right-info{position:absolute;bottom:10px;right:10px;z-index:88}.card__price{padding:5px 10px;font-weight:600;background-color:#fff;color:#292467;border-radius:10px}.card__price span{text-decoration:line-through;opacity:.5;padding-left:5px}.card__badge{background-color:#47e7ce;height:25px;line-height:25px;left:-30px;position:absolute;top:5px;width:100px;text-align:center;-webkit-transform:rotate(-45deg)}.card__badge span{color:#fff;font-size:1.2rem;font-weight:600;letter-spacing:1px}.card__addtocart a{display:inline-block;width:40px;height:40px;background-color:#fff;border-radius:100%;display:flex;align-items:center;justify-content:center}.card__addtocart a img{display:block;max-width:50%;border-radius:0!important}.card__gradient{width:100%;height:100%;position:absolute;bottom:0;left:0;z-index:11;background:linear-gradient(180deg,rgba(0,0,0,.2),#000)}.card__details{position:relative;z-index:55}.card__details--bg{width:calc(100% - 30px);padding:15px;background-color:#291f57}.card__details--round-corners-bottom{border-bottom-left-radius:15px;border-bottom-right-radius:15px}.card--style-icon{background-color:#291f57}.card--style-round-corners{border-radius:15px}.card--style-cover .card__title{color:#fff!important;font-weight:600}.card--style-cover .card__text{color:#fff!important}.card--style-inline{display:flex;align-items:center;justify-content:space-between}.card--style-inline-bg{background-color:#291f57}.card-coin{width:calc(100% - 30px);padding:15px;margin-bottom:10px;justify-content:space-between;background-color:#291f57;border-radius:15px;color:#fff}.card-coin,.card-coin__logo{display:flex;align-items:center}.card-coin__logo img{display:block;width:20px;margin-right:10px}.card-coin__logo span{font-weight:600}.card-coin__logo span b{display:block;font-weight:300;font-size:1.1rem}.card-coin__price strong{font-weight:600}.card-coin__price span{display:block;text-align:right}.card-coin__price .plus{color:#47e7ce}.card-coin__price .minus{color:#e58db6}.card-coin__chart{width:50px}.slider-intro{width:100%;height:100%}.slider-intro__slide{width:100%}.slider-intro .caption{width:calc(100% - 80px);padding:0 40px;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff}.slider-intro .caption__title{font-weight:300;color:#fff}.slider-intro .caption__title strong{font-weight:600}.slider-intro .caption__image{width:100%;text-align:center;padding-bottom:40px}.slider-intro .caption__image img{display:block;max-width:100%;margin:auto}.slider-intro__skip{position:absolute;bottom:50px;left:0;width:100%;text-align:center;z-index:888;font-size:1.1rem;letter-spacing:1px;font-weight:600}.slider-intro__skip a{color:#fff}.slider-intro__prev{right:40px;left:auto;top:auto;bottom:50px}.slider-intro__prev:after{font-size:2rem;color:#fff}.slider-intro__next{right:10px;left:auto;top:auto;bottom:50px}.slider-intro__next:after{font-size:2rem;color:#fff}.slider-intro__pagination.swiper-pagination-bullets{bottom:10px}.slider-intro__pagination.swiper-pagination-bullets .swiper-pagination-bullet{width:10px;height:1px;margin:0 2px;border-radius:0;background:#fff;opacity:.4}.slider-intro__pagination.swiper-pagination-bullets .swiper-pagination-bullet-active{background:#fff;opacity:1}.slider-simple{width:100%;height:300px}.slider-simple--heigher{height:350px}.slider-simple--vw-width{width:100vw;margin-left:-20px}.slider-simple--full-height{height:100%}.slider-simple--round-corners{border-radius:15px}.slider-simple__slide{width:100%}.slider-simple .caption{width:calc(100% - 40px);padding:0 20px 10px;height:calc(100% - 20px);display:flex;align-items:flex-end;justify-content:flex-start;text-align:left;color:#fff}.slider-simple .caption--gradient{background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.1))}.slider-simple .caption--centered{align-items:center;justify-content:center;text-align:center}.slider-simple .caption__title{font-weight:300;color:#fff;font-size:3.2rem;line-height:1}.slider-simple .caption__title strong{font-weight:900;display:block}.slider-simple .caption__title span{font-weight:600}.slider-simple .caption__title--centered{font-size:2.4rem;line-height:1.5}.slider-simple .caption__title a{color:#fff}.slider-simple__prev{position:relative;right:auto;left:auto;top:auto;bottom:0;margin-right:10px}.slider-simple__prev:after{font-size:1.6rem;color:#fff}.slider-simple__next{position:relative;right:auto;left:auto;top:auto;bottom:0}.slider-simple__next:after{font-size:1.6rem;color:#fff}.slider-simple__pagination.swiper-pagination-bullets{bottom:10px}.slider-simple__pagination.swiper-pagination-bullets .swiper-pagination-bullet{width:10px;height:1px;margin:0 2px;border-radius:0;background:#fff;opacity:.4}.slider-simple__pagination.swiper-pagination-bullets .swiper-pagination-bullet-active{background:#fff;opacity:1}.slider-cover{width:100%;padding-bottom:20px}.slider-cover--round-corners .slider-cover__slide{border-radius:15px}.slider-cover__slide{width:100%;position:relative}.slider-cover__slide--34{width:85%;height:200px}.slider-cover__slide--1h{width:66%;height:250px}.slider-cover__slide--2{width:calc(50% - 5px);height:200px}.slider-cover__slide--2h{width:38%;height:200px}.slider-cover__slide--3{width:calc(33.33% - 6.666px);height:150px}.slider-cover__slide--3h{width:38%;height:200px}.slider-cover .caption{width:calc(100% - 30px);padding:0 15px;height:100%;display:flex;align-items:flex-end;justify-content:flex-start;text-align:left;color:#fff}.slider-cover .caption--gradient{background:linear-gradient(0deg,rgba(0,0,0,.7),rgba(0,0,0,.1))}.slider-cover .caption__title{font-weight:300;color:#fff;font-size:1.8rem;line-height:1.1}.slider-cover .caption__title strong{font-weight:900;display:block}.slider-cover .caption__title--smaller{font-size:1.4rem;line-height:1}.slider-cover .caption__title--centered{text-align:center}.slider-cover .caption__title--news{font-weight:400;line-height:1.5;padding:0 0 10px;font-size:1.6rem}.slider-cover .caption__title--news a{color:#fff}.slider-cover__more{position:absolute;top:10px;right:10px}.slider-cover__more a{display:block;width:30px;height:30px;background-color:#292467;border-radius:100%;display:flex;align-items:center;justify-content:center}.slider-cover__more a img{display:block;width:16px}.slider-cover__prev{position:relative;right:auto;left:auto;top:10px;bottom:0;margin-right:10px}.slider-cover__prev:after{font-size:1.6rem;color:#fff}.slider-cover__next{position:relative;right:auto;left:auto;top:10px;bottom:0}.slider-cover__next:after{font-size:1.6rem;color:#fff}.slider-cover__pagination.swiper-pagination-progressbar{width:100%;height:1px;left:0;top:auto!important;bottom:0;background:hsla(0,0%,100%,.2)}.slider-cover__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:hsla(0,0%,100%,.35)}.slider-portfolio{width:100%;padding-bottom:20px}.slider-portfolio--round-corners .slider-portfolio__slide{border-radius:15px}.slider-portfolio__slide{width:100%;background-color:#291f57;position:relative}.slider-portfolio__slide--34{width:85%}.slider-portfolio__slide--1h{width:66%}.slider-portfolio__slide--2{width:calc(50% - 5px)}.slider-portfolio__slide--2h{width:38%}.slider-portfolio__slide--3{width:calc(33.33% - 6.666px)}.slider-portfolio__slide--3h{width:38%}.slider-portfolio .caption{width:calc(100% - 30px);padding:15px;color:#fff}.slider-portfolio .caption a{color:#fff}.slider-portfolio .caption__title{display:flex;align-items:center;font-weight:300;color:#fff;font-size:1.4rem;line-height:1.1;padding:0}.slider-portfolio .caption__title img{display:block;width:25px}.slider-portfolio .caption__title span{padding-left:5px}.slider-portfolio .caption__title strong{padding-left:5px;font-size:1.2rem;font-weight:600}.slider-portfolio .caption__chart{padding:0 5px}.slider-portfolio .caption__info{display:flex;width:100%;justify-content:space-between}.slider-portfolio .caption__info strong{font-weight:600;font-size:1.6rem}.slider-portfolio .caption__info span{font-weight:600;font-size:1.4rem}.slider-portfolio .caption__info b{font-weight:300;font-size:1.2rem;margin-bottom:10px}.slider-portfolio .caption__info .plus{color:#47e7ce}.slider-portfolio .caption__info .minus{color:#e58db6}.slider-portfolio__more{position:absolute;top:10px;right:10px}.slider-portfolio__more a{display:block;width:30px;height:30px;background-color:#fff;border-radius:100%;display:flex;align-items:center;justify-content:center}.slider-portfolio__more a img{display:block;width:16px}.slider-portfolio__prev{position:relative;right:auto;left:auto;top:10px;bottom:0;margin-right:10px}.slider-portfolio__prev:after{font-size:1.6rem;color:#fff}.slider-portfolio__next{position:relative;right:auto;left:auto;top:10px;bottom:0}.slider-portfolio__next:after{font-size:1.6rem;color:#fff}.slider-portfolio__pagination.swiper-pagination-progressbar{width:100%;height:1px;left:0;top:auto!important;bottom:0;background:hsla(0,0%,100%,.2)}.slider-portfolio__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:hsla(0,0%,100%,.35)}.slider-thumbs{width:100%;padding-bottom:20px}.slider-thumbs__slide{width:100%;height:auto!important;position:relative}.slider-thumbs__slide--1h{width:66%}.slider-thumbs__slide--2{width:calc(50% - 5px)}.slider-thumbs__slide--2h{width:38%}.slider-thumbs__slide--3{width:calc(33.33% - 6.666px)}.slider-thumbs__slide--3h{width:26%}.slider-thumbs__slide--4{width:calc(25% - 7.5px)}.slider-thumbs__slide--4h{width:20%}.slider-thumbs__image{position:relative;overflow:hidden}.slider-thumbs__image img{display:block;max-width:100%}.slider-thumbs__image--round-corners img{border-radius:15px}.slider-thumbs__image--round-corners-top img{border-top-left-radius:15px;border-top-right-radius:15px}.slider-thumbs__image--round-corners-full img{border-radius:100%}.slider-thumbs__image .active-user{display:block;width:10px;height:10px;border-radius:50%;background-color:#55c709;border:2px solid #fff;position:absolute;top:2px;right:5px;z-index:999}.slider-thumbs__icon{background-color:#291f57}.slider-thumbs__icon--round-corners{border-radius:15px}.slider-thumbs__icon img{display:block;max-width:40%;margin:auto;padding:20px 0}.slider-thumbs .caption{padding:10px 0;text-align:left;color:#291f57}.slider-thumbs .caption--bg{background-color:#291f57;width:calc(100% - 30px);padding:15px}.slider-thumbs .caption--round-corners-bottom{border-bottom-left-radius:15px;border-bottom-right-radius:15px}.slider-thumbs .caption__title{font-weight:500;font-size:1.6rem;line-height:1.1;padding-bottom:0}.slider-thumbs .caption__title strong{font-weight:900;display:block}.slider-thumbs .caption__title--smaller{font-size:1.2rem;line-height:1.2}.slider-thumbs .caption__title--centered{text-align:center}.slider-thumbs .caption__category{display:inline-block;background-color:#47e7ce;color:#000;font-size:1rem;padding:5px 10px;margin:5px 0 0;border-radius:10px;font-weight:600;letter-spacing:1px}.slider-thumbs__more{position:absolute;top:10px;right:10px}.slider-thumbs__more a{display:block;width:30px;height:30px;background-color:#292467;border-radius:100%;display:flex;align-items:center;justify-content:center}.slider-thumbs__more a img{display:block;width:16px}.slider-thumbs__top-left-info{position:absolute;top:0;left:0;z-index:22;padding:0}.slider-thumbs__top-right-info{position:absolute;top:0;right:0;z-index:22;padding:10px 10px 0 0}.slider-thumbs__bottom-left-info{position:absolute;bottom:0;left:0;z-index:22;padding:0}.slider-thumbs__bottom-right-info{position:absolute;bottom:0;right:0;padding:0 10px 10px 0;z-index:22}.slider-thumbs__price{padding:5px 10px;font-weight:600;font-size:1.6rem;background-color:#fff;color:#000;border-radius:10px;display:flex;align-items:center;justify-content:center}.slider-thumbs__price span{text-decoration:line-through;opacity:.5;padding-left:5px}.slider-thumbs__addtocart a{display:block;width:40px;height:40px;background-color:#fff;border-radius:100%;display:flex;align-items:center;justify-content:center}.slider-thumbs__addtocart a img{display:block;max-width:50%;border-radius:0!important}.slider-thumbs__badge{background-color:#47e7ce;height:25px;line-height:25px;left:-30px;position:absolute;top:5px;width:100px;text-align:center;-webkit-transform:rotate(-45deg)}.slider-thumbs__badge span{color:#000;font-size:1.2rem;font-weight:600;letter-spacing:1px}.slider-thumbs__prev{position:relative;right:auto;left:auto;top:10px;bottom:0;margin-right:10px}.slider-thumbs__prev:after{font-size:1.6rem;color:#fff}.slider-thumbs__next{position:relative;right:auto;left:auto;top:10px;bottom:0}.slider-thumbs__next:after{font-size:1.6rem;color:#fff}.slider-thumbs__pagination.swiper-pagination-progressbar{width:100%;height:1px;left:0;top:auto!important;bottom:0;background:hsla(0,0%,100%,.2)}.slider-thumbs__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:hsla(0,0%,100%,.35)}.slider-links{width:100%;padding:10px 0 20px}.slider-links__slide{width:auto;height:auto!important;position:relative}.slider-links__slide .caption{padding:10px 0;text-align:left;color:#291f57}.slider-links__slide .caption__link{font-weight:900;font-size:1.4rem;line-height:1.1;padding-bottom:0}.slider-links__slide .caption__link a{background-color:#291f57;color:#fff;border-radius:25px;padding:10px 20px}.slider-links.slider-init-top .swiper-slide-active .caption__link a{background-color:#47e7ce;color:#000}.slider-links__prev{position:relative;right:auto;left:auto;top:auto;bottom:0;margin-right:10px}.slider-links__prev:after{font-size:1.6rem;color:#fff}.slider-links__next{position:relative;right:auto;left:auto;top:auto;bottom:0}.slider-links__next:after{font-size:1.6rem;color:#fff}.slider-links__pagination.swiper-pagination-progressbar{width:100%;height:1px;left:0;top:auto!important;bottom:0;background:hsla(0,0%,100%,.1)}.slider-links__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:hsla(0,0%,100%,.25)}.page--intro{height:100%;background-color:#0f0638}.text-animation{width:250px;margin:auto;background-image:-webkit-linear-gradient(left,hsla(0,0%,100%,0) 10%,#fff 50%,hsla(0,0%,100%,0) 90%);background-repeat:repeat;background-position:0 0;background-size:100% 250px;-webkit-text-fill-color:transparent;-webkit-background-clip:text;animation:stripes 3s linear infinite}@keyframes stripes{to{background-position:250px 0}}.page--splash{height:600px;width:300px;background:transparent}.splash{display:flex;align-items:center;justify-content:center;height:100%}.splash__content{width:100%}.splash__logo{width:100%;text-align:center;color:#fff;font-weight:300;font-size:2.8rem;margin-bottom:40px}.splash__logo strong{font-weight:600;color:#47e7ce}.splash__image{width:100%;text-align:center}.splash__image img{max-width:50%;display:block;margin:auto}.splash__text{width:70%;text-align:center;color:#fff;margin:0 auto 40px;line-height:1.5}.splash__buttons{width:70%;margin:auto}.splash__buttons .button{margin-bottom:10px}.splash__social-login{width:100%;text-align:center}.splash__social-login p{text-transform:uppercase;color:#fff;font-size:1.1rem;letter-spacing:1px;opacity:.7}.splash__social-login p a{color:#fff;opacity:1}.splash__social-icons{display:flex;align-items:center;justify-content:center;margin:20px 0}.page--login{height:100%;background-color:rgba(16,8,58,.8);height:600px;width:300px}.login{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.login__content{width:calc(100% - 80px);margin:auto}.login__title{width:100%;text-align:left;color:#fff;font-weight:600;font-size:1.6rem;letter-spacing:2px;text-transform:uppercase;margin-bottom:40px;padding:0}.login__text{width:70%;text-align:center;color:#fff;margin:0 auto 40px;line-height:1.5}.login-form{width:100%;margin:auto}.login-form__row{width:100%;margin-bottom:10px}.login-form__label{width:100%;display:block;padding-bottom:10px;color:#fff;text-transform:uppercase;font-size:1rem;letter-spacing:1px;font-weight:600}.login-form label.error{color:#ffbde1;padding:10px 0 0 5px;font-size:1.1rem}.login-form__input{width:calc(100% - 20px);background-color:initial;padding:10px;border-radius:0;border:none;border-bottom:1px solid hsla(0,0%,100%,.3);color:#fff}.login-form__submit{margin-top:20px;box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none}.login-form__forgot-pass{width:100%;text-align:right}.login-form__forgot-pass a{color:#fff;font-weight:600;font-size:1.2rem}.login-form__bottom{width:100%;text-align:center;margin-top:20px}.login-form__bottom p{color:#fff;padding-bottom:10px}.login-form__bottom p a{color:#47e7ce;font-weight:600;font-size:1.2rem}.icon{display:block}.icon--social{width:20px;height:20px;margin:0 10px}.icon--social img{display:block;max-width:100%}.form{margin:auto}.form__row{width:100%;margin-bottom:10px}.form__label{width:100%;display:block;padding-bottom:10px;color:#fff;text-transform:uppercase;font-size:1.1rem;letter-spacing:1px;font-weight:600}.form label.error{color:#f65656;padding:10px 0 0 5px;font-size:1.1rem}.form__input{width:calc(100% - 20px);background-color:initial;padding:10px;border-radius:0;border:none;border-bottom:1px solid hsla(0,0%,100%,.3);color:#fff}.form__input::placeholder{color:#fff;opacity:1}.form__input:-ms-input-placeholder{color:#fff}.form__input::-ms-input-placeholder{color:#fff}.form__input--12{width:calc(50% - 35px)}.form__input--23{width:calc(66.66667% - 35px)}.form__input--13{width:calc(33.33333% - 35px)}.form__textarea{width:calc(100% - 20px);height:50px;background-color:initial;padding:18px 10px;border-radius:0;font-weight:500;font-size:1.4rem;color:#fff;border:none;border-bottom:1px solid hsla(0,0%,100%,.3)}.form__textarea::placeholder{color:#fff;opacity:1}.form__textarea:-ms-input-placeholder{color:#fff}.form__textarea::-ms-input-placeholder{color:#fff}.form__select{padding:0;width:100%;margin:0;overflow:hidden;border-radius:0;background-image:url(/static/media/arrow-down.cc865b2f.svg);background-repeat:no-repeat;background-position:95% 50%;background-size:16px;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-bottom:1px solid hsla(0,0%,100%,.3)}.form__select,.form__select select{background-color:initial;color:#fff}.form__select select{padding:18px 0 10px 5px;width:calc(100% - 5px);margin:0 0 5px;border:none;box-shadow:none;font-weight:500;font-size:1.4rem;background-image:none;-webkit-appearance:none;appearance:none}.form__coin-icon{display:flex;align-items:center}.form__coin-icon img{display:block;width:20px}.form__coin-icon span{font-size:1.6rem;font-weight:600;padding-left:5px}.form__coin-total{font-size:2.4rem;font-weight:600}.form__submit{box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none}.radio-option{width:auto;display:inline-block;padding:0;margin:0 10px 10px 0;cursor:pointer}.radio-option label{cursor:pointer;display:block;padding:15px 20px;background-color:initial;border:1px solid #47e7ce;color:#47e7ce;text-align:left;font-size:1.4rem;font-weight:600;border-radius:10px}.radio-option label span{color:#291f57;font-weight:600}.radio-option input[type=radio]{display:none}.radio-option input[type=radio]:checked+label{background-color:#47e7ce;color:#000}.radio-option input[type=radio]:checked+label span{color:#000}.radio-option--full{width:100%;margin:0 0 10px}.radio-option--full label{padding:15px 20px 15px 40px}.radio-option--full input[type=radio]:checked+label{background-image:url(/static/media/checked-simple.8a4f333f.svg);background-repeat:no-repeat;background-position:15px 50%;background-size:16px}.checkbox-option{width:auto;display:inline-block;padding:0;margin:0 10px 10px 0;cursor:pointer}.checkbox-option label{cursor:pointer;display:block;padding:15px 20px;background-color:initial;border:1px solid #47e7ce;color:#47e7ce;text-align:left;font-size:1.4rem;font-weight:600;border-radius:10px}.checkbox-option label span{color:#291f57;font-weight:600}.checkbox-option input[type=checkbox]{display:none}.checkbox-option input[type=checkbox]:checked+label{background-color:#47e7ce;color:#000}.checkbox-option input[type=checkbox]:checked+label span{color:#000}.checkbox-option--full{width:100%;margin:0 0 10px}.checkbox-option--full label{padding:15px 20px 15px 40px}.checkbox-option--full input[type=checkbox]:checked+label{background-image:url(/static/media/checked-simple.8a4f333f.svg);background-repeat:no-repeat;background-position:15px 50%;background-size:16px}.card-selector{width:100%;display:inline-block;padding:0;margin:0 0 10px;cursor:pointer}.card-selector label{cursor:pointer;display:block;padding:20px 20px 20px 60px;background-color:#000;background-image:url(/static/media/card.3e53c8c7.svg);background-repeat:no-repeat;background-position:15px 50%;background-size:30px;color:#fff;text-align:left;font-size:1.4rem;font-weight:600;border-radius:10px}.card-selector label span{color:#47e7ce;font-weight:400;display:block}.card-selector input[type=radio]{display:none}.card-selector input[type=radio]:checked+label{background-color:#47e7ce;background-image:url(/static/media/checked-simple.8a4f333f.svg);background-repeat:no-repeat;background-position:15px 50%;background-size:16px;color:#000}.card-selector input[type=radio]:checked+label span{color:#000}.checkbox-simple{margin:5px}.checkbox-simple label{cursor:pointer;color:#fff}.checkbox-simple input[type=checkbox]{display:none}.checkbox-simple input[type=checkbox]+label:before{content:"\00a0";display:inline-block;font-size:1.8rem;font-weight:600;width:18px;height:18px;border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;margin:0 10px 0 0;line-height:18px;vertical-align:center;border:none;background-color:#0f0638}.checkbox-simple input[type=checkbox]:checked+label:before{color:#000;content:"\2713";border:none;text-align:center;background-color:#47e7ce}.switch__label{display:inline-block;position:relative;width:70px;height:30px;padding:0;margin-left:10px;border-radius:20px;background:#0f0638;transition:background .28s cubic-bezier(.4,0,.2,1);vertical-align:middle;cursor:pointer}.switch__label:before{content:"";position:absolute;top:4px;left:4px;width:22px;height:22px;background:#47e7ce;border-radius:50%;transition:left .28s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1),box-shadow .28s cubic-bezier(.4,0,.2,1)}.switch__label:active:before{box-shadow:0 2px 8px rgba(0,0,0,.28),0 0 0 20px hsla(0,0%,50.2%,.1)}.switch input:checked+.switch__label{background:#47e7ce}.switch input:checked+.switch__label:before{left:42px;background:#fff}.switch input:checked+.switch__label:active:before{box-shadow:0 2px 8px rgba(0,0,0,.28),0 0 0 20px rgba(0,150,136,.2)}.fieldset{width:calc(100% - 40px);padding:20px;background-color:#291f57;border-radius:15px;margin-bottom:20px;box-shadow:5px 5px 35px -14px rgba(0,0,0,.17)}.sub-fieldset{width:calc(100% - 20px);padding:10px;border:1px solid hsla(0,0%,100%,.2);border-radius:10px;margin-bottom:20px}.option-hidden{display:none;margin-bottom:10px}.option-hidden.show{display:block}#Note{display:none}#loader{width:100%;text-align:center;padding:40px 0}#loader-animation{display:inline-block;position:relative;margin:auto;width:80px;height:80px}#loader-animation div{animation:lds-roller 1.2s cubic-bezier(.5,0,.5,1) infinite;transform-origin:40px 40px}#loader-animation div:after{content:" ";display:block;position:absolute;width:7px;height:7px;border-radius:50%;background:#bf62f9;margin:-4px 0 0 -4px}#loader-animation div:first-child{animation-delay:-36ms}#loader-animation div:first-child:after{top:63px;left:63px}#loader-animation div:nth-child(2){animation-delay:-72ms}#loader-animation div:nth-child(2):after{top:68px;left:56px}#loader-animation div:nth-child(3){animation-delay:-.108s}#loader-animation div:nth-child(3):after{top:71px;left:48px}#loader-animation div:nth-child(4){animation-delay:-.144s}#loader-animation div:nth-child(4):after{top:72px;left:40px}#loader-animation div:nth-child(5){animation-delay:-.18s}#loader-animation div:nth-child(5):after{top:71px;left:32px}#loader-animation div:nth-child(6){animation-delay:-.216s}#loader-animation div:nth-child(6):after{top:68px;left:24px}#loader-animation div:nth-child(7){animation-delay:-.252s}#loader-animation div:nth-child(7):after{top:63px;left:17px}#loader-animation div:nth-child(8){animation-delay:-.288s}#loader-animation div:nth-child(8):after{top:56px;left:12px}@keyframes lds-roller{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.conversations{padding:0 0 5px;width:100%;margin:0;list-style:none;float:left;clear:both}.conversations__row{display:flex;width:calc(100% - 20px);color:#fff;background-color:#291f57;border-radius:15px;padding:10px;margin:0 0 10px}.conversations__row a{color:#fff}.conversations__row--undread a{color:#fff;font-weight:600}.conversations__avatar{max-width:50px;flex-grow:1;position:relative}.conversations__avatar img{display:block;max-width:100%;border-radius:50%}.conversations .active-user{display:block;width:10px;height:10px;border-radius:50%;background-color:#55c709;border:2px solid #fff;position:absolute;top:40px;right:5px;z-index:555}.conversations__details{padding:0 10px 0 20px;flex-grow:1}.conversations__user{font-weight:600;padding:0 0 5px}.conversations__user a{color:#fff}.conversations__short-content{padding:0;margin:0;font-size:1.2rem;line-height:1.5}.conversations__info{width:100px;text-align:right}.conversations__new-messages-nr,.conversations__time{font-size:1.1rem;font-weight:600}.conversations__new-messages-nr{width:20px;height:20px;float:right;background-color:#47e7ce;color:#000;border-radius:100%;text-align:center;margin:10px 0 0;line-height:20px}.chat{width:100%;margin:0;padding:0 0 20px;list-style:none;clear:both}.chat__row{padding:0;margin:0 0 10px;display:flex;width:100%}.chat__content{flex-grow:1;width:100%;border-radius:15px;padding:15px 20px}.chat__content p{padding:0!important;font-size:1.4rem}.chat__content p a{color:#47e7ce}.chat__row--received .chat__content{margin-right:5%;background-color:#291f57;border-top-left-radius:0;-webkit-border-top-left-radius:0;color:#fff}.chat__row--sent .chat__content{margin-left:5%;background-color:#000;color:#fff;border-bottom-right-radius:0;-webkit-border-bottom-right-radius:0}.chat__row--unread .chat__content{font-weight:600}.chat__time{font-size:1.1rem}.chat__row--sent .chat__time{color:#fff}.chat__avatar{max-width:40px;position:relative;margin-right:10px}.chat__avatar img{display:block;max-width:100%;border-radius:50%}.chat .active-user{display:block;width:8px;height:8px;border-radius:50%;background-color:#55c709;border:2px solid #fff;position:absolute;top:0;right:0;z-index:555}.chat__row--sent .chat__avatar{align-self:flex-end;position:relative;margin-left:10px}.chat-form{display:flex;align-items:center;justify-content:space-between;background-color:#fff;width:calc(100% - 40px);margin:0 10px;padding:10px;border-radius:10px}.chat-form__textarea{width:100%;flex-grow:1;background:none;background-color:initial;border:none;resize:none;height:20px}.chat-form__submit{box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none}.chat-form__submit img{display:block;width:30px}.tabs{display:flex;flex-wrap:wrap;width:100%}.tabs__label{order:1;display:block;padding:10px 0;cursor:pointer;font-weight:500}.tabs__label--auto{width:auto;padding:10px 20px 10px 5px}.tabs__label--12{width:50%}.tabs__label--13{width:33.333%}.tabs__content{order:99;flex-grow:1;width:100%;display:none;padding:0;margin-top:20px}.tabs input[type=radio].tabs__radio{display:none}.tabs input[type=radio].tabs__radio:checked+label.tabs__label{color:#fff}.tabs input[type=radio].tabs__radio:checked+label.tabs__label+.tabs__content{display:block}.tabs--style1{border-bottom:1px solid hsla(0,0%,100%,.2)}.tabs--style1 .tabs__label{text-align:center;background-color:#291f57}.tabs--style1 input[type=radio].tabs__radio:checked+label.tabs__label{color:#000;background-color:#47e7ce}.accordion{width:100%}.accordion__item{position:relative;width:100%;overflow:hidden;background-color:#291f57;margin-bottom:1px}.accordion__input{position:absolute;opacity:0;z-index:-1}.accordion__label{position:relative;display:block;cursor:pointer;padding:15px 10px;font-size:1.4rem;color:#fff;font-weight:500;transition:all .4s ease}.accordion__content{max-height:0;overflow:hidden;transition:all .4s ease}.accordion__content p{padding:10px!important}.accordion__input:checked~.accordion__content{max-height:300px}.accordion .accordion__label:hover,.accordion__input:checked~.accordion__label{background-color:#47e7ce;color:#000}.accordion__label span{position:absolute;right:5%;top:43%;display:block;width:14px;height:14px;text-align:center;background-image:url(/static/media/arrow-down.cc865b2f.svg);background-repeat:no-repeat;background-position:0 0;background-size:14px;transition:all .35s}.accordion__input[type=radio]:checked+.accordion__label span{transform:rotateX(180deg);background-image:url(/static/media/arrow-down.cc865b2f.svg)}.toggle{width:100%;margin:0 auto}.toggle__item{position:relative;width:100%;overflow:hidden;background-color:#291f57;margin-bottom:1px}.toggle__input{position:absolute;opacity:0;z-index:-1}.toggle__label{position:relative;display:block;cursor:pointer;padding:15px 10px;font-size:1.4rem;font-weight:500;color:#fff;transition:all .4s ease}.toggle__content{max-height:0;overflow:hidden;transition:all .4s ease}.toggle__content p{padding:10px!important}.toggle__input:checked~.toggle__content{max-height:300px}.toggle .toggle__label:hover,.toggle__input:checked~.toggle__label{background-color:#47e7ce;color:#000}.toggle__label span{position:absolute;right:10px;top:43%;display:block;width:14px;height:14px;text-align:center;background-image:url(/static/media/arrow-down.cc865b2f.svg);background-repeat:no-repeat;background-position:0 0;background-size:14px;transition:all .35s}.toggle__input[type=checkbox]:checked+.toggle__label span{transform:rotateX(180deg);background-image:url(/static/media/arrow-down.cc865b2f.svg)}.table{width:calc(100% - 40px);padding:20px;background-color:#291f57;border-radius:15px}.table__row{width:100%;display:flex;justify-content:space-between;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid hsla(0,0%,100%,.2)}.table__section--nr{flex:0 0 50px;font-weight:600;color:#fff}.table__section--grow{flex-grow:1}.table__section--header{font-weight:600;color:#fff}.table__section--centered{text-align:center}.table__icon{display:block;width:24px;margin:auto}.table--3cols .table__section{width:33.333%}.table--4cols .table__section{width:25%}.table--5cols{overflow-x:scroll;width:auto}.table--5cols .table__inner{width:125%}.table--5cols .table__section{width:25%}.table--6cols{overflow-x:scroll;width:auto}.table--6cols .table__inner{width:150%}.table--6cols .table__section{width:25%}.table--7cols{overflow-x:scroll;width:auto}.table--7cols .table__inner{width:175%}.table--7cols .table__section{width:25%}.table--8cols{overflow-x:scroll;width:auto}.table--8cols .table__inner{width:200%}.table--8cols .table__section{width:25%}.table--9cols{overflow-x:scroll;width:auto}.table--9cols .table__inner{width:225%}.table--9cols .table__section{width:25%}.table--10cols{overflow-x:scroll;width:auto}.table--10cols .table__inner{width:250%}.table--10cols .table__section{width:25%}.image-top{width:100vw;margin-left:-20px;position:relative}.image-top img{display:block;max-width:100%;opacity:.5}.image-top__details{width:calc(100% - 40px);padding:20px;position:absolute;bottom:0;left:0}.user-line{display:flex;align-items:center;padding:0 0 10px}.user-line img{display:block;width:40px;border-radius:50%}.user-line span{font-weight:600;padding-left:10px;color:#fff}.entry{padding:20px 0}.entry h2,.entry h3{padding:20px 0 10px;font-weight:600}.entry__comments{text-align:right;padding-bottom:10px;margin:10px 0}.entry__comments a{background-color:#47e7ce;color:#000;font-size:1.2rem;border-radius:5px;padding:5px 10px}.videoplayer{width:100%;height:250px}.timer{text-align:center;width:100%;padding:20px 0}.timer__icon{margin:auto auto 20px;cursor:pointer;display:block}.timer__icon img{display:block;width:100px;margin:auto}.timer__icon.off{display:none}.timer__icon.active{opacity:.5}.timer__count{font-weight:600;font-size:2.4rem;display:block;padding-bottom:20px}.timer__count.off{display:none}.net{display:flex;flex-direction:column;align-items:stretch;width:calc(100% - 40px);padding:20px;background-color:#291f57;border-radius:15px;margin-bottom:20px;box-shadow:5px 5px 35px -14px rgba(0,0,0,.17)}.net-header{display:flex;align-items:center;margin-bottom:10px;width:100%}.file-upload-row{display:flex;flex-direction:row;justify-content:space-between}.file-upload{-webkit-user-select:none;user-select:none;cursor:pointer;flex:1 1;margin:0 5px}.drag_box{padding:5px 0;margin-bottom:10px}.drag_box,.drag_box_outline{display:flex;align-items:center;justify-content:center;width:100%;cursor:pointer}.drag_box_outline{border:2px dashed rgba(71,231,206,.8);height:50px;border-radius:7px}.filename{padding:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.erred{border-color:red;color:red}.select-wrapper{position:relative;display:flex;align-items:center;background-color:#383a68;border-radius:4px;overflow:hidden;width:100%}.select{flex-grow:1;padding:10px 34px 10px 10px;color:#fff;background-color:initial;border:none;outline:none;-webkit-appearance:none;appearance:none;font-size:16px}.select-wrapper i{position:absolute;right:15px;font-size:12px;color:#fff;pointer-events:none}.select::-ms-expand{display:none}.select option{background-color:#383a68;color:#fff}.icon-container{position:relative;display:flex;align-items:center;cursor:pointer;padding:6px;flex-shrink:0}.fa-globe{font-size:18px;border-radius:50%;display:inline-block;object-fit:cover;position:relative}.icon{height:18px;width:18px}.status-dot{width:12px;height:12px;background-color:#291f57;right:0;bottom:2px;display:flex;align-items:center;justify-content:center}.status-dot,.status-dot:after{position:absolute;border-radius:50%}.status-dot:after{content:"";width:6px;height:6px;background-color:grey;top:50%;left:50%;transform:translate(-50%,-50%)}.fa-globe.connected+.status-dot:after,.icon.connected+.status-dot:after{background-color:green}.tooltip{visibility:hidden;width:100px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px;z-index:1;bottom:125%;margin-left:-50px;opacity:0;transition:opacity .3s}.tooltip,.tooltip:after{position:absolute;left:50%}.tooltip:after{content:"";top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:#000}.icon-container:hover .tooltip{visibility:visible;opacity:1}.overlay{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;background-color:rgba(0,0,0,.5);z-index:1000}.modal,.overlay{justify-content:center}.modal{position:relative;max-width:90%;width:280px;height:auto;background:transparent;border-radius:8px;z-index:1002;overflow:hidden;background:#291f57}.lottie-modal-background{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:inherit;z-index:1001}.modal-content{position:relative;z-index:1003;color:#fff;padding:20px;width:90%;border-radius:inherit}.modal-close-button{position:absolute;top:10px;right:10px;border:none;background:none;color:#fff;font-size:24px;cursor:pointer}.modal h2{margin-bottom:20px}.modal-net-input{position:relative;width:90%;padding:10px;border:1px solid hsla(0,0%,100%,.3);border-radius:4px;margin-bottom:10px;background:#383a68;color:#fff}.modal button{padding:10px 20px;font-weight:700;text-transform:uppercase;cursor:pointer;border:0 solid hsla(0,0%,100%,.297);border-radius:5px;transition:background-color .3s;box-shadow:#000}.button-close,.button-save{width:48%;padding:.5rem 1rem;text-align:center;font-size:1rem;border:none;cursor:pointer;margin:1rem}.button-save{background:linear-gradient(60deg,#47e7ce,#4fa8c4);color:#000}.button-save:hover{background:linear-gradient(60deg,#47e7ce 100%,#4fa8c4 0)}.button-close{background-color:#ba3c3c;color:#fff}.modal .flex{display:flex;justify-content:flex-end;grid-gap:10px;gap:10px;padding:5px}.modal-url-input-container{display:flex;align-items:center;width:99%;background:#383a68;border-radius:4px;color:#fff;overflow:hidden;margin-bottom:10px;border:1px solid hsla(0,0%,100%,.3)}.modal-url-toggle{padding:10px 15px;border:none;cursor:pointer;border-top-left-radius:4px;border-bottom-left-radius:4px;text-align:center;flex-shrink:0;text-transform:uppercase;-webkit-user-select:none;user-select:none;background:#252545}.modal-url-input{flex-grow:1;padding:10px;border:none;background:transparent;color:#fff;outline:none;width:0}.modal-url-fixed{padding:5px 10px;background:#252545;color:#fff;border-top-right-radius:4px;border-bottom-right-radius:4px;flex-shrink:0;white-space:nowrap;-webkit-user-select:none;user-select:none;height:28px}.save-container{display:flex;justify-content:space-between}.table-container{margin-top:20px;overflow:hidden;-webkit-user-select:none;user-select:none}.table-container,table{width:100%;border-radius:5px}table{border-collapse:collapse;margin-bottom:10px}td,th{text-align:left;padding:8px}th{border-bottom:1px solid #fff}th:first-child{border-top-left-radius:5px}th:last-child{border-top-right-radius:5score}tr:last-child td:first-child{border-bottom-left-radius:5px}tr:last-child td:last-child{border-bottom-right-radius:5px}tr:nth-child(odd){background-color:#383a68}tr:nth-child(2n){background-color:#292952}tr:hover{background-color:#2a2a72}.icon-button{color:#f2f2f2}.icon-diagnostic-agnostic-float:before{content:"\f057"}.icon-button:hover{color:#b3b3b3}.input-error{border:1px solid #7d7c7c}.error-message{color:#615f5f;font-size:.8rem;margin-top:10px}.lottie-background{position:fixed;top:0;left:0;height:100%;z-index:-1;overflow:hidden}.icon-green{color:green}.icon-red{color:#ba3c3c}.graphql-icon{height:100%}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);justify-content:center}.modal,.modal-overlay{display:flex;align-items:center}.modal{padding:2rem;border-radius:10px;width:300px;flex-direction:column;justify-content:space-between;text-align:center}.modal h2{margin-bottom:1rem;font-size:1.5rem;flex:0 1 auto}.modal p{margin:1rem 0;flex:1 1 auto}.modal button{flex:0 1 auto;margin-top:1rem;width:100%}.header-container{justify-content:space-between;padding:5px;margin:0 15px}.badge-container,.header-container{display:flex;align-items:center}.badge{background-color:#4d92d7;color:#fff;font-size:12px;font-weight:700;padding:5px 10px;border-radius:12px;display:inline-block;margin-right:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.header__logo--text{text-align:center;font-size:24px}.header__icon{display:flex;justify-content:flex-end}.keypair-header{justify-content:space-between}.keypair-header,.keypair-icons{display:flex;align-items:center}.icon-button{background:none;border:none;outline:none;cursor:pointer;padding:0 5px}.icon-button:hover{opacity:.7}.badge-button{background-color:#3c4e63;color:#fff;border:none;border-radius:50%;padding:10px;font-size:14px;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:background-color .3s}.badge-button:hover{background-color:#50647e}.badge-button svg{margin:0;width:24px;height:24px}.button-with-tooltip{position:relative;display:inline-block}.tooltip-text{visibility:hidden;width:-webkit-max-content;width:max-content;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 8px;position:absolute;z-index:1;bottom:125%;left:50%;transform:translateX(-50%);opacity:0;transition:opacity .3s}.tooltip-text:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:#000}.button-with-tooltip:hover .tooltip-text{visibility:visible;opacity:1}.keypair-actions{grid-gap:10px;gap:10px;margin-top:10px}.centered-icon,.keypair-actions{display:flex;justify-content:center}.centered-icon{align-items:center} +/*# sourceMappingURL=main.43a4f363.css.map */ \ No newline at end of file diff --git a/resvault-fixed-20251018-140436/build/static/css/main.43a4f363.css.map b/resvault-fixed-20251018-140436/build/static/css/main.43a4f363.css.map new file mode 100644 index 00000000..a3bc1a16 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/static/css/main.43a4f363.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://src/index.css","webpack://src/css/App.css"],"names":[],"mappings":"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AiB,CACjB,kBAAmB,CACnB,eAAkB,CAClB,sBACE,UAAa,CACjB,oBACE,UAAW,CACX,SAAU,CACV,QAAS,CACT,WAAc,CACd,0BACE,cAAe,CACf,UAAa,CACjB,oBACE,UAAW,CACX,SAAU,CACV,QAAS,CACT,WAAc,CACd,0BACE,cAAe,CACf,UAAa,CACjB,oDACE,WAAc,CACd,8EACE,UAAW,CACX,UAAW,CACX,YAAa,CACb,eAAgB,CAChB,eAAgB,CAChB,UAAa,CACb,qFACE,eAAgB,CAChB,SAAY,CAEpB,eACE,UAAW,CACX,YAAe,CACf,wBACE,YAAe,CACjB,yBACE,WAAY,CACZ,iBAAoB,CACtB,4BACE,WAAc,CAChB,8BACE,kBAAqB,CACvB,sBACE,UAAa,CACf,wBACE,uBAAwB,CACxB,mBAAyB,CACzB,wBAAyB,CACzB,YAAa,CACb,oBAAqB,CACrB,0BAA2B,CAC3B,eAAgB,CAChB,UAAa,CACb,kCACE,8DAA6E,CAC/E,kCACE,kBAAmB,CACnB,sBAAuB,CACvB,iBAAoB,CACtB,+BACE,eAAgB,CAChB,UAAW,CACX,gBAAiB,CACjB,aAAgB,CAChB,sCACE,eAAgB,CAChB,aAAgB,CAClB,oCACE,eAAkB,CACpB,yCACE,gBAAiB,CACjB,eAAkB,CACpB,iCACE,UAAa,CACnB,qBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,QAAW,CACX,iBAAoB,CACpB,2BACE,gBAAiB,CACjB,UAAa,CACjB,qBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,QAAa,CACb,2BACE,gBAAiB,CACjB,UAAa,CACjB,qDACE,WAAc,CACd,+EACE,UAAW,CACX,UAAW,CACX,YAAa,CACb,eAAgB,CAChB,eAAgB,CAChB,UAAa,CACb,sFACE,eAAgB,CAChB,SAAY,CAEpB,cACE,UAAW,CACX,mBAAsB,CACtB,kDACE,kBAAqB,CACvB,qBACE,UAAW,CACX,iBAAoB,CACpB,yBACE,SAAU,CACV,YAAe,CACjB,yBACE,SAAU,CACV,YAAe,CACjB,wBACE,qBAAsB,CACtB,YAAe,CACjB,yBACE,SAAU,CACV,YAAe,CACjB,wBACE,4BAA6B,CAC7B,YAAe,CACjB,yBACE,SAAU,CACV,YAAe,CACnB,uBACE,uBAAwB,CACxB,cAAsB,CACtB,WAAY,CACZ,YAAa,CACb,oBAAqB,CACrB,0BAA2B,CAC3B,eAAgB,CAChB,UAAa,CACb,iCACE,8DAA6E,CAC/E,8BACE,eAAgB,CAChB,UAAW,CACX,gBAAiB,CACjB,eAAkB,CAClB,qCACE,eAAgB,CAChB,aAAgB,CAClB,uCACE,gBAAiB,CACjB,aAAgB,CAClB,wCACE,iBAAoB,CACtB,oCACE,eAAgB,CAChB,eAAgB,CAChB,gBAAmB,CACnB,gBAAmB,CACnB,sCACE,UAAa,CACrB,oBACE,iBAAkB,CAClB,QAAS,CACT,UAAa,CACb,sBACE,aAAc,CACd,UAAW,CACX,WAAY,CACZ,wBAAyB,CACzB,kBAAmB,CACnB,YAAa,CACb,kBAAmB,CACnB,sBAAyB,CACzB,0BACE,aAAc,CACd,UAAa,CACnB,oBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,QAAW,CACX,iBAAoB,CACpB,0BACE,gBAAiB,CACjB,UAAa,CACjB,oBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,QAAa,CACb,0BACE,gBAAiB,CACjB,UAAa,CACjB,wDACE,UAAW,CACX,UAAW,CACX,MAAO,CACP,kBAAoB,CACpB,QAAW,CACX,6BAAsC,CACtC,4FACE,8BAAuC,CAE7C,kBACE,UAAW,CACX,mBAAsB,CACtB,0DACE,kBAAqB,CACvB,yBACE,UAAW,CACX,wBAAyB,CACzB,iBAAoB,CACpB,6BACE,SAAY,CACd,6BACE,SAAY,CACd,4BACE,qBAAwB,CAC1B,6BACE,SAAY,CACd,4BACE,4BAA+B,CACjC,6BACE,SAAY,CAChB,2BACE,uBAAwB,CACxB,YAAa,CACb,UAAa,CACb,6BACE,UAAa,CACf,kCACE,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,UAAW,CACX,gBAAiB,CACjB,eAAgB,CAChB,SAAY,CACZ,sCACE,aAAc,CACd,UAAa,CACf,uCACE,gBAAmB,CACrB,yCACE,gBAAiB,CACjB,gBAAiB,CACjB,eAAkB,CACtB,kCACE,aAAgB,CAClB,iCACE,YAAa,CACb,UAAW,CACX,6BAAgC,CAChC,wCACE,eAAgB,CAChB,gBAAmB,CACrB,sCACE,eAAgB,CAChB,gBAAmB,CACrB,mCACE,eAAgB,CAChB,gBAAiB,CACjB,kBAAqB,CACvB,uCACE,aAAgB,CAClB,wCACE,aAAgB,CACtB,wBACE,iBAAkB,CAClB,QAAS,CACT,UAAa,CACb,0BACE,aAAc,CACd,UAAW,CACX,WAAY,CACZ,qBAAsB,CACtB,kBAAmB,CACnB,YAAa,CACb,kBAAmB,CACnB,sBAAyB,CACzB,8BACE,aAAc,CACd,UAAa,CACnB,wBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,QAAW,CACX,iBAAoB,CACpB,8BACE,gBAAiB,CACjB,UAAa,CACjB,wBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,QAAa,CACb,8BACE,gBAAiB,CACjB,UAAa,CACjB,4DACE,UAAW,CACX,UAAW,CACX,MAAO,CACP,kBAAoB,CACpB,QAAW,CACX,6BAAsC,CACtC,gGACE,8BAAuC,CAE7C,eACE,UAAW,CACX,mBAAsB,CACtB,sBACE,UAAW,CACX,qBAAuB,CACvB,iBAAoB,CACpB,0BACE,SAAY,CACd,yBACE,qBAAwB,CAC1B,0BACE,SAAY,CACd,yBACE,4BAA+B,CACjC,0BACE,SAAY,CACd,yBACE,uBAA0B,CAC5B,0BACE,SAAY,CAChB,sBACE,iBAAkB,CAClB,eAAkB,CAClB,0BACE,aAAc,CACd,cAAiB,CACnB,yCACE,kBAAqB,CACvB,6CACE,2BAA4B,CAC5B,4BAA+B,CACjC,8CACE,kBAAqB,CACvB,mCACE,aAAc,CACd,UAAW,CACX,WAAY,CAGZ,iBAAkB,CAClB,wBAAyB,CACzB,qBAAsB,CACtB,iBAAkB,CAClB,OAAQ,CACR,SAAU,CACV,WAAc,CAClB,qBACE,wBAA2B,CAC3B,o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UAAW,CACX,iBAAkB,CAClB,UAAc,CACd,eAAgB,CAChB,gBAAiB,CACjB,kBAAqB,CACrB,qBACE,eAAgB,CAChB,aAAgB,CACpB,eACE,UAAW,CACX,iBAAoB,CACpB,mBACE,aAAc,CACd,aAAc,CACd,WAAc,CAClB,cACE,SAAU,CACV,iBAAkB,CAClB,UAAW,CACX,kBAAwB,CACxB,eAAkB,CACpB,iBACE,SAAU,CACV,WAAc,CACd,yBACE,kBAAqB,CACzB,sBACE,UAAW,CACX,iBAAoB,CACpB,wBACE,wBAAyB,CACzB,UAAW,CACX,gBAAiB,CACjB,kBAAmB,CACnB,UAAc,CACd,0BACE,UAAW,CACX,SAAY,CAClB,sBACE,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,aAAgB,CAIpB,aACE,WAAY,CACZ,iCAAsC,CACtC,YAAa,CACb,WACF,CAEA,OACE,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,UAAW,CACX,WAAc,CACd,gBACE,uBAAwB,CACxB,WAAc,CAChB,cACE,UAAW,CACX,eAAgB,CAChB,UAAc,CACd,eAAgB,CAChB,gBAAiB,CACjB,kBAAmB,CACnB,wBAAyB,CACzB,kBAAmB,CACnB,SAAc,CAChB,aACE,SAAU,CACV,iBAAkB,CAClB,UAAW,CACX,kBAAwB,CACxB,eAAkB,CAEtB,YACE,UAAW,CACX,WAAc,CACd,iBACE,UAAW,CACX,kBAAqB,CACvB,mBACE,UAAW,CACX,aAAc,CACd,mBAAoB,CACpB,UAAW,CACX,wBAAyB,CACzB,cAAe,CACf,kBAAmB,CACnB,eAAkB,CACpB,wBACE,aAAc,CACd,oBAAqB,CACrB,gBAAmB,CACrB,mBACE,uBAAwB,CAExB,wBAA6B,CAC7B,YAAkB,CAClB,eAAkB,CAClB,WAAiD,CAAjD,0CAAiD,CACjD,UAAa,CACf,oBACE,eAAgB,CAChB,eAAgB,CAChB,uBAAwB,CACxB,uBAA0B,CAC5B,yBACE,UAAW,CACX,gBAAmB,CACnB,2BACE,UAAW,CACX,eAAgB,CAChB,gBAAmB,CACvB,oBACE,UAAW,CACX,iBAAkB,CACl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AAa,CACb,4BACE,UAAa,CACf,8BACE,SAAY,CAChB,cACE,iBAAkB,CAClB,UAAa,CACb,4BACE,UAAa,CACf,8BACE,SAAY,CAChB,cACE,iBAAkB,CAClB,UAAa,CACb,4BACE,UAAa,CACf,8BACE,SAAY,CAChB,cACE,iBAAkB,CAClB,UAAa,CACb,4BACE,UAAa,CACf,8BACE,SAAY,CAChB,eACE,iBAAkB,CAClB,UAAa,CACb,6BACE,UAAa,CACf,+BACE,SAAY,CAKlB,WACE,WAAY,CACZ,iBAAkB,CAClB,iBAAoB,CACpB,eACE,aAAc,CACd,cAAe,CACf,UAAc,CAChB,oBACE,uBAAwB,CACxB,YAAa,CACb,iBAAkB,CAClB,QAAW,CACX,MAAW,CAEf,WACE,YAAa,CACb,kBAAmB,CACnB,gBAAqB,CACrB,eACE,aAAc,CACd,UAAW,CACX,iBAAoB,CACtB,gBACE,eAAgB,CAChB,iBAAkB,CAClB,UAAa,CAEjB,OACE,cAAiB,CAIjB,oBACE,mBAAsB,CACtB,eAAkB,CACpB,iBACE,gBAAiB,CACjB,mBAAoB,CACpB,aAAgB,CAChB,mBACE,wBAAyB,CACzB,UAAW,CACX,gBAAiB,CACjB,iBAAkB,CAClB,gBAAmB,CAEzB,aACE,UAAW,CACX,YAAe,CAEjB,OACE,iBAAkB,CAClB,UAAW,CACX,cAAiB,CACjB,aACE,qBAA2B,CAC3B,cAAe,CACf,aAAgB,CAChB,iBACE,aAAc,CACd,WAAY,CACZ,WAAc,CAChB,iBACE,YAAe,CACjB,oBACE,UAAc,CAClB,cACE,eAAgB,CAChB,gBAAiB,CACjB,aAAc,CACd,mBAAsB,CACtB,kBACE,YAAe,CAGrB,KACE,YAAa,CACb,qBAAsB,CACtB,mBAAoB,CACpB,uBAAwB,CACxB,YAAa,CACb,wBAAyB,CACzB,kBAAmB,CACnB,kBAAmB,CACnB,6CACF,CAEA,YACE,YAAa,CACb,kBAAmB,CACnB,kBAAmB,CACnB,UACF,CAEA,iBACE,YAAa,CACb,kBAAmB,CACnB,6BACF,CAEA,aACE,wBAAiB,CAAjB,gBAAiB,CACjB,cAAe,CACf,Q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","file":"main.43a4f363.css","sourcesContent":["/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*\n*/\n\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n","/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*\n*/\n\n\n/*==============================================\n[Main stylesheet style.css]\n\nAuthor:\tCryptEX\nVersion:\t1.0\nCreated:\tJanuary 2022\nLast updated:\tJanuary 2022\nTemplate:\tCryptEX\n================================================*/\n/*\n[Table of Contents]\n1. IMPORTS\n2. GENERAL\n 2-1. HEADINGS\n\t2-2. BUTTONS\n 2-3. LISTINGS\n3. PAGE STRUCTURE\n 3-1. PANELS LEFT AND RIGHT\n\t3-2. POPUPS\n\t\t\t3-2.A. SOCIAL ICONS NAVIGATION\n\t\t\t3-2.B. NOTIFICATIONS\n\t\t\t3-2.C. COMMENTS\n4. HEADER\n5. BOTTOM TOOLBAR\n6. USER NAVIGATION\n\t6-1. SOCIAL ICONS NAVIGATION\n7. USER PROFILE\n8. SEARCH\n9. CARDS\n10. SLIDERS\n11. CUSTOM PAGES\n\t11-1. INTRO PAGE\n\t11-2. SPLASH PAGE\n\t11-3. LOGIN PAGE\n15. FORMS\n16. CHAT\n17. TABS / ACCORDION / TABLES\n18. OTHERS\n*/\n/*===============================================*/\n/* 1. IMPORTS\t\t \t\t\t\t\t\t */\n/*===============================================*/\n/* -----SIZE CLASSES-------- */\n.w-100 {\n width: 100%; }\n\n.h-100 {\n height: 100%; }\n\n/* -----DISPLAY CLASSES-------- */\n.d-none {\n display: none; }\n\n.d-block {\n display: block; }\n\n.d-inline {\n display: inline-block; }\n\n/* -----FLEX CLASSES-------- */\n.d-flex {\n display: flex; }\n\n.flex-wrap {\n flex-wrap: wrap; }\n\n.align-items-center {\n align-items: center; }\n\n.align-items-start {\n align-items: flex-start; }\n\n.align-items-end {\n align-items: flex-end; }\n\n.align-items-stretch {\n align-items: stretch; }\n\n.align-content-center {\n align-content: center; }\n\n.align-content-start {\n align-content: flex-start; }\n\n.align-content-end {\n align-content: flex-end; }\n\n.align-content-stretch {\n align-content: stretch; }\n\n.justify-space {\n justify-content: space-between; }\n\n.justify-center {\n justify-content: center; }\n\n.justify-start {\n justify-content: flex-start; }\n\n.justify-end {\n justify-content: flex-end; }\n\n.grow-0 {\n flex-grow: 0; }\n\n.grow-1 {\n flex-grow: 1; }\n\n/* -----TEXT CLASSES-------- */\n.text-center {\n text-align: center; }\n\n.text-left {\n text-align: left; }\n\n.text-right {\n text-align: right; }\n\n.text-white {\n color: #ffffff !important; }\n\n/* -----PADDING CLASSES-------- */\n.p0 {\n padding: 0px !important; }\n\n.p-10 {\n padding: 10px !important; }\n\n.p-20 {\n padding: 20px !important; }\n\n.p-40 {\n padding: 40px !important; }\n\n.pb-0 {\n padding-bottom: 0px !important; }\n\n.pb-10 {\n padding-bottom: 10px !important; }\n\n.pb-20 {\n padding-bottom: 20px !important; }\n\n.pb-40 {\n padding-bottom: 40px !important; }\n\n.pt-0 {\n padding-top: 0px !important; }\n\n.pt-10 {\n padding-top: 10px !important; }\n\n.pt-20 {\n padding-top: 20px !important; }\n\n.pt-40 {\n padding-top: 40px !important; }\n\n.pb-40 {\n padding-bottom: 40px !important; }\n\n.pl-0 {\n padding-left: 0px !important; }\n\n.pl-10 {\n padding-left: 10px !important; }\n\n.pl-20 {\n padding-left: 20px !important; }\n\n.pl-40 {\n padding-left: 40px !important; }\n\n.pr-0 {\n padding-right: 0px !important; }\n\n.pr-10 {\n padding-right: 10px !important; }\n\n.pr-20 {\n padding-right: 20px !important; }\n\n.pr-40 {\n padding-right: 40px !important; }\n\n/* -----MARGIN CLASSES-------- */\n.m0 {\n margin: 0px !important; }\n\n.m-10 {\n margin: 10px !important; }\n\n.m-20 {\n margin: 20px !important; }\n\n.m-40 {\n margin: 40px !important; }\n\n.mb-0 {\n margin-bottom: 0px !important; }\n\n.mb-10 {\n margin-bottom: 10px !important; }\n\n.mb-20 {\n margin-bottom: 20px !important; }\n\n.mb-40 {\n margin-bottom: 40px !important; }\n\n.mt-0 {\n margin-top: 0px !important; }\n\n.mt-10 {\n margin-top: 10px !important; }\n\n.mt-20 {\n margin-top: 20px !important; }\n\n.mt-40 {\n margin-top: 40px !important; }\n\n.ml-0 {\n margin-left: 0px !important; }\n\n.ml-10 {\n margin-left: 10px !important; }\n\n.ml-20 {\n margin-left: 20px !important; }\n\n.ml-40 {\n margin-left: 40px !important; }\n\n.mr-0 {\n margin-right: 0px !important; }\n\n.mr-10 {\n margin-right: 10px !important; }\n\n.mr-20 {\n margin-right: 20px !important; }\n\n.mr-40 {\n margin-right: 40px !important; }\n\n.card--style-cover, .slider-simple__slide, .slider-cover__slide {\n -webkit-background-size: 100%;\n -moz-background-size: 100%;\n -o-background-size: 100%;\n background-size: 100%;\n -webkit-background-size: cover;\n -moz-background-size: cover;\n -o-background-size: cover;\n background-size: cover;\n background-position: center center; }\n\n.gradient-lightgreen, .button--main, .button--more, .bottom-navigation__icons li.centered, .card--style-plan-premium, .card--style-bg {\n background-color: #47e7ce !important;\n background: linear-gradient(60deg, #47e7ce 0%, #4fa8c4 100%) !important; }\n\n.gradient-purple, .account-info {\n background-color: #633a97 !important;\n background: linear-gradient(60deg, #633a97 0%, #4c87c6 100%) !important; }\n\n/*===============================================*/\n/* 2. GENERAL\t\t \t\t\t\t\t\t */\n/*===============================================*/\nhtml, body {\n position: relative;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n font-size: 62.5%;\n /* (10 px in REM size) */ }\n\nbody {\n font-family: \"Poppins\", sans-serif;\n background-image: #10083A;\n color: #ffffff;\n margin: 0;\n padding: 0;\n font-size: 1.4rem;\n line-height: 1.2;\n -webkit-text-size-adjust: 100%;\n overflow: hidden;\n font-weight: 400; \n height: 600px;\n width: 300px;\n}\n\na {\n text-decoration: none;\n color: #47e7ce; }\n\np {\n padding: 0px 0 10px 0;\n margin: 0px;\n line-height: 1.5; }\n p.welcome {\n padding-bottom: 20px; }\n p.highlight {\n font-size: 1.8rem;\n font-weight: 300; }\n\nblockquote {\n padding: 0 0 0 50px;\n margin: 0 0 20px 0;\n font-size: 1.8rem;\n line-height: 1.5;\n font-weight: 300;\n background-repeat: no-repeat;\n background-position: 0 0;\n background-size: 40px; }\n blockquote span {\n display: block;\n font-weight: 600;\n font-size: 1.4rem;\n text-transform: uppercase;\n color: #292467; }\n\n/* 2-1. HEADINGS */\n/*=================================*/\nh1, h2, h3, h4, h5, h6 {\n font-weight: 500;\n padding: 0 0 20px 0;\n margin: 0;\n color: #fff; }\n\nh1 {\n font-size: 2.8rem; }\n\nh2 {\n font-size: 1.8rem; }\n h2.page__title {\n position: relative;\n padding: 0 0 10px 0;\n margin: 0 0 15px 0;\n font-size: 1.4rem;\n font-weight: 600; }\n h2.page__title:after {\n content: '';\n width: 40px;\n height: 1px;\n background-color: #53539a;\n position: absolute;\n left: 0px;\n bottom: 0;\n z-index: 0; }\n\nh3 {\n font-size: 1.6rem; }\n\nh4 {\n font-size: 1.4rem; }\n\nh5 {\n font-size: 1.2rem; }\n\nh6 {\n font-size: 1.1rem; }\n\ntextarea, input, select {\n outline: none;\n font-family: \"Poppins\", sans-serif; }\n\n/* 2-2. BUTTONS */\n/*=================================*/\n.buttons {\n width: 100%; }\n .buttons--centered {\n display: flex;\n align-items: center;\n justify-content: center; }\n\n.button {\n display: inline-block;\n font-size: 1.3rem;\n text-transform: uppercase;\n padding: 18px 30px;\n border-radius: 25px;\n letter-spacing: 1px;\n font-weight: 600;\n border: none;\n cursor: pointer; }\n .button--small {\n font-size: 1.1rem;\n padding: 15px 30px; }\n .button--ex-small {\n font-size: 1.1rem;\n padding: 10px 20px; }\n .button--full {\n width: 100%;\n text-align: center;\n padding: 18px 0; }\n .button--main {\n color: #000; }\n .button--secondary {\n background-color: #291f57;\n color: #fff; }\n .button--more {\n color: #000; }\n .button--blue {\n background-color: #000;\n color: #fff; }\n .button--green {\n background-color: #47e7ce;\n color: #000; }\n .button--disabled {\n background-color: #291f57;\n color: #fff;\n opacity: 0.5;\n cursor: default !important; }\n\n/* 2-3. LISTINGS */\n/*=================================*/\nul.custom-listing li {\n padding: 10px 0;\n line-height: 1.5; }\n ul.custom-listing li span {\n font-weight: 600;\n color: #47e7ce; }\n\n/*===============================================*/\n/* 3. PAGE STRUCTURE */\n/*===============================================*/\n.page {\n height: 520px;\n width: 260px;\n }\n .page__content {\n width: 260px;\n height: 100%;\n padding: 0 20px;\n overflow: none;\n position: relative;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none; }\n .page__content--full {\n width: 100%;\n padding: 0px; }\n .page__content--with-header {\n padding-top: 70px;\n height: calc(100% - 70px); }\n .page__content--with-bottom-nav {\n height: calc(100% - 85px); }\n .page__content.page__content--with-header.page__content--with-bottom-nav, .page__content.page__content--with-bottom-nav.page__content--with-header {\n height: 520px; }\n .page__title-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-bottom: 20px; }\n .page__title-bar h3 {\n font-size: 1.4rem;\n padding: 0px; }\n .page__title-bar h3 span {\n font-size: 1.2rem;\n color: #47e7ce;\n font-weight: 300;\n display: block; }\n .page__title-right {\n position: relative;\n display: flex;\n align-items: center; }\n\n.page-inner {\n width: calc(100% - 40px);\n padding: 0 20px; }\n .page-inner--with-bottom-button {\n padding: 20px 20px 100px 20px; }\n\n.account-info {\n width: 100%;\n padding: 100px 0;\n text-align: center;\n position: relative; }\n .account-info--details {\n padding: 80px 0 50px 0; }\n .account-info__icon {\n width: 100%;\n text-align: center;\n padding-bottom: 10px; }\n .account-info__icon img {\n display: block;\n width: 50px;\n margin: auto; }\n .account-info__title {\n font-size: 1rem;\n letter-spacing: 2px;\n padding-bottom: 5px; }\n .account-info__total {\n font-size: 3.6rem;\n letter-spacing: -1px; }\n .account-info__stats {\n padding-top: 5px;\n font-size: 1.3rem; }\n .account-info__stats span {\n padding: 0 5px; }\n .account-info__stats span.plus {\n color: #47e7ce; }\n .account-info__svg {\n width: 100%;\n position: absolute;\n bottom: 0px;\n left: 0px;\n z-index: 1;\n height: 25px; }\n .account-info__chart {\n width: 90%;\n margin: 20px auto 0 auto; }\n\n.account-buttons {\n width: 100%;\n position: relative;\n top: -25px;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center; }\n .account-buttons a {\n display: block;\n width: 50px;\n height: 50px;\n background-color: #291f57;\n color: #47e7ce;\n text-align: center;\n border-radius: 100%;\n font-size: 1rem;\n letter-spacing: 0.5px;\n margin: 0 10px;\n font-weight: 600; }\n .account-buttons a img {\n display: block;\n width: 12px;\n margin: 10px auto 5px auto; }\n\n.account-selectors {\n width: 100%;\n padding: 20px 0 0 0;\n display: flex;\n align-items: center;\n justify-content: center; }\n .account-selectors span {\n display: block;\n width: 30px;\n height: 30px;\n line-height: 30px;\n background-color: #291f57;\n color: #fff;\n font-weight: 400;\n text-align: center;\n border-radius: 100%;\n font-size: 1.1rem;\n margin: 0 5px;\n cursor: pointer; }\n .account-selectors span:hover {\n background-color: #47e7ce;\n color: #291f57; }\n .account-selectors span.selected {\n background-color: #47e7ce;\n color: #291f57; }\n\n/* 3-1. PANELS LEFT AND RIGHT */\n/*=================================*/\n.panel {\n z-index: 9999;\n display: block;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n position: absolute;\n width: calc(100% - 64px);\n top: 0;\n height: 100%;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n -webkit-transition-duration: 400ms;\n transition-duration: 400ms; }\n .panel--left {\n background-color: #000000;\n left: calc(-100% + 64px); }\n .panel--right {\n background-color: #000000;\n right: calc(-100% + 64px); }\n .panel__navigation {\n width: 100%;\n overflow: hidden; }\n\nbody.with-panel-left-reveal .page,\nbody.with-panel-right-reveal .page,\nbody.with-panel-left-reveal .bottom-toolbar,\nbody.with-panel-right-reveal .bottom-toolbar {\n -webkit-transition-duration: 500ms;\n transition-duration: 500ms;\n -webkit-transition-property: -webkit-transform;\n -moz-transition-property: -moz-transform;\n transition-property: transform; }\n\nbody.with-panel-left-reveal .body-overlay,\nbody.with-panel-right-reveal .body-overlay {\n display: block; }\n\nbody.with-panel-left-reveal .page, body.with-panel-left-reveal .bottom-toolbar {\n -webkit-transform: translate3d(calc(100% - 64px), 0, 0);\n transform: translate3d(calc(100% - 64px), 0, 0); }\n\nbody.with-panel-left-reveal .body-overlay {\n margin-left: calc(100% - 64px); }\n\nbody.with-panel-left-reveal .panel--left {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n -webkit-transition-duration: 400ms;\n transition-duration: 400ms; }\n\nbody.with-panel-right-reveal .page, body.with-panel-right-reveal .bottom-toolbar {\n -webkit-transform: translate3d(calc(-100% + 64px), 0, 0);\n transform: translate3d(calc(-100% + 64px), 0, 0); }\n\nbody.with-panel-right-reveal .body-overlay {\n margin-left: calc(-100% + 64px); }\n\nbody.with-panel-right-reveal .panel--right {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n -webkit-transition-duration: 400ms;\n transition-duration: 400ms; }\n\nbody.panel-closing .page, body.panel-closing .bottom-toolbar {\n -webkit-transition-duration: 400ms;\n transition-duration: 400ms;\n -webkit-transition-property: -webkit-transform;\n -moz-transition-property: -moz-transform;\n transition-property: transform; }\n\n.body-overlay {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0);\n opacity: 0;\n z-index: 5999;\n display: none; }\n\n/* 3-2. POPUPS */\n/*=================================*/\n.popup {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 99999;\n box-sizing: border-box;\n display: block;\n overflow: auto;\n padding: 40px;\n -webkit-overflow-scrolling: touch;\n -webkit-transition-property: -webkit-transform;\n -moz-transition-property: -moz-transform;\n -ms-transition-property: -ms-transform;\n -o-transition-property: -o-transform;\n transition-property: transform;\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n -webkit-transition-duration: 400ms;\n transition-duration: 400ms;\n background-color: #000000; }\n .popup.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0); }\n .popup--wider {\n padding: 20px; }\n .popup--half {\n height: 50%;\n top: 50%; }\n .popup--centered {\n width: 80%;\n height: 60%;\n top: 20%;\n left: 10%;\n -webkit-transform: translate3d(0, -20px, 0);\n transform: translate3d(0, -20px, 0);\n opacity: 0;\n visibility: hidden;\n transition-property: opacity, transform;\n transition-duration: 400ms; }\n .popup--centered.active {\n opacity: 1;\n visibility: visible;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0); }\n .popup--shadow {\n -webkit-box-shadow: 0px 0px 36px 0px rgba(0, 0, 0, 0.12);\n -moz-box-shadow: 0px 0px 36px 0px rgba(0, 0, 0, 0.12);\n box-shadow: 0px 0px 36px 0px rgba(0, 0, 0, 0.12); }\n .popup__title {\n padding-bottom: 20px; }\n .popup__icon img {\n display: block;\n max-width: 50px;\n margin-bottom: 40px; }\n .popup__close {\n position: absolute;\n top: 20px;\n right: 20px;\n z-index: 999999; }\n .popup__close img {\n display: block;\n max-width: 18px; }\n\n/* 3-2.A. SOCIAL ICONS NAVIGATION */\n/*===============================================*/\n.social-nav ul li {\n margin: 0 0 15px 0; }\n .social-nav ul li a {\n display: flex;\n align-items: center;\n color: #fff; }\n .social-nav ul li img {\n display: block;\n max-width: 20px;\n margin-right: 20px; }\n\n/*===============================================*/\n/* 3-2.B. NOTIFICATIONS */\n/*===============================================*/\n.notifications {\n padding-bottom: 20px; }\n .notifications li {\n margin: 0 0 15px 0;\n border-bottom: 1px rgba(255, 255, 255, 0.2) solid;\n padding-bottom: 15px; }\n .notifications li a {\n font-weight: 600;\n color: #fff; }\n\n/*===============================================*/\n/* 3-2.C. COMMENTS */\n/*===============================================*/\n.comments {\n padding-bottom: 20px; }\n .comments li {\n margin: 0 0 10px 0;\n background-color: #0f0638;\n padding: 10px 20px;\n border-radius: 15px; }\n .comments li a {\n font-weight: 600;\n color: #fff; }\n\n/*===============================================*/\n/* 4. HEADER */\n/*===============================================*/\n.header {\n padding: 20px 0;\n color: #fff; }\n .header--absolute {\n position: absolute;\n top: 0px;\n left: 0px;\n z-index: 888; }\n .header--fixed {\n position: fixed;\n top: 0px;\n left: 0px;\n z-index: 888; }\n .header--page {\n background-color: #000; }\n .header--transparent {\n background: none; }\n .header--gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.3)); }\n .header__inner {\n width: 260px;\n padding: 0 20px;\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .header__icon {\n cursor: pointer; }\n .header__icon img {\n display: block;\n max-width: 20px; }\n .header__icon--empty-space {\n width: 20px; }\n .header__icon--menu {\n width: 20px;\n height: 16px;\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n -webkit-transition: .3s ease-in-out;\n -moz-transition: .3s ease-in-out;\n -o-transition: .3s ease-in-out;\n transition: .3s ease-in-out;\n cursor: pointer; }\n .header__icon--menu span {\n display: block;\n position: absolute;\n height: 1px;\n width: 50%;\n background: #fff;\n opacity: 1;\n left: 0;\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n -webkit-transition: .25s ease-in-out;\n -moz-transition: .25s ease-in-out;\n -o-transition: .25s ease-in-out;\n transition: .25s ease-in-out;\n -webkit-tap-highlight-color: transparent; }\n .header__icon--menu span:nth-child(even) {\n left: 50%; }\n .header__icon--menu span:nth-child(odd) {\n left: 0px; }\n .header__icon--menu span:nth-child(1), .header__icon--menu span:nth-child(2) {\n top: 0px; }\n .header__icon--menu span:nth-child(3), .header__icon--menu span:nth-child(4) {\n top: 6px; }\n .header__icon--menu span:nth-child(5), .header__icon--menu span:nth-child(6) {\n top: 12px; }\n .header__icon--menu.open span:nth-child(1), .header__icon--menu.open span:nth-child(6) {\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n background: #000000; }\n .header__icon--menu.open span:nth-child(2), .header__icon--menu.open span:nth-child(5) {\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n transform: rotate(-45deg);\n background: #000000; }\n .header__icon--menu.open span:nth-child(1) {\n left: 2px;\n top: 4px; }\n .header__icon--menu.open span:nth-child(2) {\n left: calc(50% - 2px);\n top: 4px; }\n .header__icon--menu.open span:nth-child(3) {\n left: -50%;\n opacity: 0; }\n .header__icon--menu.open span:nth-child(4) {\n left: 100%;\n opacity: 0; }\n .header__icon--menu.open span:nth-child(5) {\n left: 2px;\n top: 12px; }\n .header__icon--menu.open span:nth-child(6) {\n left: calc(50% - 2px);\n top: 12px; }\n .header__icon--cart {\n position: relative; }\n .header__icon--cart span {\n position: absolute;\n top: -10px;\n right: -10px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n text-align: center;\n line-height: 20px;\n font-size: 1.1rem;\n font-weight: 600;\n background-color: #fff;\n color: #292467; }\n .header__icon--cart span.animate {\n animation: cartnr 1.5s cubic-bezier(0.39, 0.01, 0.17, 1);\n animation-iteration-count: 1; }\n .header__icon--more img {\n width: 6px; }\n .header__icons-group {\n display: flex;\n align-items: center; }\n .header__icons-group--right .header__icon {\n margin-left: 20px; }\n .header__icons-group--left .header__icon {\n margin-right: 20px; }\n .header__logo--text {\n color: #fff;\n font-size: 1.8rem;\n font-weight: 400; }\n .header__logo--text strong {\n font-weight: 600;\n color: #47e7ce; }\n .header__logo--text a {\n color: #fff; }\n .header__logo--intro {\n font-size: 2.8rem;\n width: 100%;\n text-align: center; }\n .header__title {\n color: #000000;\n font-size: 1.8rem;\n font-weight: 300; }\n\n@keyframes cartnr {\n 0% {\n transform: scale(1.5); }\n 50% {\n transform: scale(0.8); }\n 100% {\n transform: scale(1.5); } }\n\n/*===============================================*/\n/* 5. BOTTOM TOOLBAR */\n/*===============================================*/\n.bottom-navigation {\n width: 100%;\n position: absolute;\n bottom: 0px;\n left: 0px;\n z-index: 888;\n background-color: #000;\n padding: 10px 0;\n overflow: hidden; }\n .bottom-navigation--gradient {\n background: linear-gradient(180deg, rgba(41, 31, 87, 0) 0%, rgba(41, 31, 87, 0) 30%, #291f57 30%, #291f57 100%); }\n .bottom-navigation--white {\n background-color: #ffffff; }\n .bottom-navigation__icons {\n width: calc(100% - 60px);\n margin: auto;\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .bottom-navigation__icons li {\n text-align: center;\n margin: 20px 0 0 0;\n position: relative; }\n .bottom-navigation__icons li a {\n color: #909db3; }\n .bottom-navigation__icons li img {\n display: block;\n max-width: 22px;\n margin: auto; }\n .bottom-navigation__icons li span {\n text-transform: uppercase;\n font-size: 0.9rem;\n display: block;\n padding-top: 5px; }\n .bottom-navigation__icons li i {\n position: absolute;\n top: -10px;\n right: -10px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n text-align: center;\n line-height: 20px;\n font-size: 1.1rem;\n font-weight: 600;\n background-color: #000;\n color: #47e7ce;\n font-style: normal; }\n .bottom-navigation__icons li.centered {\n width: 60px;\n height: 60px;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0px; }\n .bottom-navigation__icons li.centered img {\n display: block;\n max-width: 26px;\n margin: auto; }\n .bottom-navigation__icons--photos li {\n margin: 0px; }\n .bottom-navigation__icons--centered {\n justify-content: center; }\n .bottom-navigation__icons--centered li {\n padding: 0 5px; }\n .bottom-navigation__icons--centered li img {\n max-width: 32px; }\n .bottom-navigation__pagination {\n position: absolute;\n width: 100%;\n bottom: 0px !important;\n top: auto !important;\n text-align: center; }\n .bottom-navigation__pagination .swiper-pagination-bullet {\n width: 10px;\n height: 1px;\n display: inline-block;\n border-radius: 0;\n background: #909db3;\n opacity: 0.2;\n margin: 0 2px; }\n .bottom-navigation__pagination .swiper-pagination-bullet-active {\n background: #909db3;\n opacity: 1; }\n .bottom-navigation__pagination .swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 2px; }\n .bottom-navigation__more {\n position: absolute;\n top: 20px;\n right: 15px;\n cursor: pointer;\n z-index: 999999; }\n .bottom-navigation__more img {\n display: block;\n max-width: 4px; }\n .bottom-navigation__shop {\n width: calc(100% - 20px);\n padding: 0 10px;\n display: flex;\n align-items: center;\n justify-content: space-between; }\n\n.bottom-fixed-button {\n width: calc(100% - 40px);\n position: absolute;\n bottom: 0px;\n left: 0px;\n z-index: 888;\n padding: 20px;\n overflow: hidden; }\n\n/*===============================================*/\n/* 6. USER NAVIGATION */\n/*===============================================*/\n.main-nav {\n width: calc(100% - 60px);\n padding: 30px; }\n .main-nav ul {\n display: flex;\n flex-wrap: wrap; }\n .main-nav ul li {\n margin: 0 0 5px 0;\n padding: 10px 0;\n font-size: 1.2rem;\n display: block;\n width: 100%; }\n .main-nav ul li a {\n display: flex;\n align-items: center;\n color: #fff; }\n .main-nav ul li img {\n display: block;\n max-width: 18px;\n margin-right: 20px; }\n .main-nav ul li span {\n display: block; }\n\n.subnav-header {\n padding: 20px;\n display: flex;\n align-items: center;\n justify-content: flex-end; }\n .subnav-header img {\n display: block;\n max-width: 16px; }\n\n/*===============================================*/\n/* 7. USER PROFILE */\n/*===============================================*/\n.user-profile {\n width: 100vw;\n margin-left: -20px;\n position: relative;\n padding: 60px 0 20px 0;\n background-color: #000;\n position: relative; }\n .user-profile__thumb {\n width: 100%;\n text-align: center; }\n .user-profile__thumb img {\n display: block;\n width: 120px;\n border-radius: 100%;\n margin: auto; }\n .user-profile__name {\n width: 100%;\n text-align: center;\n padding: 15px 0;\n font-size: 2.2rem;\n font-weight: 600;\n color: #fff; }\n\n.info-box {\n text-align: center;\n padding: 0 15px; }\n .info-box span {\n display: block;\n font-weight: 600;\n font-size: 1.2rem;\n color: #fff; }\n\n/* USER DETAILS SIDE PANEL */\n/*===============================================*/\n.user-details {\n padding: 20px 0 0 0;\n display: block;\n text-align: center; }\n .user-details__thumb {\n margin: 0 auto 20px auto;\n text-align: center; }\n .user-details__thumb img {\n display: block;\n max-width: 120px;\n margin: auto;\n border-radius: 100%; }\n .user-details__title {\n color: #fff;\n font-weight: 600;\n font-size: 1.8rem;\n letter-spacing: -0.5px; }\n .user-details__title span {\n display: block;\n font-weight: 300;\n font-size: 1.6rem; }\n\n/*===============================================*/\n/* 8. SEARCH */\n/*===============================================*/\n.search {\n padding: 40px; }\n .search__form {\n background-color: #291f57;\n border-radius: 15px;\n padding: 10px 20px;\n margin-bottom: 20px; }\n .search__form form {\n display: flex; }\n .search__input {\n border: none;\n background: none;\n font-size: 1.2rem;\n font-weight: 500;\n width: 100%;\n color: #fff; }\n .search__results {\n padding: 40px 0 0 0; }\n\n.search-result {\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 20px;\n border-bottom: 1px rgba(255, 255, 255, 0.2) solid; }\n .search-result__thumb {\n margin-right: 20px; }\n .search-result__thumb img {\n display: block;\n max-width: 50px;\n border-radius: 10px; }\n .search-result__details p strong {\n color: #47e7ce; }\n\n/*===============================================*/\n/* 9. CARDS */\n/*===============================================*/\n.cards {\n display: flex;\n flex-wrap: wrap; }\n .cards--11 .card {\n width: calc(100% - 40px);\n padding: 20px;\n margin-bottom: 20px; }\n .cards--11 .card__icon img {\n max-width: 65px !important; }\n .cards--11 .card__title {\n font-size: 1.8rem !important; }\n .cards--11 .card--style-thumb {\n width: 100%;\n padding: 0px; }\n .cards--11 .card--style-inline {\n width: 100%;\n padding: 0 0 10px 0; }\n .cards--11 .card--style-inline-bg {\n width: calc(100% - 30px);\n padding: 20px 10px 20px 20px; }\n .cards--11 .card--style-inline .card__icon {\n flex: 0 0 40px;\n margin-right: 20px;\n margin-bottom: 0px !important; }\n .cards--11 .card--style-inline .card__icon img {\n max-width: 40px !important; }\n .cards--11 .card--style-inline .card__thumb {\n margin-right: 20px;\n margin-bottom: 0px !important; }\n .cards--11 .card--style-inline .card__thumb img {\n max-width: 60px !important; }\n .cards--11 .card--style-inline .card__details {\n flex-grow: 1;\n padding-right: 10px; }\n .cards--11 .card--style-inline .card__title {\n font-size: 1.6rem !important;\n padding-bottom: 5px; }\n .cards--11 .card--style-inline .card__more {\n flex: 0 0 5px; }\n .cards--11 .card--style-inline .card__more--play {\n flex: 0 0 35px; }\n .cards--12 .card {\n width: calc(50% - 50px);\n padding: 20px;\n margin-right: 20px;\n margin-bottom: 20px; }\n .cards--12 .card:nth-child(2n+2) {\n margin-right: 0px; }\n .cards--12 .card__title {\n padding-bottom: 5px !important;\n font-size: 1.4rem; }\n .cards--12 .card--style-thumb {\n width: calc(50% - 10px);\n padding: 0px; }\n .cards--13 .card {\n width: calc(33.333% - 28.333px);\n padding: 10px;\n margin-right: 10px;\n margin-bottom: 10px; }\n .cards--13 .card:nth-child(3n+3) {\n margin-right: 0px; }\n .cards--13 .card__icon img {\n max-width: 34px !important; }\n .cards--13 .card__title {\n font-size: 1.1rem !important;\n padding-bottom: 5px !important; }\n .cards--13 .card--style-cover {\n width: calc(33.333% - 28.333px);\n padding: 10px; }\n .cards--13 .card--style-thumb {\n width: calc(33.333% - 8.333px);\n padding: 0px; }\n .cards--14 .card {\n width: calc(25% - 55px);\n padding: 20px;\n margin-right: 20px;\n margin-bottom: 20px; }\n .cards--14 .card:nth-child(4n+4) {\n margin-right: 0px; }\n .cards--14 .card__icon img {\n max-width: 16px !important; }\n .cards--14 .card__title {\n font-size: 1.2rem !important;\n padding-bottom: 0px !important; }\n .cards--14 .card--style-thumb {\n width: calc(25% - 15px);\n padding: 0px; }\n\n.card {\n position: relative;\n overflow: hidden; }\n .card__icon {\n margin-bottom: 10px;\n position: relative;\n z-index: 33; }\n .card__icon img {\n display: block;\n max-width: 50px; }\n .card__icon--centered {\n width: 100%;\n text-align: center; }\n .card__icon--centered img {\n margin-left: auto;\n margin-right: auto; }\n .card__thumb {\n margin-bottom: 10px;\n position: relative; }\n .card__thumb img {\n display: block;\n max-width: 100%; }\n .card__thumb--round-corners img {\n border-radius: 15px; }\n .card__thumb--round-corners-full img {\n border-radius: 100%; }\n .card__thumb--round-corners-top img {\n border-top-left-radius: 15px;\n border-top-right-radius: 15px; }\n .card__plan {\n font-size: 3.6rem;\n width: 100%;\n text-align: center;\n color: #fff;\n font-weight: 600;\n letter-spacing: -1px;\n margin-bottom: 10px; }\n .card__plan--premium {\n font-size: 4.8rem; }\n .card__title {\n padding-bottom: 10px;\n position: relative;\n z-index: 33; }\n .card__title--centered {\n width: 100%;\n text-align: center; }\n .card__title a {\n color: #fff;\n font-weight: 500; }\n .card__text {\n font-size: 1.2rem;\n position: relative;\n z-index: 333; }\n .card__text--centered {\n width: 100%;\n text-align: center; }\n .card__text a {\n color: #ffffff;\n font-weight: 400; }\n .card__more {\n width: 5px;\n padding: 5px; }\n .card__more a img {\n display: block;\n max-width: 100%; }\n .card__top-left-info {\n position: absolute;\n top: 10px;\n left: 10px;\n z-index: 88; }\n .card__top-right-info {\n position: absolute;\n top: 10px;\n right: 10px;\n z-index: 88; }\n .card__bottom-left-info {\n position: absolute;\n bottom: 10px;\n left: 10px;\n z-index: 88; }\n .card__bottom-right-info {\n position: absolute;\n bottom: 10px;\n right: 10px;\n z-index: 88; }\n .card__price {\n padding: 5px 10px;\n font-weight: 600;\n background-color: #fff;\n color: #292467;\n border-radius: 10px; }\n .card__price span {\n text-decoration: line-through;\n opacity: 0.5;\n padding-left: 5px; }\n .card__badge {\n background-color: #47e7ce;\n height: 25px;\n line-height: 25px;\n left: -30px;\n position: absolute;\n top: 5px;\n width: 100px;\n text-align: center;\n -webkit-transform: rotate(-45deg); }\n .card__badge span {\n color: #fff;\n font-size: 1.2rem;\n font-weight: 600;\n letter-spacing: 1px; }\n .card__addtocart a {\n display: inline-block;\n width: 40px;\n height: 40px;\n background-color: #fff;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center; }\n .card__addtocart a img {\n display: block;\n max-width: 50%;\n border-radius: 0px !important; }\n .card__gradient {\n width: 100%;\n height: 100%;\n position: absolute;\n bottom: 0px;\n left: 0px;\n z-index: 11;\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), black); }\n .card__details {\n position: relative;\n z-index: 55; }\n .card__details--bg {\n width: calc(100% - 30px);\n padding: 15px;\n background-color: #291f57; }\n .card__details--round-corners-bottom {\n border-bottom-left-radius: 15px;\n border-bottom-right-radius: 15px; }\n .card--style-icon {\n background-color: #291f57; }\n .card--style-round-corners {\n -webkit-border-radius: 15px;\n border-radius: 15px; }\n .card--style-cover .card__title {\n color: #ffffff !important;\n font-weight: 600; }\n .card--style-cover .card__text {\n color: #ffffff !important; }\n .card--style-inline {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .card--style-inline-bg {\n background-color: #291f57; }\n\n.card-coin {\n width: calc(100% - 30px);\n padding: 15px;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: #291f57;\n -webkit-border-radius: 15px;\n border-radius: 15px;\n color: #fff; }\n .card-coin__logo {\n display: flex;\n align-items: center; }\n .card-coin__logo img {\n display: block;\n width: 20px;\n margin-right: 10px; }\n .card-coin__logo span {\n font-weight: 600; }\n .card-coin__logo span b {\n display: block;\n font-weight: 300;\n font-size: 1.1rem; }\n .card-coin__price strong {\n font-weight: 600; }\n .card-coin__price span {\n display: block;\n text-align: right; }\n .card-coin__price .plus {\n color: #47e7ce; }\n .card-coin__price .minus {\n color: #e58db6; }\n .card-coin__chart {\n width: 50px; }\n\n/*===============================================*/\n/* 10. SLIDERS-------- */\n/*===============================================*/\n.slider-intro {\n width: 100%;\n height: 100%; }\n .slider-intro__slide {\n width: 100%; }\n .slider-intro .caption {\n width: calc(100% - 80px);\n padding: 0 40px;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n color: #fff; }\n .slider-intro .caption__title {\n font-weight: 300;\n color: #fff; }\n .slider-intro .caption__title strong {\n font-weight: 600; }\n .slider-intro .caption__image {\n width: 100%;\n text-align: center;\n padding-bottom: 40px; }\n .slider-intro .caption__image img {\n display: block;\n max-width: 100%;\n margin: auto; }\n .slider-intro__skip {\n position: absolute;\n bottom: 50px;\n left: 0px;\n width: 100%;\n text-align: center;\n z-index: 888;\n font-size: 1.1rem;\n letter-spacing: 1px;\n font-weight: 600; }\n .slider-intro__skip a {\n color: #fff; }\n .slider-intro__prev {\n right: 40px;\n left: auto;\n top: auto;\n bottom: 50px; }\n .slider-intro__prev::after {\n font-size: 2rem;\n color: #fff; }\n .slider-intro__next {\n right: 10px;\n left: auto;\n top: auto;\n bottom: 50px; }\n .slider-intro__next::after {\n font-size: 2rem;\n color: #fff; }\n .slider-intro__pagination.swiper-pagination-bullets {\n bottom: 10px; }\n .slider-intro__pagination.swiper-pagination-bullets .swiper-pagination-bullet {\n width: 10px;\n height: 1px;\n margin: 0 2px;\n border-radius: 0;\n background: #fff;\n opacity: .4; }\n .slider-intro__pagination.swiper-pagination-bullets .swiper-pagination-bullet-active {\n background: #fff;\n opacity: 1; }\n\n.slider-simple {\n width: 100%;\n height: 300px; }\n .slider-simple--heigher {\n height: 350px; }\n .slider-simple--vw-width {\n width: 100vw;\n margin-left: -20px; }\n .slider-simple--full-height {\n height: 100%; }\n .slider-simple--round-corners {\n border-radius: 15px; }\n .slider-simple__slide {\n width: 100%; }\n .slider-simple .caption {\n width: calc(100% - 40px);\n padding: 0 20px 10px 20px;\n height: calc(100% - 20px);\n display: flex;\n align-items: flex-end;\n justify-content: flex-start;\n text-align: left;\n color: #fff; }\n .slider-simple .caption--gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.1)); }\n .slider-simple .caption--centered {\n align-items: center;\n justify-content: center;\n text-align: center; }\n .slider-simple .caption__title {\n font-weight: 300;\n color: #fff;\n font-size: 3.2rem;\n line-height: 1; }\n .slider-simple .caption__title strong {\n font-weight: 900;\n display: block; }\n .slider-simple .caption__title span {\n font-weight: 600; }\n .slider-simple .caption__title--centered {\n font-size: 2.4rem;\n line-height: 1.5; }\n .slider-simple .caption__title a {\n color: #fff; }\n .slider-simple__prev {\n position: relative;\n right: auto;\n left: auto;\n top: auto;\n bottom: 0px;\n margin-right: 10px; }\n .slider-simple__prev::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-simple__next {\n position: relative;\n right: auto;\n left: auto;\n top: auto;\n bottom: 0px; }\n .slider-simple__next::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-simple__pagination.swiper-pagination-bullets {\n bottom: 10px; }\n .slider-simple__pagination.swiper-pagination-bullets .swiper-pagination-bullet {\n width: 10px;\n height: 1px;\n margin: 0 2px;\n border-radius: 0;\n background: #fff;\n opacity: .4; }\n .slider-simple__pagination.swiper-pagination-bullets .swiper-pagination-bullet-active {\n background: #fff;\n opacity: 1; }\n\n.slider-cover {\n width: 100%;\n padding-bottom: 20px; }\n .slider-cover--round-corners .slider-cover__slide {\n border-radius: 15px; }\n .slider-cover__slide {\n width: 100%;\n position: relative; }\n .slider-cover__slide--34 {\n width: 85%;\n height: 200px; }\n .slider-cover__slide--1h {\n width: 66%;\n height: 250px; }\n .slider-cover__slide--2 {\n width: calc(50% - 5px);\n height: 200px; }\n .slider-cover__slide--2h {\n width: 38%;\n height: 200px; }\n .slider-cover__slide--3 {\n width: calc(33.33% - 6.666px);\n height: 150px; }\n .slider-cover__slide--3h {\n width: 38%;\n height: 200px; }\n .slider-cover .caption {\n width: calc(100% - 30px);\n padding: 0 15px 0 15px;\n height: 100%;\n display: flex;\n align-items: flex-end;\n justify-content: flex-start;\n text-align: left;\n color: #fff; }\n .slider-cover .caption--gradient {\n background: linear-gradient(to top, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.1)); }\n .slider-cover .caption__title {\n font-weight: 300;\n color: #fff;\n font-size: 1.8rem;\n line-height: 1.1; }\n .slider-cover .caption__title strong {\n font-weight: 900;\n display: block; }\n .slider-cover .caption__title--smaller {\n font-size: 1.4rem;\n line-height: 1; }\n .slider-cover .caption__title--centered {\n text-align: center; }\n .slider-cover .caption__title--news {\n font-weight: 400;\n line-height: 1.5;\n padding: 0 0 10px 0;\n font-size: 1.6rem; }\n .slider-cover .caption__title--news a {\n color: #fff; }\n .slider-cover__more {\n position: absolute;\n top: 10px;\n right: 10px; }\n .slider-cover__more a {\n display: block;\n width: 30px;\n height: 30px;\n background-color: #292467;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center; }\n .slider-cover__more a img {\n display: block;\n width: 16px; }\n .slider-cover__prev {\n position: relative;\n right: auto;\n left: auto;\n top: 10px;\n bottom: 0px;\n margin-right: 10px; }\n .slider-cover__prev::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-cover__next {\n position: relative;\n right: auto;\n left: auto;\n top: 10px;\n bottom: 0px; }\n .slider-cover__next::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-cover__pagination.swiper-pagination-progressbar {\n width: 100%;\n height: 1px;\n left: 0;\n top: auto !important;\n bottom: 0px;\n background: rgba(255, 255, 255, 0.2); }\n .slider-cover__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: rgba(255, 255, 255, 0.35); }\n\n.slider-portfolio {\n width: 100%;\n padding-bottom: 20px; }\n .slider-portfolio--round-corners .slider-portfolio__slide {\n border-radius: 15px; }\n .slider-portfolio__slide {\n width: 100%;\n background-color: #291f57;\n position: relative; }\n .slider-portfolio__slide--34 {\n width: 85%; }\n .slider-portfolio__slide--1h {\n width: 66%; }\n .slider-portfolio__slide--2 {\n width: calc(50% - 5px); }\n .slider-portfolio__slide--2h {\n width: 38%; }\n .slider-portfolio__slide--3 {\n width: calc(33.33% - 6.666px); }\n .slider-portfolio__slide--3h {\n width: 38%; }\n .slider-portfolio .caption {\n width: calc(100% - 30px);\n padding: 15px;\n color: #fff; }\n .slider-portfolio .caption a {\n color: #fff; }\n .slider-portfolio .caption__title {\n display: flex;\n align-items: center;\n font-weight: 300;\n color: #fff;\n font-size: 1.4rem;\n line-height: 1.1;\n padding: 0; }\n .slider-portfolio .caption__title img {\n display: block;\n width: 25px; }\n .slider-portfolio .caption__title span {\n padding-left: 5px; }\n .slider-portfolio .caption__title strong {\n padding-left: 5px;\n font-size: 1.2rem;\n font-weight: 600; }\n .slider-portfolio .caption__chart {\n padding: 0 5px; }\n .slider-portfolio .caption__info {\n display: flex;\n width: 100%;\n justify-content: space-between; }\n .slider-portfolio .caption__info strong {\n font-weight: 600;\n font-size: 1.6rem; }\n .slider-portfolio .caption__info span {\n font-weight: 600;\n font-size: 1.4rem; }\n .slider-portfolio .caption__info b {\n font-weight: 300;\n font-size: 1.2rem;\n margin-bottom: 10px; }\n .slider-portfolio .caption__info .plus {\n color: #47e7ce; }\n .slider-portfolio .caption__info .minus {\n color: #e58db6; }\n .slider-portfolio__more {\n position: absolute;\n top: 10px;\n right: 10px; }\n .slider-portfolio__more a {\n display: block;\n width: 30px;\n height: 30px;\n background-color: #fff;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center; }\n .slider-portfolio__more a img {\n display: block;\n width: 16px; }\n .slider-portfolio__prev {\n position: relative;\n right: auto;\n left: auto;\n top: 10px;\n bottom: 0px;\n margin-right: 10px; }\n .slider-portfolio__prev::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-portfolio__next {\n position: relative;\n right: auto;\n left: auto;\n top: 10px;\n bottom: 0px; }\n .slider-portfolio__next::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-portfolio__pagination.swiper-pagination-progressbar {\n width: 100%;\n height: 1px;\n left: 0;\n top: auto !important;\n bottom: 0px;\n background: rgba(255, 255, 255, 0.2); }\n .slider-portfolio__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: rgba(255, 255, 255, 0.35); }\n\n.slider-thumbs {\n width: 100%;\n padding-bottom: 20px; }\n .slider-thumbs__slide {\n width: 100%;\n height: auto !important;\n position: relative; }\n .slider-thumbs__slide--1h {\n width: 66%; }\n .slider-thumbs__slide--2 {\n width: calc(50% - 5px); }\n .slider-thumbs__slide--2h {\n width: 38%; }\n .slider-thumbs__slide--3 {\n width: calc(33.33% - 6.666px); }\n .slider-thumbs__slide--3h {\n width: 26%; }\n .slider-thumbs__slide--4 {\n width: calc(25% - 7.5px); }\n .slider-thumbs__slide--4h {\n width: 20%; }\n .slider-thumbs__image {\n position: relative;\n overflow: hidden; }\n .slider-thumbs__image img {\n display: block;\n max-width: 100%; }\n .slider-thumbs__image--round-corners img {\n border-radius: 15px; }\n .slider-thumbs__image--round-corners-top img {\n border-top-left-radius: 15px;\n border-top-right-radius: 15px; }\n .slider-thumbs__image--round-corners-full img {\n border-radius: 100%; }\n .slider-thumbs__image .active-user {\n display: block;\n width: 10px;\n height: 10px;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n background-color: #55c709;\n border: 2px #fff solid;\n position: absolute;\n top: 2px;\n right: 5px;\n z-index: 999; }\n .slider-thumbs__icon {\n background-color: #291f57; }\n .slider-thumbs__icon--round-corners {\n border-radius: 15px; }\n .slider-thumbs__icon img {\n display: block;\n max-width: 40%;\n margin: auto;\n padding: 20px 0; }\n .slider-thumbs .caption {\n padding: 10px 0;\n text-align: left;\n color: #291f57; }\n .slider-thumbs .caption--bg {\n background-color: #291f57;\n width: calc(100% - 30px);\n padding: 15px; }\n .slider-thumbs .caption--round-corners-bottom {\n border-bottom-left-radius: 15px;\n border-bottom-right-radius: 15px; }\n .slider-thumbs .caption__title {\n font-weight: 500;\n font-size: 1.6rem;\n line-height: 1.1;\n padding-bottom: 0px; }\n .slider-thumbs .caption__title strong {\n font-weight: 900;\n display: block; }\n .slider-thumbs .caption__title--smaller {\n font-size: 1.2rem;\n line-height: 1.2; }\n .slider-thumbs .caption__title--centered {\n text-align: center; }\n .slider-thumbs .caption__category {\n display: inline-block;\n background-color: #47e7ce;\n color: #000;\n font-size: 1rem;\n padding: 5px 10px;\n margin: 5px 0 0 0;\n border-radius: 10px;\n font-weight: 600;\n letter-spacing: 1px; }\n .slider-thumbs__more {\n position: absolute;\n top: 10px;\n right: 10px; }\n .slider-thumbs__more a {\n display: block;\n width: 30px;\n height: 30px;\n background-color: #292467;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center; }\n .slider-thumbs__more a img {\n display: block;\n width: 16px; }\n .slider-thumbs__top-left-info {\n position: absolute;\n top: 0px;\n left: 0px;\n z-index: 22;\n padding: 0 0 0 0; }\n .slider-thumbs__top-right-info {\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 22;\n padding: 10px 10px 0 0; }\n .slider-thumbs__bottom-left-info {\n position: absolute;\n bottom: 0px;\n left: 0px;\n z-index: 22;\n padding: 0 0 0 0; }\n .slider-thumbs__bottom-right-info {\n position: absolute;\n bottom: 0px;\n right: 0px;\n padding: 0 10px 10px 0;\n z-index: 22; }\n .slider-thumbs__price {\n padding: 5px 10px;\n font-weight: 600;\n font-size: 1.6rem;\n background-color: #fff;\n color: #000;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center; }\n .slider-thumbs__price span {\n text-decoration: line-through;\n opacity: 0.5;\n padding-left: 5px; }\n .slider-thumbs__addtocart a {\n display: block;\n width: 40px;\n height: 40px;\n background-color: #fff;\n border-radius: 100%;\n display: flex;\n align-items: center;\n justify-content: center; }\n .slider-thumbs__addtocart a img {\n display: block;\n max-width: 50%;\n border-radius: 0px !important; }\n .slider-thumbs__badge {\n background-color: #47e7ce;\n height: 25px;\n line-height: 25px;\n left: -30px;\n position: absolute;\n top: 5px;\n width: 100px;\n text-align: center;\n -webkit-transform: rotate(-45deg); }\n .slider-thumbs__badge span {\n color: #000;\n font-size: 1.2rem;\n font-weight: 600;\n letter-spacing: 1px; }\n .slider-thumbs__prev {\n position: relative;\n right: auto;\n left: auto;\n top: 10px;\n bottom: 0px;\n margin-right: 10px; }\n .slider-thumbs__prev::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-thumbs__next {\n position: relative;\n right: auto;\n left: auto;\n top: 10px;\n bottom: 0px; }\n .slider-thumbs__next::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-thumbs__pagination.swiper-pagination-progressbar {\n width: 100%;\n height: 1px;\n left: 0;\n top: auto !important;\n bottom: 0px;\n background: rgba(255, 255, 255, 0.2); }\n .slider-thumbs__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: rgba(255, 255, 255, 0.35); }\n\n.slider-links {\n width: 100%;\n padding: 10px 0 20px 0; }\n .slider-links__slide {\n width: auto;\n height: auto !important;\n position: relative; }\n .slider-links__slide .caption {\n padding: 10px 0;\n text-align: left;\n color: #291f57; }\n .slider-links__slide .caption__link {\n font-weight: 900;\n font-size: 1.4rem;\n line-height: 1.1;\n padding-bottom: 0px; }\n .slider-links__slide .caption__link a {\n background-color: #291f57;\n color: #fff;\n border-radius: 25px;\n padding: 10px 20px; }\n .slider-links.slider-init-top .swiper-slide-active .caption__link a {\n background-color: #47e7ce;\n color: #000; }\n .slider-links__prev {\n position: relative;\n right: auto;\n left: auto;\n top: auto;\n bottom: 0px;\n margin-right: 10px; }\n .slider-links__prev::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-links__next {\n position: relative;\n right: auto;\n left: auto;\n top: auto;\n bottom: 0px; }\n .slider-links__next::after {\n font-size: 1.6rem;\n color: #fff; }\n .slider-links__pagination.swiper-pagination-progressbar {\n width: 100%;\n height: 1px;\n left: 0;\n top: auto !important;\n bottom: 0px;\n background: rgba(255, 255, 255, 0.1); }\n .slider-links__pagination.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\n background: rgba(255, 255, 255, 0.25); }\n\n/*===============================================*/\n/* 11. CUSTOM PAGES */\n/*===============================================*/\n/* 11-1. PAGE - INTRO */\n/*========================*/\n.page--intro {\n height: 100%;\n background-color: #0f0638; }\n\n.text-animation {\n width: 250px;\n margin: auto;\n background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 10%, white 50%, rgba(255, 255, 255, 0) 90%);\n background-repeat: repeat;\n background-position: 0 0;\n background-size: 100% 250px;\n -webkit-text-fill-color: transparent;\n -webkit-background-clip: text;\n -webkit-animation: stripes 3s linear infinite;\n animation: stripes 3s linear infinite; }\n\n@-webkit-keyframes stripes {\n 100% {\n background-position: 250px 0; } }\n\n@keyframes stripes {\n 100% {\n background-position: 250px 0; } }\n\n/* 11-1. PAGE - SPLASH */\n/*========================*/\n.page--splash {\n height: 600px;\n width: 300px;\n background: transparent }\n\n.splash {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%; }\n .splash__content {\n width: 100%; }\n .splash__logo {\n width: 100%;\n text-align: center;\n color: #ffffff;\n font-weight: 300;\n font-size: 2.8rem;\n margin-bottom: 40px; }\n .splash__logo strong {\n font-weight: 600;\n color: #47e7ce; }\n .splash__image {\n width: 100%;\n text-align: center; }\n .splash__image img {\n max-width: 50%;\n display: block;\n margin: auto; }\n .splash__text {\n width: 70%;\n text-align: center;\n color: #fff;\n margin: 0 auto 40px auto;\n line-height: 1.5; }\n .splash__buttons {\n width: 70%;\n margin: auto; }\n .splash__buttons .button {\n margin-bottom: 10px; }\n .splash__social-login {\n width: 100%;\n text-align: center; }\n .splash__social-login p {\n text-transform: uppercase;\n color: #fff;\n font-size: 1.1rem;\n letter-spacing: 1px;\n opacity: 0.7; }\n .splash__social-login p a {\n color: #fff;\n opacity: 1; }\n .splash__social-icons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 20px 0; }\n\n/* 11-3. PAGE - LOGIN */\n/*========================*/\n.page--login {\n height: 100%;\n background-color: rgba(16, 8, 58, 0.8); \n height: 600px;\n width: 300px;\n}\n\n.login {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%; }\n .login__content {\n width: calc(100% - 80px);\n margin: auto; }\n .login__title {\n width: 100%;\n text-align: left;\n color: #ffffff;\n font-weight: 600;\n font-size: 1.6rem;\n letter-spacing: 2px;\n text-transform: uppercase;\n margin-bottom: 40px;\n padding: 0px; }\n .login__text {\n width: 70%;\n text-align: center;\n color: #fff;\n margin: 0 auto 40px auto;\n line-height: 1.5; }\n\n.login-form {\n width: 100%;\n margin: auto; }\n .login-form__row {\n width: 100%;\n margin-bottom: 10px; }\n .login-form__label {\n width: 100%;\n display: block;\n padding-bottom: 10px;\n color: #fff;\n text-transform: uppercase;\n font-size: 1rem;\n letter-spacing: 1px;\n font-weight: 600; }\n .login-form label.error {\n color: #ffbde1;\n padding: 10px 0 0 5px;\n font-size: 1.1rem; }\n .login-form__input {\n width: calc(100% - 20px);\n border: none;\n background-color: transparent;\n padding: 10px 10px;\n border-radius: 0px;\n border-bottom: 1px rgba(255, 255, 255, 0.3) solid;\n color: #fff; }\n .login-form__submit {\n margin-top: 20px;\n box-shadow: none;\n -webkit-box-shadow: none;\n -webkit-appearance: none; }\n .login-form__forgot-pass {\n width: 100%;\n text-align: right; }\n .login-form__forgot-pass a {\n color: #fff;\n font-weight: 600;\n font-size: 1.2rem; }\n .login-form__bottom {\n width: 100%;\n text-align: center;\n margin-top: 20px; }\n .login-form__bottom p {\n color: #fff;\n padding-bottom: 10px; }\n .login-form__bottom p a {\n color: #47e7ce;\n font-weight: 600;\n font-size: 1.2rem; }\n\n.icon {\n display: block; }\n .icon--social {\n width: 20px;\n height: 20px;\n margin: 0 10px; }\n .icon--social img {\n display: block;\n max-width: 100%; }\n\n/*===============================================*/\n/* 15. FORMS */\n/*===============================================*/\n.form {\n margin: auto; }\n .form__row {\n width: 100%;\n margin-bottom: 10px; }\n .form__label {\n width: 100%;\n display: block;\n padding-bottom: 10px;\n color: #fff;\n text-transform: uppercase;\n font-size: 1.1rem;\n letter-spacing: 1px;\n font-weight: 600; }\n .form label.error {\n color: #f65656;\n padding: 10px 0 0 5px;\n font-size: 1.1rem; }\n .form__input {\n width: calc(100% - 20px);\n border: none;\n background-color: transparent;\n padding: 10px 10px;\n border-radius: 0px;\n border-bottom: 1px rgba(255, 255, 255, 0.3) solid;\n color: #fff; }\n .form__input::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #fff;\n opacity: 1;\n /* Firefox */ }\n .form__input:-ms-input-placeholder {\n /* Internet Explorer 10-11 */\n color: #fff; }\n .form__input::-ms-input-placeholder {\n /* Microsoft Edge */\n color: #fff; }\n .form__input--12 {\n width: calc(50% - 35px); }\n .form__input--23 {\n width: calc(((100% / 3 ) * 2) - 35px); }\n .form__input--13 {\n width: calc((100% / 3) - 35px); }\n .form__textarea {\n width: calc(100% - 20px);\n height: 50px;\n border: none;\n background-color: transparent;\n padding: 18px 10px;\n border-radius: 0px;\n font-weight: 500;\n font-size: 1.4rem;\n color: #fff;\n border-bottom: 1px rgba(255, 255, 255, 0.3) solid; }\n .form__textarea::placeholder {\n /* Chrome, Firefox, Opera, Safari 10.1+ */\n color: #fff;\n opacity: 1;\n /* Firefox */ }\n .form__textarea:-ms-input-placeholder {\n /* Internet Explorer 10-11 */\n color: #fff; }\n .form__textarea::-ms-input-placeholder {\n /* Microsoft Edge */\n color: #fff; }\n .form__select {\n padding: 0;\n width: 100%;\n margin: 0;\n overflow: hidden;\n border-radius: 0px;\n background-color: transparent;\n background-image: url(../images/icons/arrow-down.svg);\n background-repeat: no-repeat;\n background-position: 95% 50%;\n background-size: 16px;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n color: #fff;\n border-bottom: 1px rgba(255, 255, 255, 0.3) solid; }\n .form__select select {\n padding: 18px 0 10px 5px;\n width: calc(100% - 5px);\n margin: 0 0 5px 0;\n border: none;\n color: #fff;\n box-shadow: none;\n font-weight: 500;\n font-size: 1.4rem;\n background-color: transparent;\n background-image: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none; }\n .form__coin-icon {\n display: flex;\n align-items: center; }\n .form__coin-icon img {\n display: block;\n width: 20px; }\n .form__coin-icon span {\n font-size: 1.6rem;\n font-weight: 600;\n padding-left: 5px; }\n .form__coin-total {\n font-size: 2.4rem;\n font-weight: 600; }\n .form__submit {\n box-shadow: none;\n -webkit-box-shadow: none;\n -webkit-appearance: none; }\n\n.radio-option {\n width: auto;\n display: inline-block;\n padding: 0;\n margin: 0 10px 10px 0;\n cursor: pointer; }\n .radio-option label {\n cursor: pointer;\n display: block;\n padding: 15px 20px;\n background-color: transparent;\n border: 1px #47e7ce solid;\n color: #47e7ce;\n text-align: left;\n font-size: 1.4rem;\n font-weight: 600;\n border-radius: 10px; }\n .radio-option label span {\n color: #291f57;\n font-weight: 600; }\n .radio-option input[type=\"radio\"] {\n display: none; }\n .radio-option input[type=\"radio\"]:checked + label {\n background-color: #47e7ce;\n color: #000; }\n .radio-option input[type=\"radio\"]:checked + label span {\n color: #000; }\n .radio-option--full {\n width: 100%;\n margin: 0 0 10px 0; }\n .radio-option--full label {\n padding: 15px 20px 15px 40px; }\n .radio-option--full input[type=\"radio\"]:checked + label {\n background-image: url(../images/icons/checked-simple.svg);\n background-repeat: no-repeat;\n background-position: 15px 50%;\n background-size: 16px; }\n\n.checkbox-option {\n width: auto;\n display: inline-block;\n padding: 0;\n margin: 0 10px 10px 0;\n cursor: pointer; }\n .checkbox-option label {\n cursor: pointer;\n display: block;\n padding: 15px 20px;\n background-color: transparent;\n border: 1px #47e7ce solid;\n color: #47e7ce;\n text-align: left;\n font-size: 1.4rem;\n font-weight: 600;\n border-radius: 10px; }\n .checkbox-option label span {\n color: #291f57;\n font-weight: 600; }\n .checkbox-option input[type=\"checkbox\"] {\n display: none; }\n .checkbox-option input[type=\"checkbox\"]:checked + label {\n background-color: #47e7ce;\n color: #000; }\n .checkbox-option input[type=\"checkbox\"]:checked + label span {\n color: #000; }\n .checkbox-option--full {\n width: 100%;\n margin: 0 0 10px 0; }\n .checkbox-option--full label {\n padding: 15px 20px 15px 40px; }\n .checkbox-option--full input[type=\"checkbox\"]:checked + label {\n background-image: url(../images/icons/checked-simple.svg);\n background-repeat: no-repeat;\n background-position: 15px 50%;\n background-size: 16px; }\n\n.card-selector {\n width: 100%;\n display: inline-block;\n padding: 0;\n margin: 0 0 10px 0;\n cursor: pointer; }\n .card-selector label {\n cursor: pointer;\n display: block;\n padding: 20px 20px 20px 60px;\n background-color: #000;\n background-image: url(../images/icons/card.svg);\n background-repeat: no-repeat;\n background-position: 15px 50%;\n background-size: 30px;\n color: #fff;\n text-align: left;\n font-size: 1.4rem;\n font-weight: 600;\n border-radius: 10px; }\n .card-selector label span {\n color: #47e7ce;\n font-weight: 400;\n display: block; }\n .card-selector input[type=\"radio\"] {\n display: none; }\n .card-selector input[type=\"radio\"]:checked + label {\n background-color: #47e7ce;\n background-image: url(../images/icons/checked-simple.svg);\n background-repeat: no-repeat;\n background-position: 15px 50%;\n background-size: 16px;\n color: #000; }\n .card-selector input[type=\"radio\"]:checked + label span {\n color: #000; }\n\n.checkbox-simple {\n margin: 5px; }\n .checkbox-simple label {\n cursor: pointer;\n color: #fff; }\n .checkbox-simple input[type=\"checkbox\"] {\n display: none; }\n .checkbox-simple input[type=\"checkbox\"] + label:before {\n border: none;\n content: \"\\00a0\";\n display: inline-block;\n font-size: 1.8rem;\n font-weight: 600;\n width: 18px;\n height: 18px;\n border-radius: 2px;\n -webkit-border-radius: 2px;\n -khtml-border-radius: 2px;\n margin: 0 10px 0 0;\n line-height: 18px;\n vertical-align: center;\n border: none;\n background-color: #0f0638; }\n .checkbox-simple input[type=\"checkbox\"]:checked + label:before {\n color: #000;\n content: \"\\2713\";\n border: none;\n text-align: center;\n background-color: #47e7ce; }\n\n.switch__label {\n display: inline-block;\n position: relative;\n width: 70px;\n height: 30px;\n padding: 0px;\n margin-left: 10px;\n border-radius: 20px;\n background: #0f0638;\n transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1);\n vertical-align: middle;\n cursor: pointer; }\n .switch__label::before {\n content: '';\n position: absolute;\n top: 4px;\n left: 4px;\n width: 22px;\n height: 22px;\n background: #47e7ce;\n border-radius: 50%;\n transition: left 0.28s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); }\n .switch__label:active::before {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(128, 128, 128, 0.1); }\n\n.switch input:checked + .switch__label {\n background: #47e7ce; }\n\n.switch input:checked + .switch__label::before {\n left: 42px;\n background: #fff; }\n\n.switch input:checked + .switch__label:active::before {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), 0 0 0 20px rgba(0, 150, 136, 0.2); }\n\n\n.fieldset {\n width: calc(100% - 40px);\n padding: 20px;\n background-color: #291f57;\n border-radius: 15px;\n margin-bottom: 20px;\n -webkit-box-shadow: 10px 19px 35px -14px rgba(0, 0, 0, 0.17);\n -moz-box-shadow: 10px 19px 35px -14px rgba(0, 0, 0, 0.17);\n box-shadow: 5px 5px 35px -14px rgba(0, 0, 0, 0.17); }\n\n.sub-fieldset {\n width: calc(100% - 20px);\n padding: 10px;\n border: 1px rgba(255, 255, 255, 0.2) solid;\n border-radius: 10px;\n margin-bottom: 20px; }\n\n.option-hidden {\n display: none;\n margin-bottom: 10px; }\n .option-hidden.show {\n display: block; }\n\n#Note {\n display: none; }\n\n#loader {\n width: 100%;\n text-align: center;\n padding: 40px 0; }\n\n#loader-animation {\n display: inline-block;\n position: relative;\n margin: auto;\n width: 80px;\n height: 80px; }\n #loader-animation div {\n animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n transform-origin: 40px 40px; }\n #loader-animation div:after {\n content: \" \";\n display: block;\n position: absolute;\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #bf62f9;\n margin: -4px 0 0 -4px; }\n #loader-animation div:nth-child(1) {\n animation-delay: -0.036s; }\n #loader-animation div:nth-child(1):after {\n top: 63px;\n left: 63px; }\n #loader-animation div:nth-child(2) {\n animation-delay: -0.072s; }\n #loader-animation div:nth-child(2):after {\n top: 68px;\n left: 56px; }\n #loader-animation div:nth-child(3) {\n animation-delay: -0.108s; }\n #loader-animation div:nth-child(3):after {\n top: 71px;\n left: 48px; }\n #loader-animation div:nth-child(4) {\n animation-delay: -0.144s; }\n #loader-animation div:nth-child(4):after {\n top: 72px;\n left: 40px; }\n #loader-animation div:nth-child(5) {\n animation-delay: -0.18s; }\n #loader-animation div:nth-child(5):after {\n top: 71px;\n left: 32px; }\n #loader-animation div:nth-child(6) {\n animation-delay: -0.216s; }\n #loader-animation div:nth-child(6):after {\n top: 68px;\n left: 24px; }\n #loader-animation div:nth-child(7) {\n animation-delay: -0.252s; }\n #loader-animation div:nth-child(7):after {\n top: 63px;\n left: 17px; }\n #loader-animation div:nth-child(8) {\n animation-delay: -0.288s; }\n #loader-animation div:nth-child(8):after {\n top: 56px;\n left: 12px; }\n\n@keyframes lds-roller {\n 0% {\n transform: rotate(0deg); }\n 100% {\n transform: rotate(360deg); } }\n\n/*===============================================*/\n/* 16. CHAT */\n/*===============================================*/\n.conversations {\n padding: 0 0 5px 0;\n width: 100%;\n margin: 0px;\n list-style: none;\n float: left;\n clear: both; }\n .conversations__row {\n display: flex;\n width: calc(100% - 20px);\n color: #ffffff;\n background-color: #291f57;\n border-radius: 15px;\n padding: 10px;\n margin: 0 0 10px 0; }\n .conversations__row a {\n color: #ffffff; }\n .conversations__row--undread a {\n color: #fff;\n font-weight: 600; }\n .conversations__avatar {\n max-width: 50px;\n flex-grow: 1;\n position: relative; }\n .conversations__avatar img {\n display: block;\n max-width: 100%;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%; }\n .conversations .active-user {\n display: block;\n width: 10px;\n height: 10px;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n background-color: #55c709;\n border: 2px #fff solid;\n position: absolute;\n top: 40px;\n right: 5px;\n z-index: 555; }\n .conversations__details {\n padding: 0 10px 0 20px;\n flex-grow: 1; }\n .conversations__user {\n font-weight: 600;\n padding: 0 0 5px 0; }\n .conversations__user a {\n color: #fff; }\n .conversations__short-content {\n padding: 0px;\n margin: 0px;\n font-size: 1.2rem;\n line-height: 1.5; }\n .conversations__info {\n width: 100px;\n text-align: right; }\n .conversations__time {\n font-size: 1.1rem;\n font-weight: 600; }\n .conversations__new-messages-nr {\n width: 20px;\n height: 20px;\n float: right;\n background-color: #47e7ce;\n color: #000;\n border-radius: 100%;\n text-align: center;\n margin: 10px 0 0 0;\n line-height: 20px;\n font-size: 1.1rem;\n font-weight: 600; }\n\n.chat {\n width: 100%;\n margin: 0px;\n padding: 0px 0 20px 0;\n list-style: none;\n clear: both; }\n .chat__row {\n padding: 0;\n margin: 0 0 10px 0;\n display: flex;\n width: 100%; }\n .chat__content {\n flex-grow: 1;\n width: 100%;\n border-radius: 15px;\n padding: 15px 20px; }\n .chat__content p {\n padding: 0px !important;\n font-size: 1.4rem; }\n .chat__content p a {\n color: #47e7ce; }\n .chat__row--received .chat__content {\n margin-right: 5%;\n background-color: #291f57;\n border-top-left-radius: 0;\n -webkit-border-top-left-radius: 0;\n color: #fff; }\n .chat__row--sent .chat__content {\n margin-left: 5%;\n background-color: #000;\n color: #fff;\n border-bottom-right-radius: 0px;\n -webkit-border-bottom-right-radius: 0px; }\n .chat__row--unread .chat__content {\n font-weight: 600; }\n .chat__time {\n font-size: 1.1rem; }\n .chat__row--sent .chat__time {\n color: #fff; }\n .chat__avatar {\n max-width: 40px;\n position: relative;\n margin-right: 10px; }\n .chat__avatar img {\n display: block;\n max-width: 100%;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%; }\n .chat .active-user {\n display: block;\n width: 8px;\n height: 8px;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n background-color: #55c709;\n border: 2px #fff solid;\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 555; }\n .chat__row--sent .chat__avatar {\n align-self: flex-end;\n position: relative;\n margin-left: 10px; }\n\n.chat-form {\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: #fff;\n width: calc(100% - 40px);\n margin: 0 10px;\n padding: 10px;\n border-radius: 10px; }\n .chat-form__textarea {\n width: 100%;\n flex-grow: 1;\n background: none;\n background-color: transparent;\n border: none;\n resize: none;\n height: 20px; }\n .chat-form__submit {\n box-shadow: none;\n -webkit-box-shadow: none;\n -webkit-appearance: none; }\n .chat-form__submit img {\n display: block;\n width: 30px; }\n\n/*===============================================*/\n/* 17. TABS & ACCORDION & TABLES */\n/*===============================================*/\n/* Tabs\n/*------------------------------------------*/\n.tabs {\n display: flex;\n flex-wrap: wrap;\n width: 100%; }\n .tabs__label {\n order: 1;\n display: block;\n padding: 10px 0;\n cursor: pointer;\n font-weight: 500; }\n .tabs__label--auto {\n width: auto;\n padding: 10px 20px 10px 5px; }\n .tabs__label--12 {\n width: 50%; }\n .tabs__label--13 {\n width: 33.333%; }\n .tabs__content {\n order: 99;\n flex-grow: 1;\n width: 100%;\n display: none;\n padding: 0;\n margin-top: 20px; }\n .tabs input[type=\"radio\"].tabs__radio {\n display: none; }\n .tabs input[type=\"radio\"].tabs__radio:checked + label.tabs__label {\n color: #fff; }\n .tabs input[type=\"radio\"].tabs__radio:checked + label.tabs__label + .tabs__content {\n display: block; }\n .tabs--style1 {\n border-bottom: 1px rgba(255, 255, 255, 0.2) solid; }\n .tabs--style1 .tabs__label {\n text-align: center;\n background-color: #291f57; }\n .tabs--style1 input[type=\"radio\"].tabs__radio:checked + label.tabs__label {\n color: #000;\n background-color: #47e7ce; }\n\n/* ------Accordion---------- */\n.accordion {\n width: 100%; }\n .accordion__item {\n position: relative;\n width: 100%;\n overflow: hidden;\n background-color: #291f57;\n margin-bottom: 1px; }\n .accordion__input {\n position: absolute;\n opacity: 0;\n z-index: -1; }\n .accordion__label {\n position: relative;\n display: block;\n cursor: pointer;\n padding: 15px 10px;\n font-size: 1.4rem;\n color: #fff;\n font-weight: 500;\n -webkit-transition: all 0.4s ease;\n -moz-transition: all 0.4s ease;\n transition: all 0.4s ease; }\n .accordion__content {\n max-height: 0;\n overflow: hidden;\n -webkit-transition: all 0.4s ease;\n -moz-transition: all 0.4s ease;\n transition: all 0.4s ease; }\n .accordion__content p {\n padding: 10px !important; }\n .accordion__input:checked ~ .accordion__content {\n max-height: 300px; }\n .accordion__input:checked ~ .accordion__label, .accordion .accordion__label:hover {\n background-color: #47e7ce;\n color: #000; }\n .accordion__label span {\n position: absolute;\n right: 5%;\n top: 43%;\n display: block;\n width: 14px;\n height: 14px;\n text-align: center;\n background-image: url(../images/icons/arrow-down.svg);\n background-repeat: no-repeat;\n background-position: 0 0;\n background-size: 14px;\n -webkit-transition: all .35s;\n -o-transition: all .35s;\n transition: all .35s; }\n .accordion__input[type=radio]:checked + .accordion__label span {\n transform: rotateX(180deg);\n background-image: url(../images/icons/arrow-down.svg); }\n\n/* ------Toggle---------- */\n.toggle {\n width: 100%;\n margin: 0 auto 0 auto; }\n .toggle__item {\n position: relative;\n width: 100%;\n overflow: hidden;\n background-color: #291f57;\n margin-bottom: 1px; }\n .toggle__input {\n position: absolute;\n opacity: 0;\n z-index: -1; }\n .toggle__label {\n position: relative;\n display: block;\n cursor: pointer;\n padding: 15px 10px;\n font-size: 1.4rem;\n font-weight: 500;\n color: #fff;\n -webkit-transition: all 0.4s ease;\n -moz-transition: all 0.4s ease;\n transition: all 0.4s ease; }\n .toggle__content {\n max-height: 0;\n overflow: hidden;\n -webkit-transition: all 0.4s ease;\n -moz-transition: all 0.4s ease;\n transition: all 0.4s ease; }\n .toggle__content p {\n padding: 10px !important; }\n .toggle__input:checked ~ .toggle__content {\n max-height: 300px; }\n .toggle__input:checked ~ .toggle__label, .toggle .toggle__label:hover {\n background-color: #47e7ce;\n color: #000; }\n .toggle__label span {\n position: absolute;\n right: 10px;\n top: 43%;\n display: block;\n width: 14px;\n height: 14px;\n text-align: center;\n background-image: url(../images/icons/arrow-down.svg);\n background-repeat: no-repeat;\n background-position: 0 0;\n background-size: 14px;\n -webkit-transition: all .35s;\n -o-transition: all .35s;\n transition: all .35s; }\n .toggle__input[type=checkbox]:checked + .toggle__label span {\n transform: rotateX(180deg);\n background-image: url(../images/icons/arrow-down.svg); }\n\n/* TABLES */\n.table {\n width: calc(100% - 40px);\n padding: 20px;\n background-color: #291f57;\n border-radius: 15px; }\n .table__row {\n width: 100%;\n display: flex;\n justify-content: space-between;\n margin-bottom: 10px;\n padding-bottom: 10px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\n .table__section--nr {\n flex: 0 0 50px;\n font-weight: 600;\n color: #fff; }\n .table__section--grow {\n flex-grow: 1; }\n .table__section--header {\n font-weight: 600;\n color: #fff; }\n .table__section--centered {\n text-align: center; }\n .table__icon {\n display: block;\n width: 24px;\n margin: auto; }\n .table--3cols .table__section {\n width: 33.333%; }\n .table--4cols .table__section {\n width: 25%; }\n .table--5cols {\n overflow-x: scroll;\n width: auto; }\n .table--5cols .table__inner {\n width: 125%; }\n .table--5cols .table__section {\n width: 25%; }\n .table--6cols {\n overflow-x: scroll;\n width: auto; }\n .table--6cols .table__inner {\n width: 150%; }\n .table--6cols .table__section {\n width: 25%; }\n .table--7cols {\n overflow-x: scroll;\n width: auto; }\n .table--7cols .table__inner {\n width: 175%; }\n .table--7cols .table__section {\n width: 25%; }\n .table--8cols {\n overflow-x: scroll;\n width: auto; }\n .table--8cols .table__inner {\n width: 200%; }\n .table--8cols .table__section {\n width: 25%; }\n .table--9cols {\n overflow-x: scroll;\n width: auto; }\n .table--9cols .table__inner {\n width: 225%; }\n .table--9cols .table__section {\n width: 25%; }\n .table--10cols {\n overflow-x: scroll;\n width: auto; }\n .table--10cols .table__inner {\n width: 250%; }\n .table--10cols .table__section {\n width: 25%; }\n\n/*===============================================*/\n/* 18. OTHERS */\n/*===============================================*/\n.image-top {\n width: 100vw;\n margin-left: -20px;\n position: relative; }\n .image-top img {\n display: block;\n max-width: 100%;\n opacity: 0.5; }\n .image-top__details {\n width: calc(100% - 40px);\n padding: 20px;\n position: absolute;\n bottom: 0px;\n left: 0px; }\n\n.user-line {\n display: flex;\n align-items: center;\n padding: 0 0 10px 0; }\n .user-line img {\n display: block;\n width: 40px;\n border-radius: 50%; }\n .user-line span {\n font-weight: 600;\n padding-left: 10px;\n color: #fff; }\n\n.entry {\n padding: 20px 0; }\n .entry h2 {\n padding: 20px 0 10px 0;\n font-weight: 600; }\n .entry h3 {\n padding: 20px 0 10px 0;\n font-weight: 600; }\n .entry__comments {\n text-align: right;\n padding-bottom: 10px;\n margin: 10px 0; }\n .entry__comments a {\n background-color: #47e7ce;\n color: #000;\n font-size: 1.2rem;\n border-radius: 5px;\n padding: 5px 10px; }\n\n.videoplayer {\n width: 100%;\n height: 250px; }\n\n.timer {\n text-align: center;\n width: 100%;\n padding: 20px 0; }\n .timer__icon {\n margin: auto auto 20px auto;\n cursor: pointer;\n display: block; }\n .timer__icon img {\n display: block;\n width: 100px;\n margin: auto; }\n .timer__icon.off {\n display: none; }\n .timer__icon.active {\n opacity: 0.5; }\n .timer__count {\n font-weight: 600;\n font-size: 2.4rem;\n display: block;\n padding-bottom: 20px; }\n .timer__count.off {\n display: none; }\n\n/* Custom CSS */\n.net {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n width: calc(100% - 40px); /* Control the width via padding */\n padding: 20px;\n background-color: #291f57;\n border-radius: 15px;\n margin-bottom: 20px;\n box-shadow: 5px 5px 35px -14px rgba(0, 0, 0, 0.17);\n}\n\n.net-header {\n display: flex;\n align-items: center;\n margin-bottom: 10px;\n width: 100%;\n}\n\n.file-upload-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n}\n\n.file-upload {\n user-select: none;\n cursor: pointer;\n flex: 1;\n margin: 0 5px;\n}\n\n.drag_box {\n padding: 5px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 10px;\n width: 100%;\n cursor: pointer;\n}\n\n.drag_box_outline {\n border: 2px dashed rgb(71 231 206 / 80%);\n height: 50px;\n width: 100%;\n border-radius: 7px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.filename {\n padding: 10px;\n cursor: pointer;\n user-select: none;\n}\n\n.erred {\n border-color: red;\n color: red;\n}\n\n.select-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n background-color: #383A68; /* Slightly lighter than the .net background */\n border-radius: 4px;\n overflow: hidden; /* Ensures the arrow or overflow content is clipped */\n width: 100%; /* Takes full width */\n}\n\n.select {\n flex-grow: 1;\n padding: 10px 34px 10px 10px; /* Increased padding for larger select box */\n color: white;\n background-color: transparent; /* Make the select transparent to reveal the wrapper background */\n border: none; /* Remove default border */\n outline: none; /* Remove focus outline */\n -webkit-appearance: none; /* Remove default styling */\n -moz-appearance: none;\n appearance: none;\n font-size: 16px; /* Adjust font size for better readability */\n}\n\n.select-wrapper i {\n position: absolute;\n right: 15px; /* Adjusted for visual alignment */\n font-size: 12px; /* Smaller and less bold icon */\n color: white; /* Set the color of the icon */\n pointer-events: none; /* Makes the icon non-interactive */\n}\n\n.select::-ms-expand {\n display: none; /* Hide the default arrow in IE/Edge */\n}\n\n.select option {\n background-color: #383A68; /* Ensure options match the background of the select */\n color: white;\n}\n\n.icon-container {\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 6px;\n flex-shrink: 0; /* Prevents resizing */\n}\n\n.fa-globe {\n font-size: 18px;\n border-radius: 50%;\n display: inline-block;\n object-fit: cover;\n position: relative;\n}\n\n.icon {\n height: 18px;\n width: 18px;\n}\n\n.status-dot {\n position: absolute;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background-color: #291f57;\n right: 0px;\n bottom: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.status-dot::after {\n content: '';\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: grey;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.icon.connected + .status-dot::after,\n.fa-globe.connected + .status-dot::after {\n background-color: green;\n}\n\n.tooltip {\n visibility: hidden;\n width: 100px;\n background-color: black;\n color: #fff;\n text-align: center;\n border-radius: 6px;\n padding: 5px;\n position: absolute;\n z-index: 1;\n bottom: 125%; /* Position the tooltip above the icon */\n left: 50%;\n margin-left: -50px;\n opacity: 0;\n transition: opacity 0.3s;\n}\n\n.tooltip::after {\n content: '';\n position: absolute;\n top: 100%; /* Arrow at the bottom of tooltip */\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: black transparent transparent transparent;\n}\n\n.icon-container:hover .tooltip {\n visibility: visible;\n opacity: 1;\n}\n\n.overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 1000; /* Ensure it's above other page content */\n}\n\n.modal {\n position: relative;\n max-width: 90%;\n width: 280px;\n height: auto; /* or specify a height */\n background: transparent;\n border-radius: 8px; /* Rounded corners */\n z-index: 1002;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n background: #291f57;\n}\n\n.lottie-modal-background {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%; /* Full width of the modal */\n height: 100%; /* Full height of the modal */\n border-radius: inherit; /* Inherits the border-radius from the modal */\n z-index: 1001; /* Behind the content but above the base modal */\n}\n\n.modal-content {\n position: relative;\n z-index: 1003; /* Above the Lottie background */\n color: white;\n padding: 20px;\n width: 90%; /* Adjust width as necessary */\n border-radius: inherit; /* Ensures content also has rounded corners if needed */\n}\n\n\n.modal-close-button {\n position: absolute;\n top: 10px; /* Adjust these values as needed */\n right: 10px;\n border: none;\n background: none;\n color: white;\n font-size: 24px;\n cursor: pointer;\n}\n\n.modal h2 {\n margin-bottom: 20px;\n}\n\n.modal-net-input {\n position: relative;\n width: 90%;\n padding: 10px;\n border: 1px solid rgba(255, 255, 255, 0.3);\n border-radius: 4px;\n margin-bottom: 10px;\n background: #383A68;\n color: white;\n}\n\n.modal button {\n padding: 10px 20px;\n font-weight: bold;\n text-transform: uppercase;\n cursor: pointer;\n border: 0px solid rgba(255, 255, 255, 0.297);\n border-radius: 5px;\n transition: background-color 0.3s;\n box-shadow: #000;\n}\n\n.button-save, .button-close {\n width: 48%;\n padding: 0.5rem 1rem;\n text-align: center;\n font-size: 1rem;\n border: none;\n cursor: pointer;\n margin: 1rem;\n}\n\n.button-save {\n background: linear-gradient(60deg, #47e7ce 0%, #4fa8c4 100%);\n color: black;\n}\n\n.button-save:hover {\n background: linear-gradient(60deg, #47e7ce 100%, #4fa8c4 0%);\n}\n\n.button-close {\n background-color: #ba3c3c;\n color: white;\n}\n\n.modal .flex {\n display: flex;\n justify-content: flex-end;\n gap: 10px; /* Space between buttons */\n padding: 5px;\n}\n\n.modal-url-input-container {\n display: flex;\n align-items: center;\n width: 99%; /* Ensure the container takes the full width */\n background: #383A68;\n border-radius: 4px;\n color: white;\n overflow: hidden; /* Prevents content from spilling out */\n margin-bottom: 10px;\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.modal-url-toggle {\n padding: 10px 15px; /* Adjust padding as needed */\n border: none;\n cursor: pointer;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n text-align: center; /* Ensure text is centered */\n flex-shrink: 0; /* Prevents the button from shrinking */\n text-transform: uppercase;\n user-select: none;\n background: #252545;\n}\n\n.modal-url-input {\n flex-grow: 1; /* Allows the input to grow and fill space */\n padding: 10px;\n border: none;\n background: transparent;\n color: white;\n outline: none;\n width: 0; /* Ensures it takes remaining space */\n}\n\n.modal-url-fixed {\n padding: 5px 10px; /* Adjust padding to match toggle button */\n background: #252545;\n color: white;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n flex-shrink: 0; /* Prevents the label from shrinking */\n white-space: nowrap; /* Keeps text in a single line */\n user-select: none;\n height: 28px;\n}\n\n.save-container {\n display: flex;\n justify-content: space-between;\n}\n\n.table-container {\n margin-top: 20px;\n width: 100%;\n overflow: hidden; /* Ensures the border-radius is visible and content does not overflow */\n border-radius: 5px; /* Sets the border radius for the table container */\n user-select: none;\n}\n\ntable {\n width: 100%;\n border-collapse: collapse;\n border-radius: 5px; /* This applies the border radius to the table */\n margin-bottom: 10px;\n}\n\nth, td {\n text-align: left;\n padding: 8px;\n}\n\nth {\n border-bottom: 1px solid white;\n}\n\nth:first-child {\n border-top-left-radius: 5px; /* Rounds the top-left corner of the first header */\n}\n\nth:last-child {\n border-top-right-radius: 5score; /* Rounds the top-right corner of the last header */\n}\n\ntr:last-child td:first-child {\n border-bottom-left-radius: 5px; /* Rounds the bottom-left corner of the last row */\n}\n\ntr:last-child td:last-child {\n border-bottom-right-radius: 5px; /* Rounds the bottom-right corner of the last row */\n}\n\ntr:nth-child(odd) {\n background-color: #383A68; /* Darker row for odd rows */\n}\n\ntr:nth-child(even) {\n background-color: #292952; /* Lighter row for even rows */\n}\n\ntr:hover {\n background-color: #2a2a72; /* Color change on hover */\n}\n\n.icon-button {\n background: none;\n border: none;\n color: #f2f2f2;\n cursor: pointer;\n}\n\n.icon-diagnostic-agnostic-float:before {\n content: \"\\f057\"; /* FontAwesome trash icon */\n}\n\n.icon-button:hover {\n color: rgb(179, 179, 179);\n}\n\n.input-error {\n border: 1px solid rgb(125, 124, 124); /* Highlight the input border in red */\n}\n\n.error-message {\n color: rgb(97, 95, 95);\n font-size: 0.8rem; /* Smaller font size for error message */\n margin-top: 10px; /* Space between the input and the error message */\n}\n\n.lottie-background {\n position: fixed; /* or absolute, depending on other content */\n top: 0;\n left: 0;\n height: 100%;\n z-index: -1; /* Keep it in the background */\n overflow: hidden; /* Hide overflow */\n}\n\n.icon-green {\n color: green; \n}\n\n.icon-red {\n color: #ba3c3c; \n}\n\n.graphql-icon {\n height: 100%;\n}\n\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.modal {\n padding: 2rem;\n border-radius: 10px;\n width: 300px; /* Set width according to your design */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n text-align: center;\n}\n\n.modal h2 {\n margin-bottom: 1rem;\n font-size: 1.5rem;\n flex: 0 1 auto; /* Heading at the top */\n}\n\n.modal p {\n margin: 1rem 0;\n flex: 1 1 auto; /* Content in the middle */\n}\n\n.modal button {\n flex: 0 1 auto; /* Button at the bottom */\n margin-top: 1rem;\n width: 100%;\n}\n\n.header-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px;\n margin: 0px 15px 0px;\n}\n\n.badge-container {\n display: flex;\n align-items: center;\n}\n\n.badge {\n background-color: #4d92d7;\n color: white;\n font-size: 12px;\n font-weight: bold;\n padding: 5px 10px;\n border-radius: 12px;\n display: inline-block;\n margin-right: 10px;\n cursor: pointer;\n user-select: none;\n}\n\n.header__logo--text {\n text-align: center;\n font-size: 24px;\n}\n\n.header__icon {\n display: flex;\n justify-content: flex-end;\n}\n\n.keypair-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.keypair-icons {\n display: flex;\n align-items: center;\n}\n\n.icon-button {\n background: none;\n border: none;\n outline: none;\n cursor: pointer;\n padding: 0 5px;\n}\n\n.icon-button:hover {\n opacity: 0.7;\n}\n\n/* Container for keypair actions */\n.keypair-actions {\n display: flex;\n gap: 10px;\n justify-content: center;\n margin-top: 10px;\n}\n\n/* Badge Button Styles */\n.badge-button {\n background-color: #3c4e63; /* Matches your theme's primary color */\n color: white;\n border: none;\n border-radius: 50%; /* Makes the button circular */\n padding: 10px; /* Uniform padding */\n font-size: 14px;\n cursor: pointer;\n width: 40px; /* Fixed width suitable for icons */\n height: 40px; /* Fixed height suitable for icons */\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.3s;\n}\n\n.badge-button:hover {\n background-color: #50647e; /* A slightly lighter shade for hover effect */\n}\n\n/* Remove margin-left from SVGs since there's no text */\n.badge-button svg {\n margin: 0; /* Eliminates any unintended spacing */\n width: 24px; /* Adjust icon size as needed */\n height: 24px; /* Adjust icon size as needed */\n}\n\n/* Tooltip container */\n.button-with-tooltip {\n position: relative;\n display: inline-block;\n}\n\n/* Tooltip text */\n.tooltip-text {\n visibility: hidden;\n width: max-content;\n background-color: black;\n color: #fff;\n text-align: center;\n border-radius: 6px;\n padding: 5px 8px;\n position: absolute;\n z-index: 1;\n bottom: 125%; /* Position above the button */\n left: 50%;\n transform: translateX(-50%);\n opacity: 0;\n transition: opacity 0.3s;\n}\n\n/* Tooltip arrow */\n.tooltip-text::after {\n content: \"\";\n position: absolute;\n top: 100%; /* At the bottom of the tooltip */\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: black transparent transparent transparent;\n}\n\n/* Show the tooltip text when hovering over the container */\n.button-with-tooltip:hover .tooltip-text {\n visibility: visible;\n opacity: 1;\n}\n\n/* Additional styling for .keypair-actions to align buttons */\n.keypair-actions {\n display: flex;\n gap: 10px;\n justify-content: center;\n margin-top: 10px;\n}\n\n/* Centered icon class (optional if not needed) */\n.centered-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n"]} \ No newline at end of file diff --git a/resvault-fixed-20251018-140436/build/static/js/1.chunk.js b/resvault-fixed-20251018-140436/build/static/js/1.chunk.js new file mode 100644 index 00000000..ce7341f8 --- /dev/null +++ b/resvault-fixed-20251018-140436/build/static/js/1.chunk.js @@ -0,0 +1,3 @@ +/*! For license information please see 1.chunk.js.LICENSE.txt */ +(this.webpackJsonpresvault=this.webpackJsonpresvault||[]).push([[1],[function(e,a,t){"use strict";e.exports=t(247)},function(e,a,t){"use strict";e.exports=t(157)},function(e,a,t){"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var a=1;a(void 0===a[t]&&(a[t]=e(t)),a[t])}(e=>{if(e.length>2){if(!l[e])return[e];e=l[e]}const[a,t]=e.split(""),r=s[a],n=o[t]||"";return Array.isArray(n)?n.map(e=>r+e):[r+n]}),u=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],h=[...u,...d];function m(e,a,t,r){var i;const s=null!=(i=Object(n.b)(e,a,!1))?i:t;return"number"===typeof s?e=>"string"===typeof e?e:s*e:Array.isArray(s)?e=>"string"===typeof e?e:s[e]:"function"===typeof s?s:()=>{}}function p(e){return m(e,"spacing",8)}function g(e,a){if("string"===typeof a||null==a)return a;const t=e(Math.abs(a));return a>=0?t:"number"===typeof t?-t:"-".concat(t)}function f(e,a,t,n){if(-1===a.indexOf(t))return null;const i=function(e,a){return t=>e.reduce((e,r)=>(e[r]=g(a,t),e),{})}(c(t),n),s=e[t];return Object(r.b)(e,s,i)}function b(e,a){const t=p(e.theme);return Object.keys(e).map(r=>f(e,a,r,t)).reduce(i.a,{})}function y(e){return b(e,u)}function v(e){return b(e,d)}function k(e){return b(e,h)}y.propTypes={},y.filterProps=u,v.propTypes={},v.filterProps=d,k.propTypes={},k.filterProps=h},function(e,a,t){(function(a){e.exports=function(){var e=e||function(e,r){var n;if("undefined"!==typeof window&&window.crypto&&(n=window.crypto),"undefined"!==typeof self&&self.crypto&&(n=self.crypto),"undefined"!==typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!==typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&"undefined"!==typeof a&&a.crypto&&(n=a.crypto),!n)try{n=t(165)}catch(b){}var i=function(){if(n){if("function"===typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(b){}if("function"===typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(b){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function e(){}return function(a){var t;return e.prototype=a,t=new e,e.prototype=null,t}}(),o={},l=o.lib={},c=l.Base={extend:function(e){var a=s(this);return e&&a.mixIn(e),a.hasOwnProperty("init")&&this.init!==a.init||(a.init=function(){a.$super.init.apply(this,arguments)}),a.init.prototype=a,a.$super=this,a},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var a in e)e.hasOwnProperty(a)&&(this[a]=e[a]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},u=l.WordArray=c.extend({init:function(e,a){e=this.words=e||[],this.sigBytes=a!=r?a:4*e.length},toString:function(e){return(e||h).stringify(this)},concat:function(e){var a=this.words,t=e.words,r=this.sigBytes,n=e.sigBytes;if(this.clamp(),r%4)for(var i=0;i>>2]>>>24-i%4*8&255;a[r+i>>>2]|=s<<24-(r+i)%4*8}else for(var o=0;o>>2]=t[o>>>2];return this.sigBytes+=n,this},clamp:function(){var a=this.words,t=this.sigBytes;a[t>>>2]&=4294967295<<32-t%4*8,a.length=e.ceil(t/4)},clone:function(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var a=[],t=0;t>>2]>>>24-n%4*8&255;r.push((i>>>4).toString(16)),r.push((15&i).toString(16))}return r.join("")},parse:function(e){for(var a=e.length,t=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new u.init(t,a/2)}},m=d.Latin1={stringify:function(e){for(var a=e.words,t=e.sigBytes,r=[],n=0;n>>2]>>>24-n%4*8&255;r.push(String.fromCharCode(i))}return r.join("")},parse:function(e){for(var a=e.length,t=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new u.init(t,a)}},p=d.Utf8={stringify:function(e){try{return decodeURIComponent(escape(m.stringify(e)))}catch(a){throw new Error("Malformed UTF-8 data")}},parse:function(e){return m.parse(unescape(encodeURIComponent(e)))}},g=l.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(a){var t,r=this._data,n=r.words,i=r.sigBytes,s=this.blockSize,o=i/(4*s),l=(o=a?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*s,c=e.min(4*l,i);if(l){for(var d=0;d2&&void 0!==arguments[2])||arguments[2];if(!a||"string"!==typeof a)return null;if(e&&e.vars&&t){const t="vars.".concat(a).split(".").reduce((e,a)=>e&&e[a]?e[a]:null,e);if(null!=t)return t}return a.split(".").reduce((e,a)=>e&&null!=e[a]?e[a]:null,e)}function s(e,a,t){let r,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t;return r="function"===typeof e?e(t):Array.isArray(e)?e[t]||n:i(e,t)||n,a&&(r=a(r,n,e)),r}a.a=function(e){const{prop:a,cssProperty:t=e.prop,themeKey:o,transform:l}=e,c=e=>{if(null==e[a])return null;const c=e[a],u=i(e.theme,o)||{};return Object(n.b)(e,c,e=>{let n=s(u,l,e);return e===n&&"string"===typeof e&&(n=s(u,l,"".concat(a).concat("default"===e?"":Object(r.a)(e)),e)),!1===t?n:{[t]:n}})};return c.propTypes={},c.filterProps=[a],c}},function(e,a,t){!function(){var a;e.exports=(a=t(5),t(66),t(166),t(167),t(37),t(168),t(38),t(120),t(96),t(169),t(121),t(170),t(171),t(172),t(97),t(173),t(28),t(14),t(174),t(175),t(176),t(177),t(178),t(179),t(180),t(181),t(182),t(183),t(184),t(185),t(186),t(187),t(188),t(189),t(190),a)}()},function(e,a,t){"use strict";var r=t(62);a.a=r.a},function(e,a,t){"use strict";function r(e){var a,t,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(a=0;a"@media (min-width:".concat(r[e],"px)")};function i(e,a,t){const i=e.theme||{};if(Array.isArray(a)){const e=i.breakpoints||n;return a.reduce((r,n,i)=>(r[e.up(e.keys[i])]=t(a[i]),r),{})}if("object"===typeof a){const e=i.breakpoints||n;return Object.keys(a).reduce((n,i)=>{if(-1!==Object.keys(e.values||r).indexOf(i)){n[e.up(i)]=t(a[i],i)}else{const e=i;n[e]=a[e]}return n},{})}return t(a)}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var a;return(null==(a=e.keys)?void 0:a.reduce((a,t)=>(a[e.up(t)]={},a),{}))||{}}function o(e,a){return e.reduce((e,a)=>{const t=e[a];return(!t||0===Object.keys(t).length)&&delete e[a],e},a)}},function(e,a,t){!function(){var a;e.exports=(a=t(5),t(28),void(a.lib.Cipher||function(e){var t=a,r=t.lib,n=r.Base,i=r.WordArray,s=r.BufferedBlockAlgorithm,o=t.enc,l=(o.Utf8,o.Base64),c=t.algo.EvpKDF,u=r.Cipher=s.extend({cfg:n.extend(),createEncryptor:function(e,a){return this.create(this._ENC_XFORM_MODE,e,a)},createDecryptor:function(e,a){return this.create(this._DEC_XFORM_MODE,e,a)},init:function(e,a,t){this.cfg=this.cfg.extend(t),this._xformMode=e,this._key=a,this.reset()},reset:function(){s.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?v:b}return function(a){return{encrypt:function(t,r,n){return e(r).encrypt(a,t,r,n)},decrypt:function(t,r,n){return e(r).decrypt(a,t,r,n)}}}}()}),d=(r.StreamCipher=u.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),t.mode={}),h=r.BlockCipherMode=n.extend({createEncryptor:function(e,a){return this.Encryptor.create(e,a)},createDecryptor:function(e,a){return this.Decryptor.create(e,a)},init:function(e,a){this._cipher=e,this._iv=a}}),m=d.CBC=function(){var a=h.extend();function t(a,t,r){var n,i=this._iv;i?(n=i,this._iv=e):n=this._prevBlock;for(var s=0;s>>2];e.sigBytes-=a}},g=(r.BlockCipher=u.extend({cfg:u.cfg.extend({mode:m,padding:p}),reset:function(){var e;u.reset.call(this);var a=this.cfg,t=a.iv,r=a.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,t&&t.words):(this._mode=e.call(r,this,t&&t.words),this._mode.__creator=e)},_doProcessBlock:function(e,a){this._mode.processBlock(e,a)},_doFinalize:function(){var e,a=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(a.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),a.unpad(e)),e},blockSize:4}),r.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}})),f=(t.format={}).OpenSSL={stringify:function(e){var a=e.ciphertext,t=e.salt;return(t?i.create([1398893684,1701076831]).concat(t).concat(a):a).toString(l)},parse:function(e){var a,t=l.parse(e),r=t.words;return 1398893684==r[0]&&1701076831==r[1]&&(a=i.create(r.slice(2,4)),r.splice(0,4),t.sigBytes-=16),g.create({ciphertext:t,salt:a})}},b=r.SerializableCipher=n.extend({cfg:n.extend({format:f}),encrypt:function(e,a,t,r){r=this.cfg.extend(r);var n=e.createEncryptor(t,r),i=n.finalize(a),s=n.cfg;return g.create({ciphertext:i,key:t,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,a,t,r){return r=this.cfg.extend(r),a=this._parse(a,r.format),e.createDecryptor(t,r).finalize(a.ciphertext)},_parse:function(e,a){return"string"==typeof e?a.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,a,t,r,n){if(r||(r=i.random(8)),n)s=c.create({keySize:a+t,hasher:n}).compute(e,r);else var s=c.create({keySize:a+t}).compute(e,r);var o=i.create(s.words.slice(a),4*t);return s.sigBytes=4*a,g.create({key:s,iv:o,salt:r})}},v=r.PasswordBasedCipher=b.extend({cfg:b.cfg.extend({kdf:y}),encrypt:function(e,a,t,r){var n=(r=this.cfg.extend(r)).kdf.execute(t,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=n.iv;var i=b.encrypt.call(this,e,a,n.key,r);return i.mixIn(n),i},decrypt:function(e,a,t,r){r=this.cfg.extend(r),a=this._parse(a,r.format);var n=r.kdf.execute(t,e.keySize,e.ivSize,a.salt,r.hasher);return r.iv=n.iv,b.decrypt.call(this,e,a,n.key,r)}})}()))}()},,function(e,a,t){"use strict";t.d(a,"a",function(){return n}),t.d(a,"b",function(){return s}),t.d(a,"c",function(){return i});var r="undefined"!==typeof document;function n(e,a,t){var r="";return t.split(" ").forEach(function(t){void 0!==e[t]?a.push(e[t]+";"):t&&(r+=t+" ")}),r}var i=function(e,a,t){var n=e.key+"-"+a.name;(!1===t||!1===r&&void 0!==e.compat)&&void 0===e.registered[n]&&(e.registered[n]=a.styles)},s=function(e,a,t){i(e,a,t);var n=e.key+"-"+a.name;if(void 0===e.inserted[a.name]){var s="",o=a;do{var l=e.insert(a===o?"."+n:"",o,e.sheet,!0);r||void 0===l||(s+=l),o=o.next}while(void 0!==o);if(!r&&0!==s.length)return s}}},function(e,a,t){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function n(e){var a=function(e,a){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,a||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===a?String:Number)(e)}(e,"string");return"symbol"==r(a)?a:a+""}function i(e,a,t){return(a=n(a))in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function s(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),t.push.apply(t,r)}return t}function o(e){for(var a=1;a=4;++r,n-=4)a=1540483477*(65535&(a=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(a>>>16)<<16),t=1540483477*(65535&(a^=a>>>24))+(59797*(a>>>16)<<16)^1540483477*(65535&t)+(59797*(t>>>16)<<16);switch(n){case 3:t^=(255&e.charCodeAt(r+2))<<16;case 2:t^=(255&e.charCodeAt(r+1))<<8;case 1:t=1540483477*(65535&(t^=255&e.charCodeAt(r)))+(59797*(t>>>16)<<16)}return(((t=1540483477*(65535&(t^=t>>>13))+(59797*(t>>>16)<<16))^t>>>15)>>>0).toString(36)}(n)+l;return{name:c,styles:n,next:p}}},function(e,a){var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},,function(e,a,t){"use strict";var r=t(42);a.a=function(e,a){return a?Object(r.a)(e,a,{clone:!1}):e}},,function(e,a,t){"use strict";t.r(a);var r=t(42);t.d(a,"default",function(){return r.a}),t.d(a,"isPlainObject",function(){return r.b})},function(e,a,t){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(253)},function(e,a,t){"use strict";t.d(a,"a",function(){return o}),t.d(a,"b",function(){return l});var r=t(1),n="undefined"!==typeof document,i=function(e){return e()},s=!!r.useInsertionEffect&&r.useInsertionEffect,o=n&&s||i,l=s||r.useLayoutEffect},function(e,a,t){!function(){var a;e.exports=(a=t(5),t(120),t(97),function(){var e=a,t=e.lib,r=t.Base,n=t.WordArray,i=e.algo,s=i.MD5,o=i.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:s,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,a){for(var t,r=this.cfg,i=r.hasher.create(),s=n.create(),o=s.words,l=r.keySize,c=r.iterations;o.length(a.filterProps.forEach(t=>{e[t]=a}),e),{}),n=e=>Object.keys(e).reduce((a,t)=>r[t]?Object(i.a)(a,r[t](e)):a,{});return n.propTypes={},n.filterProps=a.reduce((e,a)=>e.concat(a.filterProps),[]),n},o=t(13);function l(e){return"number"!==typeof e?e:"".concat(e,"px solid")}function c(e,a){return Object(n.a)({prop:e,themeKey:"borders",transform:a})}const u=c("border",l),d=c("borderTop",l),h=c("borderRight",l),m=c("borderBottom",l),p=c("borderLeft",l),g=c("borderColor"),f=c("borderTopColor"),b=c("borderRightColor"),y=c("borderBottomColor"),v=c("borderLeftColor"),k=c("outline",l),w=c("outlineColor"),x=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const a=Object(r.b)(e.theme,"shape.borderRadius",4,"borderRadius"),t=e=>({borderRadius:Object(r.c)(a,e)});return Object(o.b)(e,e.borderRadius,t)}return null};x.propTypes={},x.filterProps=["borderRadius"];s(u,d,h,m,p,g,f,b,y,v,x,k,w);const z=e=>{if(void 0!==e.gap&&null!==e.gap){const a=Object(r.b)(e.theme,"spacing",8,"gap"),t=e=>({gap:Object(r.c)(a,e)});return Object(o.b)(e,e.gap,t)}return null};z.propTypes={},z.filterProps=["gap"];const j=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const a=Object(r.b)(e.theme,"spacing",8,"columnGap"),t=e=>({columnGap:Object(r.c)(a,e)});return Object(o.b)(e,e.columnGap,t)}return null};j.propTypes={},j.filterProps=["columnGap"];const S=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const a=Object(r.b)(e.theme,"spacing",8,"rowGap"),t=e=>({rowGap:Object(r.c)(a,e)});return Object(o.b)(e,e.rowGap,t)}return null};S.propTypes={},S.filterProps=["rowGap"];s(z,j,S,Object(n.a)({prop:"gridColumn"}),Object(n.a)({prop:"gridRow"}),Object(n.a)({prop:"gridAutoFlow"}),Object(n.a)({prop:"gridAutoColumns"}),Object(n.a)({prop:"gridAutoRows"}),Object(n.a)({prop:"gridTemplateColumns"}),Object(n.a)({prop:"gridTemplateRows"}),Object(n.a)({prop:"gridTemplateAreas"}),Object(n.a)({prop:"gridArea"}));function _(e,a){return"grey"===a?a:e}s(Object(n.a)({prop:"color",themeKey:"palette",transform:_}),Object(n.a)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:_}),Object(n.a)({prop:"backgroundColor",themeKey:"palette",transform:_}));function E(e){return e<=1&&0!==e?"".concat(100*e,"%"):e}const P=Object(n.a)({prop:"width",transform:E}),q=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const a=a=>{var t,r;const n=(null==(t=e.theme)||null==(t=t.breakpoints)||null==(t=t.values)?void 0:t[a])||o.d[a];return n?"px"!==(null==(r=e.theme)||null==(r=r.breakpoints)?void 0:r.unit)?{maxWidth:"".concat(n).concat(e.theme.breakpoints.unit)}:{maxWidth:n}:{maxWidth:E(a)}};return Object(o.b)(e,e.maxWidth,a)}return null};q.filterProps=["maxWidth"];const C=Object(n.a)({prop:"minWidth",transform:E}),A=Object(n.a)({prop:"height",transform:E}),T=Object(n.a)({prop:"maxHeight",transform:E}),M=Object(n.a)({prop:"minHeight",transform:E});Object(n.a)({prop:"size",cssProperty:"width",transform:E}),Object(n.a)({prop:"size",cssProperty:"height",transform:E});s(P,q,C,A,T,M,Object(n.a)({prop:"boxSizing"}));const O={border:{themeKey:"borders",transform:l},borderTop:{themeKey:"borders",transform:l},borderRight:{themeKey:"borders",transform:l},borderBottom:{themeKey:"borders",transform:l},borderLeft:{themeKey:"borders",transform:l},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:l},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:x},color:{themeKey:"palette",transform:_},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:_},backgroundColor:{themeKey:"palette",transform:_},p:{style:r.e},pt:{style:r.e},pr:{style:r.e},pb:{style:r.e},pl:{style:r.e},px:{style:r.e},py:{style:r.e},padding:{style:r.e},paddingTop:{style:r.e},paddingRight:{style:r.e},paddingBottom:{style:r.e},paddingLeft:{style:r.e},paddingX:{style:r.e},paddingY:{style:r.e},paddingInline:{style:r.e},paddingInlineStart:{style:r.e},paddingInlineEnd:{style:r.e},paddingBlock:{style:r.e},paddingBlockStart:{style:r.e},paddingBlockEnd:{style:r.e},m:{style:r.d},mt:{style:r.d},mr:{style:r.d},mb:{style:r.d},ml:{style:r.d},mx:{style:r.d},my:{style:r.d},margin:{style:r.d},marginTop:{style:r.d},marginRight:{style:r.d},marginBottom:{style:r.d},marginLeft:{style:r.d},marginX:{style:r.d},marginY:{style:r.d},marginInline:{style:r.d},marginInlineStart:{style:r.d},marginInlineEnd:{style:r.d},marginBlock:{style:r.d},marginBlockStart:{style:r.d},marginBlockEnd:{style:r.d},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:z},rowGap:{style:S},columnGap:{style:j},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:E},maxWidth:{style:q},minWidth:{transform:E},height:{transform:E},maxHeight:{transform:E},minHeight:{transform:E},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}};a.a=O},function(e,a,t){const r=t(246);e.exports=r("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},,,,function(e,a,t){!function(){var a;e.exports=(a=t(5),function(){var e=a,t=e.lib.WordArray;function r(e,a,r){for(var n=[],i=0,s=0;s>>6-s%4*2;n[i>>>2]|=o<<24-i%4*8,i++}return t.create(n,i)}e.enc.Base64={stringify:function(e){var a=e.words,t=e.sigBytes,r=this._map;e.clamp();for(var n=[],i=0;i>>2]>>>24-i%4*8&255)<<16|(a[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|a[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o>>6*(3-o)&63));var l=r.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e){var a=e.length,t=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var i=0;i>>24)|4278255360&(n<<24|n>>>8)}var i=this._hash.words,s=e[a+0],l=e[a+1],m=e[a+2],p=e[a+3],g=e[a+4],f=e[a+5],b=e[a+6],y=e[a+7],v=e[a+8],k=e[a+9],w=e[a+10],x=e[a+11],z=e[a+12],j=e[a+13],S=e[a+14],_=e[a+15],E=i[0],P=i[1],q=i[2],C=i[3];E=c(E,P,q,C,s,7,o[0]),C=c(C,E,P,q,l,12,o[1]),q=c(q,C,E,P,m,17,o[2]),P=c(P,q,C,E,p,22,o[3]),E=c(E,P,q,C,g,7,o[4]),C=c(C,E,P,q,f,12,o[5]),q=c(q,C,E,P,b,17,o[6]),P=c(P,q,C,E,y,22,o[7]),E=c(E,P,q,C,v,7,o[8]),C=c(C,E,P,q,k,12,o[9]),q=c(q,C,E,P,w,17,o[10]),P=c(P,q,C,E,x,22,o[11]),E=c(E,P,q,C,z,7,o[12]),C=c(C,E,P,q,j,12,o[13]),q=c(q,C,E,P,S,17,o[14]),E=u(E,P=c(P,q,C,E,_,22,o[15]),q,C,l,5,o[16]),C=u(C,E,P,q,b,9,o[17]),q=u(q,C,E,P,x,14,o[18]),P=u(P,q,C,E,s,20,o[19]),E=u(E,P,q,C,f,5,o[20]),C=u(C,E,P,q,w,9,o[21]),q=u(q,C,E,P,_,14,o[22]),P=u(P,q,C,E,g,20,o[23]),E=u(E,P,q,C,k,5,o[24]),C=u(C,E,P,q,S,9,o[25]),q=u(q,C,E,P,p,14,o[26]),P=u(P,q,C,E,v,20,o[27]),E=u(E,P,q,C,j,5,o[28]),C=u(C,E,P,q,m,9,o[29]),q=u(q,C,E,P,y,14,o[30]),E=d(E,P=u(P,q,C,E,z,20,o[31]),q,C,f,4,o[32]),C=d(C,E,P,q,v,11,o[33]),q=d(q,C,E,P,x,16,o[34]),P=d(P,q,C,E,S,23,o[35]),E=d(E,P,q,C,l,4,o[36]),C=d(C,E,P,q,g,11,o[37]),q=d(q,C,E,P,y,16,o[38]),P=d(P,q,C,E,w,23,o[39]),E=d(E,P,q,C,j,4,o[40]),C=d(C,E,P,q,s,11,o[41]),q=d(q,C,E,P,p,16,o[42]),P=d(P,q,C,E,b,23,o[43]),E=d(E,P,q,C,k,4,o[44]),C=d(C,E,P,q,z,11,o[45]),q=d(q,C,E,P,_,16,o[46]),E=h(E,P=d(P,q,C,E,m,23,o[47]),q,C,s,6,o[48]),C=h(C,E,P,q,y,10,o[49]),q=h(q,C,E,P,S,15,o[50]),P=h(P,q,C,E,f,21,o[51]),E=h(E,P,q,C,z,6,o[52]),C=h(C,E,P,q,p,10,o[53]),q=h(q,C,E,P,w,15,o[54]),P=h(P,q,C,E,l,21,o[55]),E=h(E,P,q,C,v,6,o[56]),C=h(C,E,P,q,_,10,o[57]),q=h(q,C,E,P,b,15,o[58]),P=h(P,q,C,E,j,21,o[59]),E=h(E,P,q,C,g,6,o[60]),C=h(C,E,P,q,x,10,o[61]),q=h(q,C,E,P,m,15,o[62]),P=h(P,q,C,E,k,21,o[63]),i[0]=i[0]+E|0,i[1]=i[1]+P|0,i[2]=i[2]+q|0,i[3]=i[3]+C|0},_doFinalize:function(){var a=this._data,t=a.words,r=8*this._nDataBytes,n=8*a.sigBytes;t[n>>>5]|=128<<24-n%32;var i=e.floor(r/4294967296),s=r;t[15+(n+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),a.sigBytes=4*(t.length+1),this._process();for(var o=this._hash,l=o.words,c=0;c<4;c++){var u=l[c];l[c]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return o},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});function c(e,a,t,r,n,i,s){var o=e+(a&t|~a&r)+n+s;return(o<>>32-i)+a}function u(e,a,t,r,n,i,s){var o=e+(a&r|t&~r)+n+s;return(o<>>32-i)+a}function d(e,a,t,r,n,i,s){var o=e+(a^t^r)+n+s;return(o<>>32-i)+a}function h(e,a,t,r,n,i,s){var o=e+(t^(a|~r))+n+s;return(o<>>32-i)+a}t.MD5=i._createHelper(l),t.HmacMD5=i._createHmacHelper(l)}(Math),a.MD5)}()},function(e,a,t){var r=t(29),n=t(21),i=t(122),s=t(48),o=t(41),l="prototype",c=function(e,a,t){var u,d,h,m=e&c.F,p=e&c.G,g=e&c.S,f=e&c.P,b=e&c.B,y=e&c.W,v=p?n:n[a]||(n[a]={}),k=v[l],w=p?r:g?r[a]:(r[a]||{})[l];for(u in p&&(t=a),t)(d=!m&&w&&void 0!==w[u])&&o(v,u)||(h=d?w[u]:t[u],v[u]=p&&"function"!=typeof w[u]?t[u]:b&&d?i(h,r):y&&w[u]==h?function(e){var a=function(a,t,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(a);case 2:return new e(a,t)}return new e(a,t,r)}return e.apply(this,arguments)};return a[l]=e[l],a}(h):f&&"function"==typeof h?i(Function.call,h):h,f&&((v.virtual||(v.virtual={}))[u]=h,e&c.R&&k&&!k[u]&&s(k,u,h)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,a,t){var r=t(60),n=t(123),i=t(98),s=Object.defineProperty;a.f=t(30)?Object.defineProperty:function(e,a,t){if(r(e),a=i(a,!0),r(t),n)try{return s(e,a,t)}catch(o){}if("get"in t||"set"in t)throw TypeError("Accessors not supported!");return"value"in t&&(e[a]=t.value),e}},function(e,a){var t={}.hasOwnProperty;e.exports=function(e,a){return t.call(e,a)}},function(e,a,t){"use strict";t.d(a,"b",function(){return i}),t.d(a,"a",function(){return o});var r=t(2),n=t(1);function i(e){if("object"!==typeof e||null===e)return!1;const a=Object.getPrototypeOf(e);return(null===a||a===Object.prototype||null===Object.getPrototypeOf(a))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function s(e){if(n.isValidElement(e)||!i(e))return e;const a={};return Object.keys(e).forEach(t=>{a[t]=s(e[t])}),a}function o(e,a){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{clone:!0};const l=t.clone?Object(r.a)({},e):e;return i(e)&&i(a)&&Object.keys(a).forEach(r=>{n.isValidElement(a[r])?l[r]=a[r]:i(a[r])&&Object.prototype.hasOwnProperty.call(e,r)&&i(e[r])?l[r]=o(e[r],a[r],t):t.clone?l[r]=i(a[r])?s(a[r]):a[r]:l[r]=a[r]}),l}},function(e,a,t){"use strict";var r=t(259);a.a=r.a},function(e,a,t){"use strict";var r=t(262);a.a=r.a},function(e,a,t){"use strict";var r=t(19);Object.defineProperty(a,"__esModule",{value:!0}),a.alpha=m,a.blend=function(e,a,t){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const n=(e,a)=>Math.round((e**(1/r)*(1-t)+a**(1/r)*t)**r),i=l(e),s=l(a);return u({type:"rgb",values:[n(i.values[0],s.values[0]),n(i.values[1],s.values[1]),n(i.values[2],s.values[2])]})},a.colorChannel=void 0,a.darken=p,a.decomposeColor=l,a.emphasize=f,a.getContrastRatio=function(e,a){const t=h(e),r=h(a);return(Math.max(t,r)+.05)/(Math.min(t,r)+.05)},a.getLuminance=h,a.hexToRgb=o,a.hslToRgb=d,a.lighten=g,a.private_safeAlpha=function(e,a,t){try{return m(e,a)}catch(r){return e}},a.private_safeColorChannel=void 0,a.private_safeDarken=function(e,a,t){try{return p(e,a)}catch(r){return e}},a.private_safeEmphasize=function(e,a,t){try{return f(e,a)}catch(r){return e}},a.private_safeLighten=function(e,a,t){try{return g(e,a)}catch(r){return e}},a.recomposeColor=u,a.rgbToHex=function(e){if(0===e.indexOf("#"))return e;const{values:a}=l(e);return"#".concat(a.map((e,a)=>function(e){const a=e.toString(16);return 1===a.length?"0".concat(a):a}(3===a?Math.round(255*e):e)).join(""))};var n=r(t(61)),i=r(t(255));function s(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return(0,i.default)(e,a,t)}function o(e){e=e.slice(1);const a=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g");let t=e.match(a);return t&&1===t[0].length&&(t=t.map(e=>e+e)),t?"rgb".concat(4===t.length?"a":"","(").concat(t.map((e,a)=>a<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", "),")"):""}function l(e){if(e.type)return e;if("#"===e.charAt(0))return l(o(e));const a=e.indexOf("("),t=e.substring(0,a);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(t))throw new Error((0,n.default)(9,e));let r,i=e.substring(a+1,e.length-1);if("color"===t){if(i=i.split(" "),r=i.shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,n.default)(10,r))}else i=i.split(",");return i=i.map(e=>parseFloat(e)),{type:t,values:i,colorSpace:r}}const c=e=>{const a=l(e);return a.values.slice(0,3).map((e,t)=>-1!==a.type.indexOf("hsl")&&0!==t?"".concat(e,"%"):e).join(" ")};a.colorChannel=c;function u(e){const{type:a,colorSpace:t}=e;let{values:r}=e;return-1!==a.indexOf("rgb")?r=r.map((e,a)=>a<3?parseInt(e,10):e):-1!==a.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==a.indexOf("color")?"".concat(t," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(a,"(").concat(r,")")}function d(e){e=l(e);const{values:a}=e,t=a[0],r=a[1]/100,n=a[2]/100,i=r*Math.min(n,1-n),s=function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+t/30)%12;return n-i*Math.max(Math.min(a-3,9-a,1),-1)};let o="rgb";const c=[Math.round(255*s(0)),Math.round(255*s(8)),Math.round(255*s(4))];return"hsla"===e.type&&(o+="a",c.push(a[3])),u({type:o,values:c})}function h(e){let a="hsl"===(e=l(e)).type||"hsla"===e.type?l(d(e)).values:e.values;return a=a.map(a=>("color"!==e.type&&(a/=255),a<=.03928?a/12.92:((a+.055)/1.055)**2.4)),Number((.2126*a[0]+.7152*a[1]+.0722*a[2]).toFixed(3))}function m(e,a){return e=l(e),a=s(a),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(a):e.values[3]=a,u(e)}function p(e,a){if(e=l(e),a=s(a),-1!==e.type.indexOf("hsl"))e.values[2]*=1-a;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let t=0;t<3;t+=1)e.values[t]*=1-a;return u(e)}function g(e,a){if(e=l(e),a=s(a),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*a;else if(-1!==e.type.indexOf("rgb"))for(let t=0;t<3;t+=1)e.values[t]+=(255-e.values[t])*a;else if(-1!==e.type.indexOf("color"))for(let t=0;t<3;t+=1)e.values[t]+=(1-e.values[t])*a;return u(e)}function f(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return h(e)>.5?p(e,a):g(e,a)}a.private_safeColorChannel=(e,a)=>{try{return c(e)}catch(t){return e}}},,,function(e,a,t){var r=t(40),n=t(67);e.exports=t(30)?function(e,a,t){return r.f(e,a,n(1,t))}:function(e,a,t){return e[a]=t,e}},function(e,a){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},function(e,a){e.exports=function(e){try{return!!e()}catch(a){return!0}}},function(e,a,t){var r=t(126),n=t(99);e.exports=function(e){return r(n(e))}},function(e,a,t){var r=t(102)("wks"),n=t(70),i=t(29).Symbol,s="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=s&&i[e]||(s?i:n)("Symbol."+e))}).store=r},function(e,a,t){"use strict";t.d(a,"b",function(){return l});var r=t(62),n=t(23),i=t(7),s=t(13),o=t(32);function l(){function e(e,a,t,n){const o={[e]:a,theme:t},l=n[e];if(!l)return{[e]:a};const{cssProperty:c=e,themeKey:u,transform:d,style:h}=l;if(null==a)return null;if("typography"===u&&"inherit"===a)return{[e]:a};const m=Object(i.b)(t,u)||{};if(h)return h(o);return Object(s.b)(o,a,a=>{let t=Object(i.c)(m,d,a);return a===t&&"string"===typeof a&&(t=Object(i.c)(m,d,"".concat(e).concat("default"===a?"":Object(r.a)(a)),a)),!1===c?t:{[c]:t}})}return function a(t){var r;const{sx:i,theme:l={},nested:c}=t||{};if(!i)return null;const u=null!=(r=l.unstable_sxConfig)?r:o.a;function d(t){let r=t;if("function"===typeof t)r=t(l);else if("object"!==typeof t)return t;if(!r)return null;const i=Object(s.a)(l.breakpoints),o=Object.keys(i);let d=i;return Object.keys(r).forEach(t=>{const i=(o=r[t],c=l,"function"===typeof o?o(c):o);var o,c;if(null!==i&&void 0!==i)if("object"===typeof i)if(u[t])d=Object(n.a)(d,e(t,i,l,u));else{const e=Object(s.b)({theme:l},i,e=>({[t]:e}));!function(){for(var e=arguments.length,a=new Array(e),t=0;te.concat(Object.keys(a)),[]),n=new Set(r);return a.every(e=>n.size===Object.keys(e).length)}(e,i)?d=Object(n.a)(d,e):d[t]=a({sx:i,theme:l,nested:!0})}else d=Object(n.a)(d,e(t,i,l,u))}),!c&&l.modularCssLayers?{"@layer sx":Object(s.c)(o,d)}:Object(s.c)(o,d)}return Array.isArray(i)?i.map(d):d(i)}}const c=l();c.filterProps=["sx"],a.a=c},function(e,a,t){"use strict";function r(e){var a=Object.create(null);return function(t){return void 0===a[t]&&(a[t]=e(t)),a[t]}}t.d(a,"a",function(){return r})},function(e,a,t){"use strict";t.d(a,"a",function(){return r});var r=function(e){var a=new WeakMap;return function(t){if(a.has(t))return a.get(t);var r=e(t);return a.set(t,r),r}}},function(e,a,t){"use strict";var r=t(1);const n=r.createContext(void 0);a.a=n},function(e,a,t){"use strict";t.d(a,"a",function(){return me});var r=function(){function e(e){var a=this;this._insertTag=function(e){var t;t=0===a.tags.length?a.insertionPoint?a.insertionPoint.nextSibling:a.prepend?a.container.firstChild:a.before:a.tags[a.tags.length-1].nextSibling,a.container.insertBefore(e,t),a.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var a=e.prototype;return a.hydrate=function(e){e.forEach(this._insertTag)},a.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(function(e){var a=document.createElement("style");return a.setAttribute("data-emotion",e.key),void 0!==e.nonce&&a.setAttribute("nonce",e.nonce),a.appendChild(document.createTextNode("")),a.setAttribute("data-s",""),a}(this));var a=this.tags[this.tags.length-1];if(this.isSpeedy){var t=function(e){if(e.sheet)return e.sheet;for(var a=0;a0?v(C,--P):0,_--,10===q&&(_=1,S--),q}function O(){return q=P2||R(q)>3?"":" "}function H(e,a){for(;--a&&O()&&!(q<48||q>102||q>57&&q<65||q>70&&q<97););return I(e,F()+(a<6&&32==D()&&32==O()))}function G(e){for(;O();)switch(q){case e:return P;case 34:case 39:34!==e&&39!==e&&G(q);break;case 40:41===e&&G(e);break;case 92:O()}return P}function U(e,a){for(;O()&&e+q!==57&&(e+q!==84||47!==D()););return"/*"+I(a,P-1)+"*"+h(47===e?e:O())}function W(e){for(;!R(D());)O();return I(e,P)}function $(e){return L(Y("",null,null,null,[""],e=B(e),0,[0],e))}function Y(e,a,t,r,n,i,s,o,l){for(var c=0,u=0,d=s,m=0,p=0,g=0,f=1,k=1,x=1,j=0,S="",_=n,E=i,P=r,q=S;k;)switch(g=j,j=O()){case 40:if(108!=g&&58==v(q,d-1)){-1!=y(q+=b(N(j),"&","&\f"),"&\f")&&(x=-1);break}case 34:case 39:case 91:q+=N(j);break;case 9:case 10:case 13:case 32:q+=V(g);break;case 92:q+=H(F()-1,7);continue;case 47:switch(D()){case 42:case 47:z(X(U(O(),F()),a,t),l);break;default:q+="/"}break;case 123*f:o[c++]=w(q)*x;case 125*f:case 59:case 0:switch(j){case 0:case 125:k=0;case 59+u:-1==x&&(q=b(q,/\f/g,"")),p>0&&w(q)-d&&z(p>32?J(q+";",r,t,d-1):J(b(q," ","")+";",r,t,d-2),l);break;case 59:q+=";";default:if(z(P=K(q,a,t,c,u,n,o,S,_=[],E=[],d),i),123===j)if(0===u)Y(q,a,P,P,_,i,d,o,E);else switch(99===m&&110===v(q,3)?100:m){case 100:case 108:case 109:case 115:Y(e,P,P,r&&z(K(e,P,P,0,0,n,o,S,n,_=[],d),E),n,E,d,o,r?_:E);break;default:Y(q,P,P,P,[""],E,0,o,E)}}c=u=p=0,f=x=1,S=q="",d=s;break;case 58:d=1+w(q),p=g;default:if(f<1)if(123==j)--f;else if(125==j&&0==f++&&125==M())continue;switch(q+=h(j),j*f){case 38:x=u>0?1:(q+="\f",-1);break;case 44:o[c++]=(w(q)-1)*x,x=1;break;case 64:45===D()&&(q+=N(O())),m=D(),u=d=w(S=q+=W(F())),j++;break;case 45:45===g&&2==w(q)&&(f=0)}}return i}function K(e,a,t,r,n,i,s,o,c,u,h){for(var m=n-1,p=0===n?i:[""],f=x(p),y=0,v=0,w=0;y0?p[z]+" "+j:b(j,/&\f/g,p[z])))&&(c[w++]=S);return A(e,a,t,0===n?l:o,c,u,h)}function X(e,a,t){return A(e,a,t,o,h(q),k(e,2,-2),0)}function J(e,a,t,r){return A(e,a,t,c,k(e,0,r),k(e,r+1,-1),r)}function Q(e,a){for(var t="",r=x(e),n=0;n6)switch(v(e,a+1)){case 109:if(45!==v(e,a+4))break;case 102:return b(e,/(.+:)(.+)-([^]+)/,"$1"+s+"$2-$3$1"+i+(108==v(e,a+3)?"$3":"$2-$3"))+e;case 115:return~y(e,"stretch")?ue(b(e,"stretch","fill-available"),a)+e:e}break;case 4949:if(115!==v(e,a+1))break;case 6444:switch(v(e,w(e)-3-(~y(e,"!important")&&10))){case 107:return b(e,":",":"+s)+e;case 101:return b(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+s+(45===v(e,14)?"inline-":"")+"box$3$1"+s+"$2$3$1"+n+"$2box$3")+e}break;case 5936:switch(v(e,a+11)){case 114:return s+e+n+b(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return s+e+n+b(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return s+e+n+b(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return s+e+n+e+e}return e}var de=ne?void 0:Object(te.a)(function(){return Object(re.a)(function(){return{}})}),he=[function(e,a,t,r){if(e.length>-1&&!e.return)switch(e.type){case c:e.return=ue(e.value,e.length);break;case u:return Q([T(e,{value:b(e.value,"@","@"+s)})],r);case l:if(e.length)return j(e.props,function(a){switch(f(a,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Q([T(e,{props:[b(a,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return Q([T(e,{props:[b(a,/:(plac\w+)/,":"+s+"input-$1")]}),T(e,{props:[b(a,/:(plac\w+)/,":-moz-$1")]}),T(e,{props:[b(a,/:(plac\w+)/,n+"input-$1")]})],r)}return""})}}],me=function(e){var a=e.key;if(ne&&"css"===a){var t=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(t,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var n,i,s=e.stylisPlugins||he,o={},l=[];ne&&(n=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+a+' "]'),function(e){for(var a=e.getAttribute("data-emotion").split(" "),t=1;t{};let o={},l={},c=null,u={mark:s,measure:s};try{"undefined"!==typeof window&&(o=window),"undefined"!==typeof document&&(l=document),"undefined"!==typeof MutationObserver&&(c=MutationObserver),"undefined"!==typeof performance&&(u=performance)}catch(yt){}const{userAgent:d=""}=o.navigator||{},h=o,m=l,p=c,g=u,f=(h.document,!!m.documentElement&&!!m.head&&"function"===typeof m.addEventListener&&"function"===typeof m.createElement),b=~d.indexOf("MSIE")||~d.indexOf("Trident/");var y={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fab:"brands","fa-brands":"brands"},duotone:{fa:"solid",fad:"solid","fa-solid":"solid","fa-duotone":"solid",fadr:"regular","fa-regular":"regular",fadl:"light","fa-light":"light",fadt:"thin","fa-thin":"thin"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid",fasdr:"regular","fa-regular":"regular",fasdl:"light","fa-light":"light",fasdt:"thin","fa-thin":"thin"}},v=["fa-classic","fa-duotone","fa-sharp","fa-sharp-duotone"],k="classic",w="duotone",x=[k,w,"sharp","sharp-duotone"],z=new Map([["classic",{defaultShortPrefixId:"fas",defaultStyleId:"solid",styleIds:["solid","regular","light","thin","brands"],futureStyleIds:[],defaultFontWeight:900}],["sharp",{defaultShortPrefixId:"fass",defaultStyleId:"solid",styleIds:["solid","regular","light","thin"],futureStyleIds:[],defaultFontWeight:900}],["duotone",{defaultShortPrefixId:"fad",defaultStyleId:"solid",styleIds:["solid","regular","light","thin"],futureStyleIds:[],defaultFontWeight:900}],["sharp-duotone",{defaultShortPrefixId:"fasds",defaultStyleId:"solid",styleIds:["solid","regular","light","thin"],futureStyleIds:[],defaultFontWeight:900}]]),j=["fak","fa-kit","fakd","fa-kit-duotone"],S={fak:"kit","fa-kit":"kit"},_={fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"},E=["fak","fakd"],P={kit:"fak"},q={"kit-duotone":"fakd"},C={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},A=["fak","fa-kit","fakd","fa-kit-duotone"],T={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},duotone:{fadr:"fa-regular",fadl:"fa-light",fadt:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid",fasdr:"fa-regular",fasdl:"fa-light",fasdt:"fa-thin"}},M=["fa","fas","far","fal","fat","fad","fadr","fadl","fadt","fab","fass","fasr","fasl","fast","fasds","fasdr","fasdl","fasdt","fa-classic","fa-duotone","fa-sharp","fa-sharp-duotone","fa-solid","fa-regular","fa-light","fa-thin","fa-duotone","fa-brands"],O=[1,2,3,4,5,6,7,8,9,10],D=O.concat([11,12,13,14,15,16,17,18,19,20]),F=[...Object.keys({classic:["fas","far","fal","fat","fad"],duotone:["fadr","fadl","fadt"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds","fasdr","fasdl","fasdt"]}),"solid","regular","light","thin","duotone","brands","2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",C.GROUP,C.SWAP_OPACITY,C.PRIMARY,C.SECONDARY].concat(O.map(e=>"".concat(e,"x"))).concat(D.map(e=>"w-".concat(e)));const I="___FONT_AWESOME___",R=16,B="svg-inline--fa",L="data-fa-i2svg",N="data-fa-pseudo-element",V="data-prefix",H="data-icon",G="fontawesome-i2svg",U=["HTML","HEAD","STYLE","SCRIPT"],W=(()=>{try{return!0}catch(e){return!1}})();function $(e){return new Proxy(e,{get:(e,a)=>a in e?e[a]:e[k]})}const Y=i({},y);Y[k]=i(i(i(i({},{"fa-duotone":"duotone"}),y[k]),S),_);const K=$(Y),X=i({},{classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",brands:"fab"},duotone:{solid:"fad",regular:"fadr",light:"fadl",thin:"fadt"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds",regular:"fasdr",light:"fasdl",thin:"fasdt"}});X[k]=i(i(i(i({},{duotone:"fad"}),X[k]),P),q);const J=$(X),Q=i({},T);Q[k]=i(i({},Q[k]),{fak:"fa-kit"});const Z=$(Q),ee=i({},{classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},duotone:{"fa-regular":"fadr","fa-light":"fadl","fa-thin":"fadt"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds","fa-regular":"fasdr","fa-light":"fasdl","fa-thin":"fasdt"}});ee[k]=i(i({},ee[k]),{"fa-kit":"fak"});$(ee);const ae=/fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\-\ ]/,te="fa-layers-text",re=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,ne=($(i({},{classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},duotone:{900:"fad",400:"fadr",300:"fadl",100:"fadt"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds",400:"fasdr",300:"fasdl",100:"fasdt"}})),["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"]),ie={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},se=["kit",...F],oe=h.FontAwesomeConfig||{};if(m&&"function"===typeof m.querySelector){[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(e=>{let[a,t]=e;const r=function(e){return""===e||"false"!==e&&("true"===e||e)}(function(e){var a=m.querySelector("script["+e+"]");if(a)return a.getAttribute(e)}(a));void 0!==r&&null!==r&&(oe[t]=r)})}const le={styleDefault:"solid",familyDefault:k,cssPrefix:"fa",replacementClass:B,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};oe.familyPrefix&&(oe.cssPrefix=oe.familyPrefix);const ce=i(i({},le),oe);ce.autoReplaceSvg||(ce.observeMutations=!1);const ue={};Object.keys(le).forEach(e=>{Object.defineProperty(ue,e,{enumerable:!0,set:function(a){ce[e]=a,de.forEach(e=>e(ue))},get:function(){return ce[e]}})}),Object.defineProperty(ue,"familyPrefix",{enumerable:!0,set:function(e){ce.cssPrefix=e,de.forEach(e=>e(ue))},get:function(){return ce.cssPrefix}}),h.FontAwesomeConfig=ue;const de=[];const he=R,me={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function pe(){let e=12,a="";for(;e-- >0;)a+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return a}function ge(e){const a=[];for(let t=(e||[]).length>>>0;t--;)a[t]=e[t];return a}function fe(e){return e.classList?ge(e.classList):(e.getAttribute("class")||"").split(" ").filter(e=>e)}function be(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function ye(e){return Object.keys(e||{}).reduce((a,t)=>a+"".concat(t,": ").concat(e[t].trim(),";"),"")}function ve(e){return e.size!==me.size||e.x!==me.x||e.y!==me.y||e.rotate!==me.rotate||e.flipX||e.flipY}function ke(){const e="fa",a=B,t=ue.cssPrefix,r=ue.replacementClass;let n=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-duotone-regular: normal 400 1em/1 "Font Awesome 6 Duotone";\n --fa-font-duotone-light: normal 300 1em/1 "Font Awesome 6 Duotone";\n --fa-font-duotone-thin: normal 100 1em/1 "Font Awesome 6 Duotone";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone";\n --fa-font-sharp-duotone-regular: normal 400 1em/1 "Font Awesome 6 Sharp Duotone";\n --fa-font-sharp-duotone-light: normal 300 1em/1 "Font Awesome 6 Sharp Duotone";\n --fa-font-sharp-duotone-thin: normal 100 1em/1 "Font Awesome 6 Sharp Duotone";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-counter-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(-1 * var(--fa-li-width, 2em));\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n animation-name: fa-beat;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n animation-name: fa-bounce;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n animation-name: fa-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n animation-name: fa-beat-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n animation-name: fa-flip;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n animation-name: fa-shake;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n animation-name: fa-spin;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 2s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n animation-name: fa-spin;\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n transform: scale(1);\n }\n 45% {\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-bounce {\n 0% {\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-flip {\n 50% {\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-shake {\n 0% {\n transform: rotate(-15deg);\n }\n 4% {\n transform: rotate(15deg);\n }\n 8%, 24% {\n transform: rotate(-18deg);\n }\n 12%, 28% {\n transform: rotate(18deg);\n }\n 16% {\n transform: rotate(-22deg);\n }\n 20% {\n transform: rotate(22deg);\n }\n 32% {\n transform: rotate(-12deg);\n }\n 36% {\n transform: rotate(12deg);\n }\n 40%, 100% {\n transform: rotate(0deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n transform: rotate(var(--fa-rotate-angle, 0));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}';if(t!==e||r!==a){const i=new RegExp("\\.".concat(e,"\\-"),"g"),s=new RegExp("\\--".concat(e,"\\-"),"g"),o=new RegExp("\\.".concat(a),"g");n=n.replace(i,".".concat(t,"-")).replace(s,"--".concat(t,"-")).replace(o,".".concat(r))}return n}let we=!1;function xe(){ue.autoAddCss&&!we&&(!function(e){if(!e||!f)return;const a=m.createElement("style");a.setAttribute("type","text/css"),a.innerHTML=e;const t=m.head.childNodes;let r=null;for(let n=t.length-1;n>-1;n--){const e=t[n],a=(e.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=e)}m.head.insertBefore(a,r)}(ke()),we=!0)}var ze={mixout:()=>({dom:{css:ke,insertCss:xe}}),hooks:()=>({beforeDOMElementCreation(){xe()},beforeI2svg(){xe()}})};const je=h||{};je[I]||(je[I]={}),je[I].styles||(je[I].styles={}),je[I].hooks||(je[I].hooks={}),je[I].shims||(je[I].shims=[]);var Se=je[I];const _e=[],Ee=function(){m.removeEventListener("DOMContentLoaded",Ee),Pe=1,_e.map(e=>e())};let Pe=!1;function qe(e){const{tag:a,attributes:t={},children:r=[]}=e;return"string"===typeof e?be(e):"<".concat(a," ").concat(function(e){return Object.keys(e||{}).reduce((a,t)=>a+"".concat(t,'="').concat(be(e[t]),'" '),"").trim()}(t),">").concat(r.map(qe).join(""),"")}function Ce(e,a,t){if(e&&e[a]&&e[a][t])return{prefix:a,iconName:t,icon:e[a][t]}}f&&(Pe=(m.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(m.readyState),Pe||m.addEventListener("DOMContentLoaded",Ee));var Ae=function(e,a,t,r){var n,i,s,o=Object.keys(e),l=o.length,c=void 0!==r?function(e,a){return function(t,r,n,i){return e.call(a,t,r,n,i)}}(a,r):a;for(void 0===t?(n=1,s=e[o[0]]):(n=0,s=t);n=55296&&n<=56319&&t{const r=e[t];return!!r.icon?a[r.iconName]=r.icon:a[t]=r,a},{})}function Oe(e,a){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{skipHooks:r=!1}=t,n=Me(a);"function"!==typeof Se.hooks.addPack||r?Se.styles[e]=i(i({},Se.styles[e]||{}),n):Se.hooks.addPack(e,Me(a)),"fas"===e&&Oe("fa",a)}const{styles:De,shims:Fe}=Se,Ie=Object.keys(Z),Re=Ie.reduce((e,a)=>(e[a]=Object.keys(Z[a]),e),{});let Be=null,Le={},Ne={},Ve={},He={},Ge={};function Ue(e,a){const t=a.split("-"),r=t[0],n=t.slice(1).join("-");return r!==e||""===n||(i=n,~se.indexOf(i))?null:n;var i}const We=()=>{const e=e=>Ae(De,(a,t,r)=>(a[r]=Ae(t,e,{}),a),{});Le=e((e,a,t)=>{if(a[3]&&(e[a[3]]=t),a[2]){a[2].filter(e=>"number"===typeof e).forEach(a=>{e[a.toString(16)]=t})}return e}),Ne=e((e,a,t)=>{if(e[t]=t,a[2]){a[2].filter(e=>"string"===typeof e).forEach(a=>{e[a]=t})}return e}),Ge=e((e,a,t)=>{const r=a[2];return e[t]=t,r.forEach(a=>{e[a]=t}),e});const a="far"in De||ue.autoFetchSvg,t=Ae(Fe,(e,t)=>{const r=t[0];let n=t[1];const i=t[2];return"far"!==n||a||(n="fas"),"string"===typeof r&&(e.names[r]={prefix:n,iconName:i}),"number"===typeof r&&(e.unicodes[r.toString(16)]={prefix:n,iconName:i}),e},{names:{},unicodes:{}});Ve=t.names,He=t.unicodes,Be=Qe(ue.styleDefault,{family:ue.familyDefault})};var $e;function Ye(e,a){return(Le[e]||{})[a]}function Ke(e,a){return(Ge[e]||{})[a]}function Xe(e){return Ve[e]||{prefix:null,iconName:null}}function Je(){return Be}$e=e=>{Be=Qe(e.styleDefault,{family:ue.familyDefault})},de.push($e),We();function Qe(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{family:t=k}=a,r=K[t][e];if(t===w&&!e)return"fad";const n=J[t][e]||J[t][r],i=e in Se.styles?e:null;return n||i||null}function Ze(e){return e.sort().filter((e,a,t)=>t.indexOf(e)===a)}function ea(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{skipLookups:t=!1}=a;let r=null;const n=M.concat(A),s=Ze(e.filter(e=>n.includes(e))),o=Ze(e.filter(e=>!M.includes(e))),l=s.filter(e=>(r=e,!v.includes(e))),[c=null]=l,u=function(e){let a=k;const t=Ie.reduce((e,a)=>(e[a]="".concat(ue.cssPrefix,"-").concat(a),e),{});return x.forEach(r=>{(e.includes(t[r])||e.some(e=>Re[r].includes(e)))&&(a=r)}),a}(s),d=i(i({},function(e){let a=[],t=null;return e.forEach(e=>{const r=Ue(ue.cssPrefix,e);r?t=r:e&&a.push(e)}),{iconName:t,rest:a}}(o)),{},{prefix:Qe(c,{family:u})});return i(i(i({},d),function(e){const{values:a,family:t,canonical:r,givenPrefix:n="",styles:i={},config:s={}}=e,o=t===w,l=a.includes("fa-duotone")||a.includes("fad"),c="duotone"===s.familyDefault,u="fad"===r.prefix||"fa-duotone"===r.prefix;!o&&(l||c||u)&&(r.prefix="fad");(a.includes("fa-brands")||a.includes("fab"))&&(r.prefix="fab");if(!r.prefix&&aa.includes(t)){if(Object.keys(i).find(e=>ta.includes(e))||s.autoFetchSvg){const e=z.get(t).defaultShortPrefixId;r.prefix=e,r.iconName=Ke(r.prefix,r.iconName)||r.iconName}}"fa"!==r.prefix&&"fa"!==n||(r.prefix=Je()||"fas");return r}({values:e,family:u,styles:De,config:ue,canonical:d,givenPrefix:r})),function(e,a,t){let{prefix:r,iconName:n}=t;if(e||!r||!n)return{prefix:r,iconName:n};const i="fa"===a?Xe(n):{},s=Ke(r,n);n=i.iconName||s||n,r=i.prefix||r,"far"!==r||De.far||!De.fas||ue.autoFetchSvg||(r="fas");return{prefix:r,iconName:n}}(t,r,d))}const aa=x.filter(e=>e!==k||e!==w),ta=Object.keys(T).filter(e=>e!==k).map(e=>Object.keys(T[e])).flat();let ra=[],na={};const ia={},sa=Object.keys(ia);function oa(e,a){for(var t=arguments.length,r=new Array(t>2?t-2:0),n=2;n{a=e.apply(null,[a,...r])}),a}function la(e){for(var a=arguments.length,t=new Array(a>1?a-1:0),r=1;r{e.apply(null,t)})}function ca(){const e=arguments[0],a=Array.prototype.slice.call(arguments,1);return ia[e]?ia[e].apply(null,a):void 0}function ua(e){"fa"===e.prefix&&(e.prefix="fas");let{iconName:a}=e;const t=e.prefix||Je();if(a)return a=Ke(t,a)||a,Ce(da.definitions,t,a)||Ce(Se.styles,t,a)}const da=new class{constructor(){this.definitions={}}add(){for(var e=arguments.length,a=new Array(e),t=0;t{this.definitions[e]=i(i({},this.definitions[e]||{}),r[e]),Oe(e,r[e]);const a=Z[k][e];a&&Oe(a,r[e]),We()})}reset(){this.definitions={}}_pullDefinitions(e,a){const t=a.prefix&&a.iconName&&a.icon?{0:a}:a;return Object.keys(t).map(a=>{const{prefix:r,iconName:n,icon:i}=t[a],s=i[2];e[r]||(e[r]={}),s.length>0&&s.forEach(a=>{"string"===typeof a&&(e[r][a]=i)}),e[r][n]=i}),e}},ha={i2svg:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return f?(la("beforeI2svg",e),ca("pseudoElements2svg",e),ca("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{autoReplaceSvgRoot:a}=e;var t;!1===ue.autoReplaceSvg&&(ue.autoReplaceSvg=!0),ue.observeMutations=!0,t=()=>{ga({autoReplaceSvgRoot:a}),la("watch",e)},f&&(Pe?setTimeout(t,0):_e.push(t))}},ma={icon:e=>{if(null===e)return null;if("object"===typeof e&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Ke(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&2===e.length){const a=0===e[1].indexOf("fa-")?e[1].slice(3):e[1],t=Qe(e[0]);return{prefix:t,iconName:Ke(t,a)||a}}if("string"===typeof e&&(e.indexOf("".concat(ue.cssPrefix,"-"))>-1||e.match(ae))){const a=ea(e.split(" "),{skipLookups:!0});return{prefix:a.prefix||Je(),iconName:Ke(a.prefix,a.iconName)||a.iconName}}if("string"===typeof e){const a=Je();return{prefix:a,iconName:Ke(a,e)||e}}}},pa={noAuto:()=>{ue.autoReplaceSvg=!1,ue.observeMutations=!1,la("noAuto")},config:ue,dom:ha,parse:ma,library:da,findIconDefinition:ua,toHtml:qe},ga=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{autoReplaceSvgRoot:a=m}=e;(Object.keys(Se.styles).length>0||ue.autoFetchSvg)&&f&&ue.autoReplaceSvg&&pa.dom.i2svg({node:a})};function fa(e,a){return Object.defineProperty(e,"abstract",{get:a}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(e=>qe(e))}}),Object.defineProperty(e,"node",{get:function(){if(!f)return;const a=m.createElement("div");return a.innerHTML=e.html,a.children}}),e}function ba(e){const{icons:{main:a,mask:t},prefix:r,iconName:n,transform:s,symbol:o,title:l,maskId:c,titleId:u,extra:d,watchable:h=!1}=e,{width:m,height:p}=t.found?t:a,g=E.includes(r),f=[ue.replacementClass,n?"".concat(ue.cssPrefix,"-").concat(n):""].filter(e=>-1===d.classes.indexOf(e)).filter(e=>""!==e||!!e).concat(d.classes).join(" ");let b={children:[],attributes:i(i({},d.attributes),{},{"data-prefix":r,"data-icon":n,class:f,role:d.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(p)})};const y=g&&!~d.classes.indexOf("fa-fw")?{width:"".concat(m/p*16*.0625,"em")}:{};h&&(b.attributes[L]=""),l&&(b.children.push({tag:"title",attributes:{id:b.attributes["aria-labelledby"]||"title-".concat(u||pe())},children:[l]}),delete b.attributes.title);const v=i(i({},b),{},{prefix:r,iconName:n,main:a,mask:t,maskId:c,transform:s,symbol:o,styles:i(i({},y),d.styles)}),{children:k,attributes:w}=t.found&&a.found?ca("generateAbstractMask",v)||{children:[],attributes:{}}:ca("generateAbstractIcon",v)||{children:[],attributes:{}};return v.children=k,v.attributes=w,o?function(e){let{prefix:a,iconName:t,children:r,attributes:n,symbol:s}=e;const o=!0===s?"".concat(a,"-").concat(ue.cssPrefix,"-").concat(t):s;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:i(i({},n),{},{id:o}),children:r}]}]}(v):function(e){let{children:a,main:t,mask:r,attributes:n,styles:s,transform:o}=e;if(ve(o)&&t.found&&!r.found){const{width:e,height:a}=t,r={x:e/a/2,y:.5};n.style=ye(i(i({},s),{},{"transform-origin":"".concat(r.x+o.x/16,"em ").concat(r.y+o.y/16,"em")}))}return[{tag:"svg",attributes:n,children:a}]}(v)}function ya(e){const{content:a,width:t,height:r,transform:n,title:s,extra:o,watchable:l=!1}=e,c=i(i(i({},o.attributes),s?{title:s}:{}),{},{class:o.classes.join(" ")});l&&(c[L]="");const u=i({},o.styles);ve(n)&&(u.transform=function(e){let{transform:a,width:t=R,height:r=R,startCentered:n=!1}=e,i="";return i+=n&&b?"translate(".concat(a.x/he-t/2,"em, ").concat(a.y/he-r/2,"em) "):n?"translate(calc(-50% + ".concat(a.x/he,"em), calc(-50% + ").concat(a.y/he,"em)) "):"translate(".concat(a.x/he,"em, ").concat(a.y/he,"em) "),i+="scale(".concat(a.size/he*(a.flipX?-1:1),", ").concat(a.size/he*(a.flipY?-1:1),") "),i+="rotate(".concat(a.rotate,"deg) "),i}({transform:n,startCentered:!0,width:t,height:r}),u["-webkit-transform"]=u.transform);const d=ye(u);d.length>0&&(c.style=d);const h=[];return h.push({tag:"span",attributes:c,children:[a]}),s&&h.push({tag:"span",attributes:{class:"sr-only"},children:[s]}),h}const{styles:va}=Se;function ka(e){const a=e[0],t=e[1],[r]=e.slice(4);let n=null;return n=Array.isArray(r)?{tag:"g",attributes:{class:"".concat(ue.cssPrefix,"-").concat(ie.GROUP)},children:[{tag:"path",attributes:{class:"".concat(ue.cssPrefix,"-").concat(ie.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(ue.cssPrefix,"-").concat(ie.PRIMARY),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}},{found:!0,width:a,height:t,icon:n}}const wa={found:!1,width:512,height:512};function xa(e,a){let t=a;return"fa"===a&&null!==ue.styleDefault&&(a=Je()),new Promise((r,n)=>{if("fa"===t){const t=Xe(e)||{};e=t.iconName||e,a=t.prefix||a}if(e&&a&&va[a]&&va[a][e]){return r(ka(va[a][e]))}!function(e,a){W||ue.showMissingIcons||!e||console.error('Icon with name "'.concat(e,'" and prefix "').concat(a,'" is missing.'))}(e,a),r(i(i({},wa),{},{icon:ue.showMissingIcons&&e&&ca("missingIconAbstract")||{}}))})}const za=()=>{},ja=ue.measurePerformance&&g&&g.mark&&g.measure?g:{mark:za,measure:za},Sa='FA "6.7.2"',_a=e=>{ja.mark("".concat(Sa," ").concat(e," ends")),ja.measure("".concat(Sa," ").concat(e),"".concat(Sa," ").concat(e," begins"),"".concat(Sa," ").concat(e," ends"))};var Ea=e=>(ja.mark("".concat(Sa," ").concat(e," begins")),()=>_a(e));const Pa=()=>{};function qa(e){return"string"===typeof(e.getAttribute?e.getAttribute(L):null)}function Ca(e){return m.createElementNS("http://www.w3.org/2000/svg",e)}function Aa(e){return m.createElement(e)}function Ta(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{ceFn:t=("svg"===e.tag?Ca:Aa)}=a;if("string"===typeof e)return m.createTextNode(e);const r=t(e.tag);Object.keys(e.attributes||[]).forEach(function(a){r.setAttribute(a,e.attributes[a])});return(e.children||[]).forEach(function(e){r.appendChild(Ta(e,{ceFn:t}))}),r}const Ma={replace:function(e){const a=e[0];if(a.parentNode)if(e[1].forEach(e=>{a.parentNode.insertBefore(Ta(e),a)}),null===a.getAttribute(L)&&ue.keepOriginalSource){let e=m.createComment(function(e){let a=" ".concat(e.outerHTML," ");return a="".concat(a,"Font Awesome fontawesome.com "),a}(a));a.parentNode.replaceChild(e,a)}else a.remove()},nest:function(e){const a=e[0],t=e[1];if(~fe(a).indexOf(ue.replacementClass))return Ma.replace(e);const r=new RegExp("".concat(ue.cssPrefix,"-.*"));if(delete t[0].attributes.id,t[0].attributes.class){const e=t[0].attributes.class.split(" ").reduce((e,a)=>(a===ue.replacementClass||a.match(r)?e.toSvg.push(a):e.toNode.push(a),e),{toNode:[],toSvg:[]});t[0].attributes.class=e.toSvg.join(" "),0===e.toNode.length?a.removeAttribute("class"):a.setAttribute("class",e.toNode.join(" "))}const n=t.map(e=>qe(e)).join("\n");a.setAttribute(L,""),a.innerHTML=n}};function Oa(e){e()}function Da(e,a){const t="function"===typeof a?a:Pa;if(0===e.length)t();else{let a=Oa;"async"===ue.mutateApproach&&(a=h.requestAnimationFrame||Oa),a(()=>{const a=!0===ue.autoReplaceSvg?Ma.replace:Ma[ue.autoReplaceSvg]||Ma.replace,r=Ea("mutate");e.map(a),r(),t()})}}let Fa=!1;function Ia(){Fa=!0}function Ra(){Fa=!1}let Ba=null;function La(e){if(!p)return;if(!ue.observeMutations)return;const{treeCallback:a=Pa,nodeCallback:t=Pa,pseudoElementsCallback:r=Pa,observeMutationsRoot:n=m}=e;Ba=new p(e=>{if(Fa)return;const n=Je();ge(e).forEach(e=>{if("childList"===e.type&&e.addedNodes.length>0&&!qa(e.addedNodes[0])&&(ue.searchPseudoElements&&r(e.target),a(e.target)),"attributes"===e.type&&e.target.parentNode&&ue.searchPseudoElements&&r(e.target.parentNode),"attributes"===e.type&&qa(e.target)&&~ne.indexOf(e.attributeName))if("class"===e.attributeName&&function(e){const a=e.getAttribute?e.getAttribute(V):null,t=e.getAttribute?e.getAttribute(H):null;return a&&t}(e.target)){const{prefix:a,iconName:t}=ea(fe(e.target));e.target.setAttribute(V,a||n),t&&e.target.setAttribute(H,t)}else(i=e.target)&&i.classList&&i.classList.contains&&i.classList.contains(ue.replacementClass)&&t(e.target);var i})}),f&&Ba.observe(n,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}function Na(e){const a=e.getAttribute("data-prefix"),t=e.getAttribute("data-icon"),r=void 0!==e.innerText?e.innerText.trim():"";let n=ea(fe(e));return n.prefix||(n.prefix=Je()),a&&t&&(n.prefix=a,n.iconName=t),n.iconName&&n.prefix||(n.prefix&&r.length>0&&(n.iconName=(i=n.prefix,s=e.innerText,(Ne[i]||{})[s]||Ye(n.prefix,Te(e.innerText)))),!n.iconName&&ue.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(n.iconName=e.firstChild.data)),n;var i,s}function Va(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0};const{iconName:t,prefix:r,rest:n}=Na(e),s=function(e){const a=ge(e.attributes).reduce((e,a)=>("class"!==e.name&&"style"!==e.name&&(e[a.name]=a.value),e),{}),t=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return ue.autoA11y&&(t?a["aria-labelledby"]="".concat(ue.replacementClass,"-title-").concat(r||pe()):(a["aria-hidden"]="true",a.focusable="false")),a}(e),o=oa("parseNodeAttributes",{},e);let l=a.styleParser?function(e){const a=e.getAttribute("style");let t=[];return a&&(t=a.split(";").reduce((e,a)=>{const t=a.split(":"),r=t[0],n=t.slice(1);return r&&n.length>0&&(e[r]=n.join(":").trim()),e},{})),t}(e):[];return i({iconName:t,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:r,transform:me,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:n,styles:l,attributes:s}},o)}const{styles:Ha}=Se;function Ga(e){const a="nest"===ue.autoReplaceSvg?Va(e,{styleParser:!1}):Va(e);return~a.extra.classes.indexOf(te)?ca("generateLayersText",e,a):ca("generateSvgReplacementMutation",e,a)}function Ua(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!f)return Promise.resolve();const t=m.documentElement.classList,r=e=>t.add("".concat(G,"-").concat(e)),n=e=>t.remove("".concat(G,"-").concat(e)),i=ue.autoFetchSvg?[...j,...M]:v.concat(Object.keys(Ha));i.includes("fa")||i.push("fa");const s=[".".concat(te,":not([").concat(L,"])")].concat(i.map(e=>".".concat(e,":not([").concat(L,"])"))).join(", ");if(0===s.length)return Promise.resolve();let o=[];try{o=ge(e.querySelectorAll(s))}catch(u){}if(!(o.length>0))return Promise.resolve();r("pending"),n("complete");const l=Ea("onTree"),c=o.reduce((e,a)=>{try{const t=Ga(a);t&&e.push(t)}catch(u){W||"MissingIcon"===u.name&&console.error(u)}return e},[]);return new Promise((e,t)=>{Promise.all(c).then(t=>{Da(t,()=>{r("active"),r("complete"),n("pending"),"function"===typeof a&&a(),l(),e()})}).catch(e=>{l(),t(e)})})}function Wa(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Ga(e).then(e=>{e&&Da([e],a)})}const $a=function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{transform:t=me,symbol:r=!1,mask:n=null,maskId:s=null,title:o=null,titleId:l=null,classes:c=[],attributes:u={},styles:d={}}=a;if(!e)return;const{prefix:h,iconName:m,icon:p}=e;return fa(i({type:"icon"},e),()=>(la("beforeDOMElementCreation",{iconDefinition:e,params:a}),ue.autoA11y&&(o?u["aria-labelledby"]="".concat(ue.replacementClass,"-title-").concat(l||pe()):(u["aria-hidden"]="true",u.focusable="false")),ba({icons:{main:ka(p),mask:n?ka(n.icon):{found:!1,width:null,height:null,icon:{}}},prefix:h,iconName:m,transform:i(i({},me),t),symbol:r,title:o,maskId:s,titleId:l,extra:{attributes:u,styles:d,classes:c}})))};var Ya={mixout(){return{icon:(e=$a,function(a){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=(a||{}).icon?a:ua(a||{});let{mask:n}=t;return n&&(n=(n||{}).icon?n:ua(n||{})),e(r,i(i({},t),{},{mask:n}))})};var e},hooks:()=>({mutationObserverCallbacks:e=>(e.treeCallback=Ua,e.nodeCallback=Wa,e)}),provides(e){e.i2svg=function(e){const{node:a=m,callback:t=()=>{}}=e;return Ua(a,t)},e.generateSvgReplacementMutation=function(e,a){const{iconName:t,title:r,titleId:n,prefix:i,transform:s,symbol:o,mask:l,maskId:c,extra:u}=a;return new Promise((a,d)=>{Promise.all([xa(t,i),l.iconName?xa(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(l=>{let[d,h]=l;a([e,ba({icons:{main:d,mask:h},prefix:i,iconName:t,transform:s,symbol:o,maskId:c,title:r,titleId:n,extra:u,watchable:!0})])}).catch(d)})},e.generateAbstractIcon=function(e){let{children:a,attributes:t,main:r,transform:n,styles:i}=e;const s=ye(i);let o;return s.length>0&&(t.style=s),ve(n)&&(o=ca("generateAbstractTransformGrouping",{main:r,transform:n,containerWidth:r.width,iconWidth:r.width})),a.push(o||r.icon),{children:a,attributes:t}}}},Ka={mixout:()=>({layer(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{classes:t=[]}=a;return fa({type:"layer"},()=>{la("beforeDOMElementCreation",{assembler:e,params:a});let r=[];return e(e=>{Array.isArray(e)?e.map(e=>{r=r.concat(e.abstract)}):r=r.concat(e.abstract)}),[{tag:"span",attributes:{class:["".concat(ue.cssPrefix,"-layers"),...t].join(" ")},children:r}]})}})},Xa={mixout:()=>({counter(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{title:t=null,classes:r=[],attributes:n={},styles:s={}}=a;return fa({type:"counter",content:e},()=>(la("beforeDOMElementCreation",{content:e,params:a}),function(e){const{content:a,title:t,extra:r}=e,n=i(i(i({},r.attributes),t?{title:t}:{}),{},{class:r.classes.join(" ")}),s=ye(r.styles);s.length>0&&(n.style=s);const o=[];return o.push({tag:"span",attributes:n,children:[a]}),t&&o.push({tag:"span",attributes:{class:"sr-only"},children:[t]}),o}({content:e.toString(),title:t,extra:{attributes:n,styles:s,classes:["".concat(ue.cssPrefix,"-layers-counter"),...r]}})))}})},Ja={mixout:()=>({text(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{transform:t=me,title:r=null,classes:n=[],attributes:s={},styles:o={}}=a;return fa({type:"text",content:e},()=>(la("beforeDOMElementCreation",{content:e,params:a}),ya({content:e,transform:i(i({},me),t),title:r,extra:{attributes:s,styles:o,classes:["".concat(ue.cssPrefix,"-layers-text"),...n]}})))}}),provides(e){e.generateLayersText=function(e,a){const{title:t,transform:r,extra:n}=a;let i=null,s=null;if(b){const a=parseInt(getComputedStyle(e).fontSize,10),t=e.getBoundingClientRect();i=t.width/a,s=t.height/a}return ue.autoA11y&&!t&&(n.attributes["aria-hidden"]="true"),Promise.resolve([e,ya({content:e.innerHTML,width:i,height:s,transform:r,title:t,extra:n,watchable:!0})])}}};const Qa=new RegExp('"',"ug"),Za=[1105920,1112319],et=i(i(i(i({},{FontAwesome:{normal:"fas",400:"fas"}}),{"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad",400:"fadr",normal:"fadr",300:"fadl",100:"fadt"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds",400:"fasdr",normal:"fasdr",300:"fasdl",100:"fasdt"}}),{"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}}),{"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}}),at=Object.keys(et).reduce((e,a)=>(e[a.toLowerCase()]=et[a],e),{}),tt=Object.keys(at).reduce((e,a)=>{const t=at[a];return e[a]=t[900]||[...Object.entries(t)][0][1],e},{});function rt(e,a){const t="".concat("data-fa-pseudo-element-pending").concat(a.replace(":","-"));return new Promise((r,n)=>{if(null!==e.getAttribute(t))return r();const s=ge(e.children).filter(e=>e.getAttribute(N)===a)[0],o=h.getComputedStyle(e,a),l=o.getPropertyValue("font-family"),c=l.match(re),u=o.getPropertyValue("font-weight"),d=o.getPropertyValue("content");if(s&&!c)return e.removeChild(s),r();if(c&&"none"!==d&&""!==d){const d=o.getPropertyValue("content");let h=function(e,a){const t=e.replace(/^['"]|['"]$/g,"").toLowerCase(),r=parseInt(a),n=isNaN(r)?"normal":r;return(at[t]||{})[n]||tt[t]}(l,u);const{value:p,isSecondary:g}=function(e){const a=e.replace(Qa,""),t=function(e,a){const t=e.length;let r,n=e.charCodeAt(a);return n>=55296&&n<=56319&&t>a+1&&(r=e.charCodeAt(a+1),r>=56320&&r<=57343)?1024*(n-55296)+r-56320+65536:n}(a,0),r=t>=Za[0]&&t<=Za[1],n=2===a.length&&a[0]===a[1];return{value:Te(n?a[0]:a),isSecondary:r||n}}(d),f=c[0].startsWith("FontAwesome");let b=Ye(h,p),y=b;if(f){const e=function(e){const a=He[e],t=Ye("fas",e);return a||(t?{prefix:"fas",iconName:t}:null)||{prefix:null,iconName:null}}(p);e.iconName&&e.prefix&&(b=e.iconName,h=e.prefix)}if(!b||g||s&&s.getAttribute(V)===h&&s.getAttribute(H)===y)r();else{e.setAttribute(t,y),s&&e.removeChild(s);const o={iconName:null,title:null,titleId:null,prefix:null,transform:me,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},{extra:l}=o;l.attributes[N]=a,xa(b,h).then(n=>{const s=ba(i(i({},o),{},{icons:{main:n,mask:{prefix:null,iconName:null,rest:[]}},prefix:h,iconName:y,extra:l,watchable:!0})),c=m.createElementNS("http://www.w3.org/2000/svg","svg");"::before"===a?e.insertBefore(c,e.firstChild):e.appendChild(c),c.outerHTML=s.map(e=>qe(e)).join("\n"),e.removeAttribute(t),r()}).catch(n)}}else r()})}function nt(e){return Promise.all([rt(e,"::before"),rt(e,"::after")])}function it(e){return e.parentNode!==document.head&&!~U.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(N)&&(!e.parentNode||"svg"!==e.parentNode.tagName)}function st(e){if(f)return new Promise((a,t)=>{const r=ge(e.querySelectorAll("*")).filter(it).map(nt),n=Ea("searchPseudoElements");Ia(),Promise.all(r).then(()=>{n(),Ra(),a()}).catch(()=>{n(),Ra(),t()})})}var ot={hooks:()=>({mutationObserverCallbacks:e=>(e.pseudoElementsCallback=st,e)}),provides(e){e.pseudoElements2svg=function(e){const{node:a=m}=e;ue.searchPseudoElements&&st(a)}}};let lt=!1;var ct={mixout:()=>({dom:{unwatch(){Ia(),lt=!0}}}),hooks:()=>({bootstrap(){La(oa("mutationObserverCallbacks",{}))},noAuto(){Ba&&Ba.disconnect()},watch(e){const{observeMutationsRoot:a}=e;lt?Ra():La(oa("mutationObserverCallbacks",{observeMutationsRoot:a}))}})};const ut=e=>e.toLowerCase().split(" ").reduce((e,a)=>{const t=a.toLowerCase().split("-"),r=t[0];let n=t.slice(1).join("-");if(r&&"h"===n)return e.flipX=!0,e;if(r&&"v"===n)return e.flipY=!0,e;if(n=parseFloat(n),isNaN(n))return e;switch(r){case"grow":e.size=e.size+n;break;case"shrink":e.size=e.size-n;break;case"left":e.x=e.x-n;break;case"right":e.x=e.x+n;break;case"up":e.y=e.y-n;break;case"down":e.y=e.y+n;break;case"rotate":e.rotate=e.rotate+n}return e},{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0});var dt={mixout:()=>({parse:{transform:e=>ut(e)}}),hooks:()=>({parseNodeAttributes(e,a){const t=a.getAttribute("data-fa-transform");return t&&(e.transform=ut(t)),e}}),provides(e){e.generateAbstractTransformGrouping=function(e){let{main:a,transform:t,containerWidth:r,iconWidth:n}=e;const s={transform:"translate(".concat(r/2," 256)")},o="translate(".concat(32*t.x,", ").concat(32*t.y,") "),l="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),c="rotate(".concat(t.rotate," 0 0)"),u={outer:s,inner:{transform:"".concat(o," ").concat(l," ").concat(c)},path:{transform:"translate(".concat(n/2*-1," -256)")}};return{tag:"g",attributes:i({},u.outer),children:[{tag:"g",attributes:i({},u.inner),children:[{tag:a.icon.tag,children:a.icon.children,attributes:i(i({},a.icon.attributes),u.path)}]}]}}}};const ht={x:0,y:0,width:"100%",height:"100%"};function mt(e){let a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||a)&&(e.attributes.fill="black"),e}var pt={hooks:()=>({parseNodeAttributes(e,a){const t=a.getAttribute("data-fa-mask"),r=t?ea(t.split(" ").map(e=>e.trim())):{prefix:null,iconName:null,rest:[]};return r.prefix||(r.prefix=Je()),e.mask=r,e.maskId=a.getAttribute("data-fa-mask-id"),e}}),provides(e){e.generateAbstractMask=function(e){let{children:a,attributes:t,main:r,mask:n,maskId:s,transform:o}=e;const{width:l,icon:c}=r,{width:u,icon:d}=n,h=function(e){let{transform:a,containerWidth:t,iconWidth:r}=e;const n={transform:"translate(".concat(t/2," 256)")},i="translate(".concat(32*a.x,", ").concat(32*a.y,") "),s="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),o="rotate(".concat(a.rotate," 0 0)");return{outer:n,inner:{transform:"".concat(i," ").concat(s," ").concat(o)},path:{transform:"translate(".concat(r/2*-1," -256)")}}}({transform:o,containerWidth:u,iconWidth:l}),m={tag:"rect",attributes:i(i({},ht),{},{fill:"white"})},p=c.children?{children:c.children.map(mt)}:{},g={tag:"g",attributes:i({},h.inner),children:[mt(i({tag:c.tag,attributes:i(i({},c.attributes),h.path)},p))]},f={tag:"g",attributes:i({},h.outer),children:[g]},b="mask-".concat(s||pe()),y="clip-".concat(s||pe()),v={tag:"mask",attributes:i(i({},ht),{},{id:b,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[m,f]},k={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(w=d,"g"===w.tag?w.children:[w])},v]};var w;return a.push(k,{tag:"rect",attributes:i({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(b,")")},ht)}),{children:a,attributes:t}}}},gt={provides(e){let a=!1;h.matchMedia&&(a=h.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){const e=[],t={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};e.push({tag:"path",attributes:i(i({},t),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});const n=i(i({},r),{},{attributeName:"opacity"}),s={tag:"circle",attributes:i(i({},t),{},{cx:"256",cy:"364",r:"28"}),children:[]};return a||s.children.push({tag:"animate",attributes:i(i({},r),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:i(i({},n),{},{values:"1;0;1;1;0;1;"})}),e.push(s),e.push({tag:"path",attributes:i(i({},t),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:a?[]:[{tag:"animate",attributes:i(i({},n),{},{values:"1;0;0;0;0;1;"})}]}),a||e.push({tag:"path",attributes:i(i({},t),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:i(i({},n),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:e}}}};!function(e,a){let{mixoutsTo:t}=a;ra=e,na={},Object.keys(ia).forEach(e=>{-1===sa.indexOf(e)&&delete ia[e]}),ra.forEach(e=>{const a=e.mixout?e.mixout():{};if(Object.keys(a).forEach(e=>{"function"===typeof a[e]&&(t[e]=a[e]),"object"===typeof a[e]&&Object.keys(a[e]).forEach(r=>{t[e]||(t[e]={}),t[e][r]=a[e][r]})}),e.hooks){const a=e.hooks();Object.keys(a).forEach(e=>{na[e]||(na[e]=[]),na[e].push(a[e])})}e.provides&&e.provides(ia)})}([ze,Ya,Ka,Xa,Ja,ot,ct,dt,pt,gt,{hooks:()=>({parseNodeAttributes(e,a){const t=a.getAttribute("data-fa-symbol"),r=null!==t&&(""===t||t);return e.symbol=r,e}})}],{mixoutsTo:pa});const ft=pa.parse,bt=pa.icon},function(e,a,t){!function(){var a;e.exports=(a=t(5),function(e){var t=a,r=t.lib,n=r.Base,i=r.WordArray,s=t.x64={};s.Word=n.extend({init:function(e,a){this.high=e,this.low=a}}),s.WordArray=n.extend({init:function(a,t){a=this.words=a||[],this.sigBytes=t!=e?t:8*a.length},toX32:function(){for(var e=this.words,a=e.length,t=[],r=0;r{const a=Object.keys(e).map(a=>({key:a,val:e[a]}))||[];return a.sort((e,a)=>e.val-a.val),a.reduce((e,a)=>Object(n.a)({},e,{[a.key]:a.val}),{})};function o(e){const{values:a={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:t="px",step:o=5}=e,l=Object(r.a)(e,i),c=s(a),u=Object.keys(c);function d(e){const r="number"===typeof a[e]?a[e]:e;return"@media (min-width:".concat(r).concat(t,")")}function h(e){const r="number"===typeof a[e]?a[e]:e;return"@media (max-width:".concat(r-o/100).concat(t,")")}function m(e,r){const n=u.indexOf(r);return"@media (min-width:".concat("number"===typeof a[e]?a[e]:e).concat(t,") and ")+"(max-width:".concat((-1!==n&&"number"===typeof a[u[n]]?a[u[n]]:r)-o/100).concat(t,")")}return Object(n.a)({keys:u,values:c,up:d,down:h,between:m,only:function(e){return u.indexOf(e)+1Object(r.a)(e)&&"classes"!==e},function(e,a,t){"use strict";a.a=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},function(e,a,t){"use strict";var r=t(145);a.a=r.a},function(e,a,t){"use strict";t.r(a),t.d(a,"default",function(){return j}),t.d(a,"internal_processStyles",function(){return S}),t.d(a,"internal_serializeStyles",function(){return E}),t.d(a,"ThemeContext",function(){return n.c}),t.d(a,"keyframes",function(){return y.c}),t.d(a,"css",function(){return y.b}),t.d(a,"StyledEngineProvider",function(){return x}),t.d(a,"GlobalStyles",function(){return z.a});var r=t(2),n=t(11),i=t(20),s=t(27),o=t(16),l=t(1),c=t(54),u=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,d="undefined"!==typeof document,h=Object(c.a)(function(e){return u.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),m=function(e){return"theme"!==e},p=function(e){return"string"===typeof e&&e.charCodeAt(0)>96?h:m},g=function(e,a,t){var r;if(a){var n=a.shouldForwardProp;r=e.__emotion_forwardProp&&n?function(a){return e.__emotion_forwardProp(a)&&n(a)}:n}return"function"!==typeof r&&t&&(r=e.__emotion_forwardProp),r},f=function(e){var a=e.cache,t=e.serialized,r=e.isStringTag;Object(o.c)(a,t,r);var n=Object(s.a)(function(){return Object(o.b)(a,t,r)});if(!d&&void 0!==n){for(var i,c=t.name,u=t.next;void 0!==u;)c+=" "+u.name,u=u.next;return l.createElement("style",((i={})["data-emotion"]=a.key+" "+c,i.dangerouslySetInnerHTML={__html:n},i.nonce=a.sheet.nonce,i))}return null},b=(t(111),function e(a,t){var s,c,u=a.__emotion_real===a,d=u&&a.__emotion_base||a;void 0!==t&&(s=t.label,c=t.target);var h=g(a,t,u),m=h||p(d),b=!m("as");return function(){var y=arguments,v=u&&void 0!==a.__emotion_styles?a.__emotion_styles.slice(0):[];if(void 0!==s&&v.push("label:"+s+";"),null==y[0]||void 0===y[0].raw)v.push.apply(v,y);else{var k=y[0];v.push(k[0]);for(var w=y.length,x=1;x{const e="".concat(a,"-").concat(t);if("object"===typeof document&&w.has(e))return w.get(e);const r=function(e,a){const t=Object(v.a)({key:"css",prepend:e});if(a){const e=t.insert;t.insert=function(){for(var a=arguments.length,t=new Array(a),r=0;r{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=a(e.__emotion_styles))},_=[];function E(e){return _[0]=e,Object(i.a)(_)}},function(e,a,t){"use strict";var r=t(1),n=t(144);let i=!0,s=!1;const o=new n.a,l={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function c(e){e.metaKey||e.altKey||e.ctrlKey||(i=!0)}function u(){i=!1}function d(){"hidden"===this.visibilityState&&s&&(i=!0)}function h(e){const{target:a}=e;try{return a.matches(":focus-visible")}catch(t){}return i||function(e){const{type:a,tagName:t}=e;return!("INPUT"!==t||!l[a]||e.readOnly)||"TEXTAREA"===t&&!e.readOnly||!!e.isContentEditable}(a)}a.a=function(){const e=r.useCallback(e=>{var a;null!=e&&((a=e.ownerDocument).addEventListener("keydown",c,!0),a.addEventListener("mousedown",u,!0),a.addEventListener("pointerdown",u,!0),a.addEventListener("touchstart",u,!0),a.addEventListener("visibilitychange",d,!0))},[]),a=r.useRef(!1);return{isFocusVisibleRef:a,onFocus:function(e){return!!h(e)&&(a.current=!0,!0)},onBlur:function(){return!!a.current&&(s=!0,o.start(100,()=>{s=!1}),a.current=!1,!0)},ref:e}}},function(e,a,t){(function(r,n){var i;!function(){"use strict";var s="input is invalid type",o="object"===typeof window,l=o?window:{};l.JS_SHA3_NO_WINDOW&&(o=!1);var c=!o&&"object"===typeof self;!l.JS_SHA3_NO_NODE_JS&&"object"===typeof r&&r.versions&&r.versions.node?l=n:c&&(l=self);for(var u=!l.JS_SHA3_NO_COMMON_JS&&"object"===typeof e&&e.exports,d=t(134),h=!l.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!==typeof ArrayBuffer,m="0123456789abcdef".split(""),p=[4,1024,262144,67108864],g=[0,8,16,24],f=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],b=[224,256,384,512],y=[128,256],v=["hex","buffer","arrayBuffer","array","digest"],k={128:168,256:136},w=l.JS_SHA3_NO_NODE_JS||!Array.isArray?function(e){return"[object Array]"===Object.prototype.toString.call(e)}:Array.isArray,x=!h||!l.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView?ArrayBuffer.isView:function(e){return"object"===typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer},z=function(e){var a=typeof e;if("string"===a)return[e,!0];if("object"!==a||null===e)throw new Error(s);if(h&&e.constructor===ArrayBuffer)return[new Uint8Array(e),!1];if(!w(e)&&!x(e))throw new Error(s);return[e,!1]},j=function(e){return 0===z(e)[0].length},S=function(e){for(var a=[],t=0;t>5,this.byteCount=this.blockCount<<2,this.outputBlocks=t>>5,this.extraBytes=(31&t)>>3;for(var r=0;r<50;++r)this.s[r]=0}function V(e,a,t){N.call(this,e,a,t)}N.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var a=z(e);e=a[0];for(var t,r,n=a[1],i=this.blocks,s=this.byteCount,o=e.length,l=this.blockCount,c=0,u=this.s;c>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(i[t>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=e[c]<=s){for(this.start=t-s,this.block=i[l],t=0;t>=8);t>0;)n.unshift(t),t=255&(e>>=8),++r;return a?n.push(r):n.unshift(r),this.update(n),n.length},N.prototype.encodeString=function(e){var a=z(e);e=a[0];var t=a[1],r=0,n=e.length;if(t)for(var i=0;i=57344?r+=3:(s=65536+((1023&s)<<10|1023&e.charCodeAt(++i)),r+=4)}else r=n;return r+=this.encode(8*r),this.update(e),r},N.prototype.bytepad=function(e,a){for(var t=this.encode(a),r=0;r>2]|=this.padding[3&a],this.lastByteIndex===this.byteCount)for(e[0]=e[t],a=1;a>4&15]+m[15&e]+m[e>>12&15]+m[e>>8&15]+m[e>>20&15]+m[e>>16&15]+m[e>>28&15]+m[e>>24&15];s%a===0&&(t=S(t),H(t),i=0)}return n&&(e=t[i],o+=m[e>>4&15]+m[15&e],n>1&&(o+=m[e>>12&15]+m[e>>8&15]),n>2&&(o+=m[e>>20&15]+m[e>>16&15])),o},N.prototype.arrayBuffer=function(){this.finalize();var e,a=this.blockCount,t=this.s,r=this.outputBlocks,n=this.extraBytes,i=0,s=0,o=this.outputBits>>3;e=n?new ArrayBuffer(r+1<<2):new ArrayBuffer(o);for(var l=new Uint32Array(e);s>8&255,l[e+2]=a>>16&255,l[e+3]=a>>24&255;o%t===0&&(r=S(r),H(r))}return i&&(e=o<<2,a=r[s],l[e]=255&a,i>1&&(l[e+1]=a>>8&255),i>2&&(l[e+2]=a>>16&255)),l},V.prototype=new N,V.prototype.finalize=function(){return this.encode(this.outputBits,!0),N.prototype.finalize.call(this)};var H=function(e){var a,t,r,n,i,s,o,l,c,u,d,h,m,p,g,b,y,v,k,w,x,z,j,S,_,E,P,q,C,A,T,M,O,D,F,I,R,B,L,N,V,H,G,U,W,$,Y,K,X,J,Q,Z,ee,ae,te,re,ne,ie,se,oe,le,ce,ue;for(r=0;r<48;r+=2)n=e[0]^e[10]^e[20]^e[30]^e[40],i=e[1]^e[11]^e[21]^e[31]^e[41],s=e[2]^e[12]^e[22]^e[32]^e[42],o=e[3]^e[13]^e[23]^e[33]^e[43],l=e[4]^e[14]^e[24]^e[34]^e[44],c=e[5]^e[15]^e[25]^e[35]^e[45],u=e[6]^e[16]^e[26]^e[36]^e[46],d=e[7]^e[17]^e[27]^e[37]^e[47],a=(h=e[8]^e[18]^e[28]^e[38]^e[48])^(s<<1|o>>>31),t=(m=e[9]^e[19]^e[29]^e[39]^e[49])^(o<<1|s>>>31),e[0]^=a,e[1]^=t,e[10]^=a,e[11]^=t,e[20]^=a,e[21]^=t,e[30]^=a,e[31]^=t,e[40]^=a,e[41]^=t,a=n^(l<<1|c>>>31),t=i^(c<<1|l>>>31),e[2]^=a,e[3]^=t,e[12]^=a,e[13]^=t,e[22]^=a,e[23]^=t,e[32]^=a,e[33]^=t,e[42]^=a,e[43]^=t,a=s^(u<<1|d>>>31),t=o^(d<<1|u>>>31),e[4]^=a,e[5]^=t,e[14]^=a,e[15]^=t,e[24]^=a,e[25]^=t,e[34]^=a,e[35]^=t,e[44]^=a,e[45]^=t,a=l^(h<<1|m>>>31),t=c^(m<<1|h>>>31),e[6]^=a,e[7]^=t,e[16]^=a,e[17]^=t,e[26]^=a,e[27]^=t,e[36]^=a,e[37]^=t,e[46]^=a,e[47]^=t,a=u^(n<<1|i>>>31),t=d^(i<<1|n>>>31),e[8]^=a,e[9]^=t,e[18]^=a,e[19]^=t,e[28]^=a,e[29]^=t,e[38]^=a,e[39]^=t,e[48]^=a,e[49]^=t,p=e[0],g=e[1],$=e[11]<<4|e[10]>>>28,Y=e[10]<<4|e[11]>>>28,q=e[20]<<3|e[21]>>>29,C=e[21]<<3|e[20]>>>29,oe=e[31]<<9|e[30]>>>23,le=e[30]<<9|e[31]>>>23,H=e[40]<<18|e[41]>>>14,G=e[41]<<18|e[40]>>>14,D=e[2]<<1|e[3]>>>31,F=e[3]<<1|e[2]>>>31,b=e[13]<<12|e[12]>>>20,y=e[12]<<12|e[13]>>>20,K=e[22]<<10|e[23]>>>22,X=e[23]<<10|e[22]>>>22,A=e[33]<<13|e[32]>>>19,T=e[32]<<13|e[33]>>>19,ce=e[42]<<2|e[43]>>>30,ue=e[43]<<2|e[42]>>>30,ae=e[5]<<30|e[4]>>>2,te=e[4]<<30|e[5]>>>2,I=e[14]<<6|e[15]>>>26,R=e[15]<<6|e[14]>>>26,v=e[25]<<11|e[24]>>>21,k=e[24]<<11|e[25]>>>21,J=e[34]<<15|e[35]>>>17,Q=e[35]<<15|e[34]>>>17,M=e[45]<<29|e[44]>>>3,O=e[44]<<29|e[45]>>>3,S=e[6]<<28|e[7]>>>4,_=e[7]<<28|e[6]>>>4,re=e[17]<<23|e[16]>>>9,ne=e[16]<<23|e[17]>>>9,B=e[26]<<25|e[27]>>>7,L=e[27]<<25|e[26]>>>7,w=e[36]<<21|e[37]>>>11,x=e[37]<<21|e[36]>>>11,Z=e[47]<<24|e[46]>>>8,ee=e[46]<<24|e[47]>>>8,U=e[8]<<27|e[9]>>>5,W=e[9]<<27|e[8]>>>5,E=e[18]<<20|e[19]>>>12,P=e[19]<<20|e[18]>>>12,ie=e[29]<<7|e[28]>>>25,se=e[28]<<7|e[29]>>>25,N=e[38]<<8|e[39]>>>24,V=e[39]<<8|e[38]>>>24,z=e[48]<<14|e[49]>>>18,j=e[49]<<14|e[48]>>>18,e[0]=p^~b&v,e[1]=g^~y&k,e[10]=S^~E&q,e[11]=_^~P&C,e[20]=D^~I&B,e[21]=F^~R&L,e[30]=U^~$&K,e[31]=W^~Y&X,e[40]=ae^~re&ie,e[41]=te^~ne&se,e[2]=b^~v&w,e[3]=y^~k&x,e[12]=E^~q&A,e[13]=P^~C&T,e[22]=I^~B&N,e[23]=R^~L&V,e[32]=$^~K&J,e[33]=Y^~X&Q,e[42]=re^~ie&oe,e[43]=ne^~se&le,e[4]=v^~w&z,e[5]=k^~x&j,e[14]=q^~A&M,e[15]=C^~T&O,e[24]=B^~N&H,e[25]=L^~V&G,e[34]=K^~J&Z,e[35]=X^~Q&ee,e[44]=ie^~oe&ce,e[45]=se^~le&ue,e[6]=w^~z&p,e[7]=x^~j&g,e[16]=A^~M&S,e[17]=T^~O&_,e[26]=N^~H&D,e[27]=V^~G&F,e[36]=J^~Z&U,e[37]=Q^~ee&W,e[46]=oe^~ce&ae,e[47]=le^~ue&te,e[8]=z^~p&b,e[9]=j^~g&y,e[18]=M^~S&E,e[19]=O^~_&P,e[28]=H^~D&I,e[29]=G^~F&R,e[38]=Z^~U&$,e[39]=ee^~W&Y,e[48]=ce^~ae&re,e[49]=ue^~te&ne,e[0]^=f[r],e[1]^=f[r+1]};if(u)e.exports=M;else{for(D=0;De.length)&&(a=e.length);for(var t=0,r=Array(a);tg}for(var f=0;f0||!Array.isArray(a)&&a?c({},e,a):{}}var j={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,rotateBy:!1,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1,widthAuto:!1},S=o.a.forwardRef(function(e,a){var t=d(d({},j),e),n=t.icon,i=t.mask,s=t.symbol,o=t.className,l=t.title,c=t.titleId,u=t.maskId,h=x(n),p=z("classes",[].concat(m(y(t)),m((o||"").split(" ")))),g=z("transform","string"===typeof t.transform?r.b.transform(t.transform):t.transform),f=z("mask",x(i)),b=Object(r.a)(h,d(d(d(d({},p),g),f),{},{symbol:s,title:l,titleId:c,maskId:u}));if(!b)return function(){var e;!w&&console&&"function"===typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find icon",h),null;var v=b.abstract,k={ref:a};return Object.keys(t).forEach(function(e){j.hasOwnProperty(e)||(k[e]=t[e])}),_(v[0],k)});S.displayName="FontAwesomeIcon",S.propTypes={beat:i.a.bool,border:i.a.bool,beatFade:i.a.bool,bounce:i.a.bool,className:i.a.string,fade:i.a.bool,flash:i.a.bool,mask:i.a.oneOfType([i.a.object,i.a.array,i.a.string]),maskId:i.a.string,fixedWidth:i.a.bool,inverse:i.a.bool,flip:i.a.oneOf([!0,!1,"horizontal","vertical","both"]),icon:i.a.oneOfType([i.a.object,i.a.array,i.a.string]),listItem:i.a.bool,pull:i.a.oneOf(["right","left"]),pulse:i.a.bool,rotation:i.a.oneOf([0,90,180,270]),rotateBy:i.a.bool,shake:i.a.bool,size:i.a.oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:i.a.bool,spinPulse:i.a.bool,spinReverse:i.a.bool,symbol:i.a.oneOfType([i.a.bool,i.a.string]),title:i.a.string,titleId:i.a.string,transform:i.a.oneOfType([i.a.string,i.a.object]),swapOpacity:i.a.bool,widthAuto:i.a.bool};var _=function e(a,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"===typeof t)return t;var n=(t.children||[]).map(function(t){return e(a,t)}),i=Object.keys(t.attributes||{}).reduce(function(e,a){var r=t.attributes[a];switch(a){case"class":e.attrs.className=r,delete t.attributes.class;break;case"style":e.attrs.style=r.split(";").map(function(e){return e.trim()}).filter(function(e){return e}).reduce(function(e,a){var t,r=a.indexOf(":"),n=v(a.slice(0,r)),i=a.slice(r+1).trim();return n.startsWith("webkit")?e[(t=n,t.charAt(0).toUpperCase()+t.slice(1))]=i:e[n]=i,e},{});break;default:0===a.indexOf("aria-")||0===a.indexOf("data-")?e.attrs[a.toLowerCase()]=r:e.attrs[v(a)]=r}return e},{attrs:{}}),s=r.style,o=void 0===s?{}:s,l=function(e,a){if(null==e)return{};var t,r,n=function(e,a){if(null==e)return{};var t={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==a.indexOf(r))continue;t[r]=e[r]}return t}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r0&&void 0!==arguments[0]?arguments[0]:"light")?{main:f[200],light:f[50],dark:f[400]}:{main:f[700],light:f[400],dark:f[800]}}(a),z=e.secondary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:m[200],light:m[50],dark:m[400]}:{main:m[500],light:m[300],dark:m[700]}}(a),j=e.error||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:p[500],light:p[300],dark:p[700]}:{main:p[700],light:p[400],dark:p[800]}}(a),S=e.info||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:b[400],light:b[300],dark:b[700]}:{main:b[700],light:b[500],dark:b[900]}}(a),_=e.success||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:y[400],light:y[300],dark:y[700]}:{main:y[800],light:y[500],dark:y[900]}}(a),E=e.warning||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:g[400],light:g[300],dark:g[700]}:{main:"#ed6c02",light:g[500],dark:g[900]}}(a);function P(e){return Object(u.getContrastRatio)(e,w.text.primary)>=t?w.text.primary:k.text.primary}const q=e=>{let{color:a,name:t,mainShade:n=500,lightShade:s=300,darkShade:l=700}=e;if(a=Object(r.a)({},a),!a.main&&a[n]&&(a.main=a[n]),!a.hasOwnProperty("main"))throw new Error(Object(i.a)(11,t?" (".concat(t,")"):"",n));if("string"!==typeof a.main)throw new Error(Object(i.a)(12,t?" (".concat(t,")"):"",JSON.stringify(a.main)));return x(a,"light",s,o),x(a,"dark",l,o),a.contrastText||(a.contrastText=P(a.main)),a},C={dark:w,light:k};return Object(s.a)(Object(r.a)({common:Object(r.a)({},d),mode:a,primary:q({color:c,name:"primary"}),secondary:q({color:z,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:q({color:j,name:"error"}),warning:q({color:E,name:"warning"}),info:q({color:S,name:"info"}),success:q({color:_,name:"success"}),grey:h,contrastThreshold:t,getContrastText:P,augmentColor:q,tonalOffset:o},C[a]),l)}const j=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];const S={textTransform:"uppercase"},_='"Roboto", "Helvetica", "Arial", sans-serif';function E(e,a){const t="function"===typeof a?a(e):a,{fontFamily:i=_,fontSize:o=14,fontWeightLight:l=300,fontWeightRegular:c=400,fontWeightMedium:u=500,fontWeightBold:d=700,htmlFontSize:h=16,allVariants:m,pxToRem:p}=t,g=Object(n.a)(t,j);const f=o/14,b=p||(e=>"".concat(e/h*f,"rem")),y=(e,a,t,n,s)=>{return Object(r.a)({fontFamily:i,fontWeight:e,fontSize:b(a),lineHeight:t},i===_?{letterSpacing:"".concat((o=n/a,Math.round(1e5*o)/1e5),"em")}:{},s,m);var o},v={h1:y(l,96,1.167,-1.5),h2:y(l,60,1.2,-.5),h3:y(c,48,1.167,0),h4:y(c,34,1.235,.25),h5:y(c,24,1.334,0),h6:y(u,20,1.6,.15),subtitle1:y(c,16,1.75,.15),subtitle2:y(u,14,1.57,.1),body1:y(c,16,1.5,.15),body2:y(c,14,1.43,.15),button:y(u,14,1.75,.4,S),caption:y(c,12,1.66,.4),overline:y(c,12,2.66,1,S),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return Object(s.a)(Object(r.a)({htmlFontSize:h,pxToRem:b,fontFamily:i,fontSize:o,fontWeightLight:l,fontWeightRegular:c,fontWeightMedium:u,fontWeightBold:d},v),g,{clone:!1})}function P(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}var q=["none",P(0,2,1,-1,0,1,1,0,0,1,3,0),P(0,3,1,-2,0,2,2,0,0,1,5,0),P(0,3,3,-2,0,3,4,0,0,1,8,0),P(0,2,4,-1,0,4,5,0,0,1,10,0),P(0,3,5,-1,0,5,8,0,0,1,14,0),P(0,3,5,-1,0,6,10,0,0,1,18,0),P(0,4,5,-2,0,7,10,1,0,2,16,1),P(0,5,5,-3,0,8,10,1,0,3,14,2),P(0,5,6,-3,0,9,12,1,0,3,16,2),P(0,6,6,-3,0,10,14,1,0,4,18,3),P(0,6,7,-4,0,11,15,1,0,4,20,3),P(0,7,8,-4,0,12,17,2,0,5,22,4),P(0,7,8,-4,0,13,19,2,0,5,24,4),P(0,7,9,-4,0,14,21,2,0,5,26,4),P(0,8,9,-5,0,15,22,2,0,6,28,5),P(0,8,10,-5,0,16,24,2,0,6,30,5),P(0,8,11,-5,0,17,26,2,0,6,32,5),P(0,9,11,-5,0,18,28,2,0,7,34,6),P(0,9,12,-6,0,19,29,2,0,7,36,6),P(0,10,13,-6,0,20,31,3,0,8,38,7),P(0,10,13,-6,0,21,33,3,0,8,40,7),P(0,10,14,-6,0,22,35,3,0,8,42,7),P(0,11,14,-7,0,23,36,3,0,9,44,8),P(0,11,15,-7,0,24,38,3,0,9,46,8)];const C=["duration","easing","delay"],A={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},T={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function M(e){return"".concat(Math.round(e),"ms")}function O(e){if(!e)return 0;const a=e/36;return Math.round(10*(4+15*a**.25+a/5))}function D(e){const a=Object(r.a)({},A,e.easing),t=Object(r.a)({},T,e.duration);return Object(r.a)({getAutoHeightDuration:O,create:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{duration:i=t.standard,easing:s=a.easeInOut,delay:o=0}=r;Object(n.a)(r,C);return(Array.isArray(e)?e:[e]).map(e=>"".concat(e," ").concat("string"===typeof i?i:M(i)," ").concat(s," ").concat("string"===typeof o?o:M(o))).join(",")}},e,{easing:a,duration:t})}var F={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};const I=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function R(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{mixins:a={},palette:t={},transitions:u={},typography:d={}}=e,h=Object(n.a)(e,I);if(e.vars&&void 0===e.generateCssVars)throw new Error(Object(i.a)(18));const m=z(t),p=Object(c.a)(e);let g=Object(s.a)(p,{mixins:(f=p.breakpoints,b=a,Object(r.a)({toolbar:{minHeight:56,[f.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[f.up("sm")]:{minHeight:64}}},b)),palette:m,shadows:q.slice(),typography:E(m,d),transitions:D(u),zIndex:Object(r.a)({},F)});var f,b;g=Object(s.a)(g,h);for(var y=arguments.length,v=new Array(y>1?y-1:0),k=1;kObject(s.a)(e,a),g),g.unstable_sxConfig=Object(r.a)({},o.a,null==h?void 0:h.unstable_sxConfig),g.unstable_sx=function(e){return Object(l.a)({sx:e,theme:this})},g}const B=R();a.a=B},,function(e,a){var t,r,n=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function o(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(a){try{return t.call(null,e,0)}catch(a){return t.call(this,e,0)}}}!function(){try{t="function"===typeof setTimeout?setTimeout:i}catch(e){t=i}try{r="function"===typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var l,c=[],u=!1,d=-1;function h(){u&&l&&(u=!1,l.length?c=l.concat(c):d=-1,c.length&&m())}function m(){if(!u){var e=o(h);u=!0;for(var a=c.length;a;){for(l=c,c=[];++d1)for(var t=1;t>>7)^(p<<14|p>>>18)^p>>>3,f=c[m-2],b=(f<<15|f>>>17)^(f<<13|f>>>19)^f>>>10;c[m]=g+c[m-7]+b+c[m-16]}var y=r&n^r&i^n&i,v=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),k=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&u^~o&d)+l[m]+c[m];h=d,d=u,u=o,o=s+k|0,s=i,i=n,n=r,r=k+(v+y)|0}t[0]=t[0]+r|0,t[1]=t[1]+n|0,t[2]=t[2]+i|0,t[3]=t[3]+s|0,t[4]=t[4]+o|0,t[5]=t[5]+u|0,t[6]=t[6]+d|0,t[7]=t[7]+h|0},_doFinalize:function(){var a=this._data,t=a.words,r=8*this._nDataBytes,n=8*a.sigBytes;return t[n>>>5]|=128<<24-n%32,t[14+(n+64>>>9<<4)]=e.floor(r/4294967296),t[15+(n+64>>>9<<4)]=r,a.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=i._createHelper(u),t.HmacSHA256=i._createHmacHelper(u)}(Math),a.SHA256)}()},function(e,a,t){!function(){var a;e.exports=(a=t(5),void function(){var e=a,t=e.lib.Base,r=e.enc.Utf8;e.algo.HMAC=t.extend({init:function(e,a){e=this._hasher=new e.init,"string"==typeof a&&(a=r.parse(a));var t=e.blockSize,n=4*t;a.sigBytes>n&&(a=e.finalize(a)),a.clamp();for(var i=this._oKey=a.clone(),s=this._iKey=a.clone(),o=i.words,l=s.words,c=0;c0?r:t)(e)}},function(e,a,t){var r=t(102)("keys"),n=t(70);e.exports=function(e){return r[e]||(r[e]=n(e))}},function(e,a,t){var r=t(21),n=t(29),i="__core-js_shared__",s=n[i]||(n[i]={});(e.exports=function(e,a){return s[e]||(s[e]=void 0!==a?a:{})})("versions",[]).push({version:r.version,mode:t(69)?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,a){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,a){a.f=Object.getOwnPropertySymbols},function(e,a){e.exports={}},function(e,a,t){var r=t(60),n=t(215),i=t(103),s=t(101)("IE_PROTO"),o=function(){},l="prototype",c=function(){var e,a=t(124)("iframe"),r=i.length;for(a.style.display="none",t(216).appendChild(a),a.src="javascript:",(e=a.contentWindow.document).open(),e.write("