diff --git a/package-lock.json b/package-lock.json index 944c209..9d91fc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "project-management", "version": "0.0.0", "dependencies": { + "@emailjs/browser": "^4.3.3", "axios": "^1.6.8", "dayjs": "^1.11.11", "firebase": "^10.12.0", @@ -17,12 +18,18 @@ "match-sorter": "^6.3.4", "react": "^18.2.0", "react-calendar": "^5.0.0", + "react-countup": "^6.5.3", "react-dom": "^18.2.0", + "react-fast-marquee": "^1.6.4", "react-icons": "^5.2.1", "react-router-dom": "^6.23.0", + "react-scroll": "^1.9.0", + "react-scroll-trigger": "^0.6.14", "react-slick": "^0.30.2", "react-sweetalert2": "^0.6.0", "react-toastify": "^10.0.5", + "recharts": "^2.12.7", + "recharts": "^2.12.7", "sort-by": "^0.0.2" }, "devDependencies": { @@ -404,6 +411,14 @@ "node": ">=6.9.0" } }, + "node_modules/@emailjs/browser": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@emailjs/browser/-/browser-4.3.3.tgz", + "integrity": "sha512-ltpt2S/WVREIBXptxYAVYBvXb2O6yTUYiRUWF8OLikMxlmiGsIgKpgHppikNd4Df0uAav7jCsQKcOJ3TJFUx5g==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@esbuild/win32-x64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", @@ -1318,6 +1333,114 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -1335,14 +1458,14 @@ "node_modules/@types/prop-types": { "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", - "devOptional": true + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", "devOptional": true, + "devOptional": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1357,6 +1480,11 @@ "@types/react": "*" } }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -1868,6 +1996,11 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, + "node_modules/clean-react-props": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/clean-react-props/-/clean-react-props-0.4.0.tgz", + "integrity": "sha512-8KKm9sC/cUax4SBWwSY5a3W44aJKOUQg39Bo3fRErp3/mF8D1kMN9xc1lvQGmvkK/AmpH2Xh/UYVZOJMcxoy9w==" + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2000,6 +2133,11 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/countup.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz", + "integrity": "sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2039,8 +2177,7 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/culori": { "version": "3.3.0", @@ -2051,6 +2188,226 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, "node_modules/daisyui": { "version": "4.11.1", "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.11.1.tgz", @@ -2143,6 +2500,16 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2215,6 +2582,24 @@ "node": ">=6.0.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2755,12 +3140,38 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -3353,6 +3764,22 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -3929,6 +4356,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -3945,6 +4382,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -4161,7 +4603,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4635,7 +5076,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4734,6 +5174,17 @@ } } }, + "node_modules/react-countup": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-6.5.3.tgz", + "integrity": "sha512-udnqVQitxC7QWADSPDOxVWULkLvKUWrDapn5i53HE4DPRVgs+Y5rr4bo25qEl8jSh+0l2cToJgGMx+clxPM3+w==", + "dependencies": { + "countup.js": "^2.8.0" + }, + "peerDependencies": { + "react": ">= 16.3.0" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -4746,6 +5197,15 @@ "react": "^18.3.1" } }, + "node_modules/react-fast-marquee": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/react-fast-marquee/-/react-fast-marquee-1.6.4.tgz", + "integrity": "sha512-LAgvhRmHdqaUQ8R5jCUwzEGFUIjnCCt3T3W8X7j7wF6DWe0SATlpP0JX1V0pp2qX3DYUezmn1Iz5AtRFdL2EWQ==", + "peerDependencies": { + "react": ">= 16.8.0 || 18.0.0", + "react-dom": ">= 16.8.0 || 18.0.0" + } + }, "node_modules/react-icons": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", @@ -4757,8 +5217,7 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-refresh": { "version": "0.14.2", @@ -4799,6 +5258,57 @@ "react-dom": ">=16.8" } }, + "node_modules/react-scroll": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/react-scroll/-/react-scroll-1.9.0.tgz", + "integrity": "sha512-mamNcaX9Ng+JeSbBu97nWwRhYvL2oba+xR2GxvyXsbDeGP+gkYIKZ+aDMMj/n20TbV9SCWm/H7nyuNTSiXA6yA==", + "dependencies": { + "lodash.throttle": "^4.1.1", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-scroll-trigger": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/react-scroll-trigger/-/react-scroll-trigger-0.6.14.tgz", + "integrity": "sha512-Z7l9CMJTU4uPArv/3XaJzCtSej+JeLpbev1X7JxAmZwGf16ya5mxqjeeQ/5O4thvOVK0ZWhgyQf52tH1hg1O7Q==", + "dependencies": { + "@types/react": "^16.14.23", + "@types/react-dom": "^16.9.14", + "clean-react-props": "^0.4.0", + "lodash.throttle": "^4.1.1", + "prop-types": "^15.8.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ryanhefner" + }, + "peerDependencies": { + "react": ">=15", + "react-dom": ">=15" + } + }, + "node_modules/react-scroll-trigger/node_modules/@types/react": { + "version": "16.14.60", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.60.tgz", + "integrity": "sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "^0.16", + "csstype": "^3.0.2" + } + }, + "node_modules/react-scroll-trigger/node_modules/@types/react-dom": { + "version": "16.9.24", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.24.tgz", + "integrity": "sha512-Gcmq2JTDheyWn/1eteqyzzWKSqDjYU6KYsIvH7thb7CR5OYInAWOX+7WnKf6PaU/cbdOc4szJItcDEJO7UGmfA==", + "dependencies": { + "@types/react": "^16" + } + }, "node_modules/react-slick": { "version": "0.30.2", "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.30.2.tgz", @@ -4815,6 +5325,34 @@ "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-sweetalert2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/react-sweetalert2/-/react-sweetalert2-0.6.0.tgz", @@ -4839,6 +5377,36 @@ "react-dom": ">=18" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4860,6 +5428,66 @@ "node": ">=8.10.0" } }, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.12.7.tgz", + "integrity": "sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^16.10.2", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -5562,6 +6190,16 @@ "node": ">=0.8" } }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -5767,6 +6405,48 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "5.2.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", diff --git a/package.json b/package.json index 96381db..c3bfc0e 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@emailjs/browser": "^4.3.3", "axios": "^1.6.8", "dayjs": "^1.11.11", "firebase": "^10.12.0", @@ -19,12 +20,17 @@ "match-sorter": "^6.3.4", "react": "^18.2.0", "react-calendar": "^5.0.0", + "react-countup": "^6.5.3", "react-dom": "^18.2.0", + "react-fast-marquee": "^1.6.4", "react-icons": "^5.2.1", "react-router-dom": "^6.23.0", + "react-scroll": "^1.9.0", + "react-scroll-trigger": "^0.6.14", "react-slick": "^0.30.2", "react-sweetalert2": "^0.6.0", "react-toastify": "^10.0.5", + "recharts": "^2.12.7", "sort-by": "^0.0.2" }, "devDependencies": { diff --git a/public/banner.png b/public/banner.png new file mode 100644 index 0000000..4a422ed Binary files /dev/null and b/public/banner.png differ diff --git a/public/dnd.json b/public/dnd.json new file mode 100644 index 0000000..0f7f7c6 --- /dev/null +++ b/public/dnd.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.4.4","a":"","k":"","d":"","tc":""},"fr":24,"ip":0,"op":43,"w":800,"h":584,"nm":"Main","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Tick","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197.5,422,0],"ix":2},"a":{"a":0,"k":[-206.5,21,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-236,21],[-217,41],[-177,1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":13,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Text 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[362.254,437.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[59.428,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Text 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[409.414,391.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":8,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Tick Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.174,419.598,0],"ix":2},"a":{"a":0,"k":[-200.367,21.598,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[94.063,94.063],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.392156862745,0.670588235294,0.372549019608,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.392156862745,0.670588235294,0.372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-200.367,21.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Card","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[401.403,416.956,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[578.312,172.85],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.239,1.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":2,"ty":4,"nm":"Text 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[362.254,437.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[59.428,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Text 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[409.414,391.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":8,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Tick Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.174,419.598,0],"ix":2},"a":{"a":0,"k":[-200.367,21.598,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[94.063,94.063],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-200.367,21.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Card","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[401.403,416.956,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[578.312,172.85],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.985,1.532],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Tick 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197.5,422,0],"ix":2},"a":{"a":0,"k":[-206.5,21,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-236,21],[-217,41],[-177,1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":13,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":16,"op":256,"st":16,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Tick","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[197.5,422,0],"ix":2},"a":{"a":0,"k":[-206.5,21,0],"ix":1},"s":{"a":0,"k":[90,90,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-236,21],[-217,41],[-177,1]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.392274415259,0.671829044118,0.371873025333,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":13,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.768],"y":[1]},"o":{"x":[0.707],"y":[0]},"t":9,"s":[0]},{"t":15,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":9,"op":249,"st":9,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Text 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[362.254,437.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[59.428,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Text 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[409.414,391.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":8,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Tick Circle 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.174,419.598,0],"ix":2},"a":{"a":0,"k":[-200.367,21.598,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[94.063,94.063],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.392156862745,0.670588235294,0.372549019608,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.392156862745,0.670588235294,0.372549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-200.367,21.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":16,"op":256,"st":16,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Tick Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.174,419.598,0],"ix":2},"a":{"a":0,"k":[-200.367,21.598,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[94.063,94.063],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-200.367,21.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Card","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[401.403,416.956,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[578.312,172.85],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-1.403,0.876],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":2,"ty":4,"nm":"Text 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[362.254,437.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[59.428,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Text 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[409.414,391.21,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[352.758,22.038],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":8,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.627445774452,0.738332830691,0.901639093137,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.377,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Tick Circle","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[199.174,419.598,0],"ix":2},"a":{"a":0,"k":[-200.367,21.598,0],"ix":1},"s":{"a":0,"k":[105,105,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[94.063,94.063],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-200.367,21.598],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Card","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[401.403,416.956,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[578.312,172.85],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.503109382181,0.636268466127,0.882567401961,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-1.145,1.603],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Mask Top","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":13.421,"s":[396.359,331.018,0],"to":[0,3.176,0],"ti":[0,-7.856,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15.789,"s":[396.359,413.355,0],"to":[0,10.281,0],"ti":[0,-4.157,0]},{"t":17.6845703125,"s":[396.359,375.018,0]}],"ix":2},"a":{"a":0,"k":[-2.148,-199.699,0],"ix":1},"s":{"a":0,"k":[169.492,169.492,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[439.703,124.602],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.120797923967,0.445023211311,0.922518382353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-2.148,-199.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Card","tt":1,"refId":"comp_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[100]},{"t":17.6845703125,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[400,241,0],"to":[0,-8.167,0],"ti":[0,8.167,0]},{"t":17.6845703125,"s":[400,192,0]}],"ix":2},"a":{"a":0,"k":[400,400,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":12,"s":[59,59,100]},{"t":17.6845703125,"s":[21,21,100]}],"ix":6}},"ao":0,"w":800,"h":800,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Mask Bottom","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.64},"o":{"x":0.333,"y":0},"t":15.737,"s":[397.852,478.301,0],"to":[0,-12.35,0],"ti":[0,30.774,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.88},"t":18,"s":[397.852,376.931,0],"to":[0,-26.537,0],"ti":[0,10.65,0]},{"t":20,"s":[397.852,340.301,0]}],"ix":2},"a":{"a":0,"k":[-2.148,-199.699,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15.737,"s":[100,100,100]},{"t":20,"s":[119,119,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[439.703,124.602],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.120797923967,0.445023211311,0.922518382353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-2.148,-199.699],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Card 3","tt":1,"refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15.737,"s":[400,401,0],"to":[0,-12.667,0],"ti":[0,12.667,0]},{"t":20,"s":[400,325,0]}],"ix":2},"a":{"a":0,"k":[400,400,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15.737,"s":[61,61,100]},{"t":20,"s":[77,77,100]}],"ix":6}},"ao":0,"w":800,"h":800,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Mask Middle","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":13.895,"s":[400,400,0],"to":[0,-25.667,0],"ti":[0,25.667,0]},{"t":20,"s":[400,246,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[488.445,157.34],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.323881740196,0.371607701919,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.223,-62.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"Card 2","tt":1,"refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":13.895,"s":[400,326,0],"to":[0,-14,0],"ti":[0,14,0]},{"t":19.5791015625,"s":[400,242,0]}],"ix":2},"a":{"a":0,"k":[400,400,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":13.895,"s":[78,78,100]},{"t":19.5791015625,"s":[59,59,100]}],"ix":6}},"ao":0,"w":800,"h":800,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Mask4","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[400,404,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[457,129.281],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.527291271733,0.729595588235,0.512527525659,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.323881740196,0.371607701919,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.5,74.641],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":0,"nm":"Card 4","tt":1,"refId":"comp_3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[0]},{"t":22,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[400,554,0],"to":[0,-25.333,0],"ti":[0,25.333,0]},{"t":22,"s":[400,402,0]}],"ix":2},"a":{"a":0,"k":[400,400,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":18,"s":[48,48,100]},{"t":22,"s":[60,60,100]}],"ix":6}},"ao":0,"w":800,"h":800,"ip":0,"op":240,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/public/document (1).pdf b/public/document (1).pdf new file mode 100644 index 0000000..7def912 Binary files /dev/null and b/public/document (1).pdf differ diff --git a/public/document (2).pdf b/public/document (2).pdf new file mode 100644 index 0000000..ae97d28 Binary files /dev/null and b/public/document (2).pdf differ diff --git a/public/document.pdf b/public/document.pdf new file mode 100644 index 0000000..ef4d7e3 Binary files /dev/null and b/public/document.pdf differ diff --git a/public/pdf.json b/public/pdf.json new file mode 100644 index 0000000..ecd4918 --- /dev/null +++ b/public/pdf.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.5.3","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":150,"w":500,"h":500,"nm":"Comp 2","ddd":0,"assets":[{"id":"image_0","w":512,"h":512,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdeXxd9X3n/9e595x7td2rfbFkJHnBFpYtbBYnQEhsSIA0aYAsZAFCyLSdKaRtMtPfpLidGZtfZ9JMF6CTSdJOp7FJm61twhogLLHZbDCLMRgMeJEDtmVb+3Klu5xz5o9z77XMasmSzl3ez8fjPiRh6fp7DPj7Pp/z/X6+BrPM7ehoh+AabM7EcNvBaMegCmif7d9bREQkD3TjMghuN7AD3BcIhHcYu3d0z+ZvaszGm7ody9dgu5cT4Ao00YuIiExHNy6bCdibjN27N8/0m89YAHDbV1ZRkvo6Ln8EbtVMva+IiIjQjct6AtaWmaoMnHIA0MQvIiIyV4xBcDdiWLedahA4pQDgntH5dRzjv2niFxERmVPduKw3Xtu1abpvMK0A4HasbMdN/gBYM93fWERERE5ZN4a1djrVgMBUf8A9o/PruKnn0eQvIiLit3ac5PPu0jO+PtUfnFIFwF26/FZw/2iqv4mIiIjMMsPdYOx+ef1Jf/vJfqPb0bkRl+umNSgRERGZfS4bjdd2XX8y33pSAcBd0vk8BitPbVQiIiIy61x2GK/tWvV+3/a+awDcjs6NmvxFRETyhMFKd0nnD97v294zALgdy9er7C8iIpJnDL7iLu285b2/5V14e/x5zx8WERGRXOZ8w3j1lVvf6VfeMQB4+/xTz6vBj4iISB5zGSRgrXqnPgHv/AjATf5ak7+IiEieM6hKN+57m7cFALej8yvoBD8REZFCseadGgWd8Agg3eL31ygAiIiIFA6XQRLWAqN7x2DmH51YAXBTX0eTv4iISGExqCKU+KMT/1Fa+u7/eUDP/kVERArNW6oAkyoAyTVo8hcRESlMb6kCHA8ALv/NlwGJiIjIHDGyiwEDAG7H8jXo2b+IiEhhM6hyOzrWQKYC4Lhq9ysiIlIM7ODlkAkABmv8HIuIiIjMkYB7BYCRXv2/3+/xiIiIyBxJOO0BHFtH/YqIiBQTK7AmAPaZfo9DRERE5pDLygAEVAEQEREpJobbHsBw2/0eh4iIiMwhg/YA6v4nIiJSbKoCqAGQiIhIkTHaA+/7PSIiIlJwFABERESKkAKAiIhIEVIAEBERKUIKACIiIkVIAUBERKQIKQCIiIgUIQUAERGRIqQAICIiUoQUAERERIqQAoCIiEgRUgAQEREpQgoAIiIiRUgBQEREpAgpAIiIiBQhBQAREZEipAAgIiJShBQAREREipACgIiISBFSABARESlCCgAiIiJFSAFARESkCCkAiIiIFCEFABERkSKkACAiIlKEFABERESKkAKAiIhIEVIAEBERKUIKACIiIkVIAUBERKQIKQCIiIgUIQUAERGRIqQAICIiUoQUAERERIqQAoCIiEgRUgAQEREpQgoAIiIiRUgBQEREpAgpAIiIiBQhBQAREZEipAAgIiJShBQAREREipACgIiISBFSABARESlCpt8DEMkplgXVVVA16RUKQVmZ3yOTYpVMwuAgDAzAoUNw9JjfI5ICYbhLO12/ByHiK8uChnpYssSb8C3L7xGJvLvBQXh6u/dR5BQoAEjxsixv0l9yuiZ9yT+7XoZdu/weheQxPQKQ4qOJXwpB5zLv0dT27X6PRPKUAoAUl+Zm+MBqTfxSGBa0ex8VAmQaFACkOFgWdHZ6d/0ihWRBu7dQcMcOv0cieUYBQApfeTmcf763ul+kEC053QsBWhMgU6AAIIWtvBzWrIFybeOTAte5zPuoECAnSY2ApHBp8pdi07nMe9QlchIUAKQwafKXYqUQICdJAUAKj2Vp8pfiphAgJ0EBQApPZ6cmf5HOZdDW5vcoJIcpAEhhaW/XVj+RjA+sVgiQd6UAIIWjvFxlT5G3UgiQd6EAIIWjvV2lf5F3smqVd9CVyCQKAFIYysuP74MWkROF0gtjFQJkEgUAKQya/EXem0KAvIUCgBSG+ga/RyCS+0IWXHC+d4qgFD0FAMl/evYvcvLKy2HtGoUAUQCQAtDS7PcIRPKLQoCgACCFoEHlf5EpUwgoegoAkt8a6r3WvyIydQoBRU0BQPKbVjSLnJrycrjgAgXpIqQAIPmtvt7vEYjkv+oqb4ugQkBRMdylna7fgxA5aeGwV/avr/Mm//Z2CIXBDPo9MilWrguJJCQTMBGHeNzvEU3fwCBs3gzJpN8jkTmgACC5LxyG0+bDqpXepB8O+z0ikXeXSMLgACRTfo9keg4ehCee9HsUMgcUACR3hcNw1ipv4tekL/lmZASGR/wexfTs74bt2/0ehcwy0+8BiLyNJn4pBJEIBINeWT3fLGj3PioEFDQFAMktixbBpR/TxC+FIbO9Ll9DQCwGu3b5PRKZJQoAkhvCYTjvg95dv0ghKSsDx4GhYb9HMnWZQ7YUAgqSAoD4LxqFT31SW/qkcFVUeLsF8nFNgEJAwVIAEH9Fo/C5z3gfRQpZJOJ9VAiQHKFGQOIfTf5SbCIRiEb8HsX0dC6Dzk6/RyEzSAFA/KHJX4pVvoeA00/3exQyQxQAZO6Fw5r8pbjlcwhYtRLa2vwehcwABQCZe+d9UJO/SCQCZaV+j2J6PrBaIaAAKADI3Opcpq1+IhnV1fkdArRzJ68pAMjciUbhgx/wexQiuSWfQ8AFF+hI7jymACBzp3OZSv8i76SyEqw83JUdsrxjhBUC8pICgMwN3f2LvLtAAOrq8jsEZNoeS95QAJC5cZ4mf5H3lO8hYO0ahYA8owAgc2P+fL9HIJL7AgGorQUz6PdIpq68XCEgzygAyOzTs3+RkxcMepUAhQCZZQoAMvsWLfR7BCL5RSFA5oACgMw+lf9Fpk4hQGaZAoDMrtPme61/RWTq8j0EXHABWJbfI5F3oQAgs6u+zu8RiOS3YNBrFmQYfo9k6qqrvC2CCgE5yXCXdrp+D0LyXCQCZ3R4r46l0NHhLfprafZ7ZFKs4gno64W+ftjfDYcP+z2iU5dIQG8fuHn4V/bAIDz4oN+jkLdQAJDpiUTgA+fCl6/1Jv5Inp5sJsWhrw9+vcX7mM/yOQTs74bt2/0ehUyiACBTE4nAddd6L036km+eeRaefc7vUZya8XHoH/B7FNOjEJBT8rDllPhCE78UgnPO9v773bzF75FMX2kpVLteWT3fLGj3PioE5AQFAHl/F18Ef/HfNfFLYVi6xPuYzyEgs70uX0NALAa7dvk9kqKnACDvLhKBP7jBe84vUkiWLoF4HLZu83sk01dWBrYNwyN+j2TqOpd5HxUCfKUAIO+spQW+c5u3wE+kEHWt8BbV5fOagExVTiFApkEBQN6upQVu/4G28UnhO+ds76NCgD8UAnylRkByIk3+UmzOORvOPsvvUZyaSASiebpGp3MZdHb6PYqipAAgx2nyl2KlEOCvzmXQ1ub3KIqOAoB4IhFN/lLcCiUElJf7PYrp+cBqhYA5pgAgnj+4QZO/yDlnH98mmK+qKqGs1O9RTI9CwJxSABC48gpt9RPJWPOR/A8B1dX5GwJWrYKqKr9HURQUAIpdSwt87Qa/RyGSWwolBIRDfo9i6kKWd4KgQsCsUwAodldertK/yDs57zyorfV7FKempgasPNztrRAwJxQAipnu/kXeXTgEv/3J/A4BgQDU1eVvCLjg/ONtj2XGKQAUM03+Iu+tkEKAGfR7JFNXXg5r1ygEzBIFgGK2+ly/RyCS+8IhuPSS/D4MSyFA3oECQLG68go9+xc5WZEKrxKQzyEgGFQIkBMoABSrj17k9whE8otCgL8UAmacAkCxUvlfZOoUAvyVCQGW5fdICoICQDFafW5+/wUm4ieFAH+Vl3tbBBUCTpkCQDE6o8PvEYjkt0gFXPqx/Gy0kxEMes2CDMPvkUxddZVCwAxQAChGKv+LnLraWq8SkM8hIBSCutr8DQEXXOD3KPKaAkAxyufSpUguKaQQkI8a6uFc3dBMlwJAMWpp8XsEIoWjthY+8hG/R3FqQiHvjjofLWiHlSv9HkVeUgAoRtr/LzKzFrR7Bwjls7Ky/A0BS06H+nq/R5F3FABERGbC0iUKAX7q7PR7BHlHAUBEZKYsXQJnn+X3KE5NWRlE83CdUEO9qgBTpAAgIjKTzjk7/0NAJJKfIUCPN6dEAUBEZKYpBPijocHvEeQVBQARkdmgEDD3ysr9HkFeUQAQEZktCgFzK6TOgFOhACAiMpvOORtWLPd7FKcmEoGyUr9HITNMAUBEZLadf563QyCfVVcrBBQYBQARkbmw5iMKAZJTFABERObKmo/AvHl+j+LUVFaCZfo9CpkBCgAiInPp0ku88wPyVSAAdXUKAQVAAUBEZC6FQ94JggoB4jMFABGRuZYJAfl8NHcg4IUYM+j3SGSaFABERPxQCCEgGPQqAQoBeUkBQETEL5EKhQDxjQKAiIifFALEJwoAIiJ+UwgQHygAiIjkgkIKAYbh90jkJCgAiIjkikgFXPoxb4FgvgoGoa5WISAPKACIiOSS2lqvEpDPISAUUgjIAwoAIiK5JhMC8lkoBLU1fo9C3oMCgIhILqqt9c4OyGfhMFRX+T0KeRcKACIiuWrpkvwPAWVlUBn1exTyDhQARERyWSGEgIqK/F7TUKAUAEREct3SJXD2WX6P4tTk8/bGAqWjnCS/XHwJHDw08+8bicD8Fu/jGR2w+lzvdSp/af3iDrjpz2ZujAAtzRCNeh9bWrwxdiz1Pp8Ns/XnPVW7X/J7BP4752zv47PP+TuO6QqHvSpAPOH3SCRNAUAEYGQEXtntff70dtj0Q+/zKy+HK6/wJtpccPCQ98qMNTPOTGj58jWzFwbEf3kfAkoUAHKIHgGIvJdf3Alfvt57HTzo92je3Su7vTBw8aXeWJ/e7veIZLacc3b+Pg7QOoCcogAgcjKe3u5Nrt/5rt8jeX9Pb/dCwE1/mtuhRaYvX0OAqaJzLlEAEJmK73wXvvUXfo/i5PziTrjys3D7D/0eicyGc872Fgfmk4CmnFyifxsiU7Xpn2Z+cd9sGR6B//Ht/KhcyNSt+Uj+hQDJGQoAItPxizvy6876O9/Nn9AiU6MQINOkACAyXf/j2/m12O4Xd+TP4wuZmvPO81oHi0yBAoDIqci30vqmf8qvyoWcnHDIOzxIIUCmQAFA5FQ8vT2/qgDghRbtDig8CgEyRdqTIYXvumvfuaNfpvnPqU7g3/ku3P6DU3uPuTQ84q0HmK0xX3mF16lQ5l44BJdeAnff4/33LfIeFACk8H352veekA4e8ibxX9wxvfffvdv7y3Ymep1/9CK46U/e+dcOHvQm7+3b4aFHTu0uPlO5mI0Oh1denjudE4tRpMKrBCgEyPvQIwCRlmb41p/D126Y3s8PT2ojfKoimT7/7/BafW46IHwTHn4AfvGv3t32dOXb+gU5eZkQoAN45D0oAIhkfO2G6d+57p6hADAVZ3ScWnDJx/ULcvIUAuR9KACITDbdyfSVV2d2HFPxtRumP+6HH5nZsUhuUQiQ96AAIDJZR8f0fm5keGbHMVVfu2F6Y5/uugfJH5kQoIN45C0UAEQmi0amt4J9OAcWW6375tR/ZnhEjwGKgUKAvAMFAJFCsfrc6ZV6/Vi/IHOvtlYhQE6gbYAib3XwkN8jmL6PXuSdAjgVM71+4eChmfszVD+BmVVbC5d8DO6+1++RSA5QABCZbLrl8JaWmR3HdHV0AFMMADNdAbjpT2fuvXa/NHPvJZ7mZu8Aoc1b/B6J+EyPAEQmm+6iuFy5U51OEMmF9Qsyt5YugfM+6PcoxGcKACIZ3/nu1MvnGbnS+e6MpVP/GZ0LUJy6VsC8eX6PQnykACAyMuId7XsqnfHOmOb2wVyhlrHF6Zyz/B6B+EhrAKTw7d799rvckRF48yDsfhUeevjUJsArr8j/RivDM3SWgeSX5mavCnD4sN8jER8oAEjhu/EPZ/f9r7x8dt9fZDYtaFcAKFJ6BCByKlafmzvP/09FVHf/RWtek98jEJ8oAIicim/9d79HcKLpruhX+b94RaJ+j0B8okcAItP1tRtyZ/tfxnTWMujuv7gVUWfAezsjGCuX8MvHXyGy9xj/gTBtZvFOg8V75SKn4lRO4JtNr0yjqU+uNDESmUUvNFokL+xg9bldLD27kaP9MTbuSpG881F+N+EUZRAovisWOVW5OvnD9Lr6zXQVIxcrI1K09pYH6K8vp7urkZXLTsdJjDAeG2Hhigv55iVn8MJH1/Cnf/9jlj32HOuilX4Pd04pAIicrEgE1v1Jbq/6n04r4+kegfxuCmVhpOS9gbDBUx+ez/K1q1lhwrGjByk1XaqaFhJpWAzAmSuW8g//az2/vvefOe/PfshPSquLphqgRYAiJ+O6a+GRX+X+5D+dQ3g0WUuB2nZ6hMYVi5jXUEXImKCy1KCi7TyS5acTTzgYhoFhGNijh6i3jtLWUcHvNDj8j+Ehv4c+JxQARN5NS7NXzt6+FW76Zu6vlJ/uOQYKAFKAdjRaDK9ewOkL24iPDxMb6Sc6bxnzF5xBa1sb4xMT9PUP4tpxjr72a+579BWWLG7mn779caJfWcAN8UGGXMfvy5hVxVHnkOJ2Ms+jI1Hv++a3QMdSWL06v55j/+KO6Z1j8NGLZn4sIj4bCBvsWtVE59JFhC2XgaPHCEUaqZrfSSBo8sbLW4g2L8cKlbB3+928uPNlXtw3xJ//x9VMxIZZszIC8Sou+3EPPymrK9hHAoV5VSKT3b4xvybzqXplt3eWwXRcfPHMjkUkBzy3vIHGFYtobqxhdKCHlOPS1LqKUGklIwd3UlnXwh9//Wtcedl5NEUm+LeHXuGyi1ZQUeowMjTC2OgwQ4NxfuviWv7LS6P8/yMVBRkCCu+KRIrFyAhs+uH0DzFqacntNQ0i07BxaIB1Dx3mwpEk/6mqijJnkMqW5ZTXtZIcHyIcNrHKIjQ1tfCjf72f01urqa6q4JNrF3Ho0CESsUF2vT5AMm7QUhXmzE/U8MudcX7/tYTflzbjtAZAJJ8cPOSV+7/1bbjoklM7wTBXtzKKTFP34CAb+no5fLSfn939GOdd9RdseizBeMlCDCNIfGA/ZkkVBEOcf8EHCJsB+gfGaChN8Pxzr1IWshkaGeONQ3FqyixqykO0tc9j9WfP4Lm2Er8vb8apAiCSSx56GJ5++u3/fHhkZo/s1d2/FKD1j26mO5nAMAxc16W6sY37th9ld88v+OMvreSsjloMM4QRDPPhiy7l4Xt/TtCJY7gOO57by+E3K6iuchmN2ZTg0NRQTTgaZah/jHmu6/flzTgFAJFcMjLDE/270d2/FJiNL+zg9hdewABc1yVcFqG+ZTEh08JNjtIQtTFLqyEQgmCIo/u28oXPfYpdL+9mfLCXmuooJdY4dnKY6vIQVWUmQwkom0hSsq2H038T9/sSZ5weAYgUm+uu1d2/FJTuwUE2bNmMi3eXHggEaGrrJBQqwbQsrrlkEe0LFmEEQxjBEKODR9n/4maOvfECnV0rMCtKiY0eoMIc5OCxFNVlFo3RMA3VZQz0jHDGC4XZF0ABQKSYnNHh9TQQKSDrt2yme2gQAwMXqGpoJVJZh2WZXLyyik+sXQHpyT9l27z46E9IJm3CZVXs27efxPCb1EZNBkZd7IkUVWUWdXVVRGuriTZWsK+xMA9MUgAQKRYtLfCdv/V7FCIzauMLO7h95wvZr8Ol5TS0LMGyTKJlFl/+5Aqs0iqMYBgCFnuee4DYSD+24zA0EeCN15+hNmpiBoK8cThJZZlFTXmYupYmEimXoX0DLDxSeDsAQAFApDic0QF3/Gth90OQotM9OMjNj27Jlv4Nw6CxrZNQSQmmafGFtc20L1yYvfs/cuAlDu19jmQqRUllC2++uZ+aaJBImUl3b5hIKEh1mUVDSyNuIEjvwBht244RGS/MjoAKACKF7rpr4fYf5H4rY5Ep2vDoZroHvdK/gZEu/ddjBU2aqiy++NurMQJhb/L/zcvs3nYntu0QCIY5dGyAQGKAukiQJ15J8v37+zkcK6eutpKyqipiE0nKnj7C4gMTfl/mrNEuAJFC1dIC3/pz9fqXgnTH7t1sfGFH+rm/S6ikjPqWJViWhWVZ/Pff6/JK/2aI+ESMAy9tIWXbJFM2h4/1MzDUT2t9iIFYgDu2jdA3HOdv/u0IE8Fzua7VYGj/AOcW6OK/DAUAkUITiXh3/dddq7t+KUiDExN848H7s5N/wAjQ2LqMcEkJlmXymQuqWLx0OQTDGIEQT/z6Tna+GuOsBRX0D/XQNzBIQ2WQilKTnzw4xsBoilR8AnD53r9sZyxu85/6xgu29J+hACBSKFafCxdfBJ++QhO/FLQNj27mwOBQ9tl/Zf18ojWNWJZJU3WIf//FtRjBMEbQoufALq7/z99leCzO1Vf9NkvKB6gogdqoxZO7Ezz16jipZBzHsQFwHQf7od0srK718xLnhAKASD5qafZK/Gd0eKcXfvRiTfpSFDYf6ObWp7Z5T/0NAytUSv38JVimhWlafP2zHVilVRC0iE+M8+1b/4Gh0TjhcCkdrVEmDo/TWG8xGDO4Y1sM13FIJY6v8m+zLNZFK328wrmjACD55faNU/8Zv1a+f/Ri71jhmTaX1zOdP++ogojMjsGJCa6/6w4Mw8C7+TdoaFtGSUkZlmVyUVclHzh3BQQsjGCYJzffzU/vf45AwODzV16MO/watVGTSKnFX905zMBIkmRiHFwHDAOAddFKWoPFMTUWx1VK4cinbWyRSP7flefTn7cUvPWPbubA0BCu62JgUFnbTGVNI6Zl0lQV4tpPriAYqsAIhjnym5f5s7+6ndh4ko5ly1jZZjB+bIjaKos7np7gtYNJ7FQSx7azk/815RVcXVbu81XOHW0DFBGRnLejp4fbntoGrrff3wyFaWjtwDJNLNPiS5cspH3RYoygRXwixl//r3/kpb3HCIVK+NRFy+k7+Ap1lSZHRwL88pkxHNsmmTze378qEGBdNOrjFc49BQAREcl5V/7LT7xT/tIL/xrbOgmHS7FMi7VnVvKJtV0YgRAEwzyx+QH++Z7tBAMBPnPFJVSkuqmLmkTKTG67y6sgJBMT4LrpRwlwUxGV/jMUAEREJKetTzf8cV0XwzCI1jRTWduEZVlEyy2+/IlMu98QPd27+C9/uYnYRJKlSzs4sy1AIDFIbSTIv2yNMzBqYyfjOHbKe3MDLgyHubEizx/XTYMCgIiI5KzuwUFu3rIl2+3PNMM0tnVgmRYhy+KLF7eyYOFijGCY+ESMv//Hf2LX/j4sK8yVHzuT4UMvURsNcnQkwIPPjeLYNqnk8VX/VYEAf1dT+Fv+3okCgIiI5KyLfrgJDLKvhvZlhMPeqv+GKpOrPn42BEMQDPHkll/xo3ufIWDA5z99KSXxfdRGTSwzyG13DXul//g4rut65X+Ks/SfoQAgIiI5af2jm9k/OAAuuK5LtKaJqpp52Xa/f/47XVhlXun/8IFdfG/TzznSP8bSpR2sbAsSSA5SGw3wr1sT9I8ksZOJSaV/gwvDJUVZ+s9QABARkZzTPTjIhi2bAXBxsawSGlvPwLRMLNPk0+dVsrhjRbb0/4ON/8yvtnVjmWE++/FV9L/5IrWRIM/scXh81xiu45yw6h/g72pqfLiy3KEAICIiOWdtugmVYXjP/htaOwiXlGNZFo3VFr/3Ba/dL0GLJzY/wKY7nyZgwFWfvgQrtpfaaJB4yuCOp8ZxXJdUIu6V/bMNf6qKtvSfoQAgIiI5JdPwx8CbrCPVjVTVtXil/6DFn17XhVVW7ZX+97/E9zb+nKMDMZYsXcrKdpNAcpBomcWdTycYyJT+nVT2/dtMs+j2/L8TBQAREckZk0v/GBAMWjS1d6af+5us7aqkq2sFBL1jfv/x9h/z4NMHsMwQn7tsUul/b4rtr4/jOA6pZNxb+AfgutxX3+Db9eUSBQAREckZa3+40fvE8Bb+1bd2EC4pwzRNmqosrrv8LAiECARDPLH5fjbd+RQBAz535SWYsb3URoKMJoLc+4y32v+EyR9YV6nSf4YCgIiI5IQN6dI/eJN/pKqBmvr53t2/afHFjy2itb0NIxjm0P6X+O4Pfs7RgXFOX7KEVQssAslBKissfrRlzFv1n/JeGV7pvzhO+jsZCgAiIuI7r/S/Jfu1aYWPl/5NkzVdUX5rbZe36j8e4/9u+jEPbv8NlmnxuctW0ffGTmojJg++EGfP4aR3959p95t2X32jH5eWsxQARETEd2t/uDFb9jcwqJ+/hJLSCkzTorHK4tpPdmGVVkEgxOOP3M+mO58maMDnrrgEa3w/tRGTsUSQXz4T8577xydOLP1HK2kNBv27wBykACAiIr5av2UzBwaPH/NbUVlPTcNp2Xa/V65ZmG736636/+7Gn3NsIMbppy9m1QILIzlAZYXFd+8bxnVcnFQKO5Vp92vQFgyq9P8OFABERMQ33YODbHh0M+Dt+Q+YFo3tyzDTq/7n1ZbymUvPxAiGiE+M8w+bfsRD2w9gWRafvexs+t54kbqoyQM7khwbstMn/Y17+/1dFwy4r6HJ34vMUQoAIiLim7U/3IhB+phfF+rnL6G0LIJlmpimxYZ/5530hxnmsUfuY9Od2wkaBp+7/GNE7Deoi5oMjZs88OxYevKP4zqO9+aGodL/e1AAEBERX2SO+c0or6yjprEVyzSxTIsrz4uwaMkyjGCYw/u80n/vYIy201o4r7OKRKyXUCjolf5dF8dOl/7Td/9a9f/eFABERGTOZRr+GOnWvKZp0dS2DMv0DvpprLL4vS9djBHwev3/n40/4uFn3sCyLL7w6Yvp2bud2kiQ+563GRhJ4bgOyfj48VX/hqGGP+9D3RBERGTOXfGzn2Q/d3GpbTmd0vJI9qS/P/nyCqzSagiGePSRO7j9Lm/V/9qPfIgaZx+UB9h5IH3QT7rXv3tCr//iPeb3ZKkCICIic+rWp7ax8+gR79m/61IeraO2sd27+zdNPu2Xi9IAACAASURBVLI8ypldXRjBEL957Rm++4Of0zs0TkNjC1d8uIXY8BHA4L7nJk5c9Z+++Vfp/+QoAIiIyJzpHhzk5kc347ouLi5B0/RK/+k7/4Yqk6985oPZY37/YeOPeOTZN7CCJl/5/EX07NlOXSTIL5+3GRixvdJ/Ytx7c+/mXw1/TpLqIyIiMmeuv+sOBiYmsif91TYvprQiml31/6WPLWL+/BYIhtj68E/40S9fJGjAmo9cQL3RjV0CO34Dz7w+juM62G/t9a9V/ydNFQAREZkTtz7yMFsOHMhO/qWRauqaFmQX/q3pivLxNd6e/zdff57/+9OH6B2KUV1dzVUfO53RgR5sN8gDmdK/nSKVTGTfvy1aqdL/FCgAiIjIrOvu6+Xme+/x9vsDAdOkqa0TKxTKlv6v+cQKQmXVTEzEuPeeO7jr8X1YpsX1136aN15+jKqIxU+fmGBgdNKq/0nuu+oqPy4tb+kRgIiIzLpv/Mu/MBiLHS/9Ny2kvKLS2/NvmXzpkkW0LzwdgiGe3fxT/nLTkwQM6OxaxTzjdewSeOyVJHsPJXBc5/iq/7Qbzzqb1mjUr8vLS6oAiIjIrNq49Unu2PF8epselESqqJ23wGv3a1osnl/Jb605E8MM8+ae5/jePz9I7/A4ZRXV3HjVCkYHDpOwTR54bhyXSQ1/0tqilaw77zwfrzA/KQCIiMis6e7rY8M9dwNer/9g0KKprZNQKIxlWpimyf/3hQ7M0mriEzHuuesO7n5iH2bQ5Pevv5LfvPw4VRGLf3hwFNcFx3VJxieO/wYufP+yy6gMh326wvylRwAiIjJrNtx7Nwf6+7Md/6ob26mIVGVL/1d8IJpu9xvi9Wfv4C9v3+qV/lesZF7gdewwPPZykr4RG9d1SCUmcF0n+/43nnUWF86f79fl5TVVAEREZFZs3PokG598MvusvqS8krp5CzBNCzO98O93v/RRDDPE4b3PM9zfw+9f81GWLFnKjVd1Mdx/mIRj8qsdEziOg2Pb2JlV/y60VVay7vzzfbzC/KYKgIiIzLhM6T8QCOC6LkYg6JX+w+H03b/FhutXYJVVEZ8Yp/vlxxiPjdLZmOKsGz7I8888QXmJyfceGMN1vAAxedW/YRh8/9JLVfo/BaoAiIjIjNtwj1f6d9JH89Y0LaA8UoVpWlghi0tWVXD6spUYwTAvPfpj4hMxbMfGtm127XyOihJ49GWH/sxBP4m4V/pPL/y/unMZF84/zccrzH+qAIiIyIzatPVJNm3bmv06XBalrnkhlmURsiwaoibXftYr/b/x6jbGRgaxbYdUymFwZBw7OcFvRk0ee3kkfcyvjZ2Ie61+jcyqf5X+T5UqACIiMmO6+3pZf8892ef+gaCZXfVvplf9X33ZUhrrq4lPjHNg16PYtk0ymSKeSNFzrA/XMLjnmXFv8ncm9fpP3/2vO+887fmfAaoASN6Ix+Ps2bOHWCxGKpXyezgyDTU1NbS3txPWc9uCteGeezjQ3weA67rUNrZREa3O3v1/eHmUSy7sxLZdtj78b5SURImNHyNlOxw61k9Ficv9O1z6R7z/x+1kAtd2sgf9XNPZydWdnX5dXkFRBUDyQjweZ+fOnQwPD2vyz2P9/f3s3LmTeDzu91BkFmzc+iQbtx5f9e+V/hd5J/2ZJg2VJlen2/3ueHoz13xzI//+Lx4mUL2YwZEx4hMxXjtk8NyeCVzXxU6le/2nJ3+V/meWAoDkhf3792viLxCpVIo9e/b4PQyZYZle/xmBQJCmtmWEwiXeYT+mxRc+togFi5fy7FNb+NIf/g1j4ynePNjDj3/5An1DMQzD4OEXE96WP8dNl/4nnfR3vkr/M0kBQPLCwMCA30OQGRSLxfwegsywDffeQ3dfX/br6sY2IpW13jG/lsnyBVE+vqaLI90v8aff+j7HBscxMDCMABd21REOTHDndpv+kSQurnfMr3284c81nZ1cvUyl/5mkACB5wTS1XKWQqJpTWDZtfZJNW7d6+/0Ng3BZhPqWxV7pP93v/w8/30U8kWLD//we2148hIGLYcB/+MrljB7ZzY5ul309CVzXxXUcUsm4Sv+zTAFA8kJZWZnfQ5AZVFNT4/cQZIZ09/WxPt3r32PQ2Hpi6f8zFzbSPK+Rb/3lrfzogVe8O38M2tvms2phmETK4JfPjuM63uT/1mN+tep/digASF5YvHixqgAFwjRN2tvb/R6GzJD16YY/mYV/NY1tRKrq0qV/i/pogGs/dQ53/Gwj//vHTxAwDAwDjIDBZy9dyZHu59m0Ob3lz3VIJRM4ju29uQvXdC7Xqv9ZogAgeSEcDtPV1aU7xzxmmibRaJSuri5tAywQG7c+ye0nNPypoK7l9Emlf5P/9tUuHn/0Edb9rwe9A4EMr43v4sWLaa8a4enXbQZG7XTDn3TpP62tUsf8zibdUkneCIfDLF261O9hiAhe6f/me+/JPvc3DK/0Hy4pSR/za/GxlRXYiTF+779son9kggAGAcPAssL84ZfXcOjVx3lkp7flz3VdUolxb9F/OiSo9D+7VAEQEZEp6Z8Y5sGBraxY0Zw95reqoZVIVT2maXrtfiuDfPzsKtb/1Q/oH5nAwCAQ8ILClZ9cS2pgN7dvjmW7/aWS8eOlf+DqZctU+p9lCgAiIjIlfUzQurSN7//59fzLX3+ZxvpqGuYvya74N02TT62u5Fvf/QkPPHXAm/wNA3AprajhY+fU8ssnD2ZL/67jkEqkj/lVr/85owAgIiJTMt+sZKx3BNcI0tFaxoP/9w+4/KKu9Kp/k65Wg8DwK9z12D4ge4YPplXCV75wGU9ve4Ynd3sNf1zXJRkfz+z4A1cNf+aKAoCIiEzJk8deIlpfjkmK0sp5tHR8kA1/fDW3rPssNZXl7Dxg8/pAJbf8x0toO21eeuW/wRnLVtBaNcF9z3vP/XHJlv7ddMe/a5YvV8OfOaIAICIiJ2U8FeeZnlfpCQ+yZHE7E2MDjA8dwUklMIIW55y5hE1/eT2XntfKo7sdfro1yV9+47f4nS9eRGlFFddcvppf/non/SOp9LN/2+v1n+aV/rXqf64oAIiIyEl58uiLdEf6WLBwAVYgxchgL5HGJZRVNYOTgoBFaWkJX11bxmdWjrD39df4g/+5Gccx+N9/+ine3Pcyz+2ZAJd06X8C3Em9/rXqf05pG6CIiLyv/cOHOWgNcOHKswk4E7y862XqmuZR3XomgWB6KnGS2GNHGRm3efPYBDd+dimjSYOfPrifh7ftJxZP4bgOjutgJxM4zvGW0Drmd+4pAIiIyPva3P88K84+g/ISk/4jfbS2t1O54EKO9k8wv6USANdJ0b93C8+9eICrv/rvaTB2koz1cdZC+JufHKB32Dne7jdxvOFPVTisVf8+0CMAERF5T6/3HuWV3gSnndbM6NAxbNelunUV0eo65rc0cvBQD7HxCeJHXuCVV17hH368mZKRbTjJUWwsFs0z+Npvl7JyvkNpyCWZmGDyMb83nX++Sv8+UAVARETe0yW33MKB/n7eODLE73xqGUuWraSsZn7211uamxg9uoftjz/ILx55lU9//EyiZS6jw32MDB3jUL/FgSMh1naWc/7pBr9+yeWZvSMAXHjaady46iy/Lq2oqQIgIiLvKnPYD8BP7n6CP/7+i2zdFyQYDAHeYj43FWf0jW3s6T7EnjdH+OTaxUyMjzARG+HwkUGe3LaHiOHS2tzMyvYq/uJ3z+KPrlpOW22Ev7v0Mj8vr6ipAiAiIu+ou6+XDffcjWEYuK5LWbSWpFnDt//Pr9j9myG+8ukLaKwtZ+zgdnbv2ce/PbyHW//rFSTiMX7z5lFKjBGefWmYaNikMuxwWrVB7fzlhEpMPhON8oHqebSWq/TvFwUAERF5R2v/5q+zvf6Dpsm89uWY6ZP+HnliFy+/9iZf/HgnC4wXueOR3Xzy4uU01liMDg9RU+7y1I4BxsddmupC1EVKqJ/fTDw1wcieIKVmNReVRXy+wuKmRwAiIvI2G+65m+6+vuxJfbXNiykrjxKyLEKWhWEYHDzcy7f//kGOVKzl/Is/xdWXr/BK/+MjjI6OcOhInBIzSCLp0ji/EdcI0Hs0RufQPLr666kwSvy+zKKmCoCIiJygu6+X9ffcnf26LFpD3byF2cN+gqaJYydxnBS2neTLv/cnfGj1CvqOVPCJc4NMxEZ58dUBnGSA5qow8yrD9I3amKkYLQN1mvhzhAKAiIicYO0tfwOAYRgEgibz2jq9yT/9wrFxbBvbTtHX8wZBDLY9+wpPbnd48Mlarr44woGDCRoqwlSVmjQ111PZUMuhY6NU2xHNPDlC/xpERCRr/T13093bm332XztvIaUVlViTSv+pVJJUKslEbJTRoWOEwiXeyX7As68c46U9/Xz0rCaWzbepjZpU1tcxnkgxOuDQaOq5f67QGgAREQGgu6+Pm++9J7vqv6S8irp5CwmFQoRMC9MM4jgpHNt7HX3zdcLhEm+dAN6WQIDYRIJfPLaf9T97A7N+MSkXDh0dYW31h/29QDmBAoCIiACw9pa/zn4eCJrMa+/ECoWwTBPLsnBdFzvlTf59R94gYJBdJJh5OY6D4zikEuP09I3wyT/+OX9/32FOYzEVZrmPVydvpQAgIiKsv+cuDqRX/YNX+i+PVGOZ3nP/gGFg2ykcJ8XE+Bijg0cJBk0cwHFdHOd4CLBTCRzbzr5342gVK8o7fLoyeTcKACIiRa67r5eb7703+3VJeSX1zQuzz/0t08JxbJxUCjuV4sgbewiFwziZO3/HxXUdXNfBtm1SiUT2vdpqalh3ySV+XJa8DwUAEZEid9Etf5O9ew8ETZraO7FCYSwrU/p3sO0ktp2i/+hBAji4LrikJ34y5X+X1FsO+rnvhhv8uzB5TwoAIiJFbP369ezv7c1+Xdu0gIpIjVf6Ny0MA2w7hW3bxMfHGB7oIWCauJAu++PtAHBdUskEjp3Kvte6Sy+ltbrah6uSk6EAICJSpLq7u7n55psBb89/SVkldc0L03f+3st1HOyUd/d/5OAewuFwuuzvZBf9ua6LY9ukkvHse6v0n/sUAEREitTatWuzi/6MQJCmBZ2EQiVYVgjLtHAdN333n2Lg6EFwvLv7ydv+Mq9UcgJclf7ziQKAiEgR2rBhAwcOHMh+XdPYTkW0JnvnHwwEsB1v0V9iIsbwwGFv1b9z4nY/x3FIJRPYKS8cGIah0n+eUCdAEZEi093dza233orruhiGQbgsSl3zIm/Fv2VhBk0cx/ZK/06Ko2/uJRQKewv/XBcnfafv3f07J5T+W6urVfrPE6oAiIgUmeuvv57BwUEMw8AwAjS1LSNcUuId9WumG/7YKRzHZvDYYVwnCZMmf+/XbVzXJRlX6T9fKQCIiBSRW2+9lS1btmS/rm5sJ1JZi2WahEyLYCCAk37un5iIMdR3kKBpHd/z7x5v+atV//lNAUBEpEh0d3ezYcOGbOk/VFpBfcsizHS3P9NKl/7Tz/6PZEv/7qS7//Szf636z3sKACIiReL6669naGgI8BbrNbUtIxwuJWRZhKwQpFf9O3aKof4enFQcDMNr9fuWnv9a9Z//FABERIrArbfeyubNm7N3/17pvz7b7c9I9/rPlP4Hj76BaYVwHAfctzf8yaz6B5X+85V2AUjeiMfj7Nmzh1gsRmrSXz4is6mmpob29nbC4bDfQ5m27u5u/vZv/zb7dai0nPrmxd7kb2Z6/ae80r+d4sjBvYQyx/xOKv1ntv/ZqUT2yGCV/vOXKgCSF+LxODt37mR4eFiTv8yp/v5+du7cSTwef/9vzlEbNmxg//79GIZBIBCgqbWTcEmp1/An2+t/Uuk//Wz/rUf9um6613/6c1DpP58pAEhe2L9/vyZ+8U0qlWLPnj1+D2NaNm7cyKZNmzAMA4CqhlYiVfXZhj+BTMMfO0UiPs7AkTe90n/27v946d9OJbFTyezkf+OHP6zSfx5TAJC8MDAw4PcQpMjFYjG/hzBlmVX/GWa4lPqWJVjphj9eu18bO+Xd/R89uPd4r394W+nfO+nP01ZTw7pLL/XhqmSmKABIXjBNLVcRf+VjBWr9+vUcOHAge8c+r305JSUl2Wf/uMd7/Q8NHCEVHwc44bCfyaV/d9Kq/+9/4QtUlpT4cl0yMxQAJC+UlZX5PQQpcjU1NX4PYUo2btzI7bffnv26sv40olUNXrc/yyIYPF76TybG6e95Ayu959/JVADeUvrPuPHDH+bCRYt8uCqZSQoAkhcWL16sKoD4xjRN2tvb/R7GSXtr6d8KldJw2lIsyyKUWfVv2zjphX/HDu0nHA6d0OrXcd659N9eW6vSf4FQAJC8EA6H6erqyru7MMlvpmkSjUbp6urKq22A69evp7u7O7vnv6m9k5KS0uyefzhe+h8ePEZyYgwX452P+U3ETyj9f+/zn1fpv0DolkryRjgcZunSpX4PQySnZVb9Z0Rrm6msaUqf9BfyjvnNNPxJTNDX8xtKwmHstzzzdxwHJ5XEsY+X/q8591yV/guIKgAiIgUiU/rPbPmzQqU0tHZMavhj4rg2KTuJY9te6T9knbDq33Gc7GOA5KSFf1r1X3gUAERECsSGDRuyq/6NQIDG9mWUhsuy2/7ATW/5sxkZPEYiNgoYb+vz7zrO20r/6y65RHv+C4wCgIhIAdi4cSMbN27Mfh2tmUdlTdMJq/4d206v+p+gt+cA4ZLw2xb9ua7rHQecbvcLcM3q1Vx97rk+XZnMFgUAEZE8N7n077ouphWmsbWDkBUiZFmYpun18E+X/nsPdxMKWbgukxr+HA8CyUn9ANTrv3ApAIiI5LlM6R+8Y34b25dRUlKGaaZP+nNJL/yzGRnqJR4bxjDeXvp3HIdUUqX/YqEAICKSxzKl/8ykHalpoqq2GSt99x8MBnAcb89/MjFBX093uuEPb+v259gp7GQi+97XnHuuSv8FTNsARUTyVHd3NzfffHP2WX3QDNHUusxr9mNZmJaVfe5v2yl6Dx/ItgB2Mi8n83JIqtd/UVEFQEQkT2Ua/oD3vL6xbRklpeVYIW/Ln4GL49jYdpLRoT7iY0MYgQCO66aP9CV92E+69O842fded+mlKv0XOAUAEZE8lOn1ny39VzemS/9eq18zGPTu/lNJkomEt/Avc9Kf62I7k076e6fS/znn+HRlMlcUAERE8kxm1X9m8jfNME3tnelWvyamaeG4jlf6d2z6eg5gmWa217932M/kVf8q/RcjBQARkTxz2223ceDAgeyz//rWpV7p3woRskIYBth2EttOMTbcz8To4NtX/acXAHqr/r3Sv2EYWvVfRBQARETyyObNm7n11luPl/6rGqiun5/u9W8RDATSjXxsksk4vYf3e6V/eNtBP/ZbSv9Xn3OOVv0XEQUAEZE8MTg4yFe/+tXsnX8gaNHUvhzL9Mr+Icsr/Tt2CsdJ0Xf4QLr/v/uOe/6TE7Hse6v0X3wUAERE8sTkY34BGk5bSklZOZblTf7gNfxJ2SnGhgeYGBuEdHfA7Al/6cN+3tbwR6v+i44CgIhIHti8eTO33XZb9utIVQM1ja3Z0r9pmth2Kr2iP07v4X1YobC3x/+td/+p5Imr/lev1qr/IqQAICKS4wYHB7n++uuzvf6DZojGtk7viN/0tr9Mtz/bTtHb8xvMoOnt9YcTKgCZY34z2tra1Ou/SCkAiIjkuFtvvTVb+jcMg/r5Sygtr/C2/ZkWhoH33N9OERsZZHx04G2r/p10k59k4i0Nf9bdpNJ/kVIAEBHJYZk9/+Bt0yuP1lHb2Ord+Vuh9El/XrvfVCrBsUNe6T975++8tdd/PPve11xzNVdf/SWfrkz8prMARERy2Nq1ayf1+jfTDX9C6Wf/6ck/Nan0Hwic0Os/2/DHdbPH/AJUVVWybt1Nfl2W5ABVAEREctT69euzx/y6rktt8+mUlkeyi/4MjOyWv9joELGRfoyg1+s/0+gns/LfTsSzjwEAbrrpJlpbW/26NMkBCgAiIjlocunfdV3KK+uoa2pPl/7N7MI/206RSiY4dnAv4VD4+HP/9M8BuI6NnTq+6v/CCy/kxhtv8OOyJIcoAIiI5KBM6d91XUzToqmt09vvb3qr/r1J3Wv329fzBmb6lD/X5S0r/22S8YlsGKiqquLv/u57/l6c5AQFABGRHLNhw4Zs6d8wDGqaF1FWHvEW/VkWhmFk9/yPjw4zNtyLEQy+rdOf47gkEwkcx86+9003/YlK/wIoAIiI5JTJJ/25rktppIa6eQuwQiHvpL9gEMfxFv3ZdpKjB/cQDpe8bfL3dgDYJzT8UelfJtMuABGRHLJ27VrAu/MPBE2aWpdhmSGv6Y9p4brOCav+gwEjveLfOSEEuK5LMh7DeyDgUelfJlMFQEQkR2zYsIHu7u7s1zXzFlIerSKU7vVvGAaObeM4KSZio4wN9RIIBr1n/o6L45Jd9Z9Knrjqf926dSr9ywkUAEREckCm9J9Z+FdSXkX9vIVYppne9hf0Svp2EjuV5Mibr3vH/KYnfW/hX6b075BKHC/9t7W1sm7dn/h3cZKT9AhARCQHXHTRRdmV+kHTYl664Y+VPuzHdVxsO4nj2PQdeZMgAAaOa3uNfyZ1/Esmxplc+r/vvl/6cUmS41QBEBHxWeaYX0iv+m9aQFmkilDISvf6N9J3/ikmxkYYHTxKwDTTEz44rnf3ny3928dX/a9bp4Y/8s5UARAR8VF3dzc333xz9u6/pLySunkLvVa/poVpmelT/rymP0cO7iEUCh9f6e+6J5b+k5NL/21q9yvvShUAEREfZVb9A96q//blhMLhSaV/Jz35J+k/+iaGe7y077x11X9iHNzJpf975/RaJL8oAIiI+CSz6j9zzG9t0wLKK6q8yd+ctOrfTpIYjzE8cISgab7tmF8nfeev0r9MhR4BSN6Ix+Ps2bOHWCxGKpXyezhSJGpqamhvbyccDs/o+3Z3d7N+/XrAe+4fLo1Q27yQUOh4u1/H8Vr92qkUPW++TjgUzvb5P+Hu33FOOOZXpX85GaoASF6Ix+Ps3LmT4eFhTf4yp/r7+9m5cyfxePz9v3kKJjf8MQJB5i1YTjhUcrz079rZdr8DvYcwXPt4j3/HeUvp/3ivf1DpX06OAoDkhf3792viF9+kUin27NkzY++XWfVvGAYANY3tlEdrsqf8BQwD27GxbZv4xBjD/YcJmhYubrrr3/HDfuxkAsc+/v+GSv9yshQAJC8MDAz4PQQpcrFYbEbeZ6D3EG+8+Ktsw59waYS65kVeq1/LwjRNHMfGSXm9/o+8uZdQpvSfnfid9LN/m5RK/zJNCgCSF0xTy1XEXzNVgXr4Z7fw7z5zPn/1nz9LpKKUpvZOwuGS7J5/cLHtFCk7ycCxHrCTgPG2Pv9er//jpX/DMFT6lynR36qSF8rKyhgeHvZ7GFLEampqTvk9nnrop5ipAdpblzGvNsSi5s9z631jjE44Xuk/EPAa/tgpkhPjjPQdxAqXeHf76W5/3st5W+lfx/zKVKkCIHlh8eLFqgKIb0zTpL29/ZTeY6D3EC9vu5OFC1qxUxMMDw6yrGsV3/vzr7LyjDYsy/R6/ae8hX9HDu5N9/qffNfv4OJ9PLH036rSv0yZAoDkhXA4TFdX14zchYmcLNM0iUajdHV1nfI2wId/dgtLF82nrqaC8aFjlEZrqJ3fSftpjdz2X6/myo92TVr1fxgnFU+3+T1xz7930M9bV/2r179MnW6pJG+Ew2GWLl3q9zBEpmzbQz/DTPWyoHUFY0PHsB2H+tazsEoj6UN+Unz5yvM4p7mfdX/3LEPHDhIqCWcP+HHSL9d1sVMJ7JRW/cupUwVARGQWDfQeovuFh+hYcjpOcoKR4T5CNYsJRZtxHBfbcQiFQhgj+3BG9lOV2M2ac+Z5K/45vt0vs/c/ldCqf5kZCgAiIrNo+0M/Yl59BWWlIcaGeymvbKT2tOWES0ooKUk/408M07NnK/c9/hpdy07jtm+exz/+2UouXBE5YQ1AKq6GPzJzFABERGbJi9vuZ/TwS5y+aD7J2ADJZJzq1lUEw+XZ73Edm/69j/HsS/vY3zPBVZ9YQXw8RlOVy9cuL+eyLoOKMNipJLadzP7cjTfeoNK/nBKtARARmQUDvYd4eesddHUswnDijA73U9ncgRVpIpWyMYyUd1ffv4c3ul/l5w+/ymc+voqaCIwODzE+NsCu14dZUGux+uMV7Dvq8vOnjnF0cFylf5kRCgAiIrPgqV/9EzVRi8poOQPH3gQrSlVLFyXhUpKppLftLzHCwX3buO/RV1myaB4fWd3MRGyY8bFhDvUMcrDHpr6ilNpImNWr2vjq51dz15Y9XHTtX1BZWen3JUqe0yMAkRzT09PD/fffz+joqN9DkWnaufU+xo68zJLFbSRjQ7h2nIaFqygprwLDIBg0cWyb4QNP8MIre3jlwDBf+u0VTIyPMzQ8yujoOC+9HiMSNqkqDdBYXUZ5ZQVjsQku+e0vsvqD5/t9iVIAVAEQySE9PT184xvfoKenh4qKCj70oQ/5PSSZooFjh3hl252sWLoQy0jRN9hLZdMSqpoWk0x5bX0B4n2v8fqru7hrSzef+fhKaqNBRob7ScWHeem1Y6TiDg3VQaorQjS2tTCRchiYKOEjH7nW3wuUgqEKgEiOmDz5NzU1afLPU089+E80VJdQVx1hqK8HxywnMq+TVMrBth3vxD8jQe/+p3noyVc4raWGD509j4nxISZiwxzpHab7zQTRUovKsjCNzc3YgRC9/eOceenXCZdW+H2JUiAUAERywOTJH+Cb3/ymzyOS6Xj+8XsZPvQSba3zGRnsw3EcGhasojRaixXyTvozgOEDT/DS7r3s3DvEdZ9ZxcT4MCOjYwyPjvH8yyPURMppqCynrrKUyvpqJuJxKk47l8YFXX5fohQQDgC8NQAAIABJREFUBQCRHPCd73wnO/lfdtllrFy50ucRyVQN9B7m1afvorNjMaFginhsgIr6BZTXtGEYXtnfdV0mevew99UXuHvLXj7/ybOpKIH4+BipxBgvv9pLIpagqtSkssSg8bQmEikYjJey/MMq/cvMUgAQ8dnGjRt54oknAGhqauK6667zeUQyHU/et4nm+grq66KMDBwhUFJJZcsKHAwS8QSJeAI3GePIvq088vQ+qqsrWPOBFlKJYZITQxw+MkT3mwlqKkJESkwamurADHG4b4y2s68iUtPk9yVKgVEAEPFRT08PmzZtyn593XXX0dSkv+jzzY7H72Xo4E7mz29iZKiPRCJBRWMn4fIaSkpKwIBwOES85xl27nqd7S8d5fev/gBjoyNMxEYYGx3h2V1DREpLqCovoaYqSnVjE/GUS2T+ak4/+1K/L1EKkAKAiI++8Y1vZD9vamrisssu83E0Ml0HXn6cruUdWAGbidF+KhsXEm1YQCDo/RUbMAIkh/bT/foOfvn4Xq64dDllYZdYbIxYbIyX946CbVJTFqC2LEjT/AYSqRSD4yE6P3y1z1cnhUoBQMQn999/f/a5P8Att9zi42jkVHSedR4NdVHGhnoJhsqpbl1JwLSwbZtUyiY5Mcqh3Y/x8FP7iEQr+eTaJdjJURLjQxzrG2TfgREqLKguCzOvuQEjaNI7GOO0sz9HpFoVIZkdCgAiPnhr6f+yyy5T6T9PDRw7xPNP3E9sPM7Y6AiR5hUEQhFSyRSGEcA0g8R7nmH3a/t4YschfveqVcTHR9Id/wZ5/uUxykMW0ZIg1dVRSmvqGI2nKD/twyxR6V9mkRoBifhg8t2/Fv7lt20P/JDm+jLCVpDq+cupaV6KEbQwDAPDgNRwNwde38FdW/bw2d86k+oIjAwPMTwyxu79oyQTJk3RII1VJTSdNg8Ml7FkKavP/6zflyYFThUAkTnW09PDAw88kP1aC//yV/erzzF2ZBcL2poZGzpCcuQwthMAI4BpmiQnRunZ/Shbnt1HuCzCJR9aSHwiRnwixtDgIHv3jxINQ1VJgMamGrBC9A78v/buPbqp684X+Ffy2z5+4ZfA5hEsAoSABU3zAKVpk0zxdPpIaqctaRI7vWXSDJlO3JkpN5PQJNdZWbDu7XWyCl3TIZ2xm95Lb8fcpGl7I9omQCsnJCQghRhMkLDANsgvLEtHsiXZ0v3D7BPZGD9kybKt72ctFjZYOvuItfj99m//9j4eLP/MA8hctDjWt0cLHBMAollmNBqV2b9Wq2Xj3zw14HGh6Y19WH/zagR8MnyDA8hfeRvUCSoMDQfh9w/D1fYBWqwXcPTEZTz+4Gcw7HfBN9gPj9uJ46f6kJGSiJy0ZCzKSkP6ojy4B/xIK94MLUv/NAuYABDNsoMHDypf19bWxnAkNBPHDL/AssXZyJFS4OzrQubitUhfVIKEhAQkJQCqwCD6ejtx4pwHX9+6HrmZagx6ZAx4XDhjvYLBATXypHRkZyRDs2IFoE6EPJSGtZ97MNa3RnGCCQDRLApd+6+srGTpf56ynT2BnvPHULqiBHJ/FxJSMpG7dANUqgQEg0EAgLfThIuXuvDQY0/iq1+6Ex6PC263B929brRe9KEgMxU5qYCmMBtJaano7XNh+aYKZOYUxfjuKF4wASCaRQaDAcBI419FRUWMR0Phsn38Z6y/+UYE/DK8A27k33ArElMkqFSASqXCkKsD50+/h5/9r7cxaHsDnr7z8PmG4Pd78eGpXqSqA8hOT0JedjpyNPlweXxIXXI7tJtY+qfZwwSAaJbY7XaYzWYAbPybz/p77bjScRo5WZlwObogadYgPW+p8vfBYS+6zh7G/33rY3xhy2osylJj0N0DT38b/vzeJSQk5qAgJxPpyQkoWFqCoWAiHN50rL3zoRjeFcUjJgBEs6S+vh4AT/yb737783/BzauXw+NxIyE1B7lLy6BSJSgP/PFcOoEPTKdxrk3Gg1++CQOefgx4nGg+dwUuxyDykrxYuTgH2pvXIyU7D/JAAMs/cz8yc1n6p9nFcwCIZkHo1r+tW1nmna/eMTRg+ZIcZGUk4UqnDdKyzUhMzcLV2I8h12Wcb34HvzKcwY9qtsLrlTHg7kdvTx/OtQ5gcWYq8jOTsbikAEMqL+TEtdj0zf+ClPSc2N7YQuF2x3oE8worAESzYO/evcrXnP3PT/29drSf+iNWriiB7OhEslSI/GItvF4fhoNqBId96P7kbbz+1mnob1sFzaJEeOSRLX/vn3IgKyUReVISlhQXQp2cDKc/Hav132bwjyQmANPCBIAoygwGg/K4X51Ox7X/eeqNV/4FG9avQcDngtfvR97K25CQlIq01GQgMAx393mcOteBs21ObPvyOnjc/Rjw9OP0uV4MuoPIk1JQkJuBrIJ89DkHsaSsguf8R5rfH+sRzCtcAiCKorFn/rP8Pz91XbJh5fIi5GSm4IrdhpwSHdKyPl2zV/muwHXFhnu3/RBlt7+LIecJDLj7caXXgXOtAyiUUpAvJUOzvBhefwApS25H6cYvxvCOFqiu7liPYF5hBYAoihobG0ed+R9v5X9ZlmG320f9kmU51sOaFpvNBt2mWyH71HA7upGUkY+c4pshFv6DgSH0nDuM+lcb8d7h15A03AmnBxgYHMLxjxyQkhORJ6VgSXEhElPS4BxKx+rN22J8VwuUwxHrEcwrrAAQRYndbh916p9Op4vhaKJLlmVYLBaYTCZYLBZYLBa43e4Jg70kSSgtLYUkSdBqtcqvubZE8uZ/PA3Z5cQjP/gJfvb8t3HXF7+AxJQ05e+9XR/j+IcmnLE58bjGCc+VbvicnTjxcS/UyYUozFWhUAoguzAffa5BLN70ICSW/iPP5we6WQGYDiYARFFSU1Mz6vuFWP43mUxKj4MI9hqNBhs3boQkSSgqKoIkSaNeIyoiVqsVsizDbDYrPRLi9WVlZdDr9dDpdNe8fjYd+W0D1q4sQO2T9+HJF/8Pvvf8r/DamruxKVeFYCCA4GAfWpv/gsY/tuCH37sbPq8THrcDl+x9uHjBiZJcP/LTcrD4xpvgCSZBnb+epf9o6e6K9QjmHSYARFEQeuQvMBLUFlIFwGQyob6+HmazGZIkQa/XY+vWrdBqtdMO2EajEfv27Ru1VGI2m0dtm9Tr9dDr9RG/j4nYbDY01P87XnjyqyjJS8JAzd/gqbrf44v3VaP26SfxnYfvQ7/lMH779ils2nADiguS4HT0QXb148OP+5ErpSBPSkbx0kIEAoNwDufirm/+06zeQ1zp6Ij1COYdJgBEERba+CdJEmRZRlVVVYxHFTn19fXK/VVXV6OiomJGs3QR+PV6PYxGI8rKylBXVweTyYSmpiYYjUYcOnQIGo0GVVVVs9ZHkZOTg9f+9CEe/OptWJI5iL997HHc/eWH8I3qH6DmqRdx5MhR1FR/Dr2Dqfjht2/CgLsXHtkB85krUA2rkZ+dhCVL8pGSKcHeN4xbvlEz+UUpPG43YLsQ61HMO2wCJIqw+vp62O126HQ6pSy+UGb/IvhrNBrs378fVVVVYQd/k8kEk8mEyspKHDhwALW1tZAkSTkuWafTYceOHThw4ADq6uqg0WiwZ88ebNu2TXmmQjTl5OTg0e9sx7ee/Fdc9i9Bes5ibLh5Nf7w+iu4c/Mm/OZQE963+vGP//wP8PkD8Hj6Ye/sQ1uHF/lSCgpz0rGoqAD9sheaDV/nun80sfs/LEwAiCIodLZaVlYGYOHs/bdYLGhoaIAkSairq4NWq53R+9XU1FzTJ6HRaGCxWK75WZ1Oh7q6Ohw4cACSJCmJQOgySzQ8++yzWKwpwAOP7ca/NrwGlUqNZSVF+N8vfBlf0S/HUz/6MZZtqMTfPf8mPjrvw6nzKuSmJyNfSoKmWIMhqOFNWY41d3w9quOMe83NsR7BvMQEgCiC9u3bB2DkYT8L7ejfxsZGACMnGc40oRFBfmwSkZGRAVmWr7t7QFQedu7cCVmWsX37dmVcUdHfgl+8/E/IzspAzc4X8MKPX4GvpwUnT5qQkZaCIw0Po+LelXjTaMWDO/+AXxps6OhPQkHxcmQUaNDjCmDTl1j6j6qPmwGPJ9ajmJeYABBFiCj9i+1sdrt9Qe39t1qtACKT0IQ2/I1nsrMCysvLsX//fkiShH379ikPWookd88nGOg5i9XrynD0zVfx8Le+ghf27MW6e74Pf44OO6ruwnJNEv7bY+tQ/8wGbLghEx9Ze/A/Gz/CN543YNe/f4Q7H/05S//R5HYDNlusRzFvsQmQKAJCG/9qa2uVgLRQ1v6BT4PyTEv/wKcVgNLS0rDfQ1QDampqRjUlRoJ/0In+1iZI+csQVCUhPy8V//bjH2JFlhN1v3wHNc+9gi26xfhehRapAQfaOjx45O4SpCao8Z7NjzNtDhSvXI+EpJSIjIeuo5mz/5lgAkAUAc888wyAkQAktrEBWFDd/xqNRjnNL1pLAJ2dnQAw5cZC0Y+wfft2NDQ0QKfTzTjpCvgHcenkQWTm5iE5PRduzyAyMhLgOv8X3HtLIQqyt+Cd5m4c+O2H+MtxKzZvXIpVBRKWZgWxsiQP99xTgot2J7Y88tyMxkGTOPsJO/9niEsARDNkMBhgtVqVbWriDICF0vwniKZGo9E44/cS1YSxgf56fz4RSZKwc+dOAMCePXtmfNRwu/kNpEkZSM0qwqDXh9S0VPi7m9Fma4G1rQd337kW/73mDvzHj25HRrIPv37zFF75/Xn86piMi4M56HKpsLjsAWTkFE1+MQqP2w2cPh3rUcx7TACIZiC09L9jxw4AUI7/XSjNf0JlZSUAjDq1L1xiph9aARDNf+EkTTqdDuXl5bDb7TNqCuw9dxgBvwtp2RqoE5MxHADUviuwW95F68UuSNk5KMhNwoCnH6uXJqC6fBX2Pb4Jf/+3j2AwbSme+fkJPPvLC1h/14Nhj4Em4XYDh4/wyX8RwASAaAZE4195eTn0er1yFv5sNv+ZTKaob4cDRmba5eXlyv79mRDjDZ3pT9YYOBmRcInll+ly2ZvRe+E4MvNKkJQqwev1ITUZ6LMcwYV2O1ovu6D/7A0YcPdjwN2PZosHi9KScfvtm/H0iz/B4cOH0draisOHD4d1fZoCEfy57h8RTACIwmQwGEadUCf+DJi9tX+DwYCamhrs2bNnVq4nDv6ZSak99JkBoUQCUFQUXulcPDfAZDJNe2x+zxX0tBiQkbcC6Vl5UKnUCEIFn/0k2i624qNPLuPWW1YBwx543A509njgGUiHJkMF7d3bwxovTRODf8QxASAKgyzLSum/qqpKaZATCcFszP7tdrty7sBsLTeIZCf02tN1vZm+aAycSd+E6FOYTkUkMORF2/v1SEzPgZRXAnVCIga9PiR57bh8/gTOXbAjkJiGm1bmwuPph+x04Mx5P7IgY/Xm+5BVsiHs8dIU9TkY/KOAuwCIwiBK/3q9Xgn2YutfRUVF1K8vyzJqamqUNfPZPGugsrISVqsVBoMBRUVF0956d73Z+fV2BkyHWFKYTgXgwge/RlJyMhIyipCSmo6hoSEEhzzosRxFa5sdx5u7seM7d2HQ44TH1Q+bPQF+lxPFS3Ox4s7vhD1WmqKzn4w0/HHNP+KYABBNk91ux8GDByFJktL4Fzr7n42n1u3evVuZ5cZiq+GOHTuUo4GB6e2/F8F5bKlfNAbOpAIw3V0El079DsMDPUgvWI607EIAwOCgFwH7+7jY3o5jH7XjjltvRHY60N/XjyuuAM6d64I2Lw2ld9yPlCx2+keN2w2cNAGXLsV6JAsWlwCIpkmcX19ZWakEKzH7F8sB0VRfX6904sfqpEFJklBbWwuNRoOGhoZpncQ3XpCWZTkiFYDpJBH97SfRd+EYsvKKkZSej+TkZAwPDyHYb0V762k0Wy6jz6PC529bjgFPP/ocMk6fvYzcFKAwNxMldzwS9jhpAn7/yPG+f/gjg3+UMQEgmgZR+g9t/JvNtf/QR/ECsT1pUKPRKE/pm04SMN4OgEgEf7vdDovFAq1WO2kFwCf3wG5uRMaiFUjLLkJCUipUKsDvvgJH24dobe/E0Q8v4cH7NiHgd8Pl8qDPFYCjZxDFuekoubUCyZmFYY+VxiEC/+9+z5L/LGECQDRFoXv+6+rqlD8XFYFol+JF8JckSZnhxvqsgXCTAGD8BGAm1ROx/3+yz2TY78H5oy8hIT0HmflLEVCnIDU1BX7vAOT247jQ3o4jxy9i3eqluHFZJmTZgUGvDyazDZqsVOQtLsGKO7jPPyxDw6O/9/uBri7A2MTAHwPsASCaIhHoq6urIUkS9u7dC1mWI/7Qn/EOxNm7d6/Sd1BXV6eMJRLn8s+UOJN/165daGhogFarnbAPYrwKgDhXQHTxT5fdbleWRSbrwRh0tCMxOQVJ0hKkZ+XDNzQMIAjX5WZcunAGJ8904GLXIH7wmA4Dnn7IA0DL2YtICiagpHgpbtj0V0hMzwtrnHFvYABobQX6+0c6+x0OBvwYYgJANAWhpf+tW7di+/bto7aahVYEwiXLMhobG3Hw4EHIsoz9+/dDo9HgmWeegdlsVmbbkiRBluUplbpni0hMpvKcgPG2AY53MuB07N27F3a7XXkWw0QC/gFk5JYgJbcE/qFhJCYkwn3lInovmmC5YMef3uvAY9/egtQkH7q7B+B2XIbtggfrVt6AkhVLUairDGuMBKCrEzj+QaxHQVcxASCaxNjjfmtqakYF/6kEnYmMDfzASIOheN69eMSwaLoTs+W5+JyB6YwpdMueWAIIp6dBNEWG9mVMRJ2QhISMQqRnZsPr8yEBg+g9/z7a2i/C8M4FlK4owuZNS+Do68Ww34OTzV1YUpCPxTlqFK67F4np+dMeI13V3h7rEVAIJgBEkxDldr1ef80JeKIiYLFYJt17rtFoRgXI8QK/TqfD1q1bYTAYlDXtyspKZbuheB0Q/ol50WKxWEb1J1zP2Cf+zST4i6URUR2ZCnWCGqqULAwODiIpKQlXrEfRZbfhXXMb2jo9+PH2u+EdcMHn86GtrR2yS401K5OQV3IDsld+btpjpBBd3bEeAYVgAkB0lVh7F4+8FTNTMdsf74hZu92Obdu2Tfka+/fvhyzLMBqNOHTo0KjAX1ZWBpPJpBzrq9PpUFVVdU1gDOeJedcj7nksSZKm9f6iWgEAW7ZsgV6vv+7TEMcuAYinC5aWlk75ena7Hbt374bZbB5VHZmKIFRIT8uAz++Dv7cFl9ssaD53EUc/uIz7ysuwpCAVvVec8PRfwkdnPSgtyEZ2djoW3fw1zv5nwusF2jtiPQoKwQSA5q3Q0vFEPyMCnPg6NNCLr8WsdLL3EsTRv5IkKefjA+MHTrvdrgR1ESRD3wcYmQWL0v71Av9445gK8TmJX+L7qdxzUVERNBoNJEmCVquFVquFRqO5Zq1e9AAcOnQIJpNJacgrKyuDXq+HVquFTqcb9zkA06kAWCwWGI1GZTdEdXX1tHdfeL1eJKsDSAq4ceHccbRftsPQdBH5eVl44EvrIHs8CPp60WyRsUiSUJCdioIbb0H+moX1dMdZx/L/nMMEgOatvXv34tChQ2G9VgRqSZKwatUqbNy4EZIkoaioSClj79q1a9xgK8rNIpiLx+QKdrtdeSqg0WicMNCGzobLy8uxZcuWSQPhZDNzcX3xa7zrixMLQ+95vCfzdXZ2wm63o7Ozc9RjgCVJQmlpqTLTFwFejF0kNE1NTWhoaFA+RzHLFw/t0Wg0ytP7xrtvkayIezGbzUrgr6ioCKsKkqQOwu/zwn3+CHr6nDh8zIpL3QP40ff18Pm8GBrsR1ePAy53GkrS/ChcugwFaxn8Z8xijfUIaAwmADRvPfHEE9Dr9TCbzUrADSVJEvR6PcrKykZ1zE+lVFxfXz9u8Nfr9di5c6eSJIggL4Ku2Wwe9brQa9bW1mLfvn3K9cXs+nql8qkSSwrjJRziM9BoNMrnMJNriSqC2WyGxWJRHggk3j80IdBqtUpyJF7X1NQEq9UKu92u9FYI3/3ud5XKCgC43W5lO6RWq8XGjRtRXV0948OPVBjGUE8z2i9dxslTn+DYx13Q37ISurWFGBgcgNvVg5ZWP5KHBlCyrBS5y9Yic3n0j3de0JxO4PSZWI+CxmACQPOWCG5i37csy0oQFgmBwWCAwWBQZqwiOImGvLEzSDHjDD1tDxgJcDt27IBer4fdbofBYFAC/a5du5TxiMAngq14YE9VVRW0Wm1EtgsKTU1Nyv2Gfibl5eUoKyuLSGIh7lEEZfF9WVkZysrKlNP3mpqalBMRASiVjNBKiyRJyvtUVFSguroau3btgtFoRGVlJbZs2TLq+uLfJ5JbHYPDPnj7O3DZehwXOrrxptGGtJRkPPz1TRj0DkHuuwhbxwBcV9y4bf1qrLr3cSy68e6IXT9usfw/JzEBoAVjvIRABKfQmet4r8vIyBi3VC4e+KPX69HY2IjGxsZr3kOs2Y/dly/2ppeXl0f0iGCx/i667nU6ndJ4N1HAH6/JMbQXQvwuZt4z0dTUNGrJYKyGhgYcPHhQ+d5isSAjI0NJoqaymyAcfk8fnBffRXvPIP7f0dPodgzi8Yc2I39RJuS+NjjdQZy1OPClb/0AN9/5ABJTMyM+hrj07nuxHgGNQxVcvS4Y60HQLGv5ONYjiBnR1W+xWOB2u5WgB3y6Lh0a/LZu3Qq73a4EfZFkbN26FRqNBtu2bYNGo8GBAwdGXcdkMqGmpmbUUbmRZDQaRwVLQdybCPLiV2dn54RBXcy2Q2fdIiCPXTqZ6qw89BkJZWVlaGpqUrY2VlRUwGq1wmQyXVMdCFVaWqosAYQ2IYbL2fYeTH/4Cf78QStef/sT3HhDAWr/sRwJASf6HC6096qw4Z5/xvLVnwn7GvPSz/ZH773fPQYcYwIwF7ECQHFFBJHxjos1GAzKljRBlLSvN8vX6XQwmUyjTsAL7fqPxtMBZVlWAqboP7heV78IrqIcL/oOQpdAonWaoOhvEMQuB0mS8MQTT2D37t0ARj4j0SsQmrSIXoHQY37F68VyTmjj4VTYW0/g3MVe/Ond80hOTEB15a1IS06A44qMorVfwcYND0Xi1kng2v+cxgSACKNP+wtVXl6OioqK6x5RK/buGwwGVFdXA4hs6T90R8H1Ar2YuW/cuFEJ8NEso4dLVCDEZymqKqHJ2NjDkkJfK5ZxrFar0qch/s3GNiBez4VWC/74znl4vEO4+45VuElbiIEhNUrv/R9IySyJ2L3SVe8eG0kCaE5iAkCEkdl/aAlap9Nhx44dk55NX15ejoaGBjQ1NaG6unrUsbShp/dNRWiwF4Fu7I4CEehDS+NzKchPRNzLli1blM97qo2KoooROtsP7fEwmUyjdiTU1tZe82/nHXDhiPEDnLtwBQWLMvBQxWZkltwBzbIvIjE5I4J3SgCAkyc5+5/jmAAQAcr2Mqt1ZK9yRUXFlF4nytwmk+maJ/ZNZb++2L43dr9+6I6C0tJS5ev5TKvVwu12Q6/XK+X/mTzOeGxSIBIoq9U67md//uwpvP1uC7IzU/DAV2/Hqs3fRUrumrCvTxNwOtn4Nw+wCTAexXETYDQ0NjYqs08A2Llz57il/9CA39TUdM3JgjqdbtRWxYXMaDTCbDZPu0oyE8//17/HO0d/h+XLlqPu336NjOzCWbv2nBfJJkCnE/jPgyz9zwNMAOIRE4CIkmUZ27ZtgyzLo46mFSVqo9F4zQE94iQ+cZreXHms70LV23UJD/z1bShaXIKX9/8nChdzvX+USCUADP7zChOAeMQEIOLEur1er4fRaITBYBi1hh96KiED/uw7YXgJ5o9bUL7taSwuXhrr4cw9kUgAGPznHfYAEM2QOIHQaDQq2/8AKOvT4lQ+ip0kaTH0f6Vj8I+W7m7gjd8x+M8zTACIwiDK+/X19aNOBhSn8pWXl3OWP4es138z1kNYuE6eHGn483pjPRKaJiYARNMgZvqHDh1SyvsM+hSXnE7gyJ8BK5/yN18xASCahCzLyimBoUcCz+SRtETzltcLnDgJnDRx1j/PMQGIRx2XgOIlsR7FnCfLMhobG3Hw4EHl+F29Xo+Kigqu6dPC4XJN7ecY+BccJgDxyOUEwARgIqF7+znbpwVtogTA6x1p8DtxEmjvYOBfYJgAxKMzZ4E1PAFtInq9HlarVXnMLtGC5fWN/O50fhrwu7uBrm6gu4dBfwHjOQDxqOph4KmdsR4FEc0FL+4BfvFqrEdBMaCO9QAoBs60xHoERDRXtPD/g3jFBCAetbRMvfGHiBYupwt4/3isR0ExwgQgHjldrAIQEYN/nGMCEK+45kdEb70V6xFQDDEBiFfvH+cyAFE86+gAXvtNrEdBMcQEIF45XUADqwBEcYvl/7jHBCCe/eJVVgGI4tXen8Z6BBRjTADiGasARPFp709HjgSnuMYEIN6xCkAUXzo6gNdej/UoaA5gAhDvnC7gqadjPQoimi2c/dNVTAAI+NPb3BZIFA8aXmXnPymYANCIvT/lkaBEC1lHBxv/aBQmADTC6QJ2fH/kPwkiWlg6OoBHHmW/D43CBIA+1XFp5D8JJgFEC4cI/lz3pzGYANBoTAKIFg4Gf5oAEwC6FpMAovnvTAuDP02ICQCNr+MScH8ldwcQzUcNrzL406RUwdXrgrEeBM1x938NeOLvgOLiWI+EiCbS0QG8uAd46+1Yj4TmASYANDXFS4D77xtJBIhobnFdPda7gSd70tQxAaDpKV4ykgTc+llWBIhijYGfZoAJAIXv/q8B994zkgxkZsZ6NETxweUaafBreHXkkb4M/BQmJgAUGbd+Fli75tNkoLh4pFpAROHruAS4nCMBv+XsyO9nWhj0KSKYABAREcUhbgMkIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIhsf7hZAAADeUlEQVSI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOMQEgIiKKQ0wAiIiI4hATACIiojjEBICIiCgOqQHYYj0IIiIimk1BmxqAI9bDICIiolnlUCOossV6FERERDSLgrCpoQraYj0OIiIimlUmNVQwx3oURERENItUMKmB4SOxHgcRERHNIlXArFa1tNjAnQBERERxImhTtbTYxDkAr8d0LERERDQ7gjgCiIOAVKrfxHIsRERENEsCgXoAUInvg6vX9QHIidV4iIiIKNqCNtXZ0zcAoUcBB1UvxWw8REREFH1B1XPiy08TgPTEl8FTAYmIiBamIBxQDx8V3yoJgMpkcrAKQEREtEAFUX915x+AsU8DZBWAiIhoAQrakDD8cuifjEoAVCaTA8DzszomIiIiiq6g6rnQ2T8Qsgtg1M+tXncYwOdnYUhEREQUVZ92/odSj/ejUA0/Ci4FEBERzXcOqAJfGO8vxk0ArpYJuBRAREQ0rwWuKf0L41cAAKjONr8EgLsCiIiI5qNg8DnV2TMvX++vx+0BGPX6NevqEURVZEdFREREURNEveqT5kcn+pFJEwAACK5edxKALiKDIiIiougJBk2qT05vnOzHrrsEEEp1tnkjVGiY+aiIiIgoaoKon0rwB6aYAACAqqW5OvQMYSIiIppDAnhpsrJ/qCknAACg+uTj5wHUgFsEiYiI5goHEHhSda65ZjovmlIPwFjBNWtWIKg+DKhWhPN6IiIiiogjUA0/er2tfhMJKwEQgmvWVSMYfJaJABER0axyAIEJt/lNZkYJACCqAQn/AKAaQM5M34+IiIiuy4Fg8CX4PC+rbLYZLcfPOAEQgmvWrAASPs+KABERUcRFLPALEUsAQgW16++CergaKnyeyQAREVFYbAgEXkcw+LrK0nI00m8elQQg1NWGwTIEoYMKuqsJQQ6AFdG+NhER0TxgA+AAgjYEgjao1Cb4A0dUrWcuRPOi/x/2L3G8YMAtsAAAAABJRU5ErkJggg==","e":1},{"id":"image_1","w":123,"h":123,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_2","w":123,"h":123,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_3","w":123,"h":123,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_4","w":123,"h":123,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_5","w":26,"h":26,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAA+klEQVRIie2UTWoCQRCF3+ueheAi3sA+Qo4wIug2IMN4jZzAeBLdySxEd4GEwBwhN8h4A0/gyyIYA2kX1f4sxG/dr79quqqAW4OWw4vFa/A+W0m7uiyHz5ass9Xlc0mPAJ9sObMonbtoz/YqIunCIufYtQqSRKfwO7Cz2arTarWj8+G9e5DUIZVLyAE1gJsDAKkQvZhqimI4/SeqqrcvANFQKlnmw2jU3wBA9qeGtaTIi9gcqtwFgIHEVmIt6WhTkKr3EsC466rqfQLoRUI9Hg96lmxqMzTWgEkkxT/+7KJTuIuuLTo+P2cRkT/DS+LTKjKzXH4kb/Db4htN1kgMdBPcBAAAAABJRU5ErkJggg==","e":1},{"id":"image_6","w":58,"h":58,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAABW0lEQVRoge3aMU7DQBAF0D8OAdH5CKa0KNjcIDkJ4gaUEQ3QQKgSjsAJgBOQG8QKRSQafANSWhHsUCAgnVdOMqDNf5W1Gvn7y7YsWwaIiIiIaohl2Jl7cR/6fi6QOQSXgyIvrbJ3rIIu3Gta+epeIBkAwCMD0LPKT6yCKlQOQPazIEvbBsyK/jUWjQ2LxoZFY8OisWHR2LBobLamaPCL96mbpG3sZi0kaZOgxMuRh46WlkokOGmyr2+DIh+HzgYV7btZJl4mCm1UcoPKKqk6o6IzrxsMunRFZfgPSwJAtuf3j0MGw+5RRbnK0WxSAq09m19zAXSht1CMVzqiNRPIXFVH19P8LmzeSN/NuvB4WloqB9P8wCp/ax4vLBobFo0Ni8aGRWPDorFh0diw6PqDfNAL8ubyjVwVhwXw+6VCVR+ssgHDv1IAAAv00PZdRevt5jl/NM0mIiIiqvMJ07pQx3UjUe4AAAAASUVORK5CYII=","e":1},{"id":"image_7","w":29,"h":29,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAACAklEQVRIie2WP27UQBSHv9/sJqTLcoL4CLFEAzSYC5ADIGSJJkJCu5wAtkfCiAI6khOQE5BNgSgdCpQy3hNkCwqUXc+j8Gj/IJS1rSgFypNsP9nz3je/5zejgVtbY5bv9drGdlsBz54+Cu7oxqB09ATfHupaQWfao1RqedqqxI2h9jNNMbcD2maTfhuoGgHP0oipjpEiMBAFU4sVH0ya5GmmdNb5jCnCA17gtYNzjdXWVmr58wzRr0LMFvGaYN1Y8afi2qCWD3rwKwOeYdI8yuYjQDqHzuO64Cuhlu9HlP4LYjeMtsARmGFSyGDAmEuX6P568D+hlg96zH4PwPeR62GAQklNQmYYqiahMAHAGOPcG937eFgbat/3I5xLkfUxetVXC4lX3UrccriFmwScYwyRfrCxWSjOVrp7tXu3tiY45eCOQGAyzIXn3Afvqstc1cUmC++E1wSvE3DQ1UXt8laqBxFMX4NS5jLRFepAlnFnY/i3strQedpvL1PgHWKbRSsFFuHfqgBSPfhwsi5fLWgFfrEL3a8Yd4GlJkJAwfQyUXKN63QBHuxSki9FGmaiVKwkO62bBxpsg3qYnVLyClNoJglT1hTYCAqgJMvwbkRJ2Ht53xTYGBrQQ+iA50BJVtwIVMnbEV4jvDtqA4S2xxXPIVON20JbmR0PWp8Eb+3/tD8dYsyksED0BwAAAABJRU5ErkJggg==","e":1},{"id":"image_8","w":32,"h":32,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAACAUlEQVRYheWXP3KbQBSHf48/PUcgN/AVKOKYSUUjhF1EOYJPIHSC+AZSCg+DGlUZxknBFXQEjkAf774UljzatYFlIU3yKoa3+75vdncWHvC/B50f9vtqBXjfmLl9fv6d3N19Ps4F2e9/XgFUM3MLcJ6mn76fc875gdldM3MAIPQ8v358/HE1MzwAEAL0cJl/FSBCcPE+mENCg5+C23cFhBD32vzA8/xDUVShDbwoqpAZBxUOAMjfFciyeMcsdYnQcdx6rERRVKHjuDUAbZ66/4oAACyXNw8AKYZjJQbgG3086S8AoCx/rQHWRRopRZRlcTMXvFPARsIG3iswRsIWDmhnQI80/bjpOhPb7SGYCgcGVuAcHStxlFIkjuMeAGj3hRncWOBF4mkH0JehcczYLZfXX03rGguYSIyFjxbok7CBAwOHcFQhy0qzbgERdovFX9oC00M4VsJo4cryKX8L56OU4gMRlB8XZqzKsspnEzjB1xq8kVImWRY3vu9HADdq3l2bSvQK9MBfr+IkiVoppbVEz8doGH4ZL1eyUwMUqhmxSdO4U6TjczwOPkXijYAt3FZCEZgKH5IQQt7f3t4of8VKX8DsbqfChyQAXnX2BYoZoSWixAYOAFkWN0SUEKFVMwZ9wWlStFhcT+qOTvMjVaK3L+BmLrgucVE7n6PuvxN/AIZHYixFY3S4AAAAAElFTkSuQmCC","e":1},{"id":"image_9","w":81,"h":81,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAABRCAYAAACqj0o2AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAELElEQVR4nO2aXXLiRhRGvysrU5maEYEV0N7BZAXBO/AObH7yME9DVmC8gjhPqRoPFt5BZgVmVuDZgRtvAGJIOWWDvjzElAXIBjdWI1F93iRk7vXhtvp2S4DD4XA4HA6Hw+FwOBwOh8PhcDgceUJsBbppq0MP+IWA9u9w/vaj1rZip40VicMzdQLy02xg6ezc4XgbZKYucfRZfeAOL58Irgme+3deJ88yU5c4PFUVeLxYkkSuZXqbTgAACChAjiZveDH6og42nc9LsS+R+E5IlQK9+BEUhZ1Ru3yVJ5mpSxz7s7IoKBbqulOo9XYBaW2DzI0O56Cujycie3mXmfrE0g9V0Y/Yj50aBPVeKeE65Uc4ANh66rsE0KC03jf0eRq5mmKnT2yXGT8O6r0n4/ZDpXai6Eggh09dkzWZmZM4ZVWZItJ8V9NfXyFNY6xIvDkrXwmhpsc+PfW2cdVb5W9XkQlBFxM5Dn7V3XVzNSETfeJzlKpaF+rX1bEnuwQ7iRcRFXi8GJ6VL0af1Qe7GeZA4pRVZXKHl6O2Cm//VMpWblYkCkTHj8celel3rSKT4OH4Da9sycxNJc4TlwlKN+kaWzLtVCJnG2mJHieZdSlVtQ4aeg8ilU3JzG0lzhPU9Legofc8kf2k1Q+QnsytkTjlXU1/LdR6u09tcgCvL9OKRGJhE0KlHXO6ybGCzMt11+VbV4nzrCCzSOFJP1RF0xi2JpbB7JnIOGFT4jKB+XxQxL356LAiMRL8HT8WetYlAsBtqJQIDgAsxp8siF2ZrR/OU4Zt1RpHvARZWfyUJ6U1nu345mm9AGIQ3+ogzFcsL2V4qiqyw99JLqypCQw8svW+cf3HOjGsSJQ5iTZgqIojogXyE5l0AbqTe6kWPvb0urGsSZz7P1K9Jw5PVeUfMgQXJwsCA1CqhYb+67XiWZF4/wMGfvR4TElH4tLqA08mnndcqmrjSSQJO/dEC9x8UfujiCESqpz/74AfBrXetzRi25I488vLKw7n21CpMREmz7pAWtUXx9rt3uQ5yzJGbdUkeISkH0XwHZBmUNOpVF+cjQ3nfqiKptUxrT4mVB+BgYAnQe36eO0kV8Rasz2/bv1xIj+ZfM+zTTPRndzJz0HdnkAgRxOLjabZFGsSZW5y+TdiCcDSx6Y2m2ZTLFaiDIBHC76PpcPZdtNsSiaH86aaZlPsDWdCx308PKxaaD822TSbkplKzELTbIo1iUzaTX5g1FbNcZTcNGe1+uLYrMQZiRQUn2uaH65qFSz3fCZsbDiLcH8coYmkJRvRHd9LtbTBtuUl2BzOM4tlEplrmk3JzMSShabZFGu7OAnvbgOYVp80s/LqsAnWNiBKVT2IIL/FzxHsTDzZzbNAwGIlTumHSvlE2Y9Er/rKscPhcDgcDofD4XA4HA6Hw+FwbAv/AQBwbvBbuLZyAAAAAElFTkSuQmCC","e":1},{"id":"image_10","w":29,"h":29,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAACvUlEQVRIicWWX27aQBDGv9mFSsGqxA3qI7gniFHVVKgPURQpkcUDzgmaGxBOEG4AeYgsLEXwUqHSVjgnKDlB3RvkBZBS29OHsGYD5k8SUL8nz+7s/jyz3vEQNlCz2SkaxtsqM9sAWwBMbXoIUAhQN0n+3jpOOVy3H62a9LzvtpSoPcI2ExFacRzXV8EzoY+RGRfM+LIpbFHcGI/H9bOzo/u1UM/rmULIAZ6mEMwIiEQrl6Pg+PjDHzXu+30rjmOLSO4TwZ3bLkySuDQf9RNoFpAZLebV6dLXE8naHHwBnEKbzU6xUDB+KSAR7pn5/PT009U6WAbclVJeMqOowOPx6L1KtVCOhmFc6EAApZcAAcBxyi0Apek+AGAWCoWamqfpm5lCyN+zZey+FKjL83quELKp7GmaAwEAUsr0LZjR2gYQeIyYGS1lK47wvJ7JPDt45ri+DWDWfsywm81OUQDS1gZbm3ylz5HjlEMiCpS9t2dUhZR0qAaIOMha+FrFMWvHxbaAdiejKLrbBRSIA/VERJZgZksNVCqfh7tAzh2ZKZY57lL/DRoq4+bm57tdQHy/b2nmUBBReo5RtPl/8zmKY6RQZg4FMLsmRIm7C6iU2J8x0BX5fD69Q8ywPa9nbhM4X/GSJLkVR0ele71i6HV4G5qv645TDgUAxDH0+ui229+q2wB6Xt/NqusCABznYwBQY+ZOjevrrxZeId/vW1LS5QzIDVUk0nv65k2uDnA4NYu5XH7Qbv94UcS+33MBGjDztHPgcDIZp9nM6JHEACAzddigpdTXSylrekoBDpMkye6RVoGnrl2AulGU3FUqB0PdH5C2lFRd7I8XgZlQAOh0BsWHh6gG8Pm66JaJmRuTyYZ9r64lLeUaGAIhcHFycnC7zGclVIcDsIXIHQJsAnpZQ0hEQyIORqPRVVZk8/oHKa9Y05X+kB4AAAAASUVORK5CYII=","e":1},{"id":"image_11","w":500,"h":500,"u":"","p":"data:image/png;base64,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","e":1}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"Icon.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[249.644,247.994,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[20,20,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"0.1.png","cl":"1 png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[135.288,163.146,0],"to":[8.641,-8.004,0],"ti":[-25.71,9.053,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[187.132,115.124,0],"to":[25.71,-9.053,0],"ti":[-29.075,-13.183,0]},{"t":149,"s":[289.548,108.83,0]}],"ix":2},"a":{"a":0,"k":[61.5,61.5,0],"ix":1},"s":{"a":0,"k":[85,85,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"0.2.png","cl":"2 png","refId":"image_2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[361.582,119.35,0],"to":[8.004,6.827,0],"ti":[-11.535,-19.774,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":59,"s":[409.605,160.311,0],"to":[11.535,19.774,0],"ti":[-3.531,-12.947,0]},{"t":152,"s":[430.791,237.994,0]}],"ix":2},"a":{"a":0,"k":[61.5,61.5,0],"ix":1},"s":{"a":0,"k":[85.072,85.072,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"0.3.png","cl":"3 png","refId":"image_3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[363.701,392.655,0],"to":[-8.239,5.179,0],"ti":[18.832,-7.415,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[314.266,423.729,0],"to":[-18.832,7.415,0],"ti":[10.593,-2.236,0]},{"t":149,"s":[250.706,437.147,0]}],"ix":2},"a":{"a":0,"k":[61.5,61.5,0],"ix":1},"s":{"a":0,"k":[79.33,79.33,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":2,"nm":"0.4.png","cl":"4 png","refId":"image_4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[134.887,382.768,0],"to":[-5.179,-5.65,0],"ti":[11.4,12.782,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[103.814,348.87,0],"to":[-30.014,-33.653,0],"ti":[4.355,7.523,0]},{"t":149,"s":[77.684,303.732,0]}],"ix":2},"a":{"a":0,"k":[61.5,61.5,0],"ix":1},"s":{"a":0,"k":[88.517,88.517,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":2,"nm":"1.png","cl":"png","refId":"image_5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250.706,247.881,0],"to":[16.008,-30.838,0],"ti":[-14.36,27.66,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[346.751,62.853,0],"to":[14.36,-27.66,0],"ti":[1.648,-3.178,0]},{"t":92,"s":[336.864,81.921,0]}],"ix":2},"a":{"a":0,"k":[13,13,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":75,"s":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":91,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":106,"s":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":120,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":135,"s":[50,50,100]},{"t":149,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"3.png","cl":"png","refId":"image_6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250.706,249.294,0],"to":[-34.84,-7.298,0],"ti":[27.895,6.003,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[41.667,205.508,0],"to":[-27.895,-6.003,0],"ti":[-6.944,-1.295,0]},{"t":62,"s":[83.333,213.277,0]}],"ix":2},"a":{"a":0,"k":[29,29,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[20,20,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":40,"s":[80,80,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":75,"s":[30,30,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[80,80,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[30,30,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":120,"s":[80,80,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":135,"s":[30,30,100]},{"t":148,"s":[80,80,100]}],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":2,"nm":"4.png","cl":"png","refId":"image_7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250.706,249.294,0],"to":[-25.188,6.709,0],"ti":[33.192,-7.062,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[99.576,289.548,0],"to":[-33.192,7.062,0],"ti":[8.004,-0.353,0]},{"t":102,"s":[51.554,291.667,0]}],"ix":2},"a":{"a":0,"k":[14.5,14.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":60,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":75,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[80,80,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":120,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":135,"s":[80,80,100]},{"t":148,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":2,"nm":"5.png","cl":"png","refId":"image_8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250.706,249.294,0],"to":[29.872,17.368,0],"ti":[-28.695,-16.544,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[429.938,353.503,0],"to":[28.695,16.544,0],"ti":[1.412,2.001,0]},{"t":107,"s":[422.876,348.559,0]}],"ix":2},"a":{"a":0,"k":[16,16,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[20,20,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":60,"s":[90,90,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":75,"s":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[90,90,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[50,50,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":120,"s":[80,80,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":135,"s":[50,50,100]},{"t":148,"s":[80,80,100]}],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":2,"nm":"7.png","cl":"png","refId":"image_9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[250.706,249.294,0],"to":[-17.25,-32.167,0],"ti":[14.779,27.694,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[147.203,56.294,0],"to":[-14.779,-27.694,0],"ti":[-2.472,-4.473,0]},{"t":72,"s":[162.034,83.13,0]}],"ix":2},"a":{"a":0,"k":[40.5,40.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":21,"s":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":75,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":120,"s":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":135,"s":[70,70,100]},{"t":147,"s":[40,40,100]}],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":2,"nm":"8.png","cl":"png","refId":"image_10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[248.706,249.294,0],"to":[-29.038,10.617,0],"ti":[42.927,-16.737,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[74.48,312.994,0],"to":[-32.297,12.593,0],"ti":[0,0,0]},{"t":93,"s":[95.667,304.52,0]}],"ix":2},"a":{"a":0,"k":[14.5,14.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":60,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":75,"s":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":90,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":105,"s":[40,40,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":120,"s":[70,70,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":135,"s":[40,40,100]},{"t":148,"s":[70,70,100]}],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":2,"nm":"BG","refId":"image_11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":150,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/public/pdf2.json b/public/pdf2.json new file mode 100644 index 0000000..d11f614 --- /dev/null +++ b/public/pdf2.json @@ -0,0 +1 @@ +{"v":"5.6.6","ip":0,"op":160,"fr":60,"w":1857,"h":1319,"layers":[{"ind":2336,"nm":"surface12299","ao":0,"ip":0,"op":264,"st":0,"ty":4,"ks":{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[133.37,133.31]},"sk":{"k":0},"sa":{"k":0}},"shapes":[{"ty":"gr","hd":false,"nm":"surface12299","it":[{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[717.62,872.05],[917.56,872.05],[917.56,427.57],[1215.67,427.57],[1215.67,872.05],[1415.6,872.05],[1066.61,1266.56]],"c":true}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":8},"c":{"k":[0.4,0,0,1]},"hd":false},{"ty":"gf","s":{"k":[717.62,427.57]},"e":{"k":[717.62,1266.56]},"t":1,"h":{"k":0},"a":{"k":0},"g":{"p":2,"k":{"k":[0,0.86,0,0,1,0.33,0.01,0.01,0,1,1,1]}},"hd":false,"o":{"a":1,"k":[{"i":{"x":[0.67],"y":[1]},"o":{"x":[0.33],"y":[0]},"t":59,"s":[0]},{"t":109,"s":[100]}],"ix":5}},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,1080.19],[1106.76,1076.6]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,979.31],[1106.76,975.72]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,871.27],[1106.76,867.68]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,662.34],[1106.76,658.76]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,766.81],[1106.76,763.22]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,557.88],[1106.76,554.29]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,453.42],[1106.76,449.83]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[483.77,348.96],[1106.76,345.37]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[933.17,244.49],[1106.77,244.49]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[933.17,147.31],[1106.77,147.31]],"c":false}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":4},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[-7.09,-5.98],[0,-10.45],[7.09,-5.93],[12.5,0],[0,0],[0,0],[0,0],[0,0]],"o":[[12.5,0],[7.09,5.97],[0,10.45],[-7.09,5.92],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[407.49,109.46],[436.88,118.42],[447.52,143.05],[436.88,167.63],[407.49,176.51],[381.17,176.51],[381.17,207.45],[370.81,207.45],[370.81,109.46]],"c":true}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[-5.13,4.24],[0,7.74],[5.13,4.24],[9.7,0],[0,0],[0,0]],"o":[[9.7,0],[5.13,-4.25],[0,-7.94],[-5.13,-4.25],[0,0],[0,0],[0,0]],"v":[[407.21,167.41],[429.46,161.04],[437.16,143.05],[429.46,124.79],[407.21,118.41],[381.17,118.41],[381.17,167.41]],"c":true}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[-7.93,-4.16],[-4.38,-7.42],[0,-9.52],[4.39,-7.42],[7.94,-4.16],[10.36,0],[0,0]],"o":[[0,0],[10.36,0],[7.94,4.15],[4.39,7.41],[0,9.52],[-4.38,7.42],[-7.93,4.15],[0,0],[0,0]],"v":[[471.32,109.46],[511.21,109.46],[538.65,115.69],[557.13,133.05],[563.71,158.45],[557.13,183.86],[538.65,201.23],[511.21,207.45],[471.32,207.45]],"c":true}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[-6.44,3.41],[-3.55,6.02],[0,7.84],[3.55,6.02],[6.44,3.41],[8.59,0],[0,0],[0,0]],"o":[[8.59,0],[6.44,-3.41],[3.55,-6.02],[0,-7.84],[-3.55,-6.02],[-6.44,-3.41],[0,0],[0,0],[0,0]],"v":[[510.66,198.48],[533.2,193.38],[548.18,179.24],[553.5,158.45],[548.18,137.66],[533.2,123.52],[510.66,118.41],[481.68,118.41],[481.68,198.48]],"c":true}}},{"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[597.32,118.41],[597.32,156.91],[647.99,156.91],[647.99,165.87],[597.32,165.87],[597.32,207.45],[586.96,207.45],[586.96,109.46],[654.15,109.46],[654.15,118.41]],"c":true}}},{"ty":"fl","o":{"a":1,"k":[{"i":{"x":[0.67],"y":[1]},"o":{"x":[0.33],"y":[0]},"t":59,"s":[0]},{"t":109,"s":[100]}],"ix":5},"c":{"k":[0.4,0.4,0.4,1]}},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"gr","hd":false,"it":[{"ty":"sh","ks":{"k":{"i":[[0,0],[-27.6,0],[0,0],[-9.38,-9.37],[0,-13.26],[0,0],[27.6,0],[0,0],[0,27.6]],"o":[[0,-27.6],[0,0],[13.26,0],[9.37,9.37],[0,0],[0,27.6],[0,0],[-27.6,0],[0,0]],"v":[[424.86,107.99],[474.83,58.02],[1130.01,58.02],[1165.34,72.65],[1179.98,107.99],[1179.98,1110.34],[1130.01,1160.32],[474.83,1160.32],[424.86,1110.34]],"c":true}}},{"ty":"st","lc":3,"lj":2,"ml":10,"o":{"k":100},"w":{"k":8},"c":{"k":[0.4,0.4,0.4,1]},"hd":false},{"ty":"fl","o":{"a":1,"k":[{"i":{"x":[0.67],"y":[1]},"o":{"x":[0.33],"y":[0]},"t":59,"s":[0]},{"t":109,"s":[100]}],"ix":5},"c":{"k":[0.95,0.95,0.95,1]}},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[75,75]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"tr","o":{"k":100},"r":{"k":0},"p":{"k":[0,0]},"a":{"k":[0,0]},"s":{"k":[100,100]},"sk":{"k":0},"sa":{"k":0},"hd":false}]},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.27],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":0,"s":[0]},{"t":66,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"hd":false}]}],"meta":{"g":"LF SVG to Lottie"},"assets":[]} \ No newline at end of file diff --git a/public/pdft.json b/public/pdft.json new file mode 100644 index 0000000..ff5b994 --- /dev/null +++ b/public/pdft.json @@ -0,0 +1 @@ +{"nm":"Comp 1","ddd":0,"h":300,"w":300,"meta":{"g":"LottieFiles AE "},"layers":[{"ty":4,"nm":"Cloud","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[25.5,17.5,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[104.543,104.543,100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[104.543,104.543,100],"t":20},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[104.543,104.543,100],"t":52},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[122.724,122.724,100],"t":62},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[118.481,118.481,100],"t":66},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[118.481,118.481,100],"t":92},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[130.602,130.602,100],"t":105},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[121.511,121.511,100],"t":110},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[121.511,121.511,100],"t":121},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[139.693,139.693,100],"t":131},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[131.206,131.206,100],"t":135},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[131.206,131.206,100],"t":138},{"s":[104.543,104.543,100],"t":149.000006068894}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[150.538,150,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,4.953],[-3.791,1.047],[0,0.477],[-4.556,0],[-1.271,-0.8],[-4.877,0],[0,-6.735],[0.296,-1.052],[0,-3.984],[4.953,0],[0,0]],"o":[[-4.953,0],[0,-4.124],[-0.078,-0.454],[0,-4.556],[1.612,0],[1.951,-4.138],[6.735,0],[0,1.146],[3.595,1.168],[0,4.953],[0,0],[0,0]],"v":[[-14.065,16.5],[-24.033,7.533],[-17.458,-1.112],[-17.576,-2.511],[-9.326,-10.761],[-4.939,-9.499],[6.098,-16.5],[18.293,-4.304],[17.84,-0.997],[24.033,7.533],[15.065,16.5],[-9.326,16.5]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[25.033,17.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,4.953],[-3.791,1.047],[0,0.477],[-4.556,0],[-1.271,-0.8],[-4.877,0],[0,-6.735],[0.296,-1.052],[0,-3.984],[4.953,0],[0,0]],"o":[[-4.953,0],[0,-4.124],[-0.078,-0.454],[0,-4.556],[1.612,0],[1.951,-4.138],[6.735,0],[0,1.146],[3.595,1.168],[0,4.953],[0,0],[0,0]],"v":[[-14.065,16.5],[-24.033,7.533],[-17.458,-1.112],[-17.576,-2.511],[-9.326,-10.761],[-4.939,-9.499],[6.098,-16.5],[18.293,-4.304],[17.84,-0.997],[24.033,7.533],[15.065,16.5],[-9.326,16.5]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.098,0.7059,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[25.033,17.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"File 4","sr":1,"st":141.000005743048,"op":280.000011404634,"ip":141.000005743048,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[10,13,0],"ix":1},"s":{"a":0,"k":[114.696,114.696,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[175.5,84.5,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":142},{"s":[100],"t":148.000006028164}],"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[-0.947,0],[0,0]],"o":[[0,0],[0,0.947],[0,0],[0,0]],"v":[[-2.571,-2.571],[-2.571,0.857],[-0.857,2.571],[2.571,2.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[14.536,5.714],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.894,0],[0,0],[-0.964,-0.964],[0,0],[0,-1.364],[0,0],[1.894,0],[0,0],[0,1.894],[0,0]],"o":[[0,0],[1.364,0],[0,0],[0.964,0.964],[0,0],[0,1.894],[0,0],[-1.894,0],[0,0],[0,-1.894]],"v":[[-5.571,-12],[0.87,-12],[4.506,-10.494],[7.494,-7.506],[9,-3.87],[9,8.571],[5.571,12],[-5.571,12],[-9,8.571],[-9,-8.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[10.25,13],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"File 3","sr":1,"st":0,"op":139.000005661586,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[10,13,0],"ix":1},"s":{"a":0,"k":[114.696,114.696,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[175.5,84.5,0],"t":0,"ti":[-0.214,-46.316,0],"to":[32.86,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[222,155.5,0],"t":33,"ti":[23.393,43.894,0],"to":[-2.863,64.962,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[115.86,191.597,0],"t":83,"ti":[0,-13.408,0],"to":[-12.695,-15.221,0]},{"s":[142.794,153,0],"t":107.000004358199}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[-0.947,0],[0,0]],"o":[[0,0],[0,0.947],[0,0],[0,0]],"v":[[-2.571,-2.571],[-2.571,0.857],[-0.857,2.571],[2.571,2.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[14.536,5.714],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.894,0],[0,0],[-0.964,-0.964],[0,0],[0,-1.364],[0,0],[1.894,0],[0,0],[0,1.894],[0,0]],"o":[[0,0],[1.364,0],[0,0],[0.964,0.964],[0,0],[0,1.894],[0,0],[-1.894,0],[0,0],[0,-1.894]],"v":[[-5.571,-12],[0.87,-12],[4.506,-10.494],[7.494,-7.506],[9,-3.87],[9,8.571],[5.571,12],[-5.571,12],[-9,8.571],[-9,-8.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[10.25,13],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3},{"ty":4,"nm":"File 5","sr":1,"st":139.000005661586,"op":278.000011323172,"ip":139.000005661586,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[10,13,0],"ix":1},"s":{"a":0,"k":[97.297,97.297,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[183,221.5,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":139},{"s":[100],"t":149.000006068894}],"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[-0.947,0],[0,0]],"o":[[0,0],[0,0.947],[0,0],[0,0]],"v":[[-2.571,-2.571],[-2.571,0.857],[-0.857,2.571],[2.571,2.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[14.536,5.714],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.894,0],[0,0],[-0.964,-0.964],[0,0],[0,-1.364],[0,0],[1.894,0],[0,0],[0,1.894],[0,0]],"o":[[0,0],[1.364,0],[0,0],[0.964,0.964],[0,0],[0,1.894],[0,0],[-1.894,0],[0,0],[0,-1.894]],"v":[[-5.571,-12],[0.87,-12],[4.506,-10.494],[7.494,-7.506],[9,-3.87],[9,8.571],[5.571,12],[-5.571,12],[-9,8.571],[-9,-8.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[10.25,13],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4},{"ty":4,"nm":"File 2","sr":1,"st":0,"op":139.000005661586,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[10,13,0],"ix":1},"s":{"a":0,"k":[97.297,97.297,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[183,221.5,0],"t":0,"ti":[22,26,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[116.5,205.5,0],"t":22.319,"ti":[-13,7,0],"to":[-30,-42,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[112.5,136.5,0],"t":46.868,"ti":[0,0,0],"to":[13,-7,0]},{"s":[151.5,147,0],"t":59.9400024414062}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[-0.947,0],[0,0]],"o":[[0,0],[0,0.947],[0,0],[0,0]],"v":[[-2.571,-2.571],[-2.571,0.857],[-0.857,2.571],[2.571,2.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[14.536,5.714],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.894,0],[0,0],[-0.964,-0.964],[0,0],[0,-1.364],[0,0],[1.894,0],[0,0],[0,1.894],[0,0]],"o":[[0,0],[1.364,0],[0,0],[0.964,0.964],[0,0],[0,1.894],[0,0],[-1.894,0],[0,0],[0,-1.894]],"v":[[-5.571,-12],[0.87,-12],[4.506,-10.494],[7.494,-7.506],[9,-3.87],[9,8.571],[5.571,12],[-5.571,12],[-9,8.571],[-9,-8.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[10.25,13],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":5},{"ty":4,"nm":"File 6","sr":1,"st":145.000005905971,"op":284.000011567557,"ip":145.000005905971,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[10,13,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[145.946,145.946,100],"t":274},{"s":[94.946,94.946,100],"t":283.000011526826}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[91,127,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":145},{"s":[100],"t":149.000006068894}],"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[-0.947,0],[0,0]],"o":[[0,0],[0,0.947],[0,0],[0,0]],"v":[[-2.571,-2.571],[-2.571,0.857],[-0.857,2.571],[2.571,2.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[14.536,5.714],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.894,0],[0,0],[-0.964,-0.964],[0,0],[0,-1.364],[0,0],[1.894,0],[0,0],[0,1.894],[0,0]],"o":[[0,0],[1.364,0],[0,0],[0.964,0.964],[0,0],[0,1.894],[0,0],[-1.894,0],[0,0],[0,-1.894]],"v":[[-5.571,-12],[0.87,-12],[4.506,-10.494],[7.494,-7.506],[9,-3.87],[9,8.571],[5.571,12],[-5.571,12],[-9,8.571],[-9,-8.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[10.25,13],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":6},{"ty":4,"nm":"File","sr":1,"st":0,"op":139.000005661586,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[10,13,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[145.946,145.946,100],"t":129},{"s":[94.946,94.946,100],"t":138.000005620855}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[91,127,0],"t":0,"ti":[-27.5,13,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[129,86,0],"t":25,"ti":[-9.326,-17,0],"to":[38,-14.5,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.881},"s":[215,128.5,0],"t":70,"ti":[20.827,-9.947,0],"to":[10.837,26.295,0]},{"o":{"x":0.167,"y":0.084},"i":{"x":0.833,"y":0.833},"s":[192.5,193.5,0],"t":105.078,"ti":[0.5,22.541,0],"to":[-23.502,11.225,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[141,158.5,0],"t":129,"ti":[0,0,0],"to":[0,0,0]},{"s":[151.5,152,0],"t":138.000005620855}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0],[-0.947,0],[0,0]],"o":[[0,0],[0,0.947],[0,0],[0,0]],"v":[[-2.571,-2.571],[-2.571,0.857],[-0.857,2.571],[2.571,2.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[14.536,5.714],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.894,0],[0,0],[-0.964,-0.964],[0,0],[0,-1.364],[0,0],[1.894,0],[0,0],[0,1.894],[0,0]],"o":[[0,0],[1.364,0],[0,0],[0.964,0.964],[0,0],[0,1.894],[0,0],[-1.894,0],[0,0],[0,-1.894]],"v":[[-5.571,-12],[0.87,-12],[4.506,-10.494],[7.494,-7.506],[9,-3.87],[9,8.571],[5.571,12],[-5.571,12],[-9,8.571],[-9,-8.571]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"c":{"a":0,"k":[0.2863,0.3412,0.5843],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[10.25,13],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":7},{"ty":4,"nm":"Circle","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[101,101,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[150,150,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0},{"s":[160],"t":149.000006068894}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-55.228,0],[0,55.229],[55.229,0],[0,-55.228]],"o":[[55.229,0],[0,-55.228],[-55.228,0],[0,55.229]],"v":[[0,100],[100,0],[0,-100],[-100,0]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":10,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"d":[{"nm":"dash","n":"d","v":{"a":0,"k":5,"ix":1}},{"nm":"gap","n":"g","v":{"a":0,"k":5,"ix":2}},{"nm":"offset","n":"o","v":{"a":0,"k":0,"ix":7}}],"c":{"a":0,"k":[0.098,0.7059,1],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[101,101],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":8}],"v":"4.8.0","fr":29.9700012207031,"op":150.000006109625,"ip":0,"assets":[]} \ No newline at end of file diff --git a/public/tasks.json b/public/tasks.json index 553de46..e1a080a 100644 --- a/public/tasks.json +++ b/public/tasks.json @@ -1 +1 @@ -{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":"#FFFFFF"},"fr":60,"ip":0,"op":241,"w":512,"h":512,"nm":"MAN WITH TASK LIST","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[262.23,405.216,0],"ix":2},"a":{"a":0,"k":[245.449,4,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4,4],[486.897,4]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 3 Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-73.411,71.937,0],"ix":2},"a":{"a":0,"k":[2.091,5.267,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.852,0.971],[0,0],[0,0]],"o":[[0,0],[0,0],[2.155,-0.469]],"v":[[2.092,-5.267],[-1.376,5.267],[-2.092,-2.965]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.435000011968,0.204000001795,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.091,5.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Layer 4 Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-5.165,-3.649,0],"ix":2},"a":{"a":0,"k":[1.77,1.157,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.434,0.21],[0.179,-0.016],[0.234,-0.166],[0,0],[-0.393,0.13],[-0.294,-0.152],[-0.247,-0.573]],"o":[[-0.476,-0.323],[-0.215,-0.106],[-0.18,0.013],[0,0],[0.102,-0.298],[0.391,-0.135],[0.595,0.324],[0,0]],"v":[[1.288,0.906],[-0.059,0.02],[-0.653,-0.134],[-1.275,0.151],[-1.52,-0.008],[-0.81,-0.771],[0.271,-0.646],[1.52,0.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.545000023935,0.426999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.77,1.156],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"R DIMPLE Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[3.597,-0.671,0],"ix":2},"a":{"a":0,"k":[2.409,2.409,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.331],[1.33,0],[0,1.331],[-1.33,0]],"o":[[0,1.331],[-1.33,0],[0,-1.331],[1.33,0]],"v":[[2.409,0],[0,2.409],[-2.409,0],[0,-2.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.532999973671,0.475,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.409,2.409],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"L DIMPLE Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.819,-2.296,0],"ix":2},"a":{"a":0,"k":[0.966,2.434,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.068,0.172],[0.239,-1.434],[0,1.008]],"o":[[-0.007,1.435],[-0.904,-0.291],[0,-1.128]],"v":[[0.966,-2.434],[0.595,2.434],[-0.966,0.29]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.532999973671,0.475,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.966,2.434],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"MOUTH Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[8.973,2.759,0],"ix":2},"a":{"a":0,"k":[2.442,1.382,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[-0.835,0.058],[-0.61,0.977]],"o":[[0.711,1.113],[0.696,-0.048],[0,0]],"v":[[-2.192,-1.132],[0.194,0.496],[2.192,-1.017]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[{"i":[[0,0],[-0.835,0.058],[-0.61,0.977]],"o":[[0.711,1.113],[0.696,-0.048],[0,0]],"v":[[-2.505,-1.127],[0.188,0.683],[2.848,-1.022]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":120,"s":[{"i":[[0,0],[-0.835,0.058],[-0.61,0.977]],"o":[[0.711,1.113],[0.696,-0.048],[0,0]],"v":[[-2.192,-1.132],[0.194,0.496],[2.192,-1.017]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":180,"s":[{"i":[[0,0],[-0.835,0.058],[-0.61,0.977]],"o":[[0.711,1.113],[0.696,-0.048],[0,0]],"v":[[-2.505,-1.127],[0.188,0.683],[2.848,-1.022]],"c":true}]},{"t":240,"s":[{"i":[[0,0],[-0.835,0.058],[-0.61,0.977]],"o":[[0.711,1.113],[0.696,-0.048],[0,0]],"v":[[-2.192,-1.132],[0.194,0.496],[2.192,-1.017]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.442,1.382],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"L EYEBROW Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[12.726,-8.861,0],"to":[0,0.067,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[12.726,-8.461,0],"to":[0,0,0],"ti":[0,0.067,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":30,"s":[12.726,-8.861,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[12.726,-8.861,0],"to":[0,0.067,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":135,"s":[12.726,-8.461,0],"to":[0,0,0],"ti":[0,0.067,0]},{"t":150,"s":[12.726,-8.861,0]}],"ix":2},"a":{"a":0,"k":[2.063,1.124,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.281,0.27],[-0.399,0.065],[-0.316,-0.713],[0,0],[0.54,-0.074],[0.253,-0.148],[0.249,-0.228]],"o":[[0.11,-0.346],[0.276,-0.277],[0.803,-0.133],[0,0],[-0.526,-0.353],[-0.27,0.036],[-0.249,0.156],[0,0]],"v":[[-1.814,0.726],[-1.228,-0.217],[-0.168,-0.742],[1.814,0.247],[1.581,0.421],[-0.058,-0.006],[-0.838,0.278],[-1.563,0.874]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.063,1.124],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"R EYEBROW Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[5.439,-8.023,0],"to":[0,0.067,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":15,"s":[5.439,-7.623,0],"to":[0,0,0],"ti":[0,0.067,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":30,"s":[5.439,-8.023,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":120,"s":[5.439,-8.023,0],"to":[0,0.067,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":135,"s":[5.439,-7.623,0],"to":[0,0,0],"ti":[0,0.067,0]},{"t":150,"s":[5.439,-8.023,0]}],"ix":2},"a":{"a":0,"k":[2.486,1.178,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.382,0.303],[-0.487,0.025],[-0.404,-0.825],[0,0],[0.728,-0.026],[0.496,-0.658]],"o":[[0.11,-0.443],[0.376,-0.312],[0.981,-0.06],[0,0],[-0.649,-0.509],[-0.73,0.02],[0,0]],"v":[[-2.236,0.803],[-1.474,-0.361],[-0.12,-0.868],[2.236,0.455],[2.007,0.636],[-0.084,-0.126],[-1.972,0.928]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[2.486,1.178],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Layer 10 Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[11.203,-2.657,0],"ix":2},"a":{"a":0,"k":[1.749,3.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.165,-0.506],[-0.161,-0.14],[-0.309,-0.119],[-0.231,-0.325],[0.222,-0.359],[0.246,-0.182],[0.267,-0.161],[0,0],[-0.206,0.231],[-0.075,0.198],[0.491,0.195],[0.294,0.3],[0.056,0.337],[0.067,0.575]],"o":[[0.256,0.617],[0.084,0.256],[0.15,0.136],[0.317,0.123],[0.244,0.317],[-0.198,0.358],[-0.256,0.173],[0,0],[0.195,-0.242],[0.212,-0.218],[0.158,-0.345],[-0.252,-0.115],[-0.283,-0.289],[-0.124,-0.692],[0,0]],"v":[[-1.143,-2.95],[-0.762,-1.161],[-0.4,-0.54],[0.301,-0.196],[1.187,0.471],[1.277,1.694],[0.547,2.432],[-0.223,2.95],[-0.414,2.73],[0.203,2.038],[0.686,1.409],[0.015,0.491],[-0.896,-0.026],[-1.375,-1.014],[-1.425,-2.873]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.545000023935,0.426999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.748,3.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"L EYE Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[13.35,-5.364,0],"ix":2},"a":{"a":0,"k":[1.33,2.453,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[180,20,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":135,"s":[180,20,100]},{"t":150,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.03,-0.721],[0.529,0.022],[-0.03,0.721],[-0.528,-0.022]],"o":[[-0.031,0.721],[-0.528,-0.023],[0.031,-0.721],[0.528,0.023]],"v":[[0.957,0.04],[-0.056,1.307],[-0.957,-0.041],[0.056,-1.307]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.236,1.579],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"R EYE Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.052,-4.244,0],"ix":2},"a":{"a":0,"k":[1.56,2.516,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[180,20,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":120,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":135,"s":[180,20,100]},{"t":150,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.158,-0.705],[0.516,-0.116],[0.158,0.705],[-0.515,0.115]],"o":[[0.158,0.705],[-0.516,0.116],[-0.157,-0.704],[0.516,-0.116]],"v":[[0.934,-0.21],[0.286,1.275],[-0.935,0.209],[-0.286,-1.275]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.341,1.642],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Layer 13 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[131.252,233.684,0],"ix":2},"a":{"a":0,"k":[0.959,12.116,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.059,-1.978],[0.073,-1.977],[0,0],[0.192,-1.972],[0,0],[-0.054,1.979],[0,0],[-0.136,1.975],[-0.182,1.972]],"o":[[-0.004,1.98],[-0.05,1.979],[0,0],[-0.132,1.975],[0,0],[-0.005,-1.981],[0,0],[0.114,-1.976],[0.128,-1.974],[0,0]],"v":[[0.709,-11.852],[0.598,-5.915],[0.372,0.018],[0.049,5.945],[-0.412,11.865],[-0.704,11.851],[-0.604,5.913],[-0.368,-0.018],[-0.033,-5.945],[0.417,-11.865]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.959,12.116],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Layer 14 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[183.295,232.782,0],"ix":2},"a":{"a":0,"k":[1.64,10.911,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.243,-1.77],[-0.227,-1.771],[0,0],[-0.11,-1.786],[0,0],[0.247,1.77],[0,0],[0.165,1.78],[0.119,1.784]],"o":[[0.296,1.764],[0.25,1.769],[0,0],[0.169,1.778],[0,0],[-0.306,-1.763],[0,0],[-0.188,-1.776],[-0.173,-1.777],[0,0]],"v":[[-1.1,-10.662],[-0.309,-5.36],[0.367,-0.044],[0.946,5.285],[1.39,10.627],[1.1,10.662],[0.298,5.36],[-0.368,0.042],[-0.936,-5.287],[-1.39,-10.627]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.64,10.911],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"R hand Outlines","parent":23,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-14.575,52.924,0],"ix":2},"a":{"a":0,"k":[5.798,9.047,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.932,2.924],[1.785,-0.616],[0.375,-2.771],[-5.636,-1.035],[0,0],[-0.691,1.496]],"o":[[-0.573,-1.799],[-2.78,0.96],[-0.342,2.522],[0,0],[0,0],[0.482,-1.047]],"v":[[4.616,-5.988],[0.372,-8.181],[-5.206,-2.82],[1.35,8.797],[0.891,4.656],[5.033,2.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.798,9.047],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"Layer 16 Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-4.579,-2.349,0],"ix":2},"a":{"a":0,"k":[4.415,4.364,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.003,0.014],[0.401,0.111],[0.606,-0.274],[-1.143,-1.66],[-1.102,-0.315],[0.166,0.61]],"o":[[-0.11,-0.401],[-0.622,-0.171],[-2.206,0.996],[0.647,0.94],[0.401,0.115],[-0.001,-0.002]],"v":[[2.281,-2.794],[-0.054,-3.858],[-1.959,-3.84],[-2.727,1.975],[-0.03,3.954],[3.999,3.504]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.415,4.364],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"PENCIL","parent":23,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-3.794,51.042,0],"ix":2},"a":{"a":0,"k":[14.672,78.479,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.843,1.756],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-12.221,13.961],[-5.432,-13.246],[-0.246,-13.961],[12.221,11.766]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.471,23.337],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[12.441,1.393],[-11.993,3.589],[-12.441,-1.393],[11.993,-3.589]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.984000052658,0.764999988032,0.263000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.595,204.501],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.453,12.636],[-10.981,14.831],[-11.623,7.66],[-12.071,2.678],[-13.453,-12.635],[10.988,-14.831],[12.362,0.483],[12.81,5.465]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.226,200.429],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.347,77.605],[2.667,78.384],[-11.347,-77.604],[-2.668,-78.384]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.435000011968,0.204000001795,0.156999999402,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[19.158,110.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.226,-90.079],[20.214,87.882],[-4.225,90.079],[-20.214,-87.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.984000052658,0.764999988032,0.263000009574,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[20.467,125.18],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[6.488,-0.583],[0,0],[0.583,6.487],[0,0]],"o":[[0,0],[0.582,6.487],[0,0],[-6.487,0.583],[0,0],[0,0]],"v":[[11.763,-8.573],[12.094,-4.897],[1.401,7.906],[0.456,7.99],[-12.346,-2.702],[-12.676,-6.377]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.919,221.635],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.136,-0.527],[0,0],[0,0]],"o":[[0,0],[1.136,0.527],[0,0],[0,0]],"v":[[-2.609,3.818],[-0.807,-6.822],[2.609,3.415],[0.173,7.349]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.435000011968,0.204000001795,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.76,7.599],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"L arm Outlines 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[5]},{"t":240,"s":[0]}],"ix":10},"p":{"a":0,"k":[174.212,217.988,0],"ix":2},"a":{"a":0,"k":[12.347,15.367,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[13.773,0],[0,-12.564],[-5.33,-3.268],[-4.48,0],[0,12.564]],"o":[[-22.438,0],[0,9.592],[1.295,2.357],[13.773,0],[0,-12.564]],"v":[[31.072,-0.997],[4.385,21.753],[21.715,35.522],[31.072,44.503],[56.01,21.753]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.536,-0.56],[0,0],[0,0],[6.671,1.18],[0.44,27.698],[-3.4,-2.186],[0,0],[0,0]],"o":[[0,0],[-6.336,0.543],[0,0],[-5.266,2.466],[-5.924,-19.235],[4.795,0.298],[6.101,3.922],[0,0],[0,0]],"v":[[24.347,-19.592],[6.793,4.312],[-2.545,-1.29],[1.938,32.824],[-15.744,35.311],[-24.347,-36.492],[-6.654,-33.597],[6.979,-15.669],[15.757,-27.622]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.597,36.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"L arm Outlines 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[174.212,217.988,0],"ix":2},"a":{"a":0,"k":[12.347,15.367,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":0,"k":{"i":[[13.773,0],[0,-12.564],[-5.33,-3.268],[-4.48,0],[0,12.564]],"o":[[-22.438,0],[0,9.592],[1.295,2.357],[13.773,0],[0,-12.564]],"v":[[34.572,-1.372],[7.885,21.378],[25.215,35.147],[34.572,44.128],[59.51,21.378]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.536,-0.56],[0,0],[0,0],[6.671,1.18],[0.44,27.698],[-3.4,-2.186],[0,0],[0,0]],"o":[[0,0],[-6.336,0.543],[0,0],[-5.266,2.466],[-5.924,-19.235],[4.795,0.298],[6.101,3.922],[0,0],[0,0]],"v":[[24.347,-19.592],[6.793,4.312],[-2.545,-1.29],[1.938,32.824],[-15.744,35.311],[-24.347,-36.492],[-6.654,-33.597],[6.979,-15.669],[15.757,-27.622]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.597,36.742],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"hand shadow","parent":34,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.58,30.9,0],"ix":2},"a":{"a":0,"k":[5.233,5.448,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.023,-0.082],[4.363,0.688],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.022,0.09],[-1.277,5.236],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[5.233,-2.027],[5.173,-1.773],[-0.699,5.338],[-5.188,0.229],[-5.233,0.177],[-4.65,-2.886],[-4.531,-3.237],[-3.858,-5.194],[-3.776,-5.448]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.545000023935,0.426999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[5.233,5.448],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"Layer 20 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[169.301,239.465,0],"ix":2},"a":{"a":0,"k":[7.34,23.99,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[4.505,-0.874],[-2.009,10.509]],"o":[[-3.712,1.509],[-2.472,-14.178],[0,0]],"v":[[7.34,20.284],[-5.105,23.989],[-6.113,-23.989]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.34,23.99],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"R ARM","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[5]},{"t":240,"s":[0]}],"ix":10},"p":{"a":0,"k":[137.289,216.057,0],"ix":2},"a":{"a":0,"k":[49.67,13.156,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[9.375,-2.375],[0,-16.914],[-17.19,0],[-8.041,6.102],[0.875,5.875]],"o":[[-16.663,4.221],[0,16.914],[7.791,0],[6.339,-4.81],[-2.492,-16.729]],"v":[[27.382,4.724],[-4.993,41.849],[24.882,63.224],[40.418,30.284],[58.007,11.724]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.748,0.924],[8.152,-26.844],[7.043,2.024],[0,0],[0,0],[0,0]],"o":[[5.533,23.493],[-6.046,2.3],[0,0],[0,0],[0,0],[15.769,-15.078]],"v":[[26.986,-38.406],[26.643,36.105],[6.973,36.355],[8.715,-12.447],[-32.307,15.751],[-34.796,0.376]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.045,38.656],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"SHIRT","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[137.289,216.057,0],"ix":2},"a":{"a":0,"k":[49.67,13.156,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":0,"k":{"i":[[9.375,-2.375],[0,-16.914],[-17.19,0],[-7.336,6.934],[0.875,5.875]],"o":[[-16.663,4.221],[0,16.914],[7.791,0],[5.089,-4.81],[-2.492,-16.729]],"v":[[27.382,4.724],[-4.993,41.849],[24.882,63.224],[39.043,30.284],[55.132,12.599]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-18.748,0.924],[8.152,-26.844],[7.043,2.024],[0,0],[0,0],[0,0]],"o":[[5.533,23.493],[-6.046,2.3],[0,0],[0,0],[0,0],[15.769,-15.078]],"v":[[26.986,-38.406],[26.643,36.105],[6.973,36.355],[8.715,-12.447],[-32.307,15.751],[-34.796,0.376]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.045,38.656],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"Layer 22 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150.143,236.604,0],"ix":2},"a":{"a":0,"k":[7.391,27.943,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.385,-17.45],[4.377,0.994],[0,0],[0,0]],"o":[[-4.303,0.217],[0,0],[0,0],[4.907,11.937]],"v":[[5.71,27.875],[-7.392,26.814],[-1.827,-25.071],[0.16,-27.943]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.391,27.944],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"Layer 23 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160.189,234.484,0],"ix":2},"a":{"a":0,"k":[17.688,30.462,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.336,-0.127],[4.505,-0.874],[2.853,-0.135],[4.377,0.993],[0,0],[0,0],[-8.031,9.898]],"o":[[-0.321,0.134],[-3.712,1.509],[-2.689,0.531],[-4.303,0.217],[0,0],[0,0],[0,0],[0,0]],"v":[[17.438,24.863],[16.452,25.266],[4.007,28.971],[-4.336,29.995],[-17.438,28.934],[-11.874,-22.951],[-11.194,-29.278],[4.12,-30.212]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.688,30.462],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":4,"nm":"Layer 24 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157.646,260.977,0],"ix":2},"a":{"a":0,"k":[20.875,6.848,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-4.837,4.964],[0,0],[0,0]],"o":[[9.928,3.563],[0,0],[0,0],[0,0]],"v":[[-17.184,5.499],[20.875,0.025],[17.438,-6.848],[-20.875,-1.757]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[20.875,6.848],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"Layer 25 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[154.162,323.228,0],"ix":2},"a":{"a":0,"k":[28.262,65.237,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-16.309,-57.019],[-28.012,64.987],[-9.835,64.987],[7.47,-36.353],[27.14,-42.329],[28.012,-63.991],[-15.811,-64.987]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.262,65.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":29,"ty":4,"nm":"Layer 26 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[169.414,334.554,0],"ix":2},"a":{"a":0,"k":[12.14,53.911,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[11.89,-53.661],[4.793,53.661],[-11.89,53.661],[-7.719,-50.479],[-5.167,-51.662]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.14,53.911],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":"HAIRS","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59.016,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[5]},{"t":240,"s":[0]}],"ix":10},"p":{"a":0,"k":[-6.573,-9.201,0],"ix":2},"a":{"a":0,"k":[11.355,16.999,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.441,6.656],[-2.669,3.07],[-2.154,6.159],[6.256,-4.016],[2.677,-7.598],[-9.85,-9.444]],"o":[[0,0],[4.61,1.544],[2.278,3.008],[1.556,-4.451],[-6.131,-3.098],[0,0],[0.198,0.189]],"v":[[-7.054,11.499],[-4.034,4.725],[6.615,1.791],[17.424,-0.419],[8.429,-7.483],[-9.678,-2.771],[-9.13,10.963]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.063000002094,0.125,0.282000014361,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.23,11.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":31,"ty":4,"nm":"Layer 28 Outlines","parent":32,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[5.035,-4.684,0],"ix":2},"a":{"a":0,"k":[11.002,12.736,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.037,-4.093],[0.239,-1.434],[3.824,-0.104],[1.703,4.228],[0,0],[0,0],[0,0]],"o":[[-0.007,1.434],[-0.627,3.914],[-9.039,0.262],[-1.703,-4.236],[0,0],[0,0],[0,0]],"v":[[10.716,0.452],[10.38,4.822],[4.27,12.224],[-9.049,3.089],[-7.99,-11.328],[3.709,-12.486],[10.133,-7.219]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.002,12.736],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":32,"ty":4,"nm":"NECK","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[5]},{"t":240,"s":[0]}],"ix":10},"p":{"a":0,"k":[156.066,205.845,0],"ix":2},"a":{"a":0,"k":[6.671,14.336,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.54,2.675],[0,0]],"o":[[-2.308,2.428],[0,0],[0,0]],"v":[[5.435,1.863],[-5.435,-1.124],[5.374,-4.292]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.545000023935,0.426999978458,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[7.335,6.663],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.421,9.621],[-6.421,9.711],[-6.421,-9.711],[6.031,-9.711],[6.039,-8.523],[6.099,-2.367],[6.189,7.516]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.671,9.961],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":33,"ty":4,"nm":"Layer 31 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[149.805,394.16,0],"ix":2},"a":{"a":0,"k":[34.362,11.237,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[8.777,1.12],[0,0],[4.506,1.436],[0,0]],"o":[[-0.293,-3.44],[0,0],[-2.33,0.728],[0,0],[0,0]],"v":[[12.139,6.538],[-0.934,-2.736],[-0.665,-6.393],[-11.226,-6.538],[-12.139,6.538]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[56.336,15.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.33,0.728],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[4.506,1.436]],"v":[[4.948,3.876],[5.613,-5.167],[-5.031,-4.605],[-5.613,3.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.723,5.416],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.589,1.12],[0,0]],"o":[[0,0],[2.367,0.918],[0,0],[0,0]],"v":[[-3.061,-5.288],[-5.902,3.59],[4.73,4.167],[5.902,-3.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.994,6.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.367,0.918],[0,0],[0.293,-3.44],[0,0],[0,0]],"o":[[0,0],[-7.836,2.575],[0,0],[0,0],[-4.589,1.12]],"v":[[1.605,-6.268],[0.462,-2.697],[-12.238,6.268],[10.421,6.268],[12.238,-5.691]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.122000002394,0.234999997008,0.532999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.487,15.956],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":34,"ty":4,"nm":"L hand Outlines","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":120,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":180,"s":[5]},{"t":240,"s":[0]}],"ix":10},"p":{"a":0,"k":[43.787,15.044,0],"ix":2},"a":{"a":0,"k":[6.88,31.525,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.089,-0.672],[0,0],[0.434,-1.83],[0.023,-0.082],[4.363,0.688],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.075,0.717],[0,0],[-0.299,2.391],[-0.023,0.09],[-1.277,5.236],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.073,-8.251],[5.827,-6.166],[5.827,-6.16],[4.721,0.198],[4.661,0.452],[-1.21,7.563],[-5.699,2.454],[-5.744,2.402],[-6.073,2.028],[-5.161,-0.661],[-5.042,-1.012],[-4.369,-2.969],[-4.287,-3.223],[-3.137,-6.592],[-2.674,-7.958]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.091,28.675],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.822,1.621],[-0.082,0.438],[0,0],[0.18,-3.095],[-0.115,-0.3],[0,0],[0,0],[0,0],[0.998,0.318],[-0.848,0.17],[-0.848,-1.442],[0,0],[0.636,7.211],[-0.229,-0.232],[-0.058,-6.436],[-1.286,0.771],[0.748,-6.225],[-0.99,0.01],[4.202,-4.295]],"o":[[-2.53,-0.479],[-0.201,-0.398],[0,0],[0,0],[-0.019,0.32],[0,0],[0,0],[0,0],[0,0],[-2.045,-0.653],[0.848,-0.169],[0.848,1.442],[0,0],[-0.029,-0.324],[0.683,0.695],[0,0],[1.06,-0.636],[0,0],[1.672,-0.016],[0,0]],"v":[[-3.211,10.498],[-8.928,4.171],[-9.11,2.885],[-8.103,-2.453],[-5.959,1.037],[-5.797,1.978],[-4.907,4.306],[-2.278,2.269],[-3.72,-1.802],[-6.647,-1.59],[-5.162,-4.008],[-1.599,-3.414],[-0.242,-1.124],[0.055,-11.558],[1.068,-11.643],[2.897,-2.396],[4.297,-10.667],[5.145,-1.408],[7.52,-6.807],[3.34,11.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.702000038297,0.517999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.442,12.132],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":35,"ty":4,"nm":"Layer 33 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[341.716,139.837,0],"ix":2},"a":{"a":0,"k":[41.707,25.087,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":20,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.321],[3.494,0],[0,3.321],[-3.494,0]],"o":[[0,3.321],[-3.494,0],[0,-3.321],[3.494,0]],"v":[[6.327,0],[0,6.014],[-6.327,0],[0,-6.014]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.708,10.894],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[41.457,-6.6],[41.457,6.6],[-41.457,6.6],[-41.457,-6.6],[-35.668,-6.6],[-35.668,2.118],[35.668,2.118],[35.668,-6.6]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894000004787,0.894000004787,0.894000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.707,43.325],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.182],[0,0],[0,0],[0,0],[-1.853,1.859],[-0.254,0.201],[-2.481,0],[-1.599,0.769],[-0.62,0.455],[-0.777,2.555],[-2.098,1.516],[-2.607,0],[0,0],[-2.018,-1.449],[-0.792,-2.607],[-2.039,-1.509],[-0.694,-0.337],[-1.86,0],[-1.769,-1.472]],"o":[[0,0],[0,0],[0,0],[0,-2.831],[0.231,-0.232],[1.769,-1.472],[1.859,0],[0.694,-0.337],[2.039,-1.509],[0.792,-2.607],[2.018,-1.449],[0,0],[2.607,0],[2.098,1.516],[0.777,2.555],[0.62,0.455],[1.599,0.769],[2.481,0],[2.279,1.875]],"v":[[35.668,4.841],[35.668,22.596],[-35.668,22.596],[-35.668,4.841],[-32.665,-2.412],[-31.94,-3.062],[-25.412,-5.415],[-20.168,-6.61],[-18.196,-7.798],[-13.819,-14.006],[-9.308,-20.31],[-2.226,-22.596],[2.226,-22.596],[9.308,-20.31],[13.819,-14.006],[18.196,-7.798],[20.168,-6.61],[25.412,-5.415],[31.94,-3.062]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[41.707,22.846],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":36,"ty":4,"nm":"T5 Outlines 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[294.753,208.207,0],"ix":2},"a":{"a":0,"k":[11.27,11.333,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":31,"s":[{"i":[[2.188,-1.062],[0,0],[5.688,-1.5],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-5.688,1.5],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.954,13.813],[-0.421,10.125],[6.579,22.625],[24.954,1.813]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":41,"s":[{"i":[[2.188,-1.062],[0,0],[3.208,-3.427],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-3.604,2.448],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.662,12.208],[2.308,17.49],[6.725,21.271],[24.954,1.813]],"c":true}]},{"t":91,"s":[{"i":[[2.188,-1.062],[0,0],[3.946,-4.362],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-2.375,2.625],[6.312,-3.062],[0,0]],"v":[[15.767,-2.562],[22.142,-8.062],[19.642,-3],[28.454,2.5],[24.954,1.813]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.415,-1.59],[-4.411,2.464],[-0.76,0.863],[-1.368,1.554],[-2.736,3.107],[0.88,-0.999],[0,0],[1.216,-1.381],[1.252,-0.274],[-0.681,-0.22],[0.019,0.076],[0.34,1.299]],"o":[[0.55,2.103],[1.017,-0.567],[1.367,-1.553],[2.735,-3.105],[0.701,-0.796],[0,0],[-1.215,1.381],[-0.844,0.958],[0.681,0.22],[0.481,0.395],[-0.34,-1.3],[-0.28,-1.073]],"v":[[-10.605,0.171],[-4.63,8.618],[-1.991,5.687],[2.113,1.027],[10.319,-8.29],[7.044,-10.083],[-0.251,-1.801],[-3.898,2.34],[-7.945,6.661],[-5.902,7.322],[-6.334,4.842],[-7.353,0.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.27,11.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":31,"op":1238,"st":31,"bm":0},{"ddd":0,"ind":37,"ty":4,"nm":"T5 Outlines 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[293.753,240.957,0],"ix":2},"a":{"a":0,"k":[11.27,11.333,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":41,"s":[{"i":[[2.188,-1.062],[0,0],[5.688,-1.5],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-5.688,1.5],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.954,13.813],[-0.421,10.125],[6.579,22.625],[24.954,1.813]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":51,"s":[{"i":[[2.188,-1.062],[0,0],[3.208,-3.427],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-3.604,2.448],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.662,12.208],[2.308,17.49],[6.725,21.271],[24.954,1.813]],"c":true}]},{"t":101,"s":[{"i":[[2.188,-1.062],[0,0],[3.946,-4.362],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-2.375,2.625],[6.312,-3.062],[0,0]],"v":[[15.767,-2.562],[22.142,-8.062],[19.642,-3],[28.454,2.5],[24.954,1.813]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.415,-1.59],[-4.411,2.464],[-0.76,0.863],[-1.368,1.554],[-2.736,3.107],[0.88,-0.999],[0,0],[1.216,-1.381],[1.252,-0.274],[-0.681,-0.22],[0.019,0.076],[0.34,1.299]],"o":[[0.55,2.103],[1.017,-0.567],[1.367,-1.553],[2.735,-3.105],[0.701,-0.796],[0,0],[-1.215,1.381],[-0.844,0.958],[0.681,0.22],[0.481,0.395],[-0.34,-1.3],[-0.28,-1.073]],"v":[[-10.605,0.171],[-4.63,8.618],[-1.991,5.687],[2.113,1.027],[10.319,-8.29],[7.044,-10.083],[-0.251,-1.801],[-3.898,2.34],[-7.945,6.661],[-5.902,7.322],[-6.334,4.842],[-7.353,0.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.27,11.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":41,"op":1248,"st":41,"bm":0},{"ddd":0,"ind":38,"ty":4,"nm":"T5 Outlines 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[293.378,273.332,0],"ix":2},"a":{"a":0,"k":[11.27,11.333,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[2.188,-1.062],[0,0],[5.688,-1.5],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-5.688,1.5],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.954,13.813],[-0.421,10.125],[6.579,22.625],[24.954,1.813]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[2.188,-1.062],[0,0],[3.208,-3.427],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-3.604,2.448],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.662,12.208],[2.308,17.49],[6.725,21.271],[24.954,1.813]],"c":true}]},{"t":111,"s":[{"i":[[2.188,-1.062],[0,0],[3.946,-4.362],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-2.375,2.625],[6.312,-3.062],[0,0]],"v":[[15.767,-2.562],[22.142,-8.062],[19.642,-3],[28.454,2.5],[24.954,1.813]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.415,-1.59],[-4.411,2.464],[-0.76,0.863],[-1.368,1.554],[-2.736,3.107],[0.88,-0.999],[0,0],[1.216,-1.381],[1.252,-0.274],[-0.681,-0.22],[0.019,0.076],[0.34,1.299]],"o":[[0.55,2.103],[1.017,-0.567],[1.367,-1.553],[2.735,-3.105],[0.701,-0.796],[0,0],[-1.215,1.381],[-0.844,0.958],[0.681,0.22],[0.481,0.395],[-0.34,-1.3],[-0.28,-1.073]],"v":[[-10.605,0.171],[-4.63,8.618],[-1.991,5.687],[2.113,1.027],[10.319,-8.29],[7.044,-10.083],[-0.251,-1.801],[-3.898,2.34],[-7.945,6.661],[-5.902,7.322],[-6.334,4.842],[-7.353,0.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.27,11.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":51,"op":1258,"st":51,"bm":0},{"ddd":0,"ind":39,"ty":4,"nm":"T5 Outlines 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[293.003,305.332,0],"ix":2},"a":{"a":0,"k":[11.27,11.333,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":61,"s":[{"i":[[2.188,-1.062],[0,0],[5.688,-1.5],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-5.688,1.5],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.954,13.813],[-0.421,10.125],[6.579,22.625],[24.954,1.813]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":71,"s":[{"i":[[2.188,-1.062],[0,0],[3.208,-3.427],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-3.604,2.448],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.662,12.208],[2.308,17.49],[6.725,21.271],[24.954,1.813]],"c":true}]},{"t":121,"s":[{"i":[[2.188,-1.062],[0,0],[3.946,-4.362],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-2.375,2.625],[6.312,-3.062],[0,0]],"v":[[15.767,-2.562],[22.142,-8.062],[19.642,-3],[28.454,2.5],[24.954,1.813]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.415,-1.59],[-4.411,2.464],[-0.76,0.863],[-1.368,1.554],[-2.736,3.107],[0.88,-0.999],[0,0],[1.216,-1.381],[1.252,-0.274],[-0.681,-0.22],[0.019,0.076],[0.34,1.299]],"o":[[0.55,2.103],[1.017,-0.567],[1.367,-1.553],[2.735,-3.105],[0.701,-0.796],[0,0],[-1.215,1.381],[-0.844,0.958],[0.681,0.22],[0.481,0.395],[-0.34,-1.3],[-0.28,-1.073]],"v":[[-10.605,0.171],[-4.63,8.618],[-1.991,5.687],[2.113,1.027],[10.319,-8.29],[7.044,-10.083],[-0.251,-1.801],[-3.898,2.34],[-7.945,6.661],[-5.902,7.322],[-6.334,4.842],[-7.353,0.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.27,11.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":1268,"st":61,"bm":0},{"ddd":0,"ind":40,"ty":4,"nm":"T5 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[292.753,337.207,0],"ix":2},"a":{"a":0,"k":[11.27,11.333,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[2.188,-1.062],[0,0],[5.688,-1.5],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-5.688,1.5],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.954,13.813],[-0.421,10.125],[6.579,22.625],[24.954,1.813]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":81,"s":[{"i":[[2.188,-1.062],[0,0],[3.208,-3.427],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-3.604,2.448],[6.312,-3.062],[0,0]],"v":[[17.767,-1.687],[5.662,12.208],[2.308,17.49],[6.725,21.271],[24.954,1.813]],"c":true}]},{"t":131,"s":[{"i":[[2.188,-1.062],[0,0],[3.946,-4.362],[-6.312,3.062],[0,0]],"o":[[-2.188,1.062],[0,0],[-2.375,2.625],[6.312,-3.062],[0,0]],"v":[[15.767,-2.562],[22.142,-8.062],[19.642,-3],[28.454,2.5],[24.954,1.813]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.415,-1.59],[-4.411,2.464],[-0.76,0.863],[-1.368,1.554],[-2.736,3.107],[0.88,-0.999],[0,0],[1.216,-1.381],[1.252,-0.274],[-0.681,-0.22],[0.019,0.076],[0.34,1.299]],"o":[[0.55,2.103],[1.017,-0.567],[1.367,-1.553],[2.735,-3.105],[0.701,-0.796],[0,0],[-1.215,1.381],[-0.844,0.958],[0.681,0.22],[0.481,0.395],[-0.34,-1.3],[-0.28,-1.073]],"v":[[-10.605,0.171],[-4.63,8.618],[-1.991,5.687],[2.113,1.027],[10.319,-8.29],[7.044,-10.083],[-0.251,-1.801],[-3.898,2.34],[-7.945,6.661],[-5.902,7.322],[-6.334,4.842],[-7.353,0.945]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933000033509,0.435000011968,0.340999977261,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11.27,11.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":71,"op":1278,"st":71,"bm":0},{"ddd":0,"ind":41,"ty":4,"nm":"Layer 35 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[287.943,341.538,0],"ix":2},"a":{"a":0,"k":[24.104,24.104,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":50,"s":[90,90,100]},{"t":55,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.686,9.104],[-9.104,8.685],[-8.685,-9.104],[9.104,-8.685]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.104,24.104],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":1227,"st":20,"bm":0},{"ddd":0,"ind":42,"ty":4,"nm":"Layer 36 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320.043,349.298,0],"ix":2},"a":{"a":0,"k":[0.25,3.822,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":18,"s":[0,100,100]},{"t":78,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.126,2.021],[0,0],[0,0],[-7.552,1.159]],"o":[[0,0],[0,0],[29.072,0.683],[1.147,-1.304]],"v":[[37.578,-2.158],[-37.568,-3.927],[-37.704,1.882],[35.939,2.768]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.875,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.954,4.177],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":18,"op":1225,"st":18,"bm":0},{"ddd":0,"ind":43,"ty":4,"nm":"Layer 37 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320.341,336.317,0],"ix":2},"a":{"a":0,"k":[0.25,3.505,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[0,100,100]},{"t":75,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.962,-2.554],[-14.825,-3.255],[-14.962,2.553],[14.825,3.255]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.212,3.505],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":15,"op":1222,"st":15,"bm":0},{"ddd":0,"ind":44,"ty":4,"nm":"Layer 39 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288.45,309.434,0],"ix":2},"a":{"a":0,"k":[24.104,24.104,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":35,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":45,"s":[90,90,100]},{"t":50,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.686,9.104],[-9.104,8.685],[-8.685,-9.104],[9.104,-8.686]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.104,24.104],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":15,"op":1222,"st":15,"bm":0},{"ddd":0,"ind":45,"ty":4,"nm":"Layer 40 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320.798,317.231,0],"ix":2},"a":{"a":0,"k":[0.25,3.853,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":13,"s":[0,100,100]},{"t":73,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[29.75,-2.206],[-29.612,-3.603],[-29.75,2.205],[29.612,3.603]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.875,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[29.999,3.853],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":13,"op":1220,"st":13,"bm":0},{"ddd":0,"ind":46,"ty":4,"nm":"Layer 41 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[321.096,304.752,0],"ix":2},"a":{"a":0,"k":[0.25,4.039,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[0,100,100]},{"t":70,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.642,-2.02],[-37.505,-3.789],[-37.642,2.02],[37.504,3.789]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.891,4.039],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":1217,"st":10,"bm":0},{"ddd":0,"ind":47,"ty":4,"nm":"Layer 43 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[289.212,277.091,0],"ix":2},"a":{"a":0,"k":[24.104,24.104,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[90,90,100]},{"t":45,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.685,9.104],[-9.104,8.686],[-8.686,-9.104],[9.104,-8.685]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.104,24.104],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":1217,"st":10,"bm":0},{"ddd":0,"ind":48,"ty":4,"nm":"Layer 44 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[321.56,284.586,0],"ix":2},"a":{"a":0,"k":[0.25,3.55,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":8,"s":[0,100,100]},{"t":68,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.872,-2.509],[-16.735,-3.299],[-16.872,2.509],[16.734,3.299]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.875,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.122,3.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":1215,"st":8,"bm":0},{"ddd":0,"ind":49,"ty":4,"nm":"Layer 45 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[321.858,272.41,0],"ix":2},"a":{"a":0,"k":[0.25,4.039,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":5,"s":[0,100,100]},{"t":65,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.641,-2.02],[-37.505,-3.789],[-37.641,2.02],[37.504,3.789]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.891,4.039],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":1212,"st":5,"bm":0},{"ddd":0,"ind":50,"ty":4,"nm":"Layer 47 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[289.972,244.749,0],"ix":2},"a":{"a":0,"k":[24.104,24.104,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":5,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":25,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":35,"s":[90,90,100]},{"t":40,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.686,9.104],[-9.104,8.686],[-8.685,-9.104],[9.104,-8.686]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.104,24.104],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":1212,"st":5,"bm":0},{"ddd":0,"ind":51,"ty":4,"nm":"Layer 48 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[322.32,252.729,0],"ix":2},"a":{"a":0,"k":[0.25,4.039,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,100,100]},{"t":60,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.641,-2.02],[-37.505,-3.789],[-37.641,2.02],[37.504,3.789]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.875,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.891,4.039],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":52,"ty":4,"nm":"Layer 49 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[322.618,239.907,0],"ix":2},"a":{"a":0,"k":[0.25,3.883,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,100,100]},{"t":60,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31.01,-2.176],[-30.873,-3.632],[-31.01,2.176],[30.872,3.632]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[31.259,3.883],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":53,"ty":4,"nm":"Layer 59 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[290.733,212.407,0],"ix":2},"a":{"a":0,"k":[24.104,24.104,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[90,90,100]},{"t":35,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[8.686,9.104],[-9.104,8.685],[-8.685,-9.104],[9.104,-8.686]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.104,24.104],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":54,"ty":4,"nm":"Layer 51 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[323.081,220.106,0],"ix":2},"a":{"a":0,"k":[0.25,3.755,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":3,"s":[0,100,100]},{"t":63,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[25.608,-2.303],[-25.47,-3.505],[-25.608,2.303],[25.47,3.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.827000038297,0.875,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.857,3.755],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":3,"op":1210,"st":3,"bm":0},{"ddd":0,"ind":55,"ty":4,"nm":"Layer 52 Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":210,"s":[100]},{"t":230,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[323.38,207.725,0],"ix":2},"a":{"a":0,"k":[0.25,4.039,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,100,100]},{"t":60,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[37.641,-2.02],[-37.505,-3.788],[-37.641,2.02],[37.504,3.788]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.891,4.039],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":56,"ty":4,"nm":"Layer 53 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[340.797,180.016,0],"ix":2},"a":{"a":0,"k":[42.055,7.575,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[41.506,7.325],[-41.805,5.365],[-41.506,-7.325],[41.805,-5.365]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.54900004069,0.834999952129,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42.055,7.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":57,"ty":4,"nm":"Layer 54 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[339.473,266.499,0],"ix":2},"a":{"a":0,"k":[85.29,115.273,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.881,-38.121],[37.499,2.784],[-1.959,85.797],[0,0],[0,0]],"o":[[-69.178,11.071],[4.859,-51.729],[0,0],[0,0],[1.1,89.049]],"v":[[68.515,101.467],[-84.396,110.338],[-75.63,-113.122],[7.731,-112.938],[83.176,-107.958]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.646,113.385],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[10.076,-23.954],[54.887,-0.258],[0,0]],"o":[[0.05,89.706],[-44.384,4.324],[0,0],[0,0]],"v":[[77.712,-113.91],[70.581,107.94],[-80.657,113.91],[-59.794,-113.217]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894000004787,0.894000004787,0.894000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.674,114.162],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[79.184,115.023],[-79.184,115.023],[-79.184,-115.023],[79.184,-115.023]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.964999988032,0.961000031116,0.961000031116,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88.202,115.273],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":58,"ty":4,"nm":"Layer 55 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[341.717,272.807,0],"ix":2},"a":{"a":0,"k":[96.454,132.219,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[41.048,0],[0,0],[0,41.049],[0,0],[-41.048,0],[0,0],[0,-41.049],[0,0]],"o":[[0,0],[-41.048,0],[0,0],[0,-41.049],[0,0],[41.048,0],[0,0],[0,41.049]],"v":[[21.88,131.969],[-21.88,131.969],[-96.204,57.644],[-96.204,-57.643],[-21.88,-131.968],[21.88,-131.968],[96.204,-57.643],[96.204,57.644]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.663000009574,0.728999956916,0.902000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[96.454,132.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":59,"ty":4,"nm":"Layer 56 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[262.23,315.912,0],"ix":2},"a":{"a":0,"k":[219.122,90.003,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.7,-101.215],[0,0],[-112.413,0]],"o":[[0,0],[13.7,-101.215],[112.405,0]],"v":[[218.873,89.753],[-218.872,89.753],[-0.001,-89.753]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.964999988032,0.961000031116,0.961000031116,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[219.122,90.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0},{"ddd":0,"ind":60,"ty":4,"nm":"Layer 57 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[259.854,291.357,0],"ix":2},"a":{"a":0,"k":[255.875,156.159,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-42.578,-76.192],[214.689,57.082],[16.569,45.002],[-87.646,-84.657]],"o":[[23.394,41.862],[-107.642,-28.62],[-38.594,-104.827],[80.113,77.382]],"v":[[222.481,22.16],[-2.666,89.076],[-207.281,79.927],[-0.617,-61.502]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.894000004787,0.894000004787,0.894000004787,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":32.088,"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":32.088,"ix":2}},{"n":"o","nm":"offset","v":{"a":0,"k":0,"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[255.875,156.159],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1207,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.0.2","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":180,"w":1472,"h":1080,"nm":"Comp 1","ddd":0,"assets":[{"id":"image_0","w":362,"h":614,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_1","w":642,"h":504,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoIAAAH4CAYAAADeoYwvAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzdW5Bcx30m+C/PqapTXd3oC8gG0RQEtABKoiBbBEnJgm6D9kii6DEZhGPJtRxrW/BOhNe7Lyq/rAPSg9qxIcEzsxFue/ZhwxtrQ/Z4RhvkrMChZixxxFFjTVqgLRIN2YIoiQAaFEgABIjqLnRX1blk5j50N9UCCdSpqsxzqfp+L+LldOYRSRS+ysz/PwEiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIqJBINJ+AaJ+UqsemWn/lFqamPvigvWXISIiaoNBkGiTWnV2HPD2AYADvQ8Q4+t/a58GNv4YAjhgY34NHN80xxKAhfU/XpTAIgBMzB2etzE3ERENHgZBGji16pEZF3pcQ+wDMK2BaQFMA9iV8qt1RACnFLAk1sLikoBekBBLDIpERBQXgyD1pY2VvfVVvWkN7BPAPgBjab9bQs5rYFEACwJYkMAiAyIREd2IQZBy72ehDzNYC3v7kLPVvaQI4JRe22JeUMA8wyER0WBjEKTcqVW/vM+BmMHa1u4MGPp6sh4OFwQwL9fC4WLa70RERMlgEKTM2xT8ZrAW/AZlezctywDmAT2vII4xGBIR9S8GQcqcWvXItAvMaOAgGPyy4DyA+bUVQ//YxNzsUtovREREZjAIUibUq185qNdW/A6CW72Ztr6VfExBHWM/RCKifGMQpFTUqrPjLryDem3F7yC46pdX5wEcE9Dzo3NfOJb2yxARUWcYBCkxm8LfQQCPpP0+ZNwy1kLhMYZCIqJ8YBAk6+rVI4cY/gbOMta2j+e4fUxElF0MgmRFrXpkxgEOgdu+tL59rIA5ViATEWULgyAZU6semV4Pf4fAgg96Gxo47gBHWX1MRJQNDILUs/WK30Pg1i/Fx61jIqIMYBCkrnD1j0zZWCUcnTt8NO13ISIaNAyC1JFNZ/8+l/a7UN85D+Cogj/HbWMiomQwCFIs9eqRQwo4JIADab8LDYSvKmCWxSVERHYxCNJNber7Nwtu/1I6nlyvNp5P+0WIiPoRgyC9Ra06O+7AqwKogq1fKAM0cFyvrRDOp/0uRET9hEGQ3sQASFnHQEhEZBaDIDEAdkBMjEJMjL71b9zsr2+iX7sCtPy3/HV1k79ON8dASERkBoPgAGMAXFf24Nw5CZQ9iDsnAQBiahJiyFv743ftSO5dWj70xSsAAF2rQ9fqa3989gIAQK3/L61hICQi6g2D4IBav/93DoMSANfDnpiaBIY8OLt3rAW/qcm036wr+twF6OZaaNSvXVkLjesBchCtB8JDrDImIuoMg+CAWb8FZA59XAUspiYh7pyEmBiFs3vHWtgre2m/ViL0xZ+FQn32wiBuO7PtDBFRBxgEB0St+uV9As5cv/UBFBOja8Fv9461Fb8kt3FzQi/V11YNz16AOnthEFYOlwHMsTE1EVF7DIJ9bv0c4Bz65CYQMTG6Fvp274DYvQNi/NYFGvT29Ln1ULgeDvvUeQHM8uo6IqKbYxDsY8vVr1QBMYs8nwMse3Dev4fBzzJ1+kzfrhiunR9U1Ym5Ly6k/S5ERFnDINiHatUjMy4wp4F70n6XboipybXwt3dPbos58kwv1ddC4Q/OQJ0+k/brmPQnCv4st4uJiH6GQbCP5Hkb2Nm7B87793DVL2taPtTZC1Cnz0D94Ew/FJ6cF9DV0bkvHEv7RYiIsoBBsE/ksR3MRvhz9u7JTVVvqHBZA63Nf01qtAKFS7f6OddBuSSw/ca/XnSwXQD5+D+PtS3kPgmFTyqgyupiIhp0DII5V6semRbA0bxUA2cx/GnADxUubQ509VAtAoCC01oO1C1DnilFV5RHXL0dAMoFMV4SYnxzgCw52Wr5o148nfft42VAz47NfWEu7RchIkoLg2CO5aUYREyMwvnYvWtbvylu+wYK5yOtl0IlluqhWkwy5JmyERY3gmLJwfaCwHjRwR2pvVTLh3zhNNQLp3NZaMJm1EQ0yBgEcygXq4Dr1b7u/XsT7+23scLXlFhsRvrSisKlRqj7vkBgrORsrxT09iFXbC8JbE9jBVFfvAL53Mk8bh1zdZCIBhKDYM5k/SygmBiF+6n9iW79BgrnA41LK4FeHJTQF9dGOBx2MV0UYntiK4ctH+r0Gchvn3jzvuQ84OogEQ0aBsGcWK8IPgrgkbTf5e04e/fA/fi9iaz+BQrnmxKL9VAt1gIsWp+wjxRdUZ4oYHqkJKY9gekkgqE+dwHy2ZN5Oku4LKAPsbKYiAYBg2AO1KpHZhzgGLK2Clj24N6/F87H77V69k8Cy02Jl1YCvViLsBhK3Wr/UxRH0RXl2z3cPexi2nPFtGvxvzG9VId69iTkC6fzsm38VQW/yr6DRNTPGAQzbrl6ZBbAl9J+j59T9uB+/F64H7vX2vZvqHD5eoSFa6F+iVu9yRkrOdvHi7i74uJua6uFLR/yuZOQz57MQyA8r6AO8lYSIupXDIIZVasemXaBY1m6HeTN83/37bUyflPiRytSv3TVx0tc9UtfpSjGtxbF3SMF3G2l8CRX5wj177OQhIj6EYNgBtWrXzmoIY4iI1vBNgNgoHB+OdILDH/ZtrGFPF4Q+22sFKoXT+chED6p4B/iVjER9RMGwYzJ0lawrQAogeXlACe47ZtPGyuFYyXsN32mUL14GtFTx7O8ZcytYiLqKwyCGVGrzo4LeMcy0Ruw7KHw8AGjAVADflPql6744kTemjjTzY2VnO2Tnt4/5Iq7jV2Vl4MzhAL4ndG5w0fTfg8iol4xCGZArfrlfQ6cY0DKV4hZKAKRwPK1QM9z67e/Wdk63giE3z5hZDgLvjo2d/hQ2i9BRNQLBsGUZaVBtHP/XhQeOmAsADYlfnTVVyf6oc+fcOA44me/VgpwCr2MJwGlodSbfy4hexkvayZKmL7NE/sqrjBS6KSX6pDfPgH1wmkTwxklgFMS/gzPDRJRXjEIpigL5wGd3TvgPvaAkT6AGvBXJRYutfSJPJ3981zHgxCOAxRdB44rUASAomNoqzMmBSipEAJAIOEDgNLal4CKpAqTfBcTKkUxPlkS+0aL2G9i21ifu4DoqeNZvM94WUHN8NwgEeURg2AK1m8JmQPwubTeQUyMwn3owNpVcD3SgF8PceK1lj6R5e1fz3U84Qq3AJRcgaLroOgATtrvFVcIhFohCiVCBYSRlkEeVhOLrijf4Yl9popLMlpQsiyAKs8NElHeMAgmrFadHXfhzafZH9D91H4j5wCzfP6v4DrFgiuKJcATLkpFrK3y9ZuNVcRAwldAGCjpawXV/ifTMVUR+7aWxEzPgbDlQ377BORzJw29mSnsN0hE+cIgmKC0i0Kc3TvgPnQAYmqyp3E2AuDFhs7MVljBdYolV3gFAa/gwMvTSp9pUiGSGn4A+KGUfhZXDU0FwoxuF7OIhIhyg0EwIeshcB5pFIWUvZ+tAvZAA34twPyFhkq9jFM4cLyCWy4BXsHF0CAHv3ZCIJQSfqjg+5Fspv0+m5kKhPKZE1lrN8Pm00SUCwyCCVivDP6LNOZ29u6B+/CBnopBsnIG0HXheq47VHQx3K9bvUkIFJqBRtOPZCsr28i7hp2ZXotK9FId8vGnoc5eMPlqXWNFMRHlAYOgZamFwLKHwmMP9FwMsiLx/E8bej6tAMjwZ1eWQmHRFeU7y2L/WLG3pupv9h7MwOrgWhhUh1hRTERZxSBoUVrtYUy0hAkUzr/S1MfSaAMjHDhDBbfC8JesrITCSlGMv6MsHhxy8d5ux8jY6iDbyxBRZjEIWrJcPXIUKbSHcR860NNZQAksv9ZQx9JoBO0V3CHPRaXkYCjpuelnFKAiiaYvdcOXKrVltYkSpreXnQd7ualEPnMiKzeTMAwSUSYxCFqQRggUU5MoPPZA1xXBG+cAz6+qebNvdmuuC7ck3OGyi4rroKcbO8g8qRD5GivNSDbSWiXcUXH2T5Qw0+35QX3xCqK/egq6Vjf9ap1iGCSizGEQNCyNEOh+7F64n9rfdV/ApsSPXm3pbya5Dey5jue5olJyMZzUnNSbQGK1IfVKGrecFF1Rnq6Ig11vF7d8RN84noVr6pYF9KHRuS8cS/tFiIgABkGjEg+BPRaEaMC/3NTHXvf1S4bf7Ka8gjtUdjGS9PVtZE6o4Psaq61ANpKee6KE6TsrzsFu281k5VYSAfwObyEhoixgEDQk6RDY61Zw0tXA5ZJbGRIY5fZv/5AKUVOjnnQgLLqi/M6KmBlx8eFufl5fvILo8adTb0LNMEhEWcAgaEDSIdC5fy8KDx3oais46WIQBsD+pwDVDLHSUnIlyXOEPa0OZmSrmGGQiNLGINijpENgL1XBDalPnW/gm0msAjIADp40AmGvq4PyuZOQ3zhu+rU6ooBfnpg7PJ/qSxDRwGIQ7EGiIbDsofjbD0O8a0fHP5rkWUDPdbxySYyz/9/gUoBqSCwluWW8zRN33zEkDnZTWazPXUD4l0+leW6Q1cRElBoGwS4lGQLF1CQKv/1wVw2iA4XzZ1b112yvArou3JGCu5VFILQh6TOEvVQW66U6or98Ks1zgwyDRJQKBsEuLFe/UgXEHycxl7N3DwqPPdDVecBrAb51oaGsdtMVDpzhgjtadjFicx7Kr1DBb0W6nlRz6h0VZ//WEj7T8Q+2fESPPw11+oyFt4qFYZCIEscg2KEk7w527t+LwqMPdPxzEli+0MDXlgN1ycJrvalccisVF+MO4Nich/pDILG6KmVdSkjbc42VnO07KvhsN4Uk8hvHIZ87aeO14lhWwL6JucOLab0AEQ0WBsEOJBkCC489AOe+vR3/XFPiR4sNfczmVnDBdYrDBTHObWDq1EZBSTOS1q/56GWrWL14GtHjT9t4rbYEcErCn5mYm038nm8iGjwMgjHVql/e58CZR5eNbDvRbQhcDnHc5hVxwoFTdtyR4SI6P6xItEkIhK1ALyWxXdztVrE6fWYtDKZQRMIwSERJcdN+gTxILASWPRT/l8/Cec90Rz+mAf9CQ/31pZa2drbIcx1vS9G53StgyNYcNDhcwPVcMew4jhNqHUBD25qrHuoLgdLnR4vifQLx2xmJya1w3jsNderHQGR9N/tG2wUK7/ujE898LemJiWiwcEWwjVp1dtyFN6+Be6xOVPZQ/N1HO74pJFS4fL6pv2brnmAWg6yRCpHC2tk2rRGF6ufPuSkghNZv7Z0nhOPc0Eqn6MAVYi2QOIA76L0WpULUiHTN9upgpSjGdw2JzxYd3NHJz+mLVxD+2RNptZf56tjc4UNpTExEg4FBsI169chCVkOg7fOABdcpDpfE1kHpCRgq+BshbyPYBVqFSTRHFg6cknCKG8FxIyy6DoqDUozTklhZjWTd5j/vrs8NtnyEf/ZEKu1lePsIEdnEIHgLSfQKFFOTKP7uox23h1mReP7sdfVNS6+FSskdqbgYtzV+mhSgpEIYSPgKCCMtgyQqWbvlunALcAqOEF7RRdEFiv26ipjU6uDuLc6DHd9GkmoY1L82OveFY4lPTER9j0HwJparR2YBfMnmHN2GwCuBfvJiw855QOHAGS26t/VTRbBUiKSGHwB+JHUYSRWm/U69cl24BeGWig4814XXb6u2qyHqtiuLpypi32RJPNLRD6UXBtljkIisYBB8G/XqVw5qiK/bnKObELheFPK1WoBFG+/kuY43XBK39cNWZKDQjDR8X8pmllf7TBEOHK/glkuA5wp4/bBiGALhSiCv2vz3N1HC9I6K89mOrqZLLwyeV/D3sZKYiExiELxBEhXC3YbAVxo4aqtJdN63ghWgIommr9DyI9lM+33SVnCdYlGIoVIRQ3leLVSAWg1Rs/nvdKzkbN9ZwaE8hEENHB+fOzyT6KRE1NcYBDdJokK4mxBoszJYOHC2FN2JkpO/tjAMf/G4LlzPdYeKLobzGgpbEisrgbS2EjZWcrbfWcbBjiqK01sZ/JOxucPVpCclov7EILjJcvXIMQCdnRnqQLch8OVVfdRGZXBeq4IDhWag0WwFspH2u+SN68Idct0tRYFy3raPQyCs+/KKrarioivKdw2LQ3kIg6wkJiJTGATXWS8OKXso/cH/mJkQmLfzgFIhakk0Ai1XB+HMXxK8gjvkuajkaTVYAaoe6Cu2Cn5yFAZZPEJERjAIAqhVj8w4wHesTdBFn8BA4fyZVf01GyGwXHIrIy62mh7XhlDB9zVWufpnj+vCLQl3eKiIkTx8MVCAakgs2fpvousw+Kd/DV2zfoXym3gNHRGZMPBXzNWqs+MOCicAlK1M0EUIbEh96sfX9deURmT6dUZK7njFtX9fcq8CidXrka41Q3U9kjr37V6yTGvoSGm/GenrynEiFyg6IruBUACi5GBIw0GktPF+g0ojWo7wT+NF8W5XxLxRp1CAs3tH0tfRbRcoTP3RiWfYX5CIupbZD/ukCHjHYLFCuJsQ+PJ1beWDfbTkTmT9qrhAYrUWyIv1QNb6od9f3rQC2aj58tL1QF8JFVK5Uy2u4SJGR0vuhI2xQ6lbL6/qo6HC5bg/021f0B59rl49cijJCYmovwz01rDtc4GFxx6Ac9/e2M/bCoHCgTPquZNZLgoJJFZXpazz/F+2eK7jlQtiNMsNxm0WkXSzTazPXVi7mzg5PC9IRF0b2CC43i/wpK3xGQLjYQDMh6wHwqyFQfXiaUSPP236VW6K5wWJqFsDeUZw7VxgcR6w00DZuX8v3E/uj/18qHD5x9f1vzP9HlkOgaGCXw/llVakG1pDp/0+dGtSa+lL3ZBa+AUhvKydIXQBt1xwhkMtWkpro2GwmzODYmoSEIA+e8Hkq9zKdoHC0B+deMba/eNE1J8y9WGeFAfeHIBdVsbeuweFRx+I/fxGixjT75HVECgVouuBvrLsyytcBcwfXyq/5stLKxLXFOz08+uWAzijJTFZcB3j/813c2bQ/eR+OPfH3xUw4PO16pGZJCckovwbuK1hm/cId3pY3FafwILrFEdLYjJLrUAUoJohVpqRTK6/BlklHDhlxx0ZLmI07XfZzGavwY63iZPvMbis4E9zi5iI4spMUEhCrTo7riGOWhm87KHw2w/HDoFSqfqghMBAobkcyMsMgf1FK6hmJOu1QF7MUoWx7ZXB8039NY2Y/3/X20clWEk85sA7mtRkRJR/mQkLSVj/gLTSKqb4u49CjMdbGNEa/oWW8x9Mh0DhwBkuia1ZCYEKUNdDvFH35RvcBu5fUkIu+/JKlraLbYbBRqiXXmngaMdhMDmP1KtfOZjkhESUX5kIDElY/2C0co9w4bEHYvcK1FoHrzRxdDlQl0y+Q9bOBAYKzZovL/mRbKb9LpSMjR6EgUIm/p3bDIPLgbp0oaG+Fvd5MTWJwmPxzw73SkMcrVVnrRTDEVF/GYggaHNL2Ll/b0dtYq6G+Jt+DoGbVwFttPKgbNMKqu7LN66HeCMLq4M2w2AtwOKVQD8Z+13u25tk8Qi3iIkoloEIgra2hMXUJAoPHYj9/LUA37rY0EabvmYpBIYKPlcBCQD8SDZrvryUhbODNsPgxYZeWA5xPO7zhYcOdHTTUI+4RUxEbfV9ELS2JdxhcUhD6lMXGuqE6dfYUnQnshACGxJLy5Ya+lI+aQW17MsrDYnUK1g3wqDrmu+den5VzTekPhXr4Q4/N3rFLWIiaqevg+D6lvCcjbELjz0QuzjEl/qnNm4NGS25EyUHQ6bH7YQC1FKgLzcCuZLme1B2NQK5shToy1IhSvM9HMAZKbm3C8f85975Br4Zt8egGB9N8rzgmANvNqnJiCh/+joIrn8AGm8c7X7sXjh798R6Vkp9/WwD/970O1RK7kjJxbDpcTuxsRVso18b9ZdIqnAplK+nXUhSBIqjnjtpOgxuNJyOW0ns7N0D92P3mnyFW2GjaSK6qb4NgrXql/cB+LzpccXUJNyY5wK10uEFX/x7021iyiW3UnHtXI8XV0tihVvB1ImNQpK0t4qLQHFL0Z0wPW4odeuVBo7Gfd791P7Ezgu6gJWdESLKv74Ngi6co8YHLXsdbelcjfBfTFcIF1ynmHYIXJG4thLI1M99UT41ArlyPdBX0qwqLjkYGi2ZD4PLgboUu5J44/MkgfOCGrhnuXpk1vpERJQ7fRkEl6tfqWrgHtPjdvIN/nqgvmelQjjFW0M2zgO2AtlIY37qH75Ufj3QV0IgtWMFJRfD5ZJbMT3uxYZeiFs8IqYm4X5qv+lXuJkqC0eI6EZ9FwTXPujErOlxOznTE0bqjXMN/GfT7zDquamFwBAIbd3fSoMpkiqs+/JKmi1mRlxs9VzH+JJcJ8Uj7sfuhbN7h+lXeDtjDjxuERPRz+m7ILheIGK2Z2AHW8Jaqei8L/6d0fmxViGcVpuYEAjrvmQIJOM2WswEEqtpvcNwSdxmuq1MKHXrtRaOxS0ecRPaIgbwORaOENFmfRUEa9Uj07BQINLJOZ7LvviPjVAbPT9XLrmVtCqEN0Igi0LIpnogay2JVFoQ2WorsxyoS1cD/c04z4rxURQejt+cvhcCmE1kIiLKhb4KggLxK/bicvbuid0q5nqgvve6r18yOX+axSGBxOpyU15mCKQkrARyaUXiWhpzF4HiloJr/PahTs4LOvftjf1Z0wsBHKhXjxyyPhER5ULfBMFa9ciMAMx+pe5gSzgM5bULvnjG5PTCgTNcElvTOBcYSKzWA1lLel4abK1ANtIKg7aKR8438E0JLMd51n34QFJVxLMsHCEioI+CoGNhNbCTLeHXQvdx0/0CtxTcsTTOBTIEUprSDIMjLraavpM4lLp1oYGvxXlWjI8mVUW8y4FXTWIiIsq2vgiC69scRm8Q6WRL+FpDPmO6X2Ba5wIZAikL0gyDwyWx1cZ5weUQx+M8m2AVMdvJEFF/BEFt+vBz2VvboonB96PLFwLxrMnpXRduGucCGQIpS9IKg7bOC55fVfOxW8okcxfxGFcFiSj3QXC9W77R1UD3U/shxkfbPqcjKX8aubG2fDoxUnATPxcYKvgMgZQ1aYXBkothr+AOmR73tRaOxXkuwS3iL613WyCiAZXrILi+rWH0G62YmozdOLoWYN50q5ihgjtadJBIQ7ENIRDWQ/lGknMSxZVWGBwuYsJ0f8FOt4jFRPsvpL1y2E6GaKDlOgiub2sY3cKJ28sraAZXTG8JF1ynOFyE/U/+TdgnkPKgFchG0n0GHcAZKbhbTY8be4u47MF9KJHegp/jqiDR4MptELSxGujcvxfiXfEOaV/Upf/X5NzA2iF102PeigLUaqCvMQRSHqwEcinpG0iKDrxKyR0xPW7cLWJn755ECke4Kkg0uHIbBI2vBpY9FGJ++15uhM+brhKulNyRJFvFKEDx7mDKm3oga0nfTVx2MZrqFnEyhSNcFSQaULkMgjZWA92P3xurZ6D0o+b5wI11bVTsuV24ZTfZLeGGxBJDIOVRPZRvhEBi/+3a2iJ+raVPxGk0LcZHY59b7gVXBYkGUy6DoOnVQDExCveT8Sr0LvnxtnQ6kXSVcEtipRXIRlLzEZmkFdRKIK8qJHekoejAM11FHErdutKMdxex+6n9Sdw4wlVBogGUuyBoZTUw5pZwa6X12hvK+bHJub2CO5RklXCg0FwJpNFKZ6KkSQm5GuhEK92Hi5gw3Wj6dV+/1JT4UdsHy97aroVljuHPViLKvtwFQRfeQRhcDXR274h1g4iOpLwgvMdNzQus3SVccc1WPd+KVIiuh+wVSP3Bl8pvSCT2pcYBnOGCa/wIx6utmKuCn9yfRDuZQ7xthGiw5C4Imr5FJG7T1vpq8E+mewaWHXfEdVAwOeatXI/0G6wQpn7SCORKoNBMar6yixHTdxE3Qr0Uu3DEfpNp3jZCNGByFQRN3yns7N4Rq12MbAXBa07ZeIFIkj0DWRxC/ep6KGtJFo8MF4TxFbO4hSPOfXuTWBVkECQaILkKggo4ZHK8uGcDlwIcD6VumZx7uOAmtv0SKDQbgUy0GS9RUrRa64eZ1HxFB1655FZMjhlK3boW6Pk4zxbst5MZW//STUQDIDdBsFY9MiMAY232nfv3QkxNtn1OrjZXX1WFvzM1LwB4ruOVHBi/x/Tt8FwgDYJIqjDJ84KewLDpMS829EKcG0fEu3ZYbzJt+ggOEWVXboKgY3o1MOZZm8stYXRLGADKBZHclnCkazwXSIOgEciVpJpNFx14AhCmx73UUvHbydi1q1Y9MmN7EiJKXy6C4Hpvq8+ZGs+5fy/EePssFqy0rl11S/9kal4g2XYxLYkVX6pEb2EgSlM9lG8k1V/Qcc1/ftYCLAYK59s9l8SqIFvJEA2GXATBtFYDr6jCt0zOCwBJtYuRCtFqJOtJzEWUFVpBrYZI5CiEA8fotXMbLrfUfJznElgVfIQNpon6Xy6CIAx+M+1kNdB08+hyya0k1S6GW8I0qPxINpNoKeNY2BoG1lYF4zSZFu/aYb2C2PSXcCLKnswHwfXqNWOraO79e2M9Z2M1cEgk0y6GW8I06K6HsmZ7i1hCSVtjx24ybX9VkNvDRH0u80HQZMuYuH0Dw+WV5byuBipAcUuYBp1WUC0Jq78OpLYXNBuhXmpIfardcwn0FWQrGaI+l+kgWKsemTbZMib22cCo8G1Tc25IajVwNQS3hIlgt4pYKkS2f51d8cWJOM/ZXhXUwEGrExBRqjIdBE1WrYmJ0dirgaYrhZNaDQwVfD+SiV23RZR1q5HZayE3NLXd1UYAWA7UpTgVxM7ePUDZaiMCFo0Q9bFMB0EY/Caa5mqg52KL6THfjq3f9IjyKpIqbEkYvVUnBMJWIBsmx7yZWBXEZQ/ux++1+h4sGiHqX1xnQoEAACAASURBVJkNgvXqVw7C1L3CZQ/Ofe2LRGR9tWW8b6DreEXA6CX1b6clscK7hIneajWSdakQmRhLIdnr7OL2FXRiFsH14JDtCYgoHZkNghrC3GpgzG/LS75+wdScG5K4RYQFIkQ3pxXU9Uj33GhaAaoe6CtJf+G65uu2ZwXF+KjtMLirVv3yPpsTEFE6MhkEa9XZcRi+SaQdtdqUrxYrRreFXRduEreINEOssECE6OYiqcJ6oK90uzIYAmEaIRAAXvf1SxJYbvdc3NZY3XLgsJUMUR/KZBB04RlbDXT27onVQHqlGbZt4NqpYde1vhooFaKWkkbPQBH1o0iqcCmUrwcSq3F/RgFqNUR9uSkvp3n04lqg59s9k0CDaVYPE/WhTAZBk+0K4m6XXBLlp03NCQDCgVNwMWRyzLfT1KhzNZAoHq2g6oGs1QJ5sSWxEgJvCXdSIQoUmisS16415WvNDBy7uOrjJY32rXCcj1ktGhlbP7tNRH0kkevOOrG+LfyIibHExOhaa4U2Wpeuvd4qj7fdeunEUMGtOJaDtlSIkqpeJOonUkKuSJmbKvtQ6taqFAsjLj58q+fc+/dCfuO4tfdYP7t9zNoERJS4zK0IGt0WjnudnCj+f6bm3OAJjJge80ZJ9DIjomy41GpfNIKyZ7tohCuCRH0mc0Ew6W1huVQPat7wD0zNCay1jLHdQJqrgUSDpRHqpTitZCwXjXB7mKjPZCoImtwWdnbviFUksrwafd/EfJt5rqiYHvNGXA0kGjzLkV5o94ztohGTrb2IKH2ZCoJJbwvrINRXyyPPmpoTSKZIRAHKj2TL5hxElD0XG3ohVtFIjLPRPWAQJOojmQqCRreFY3wQBm/UX2+5BaNFIl7BLdsuEmHfQKLBtSrRdlXQsXvlHLeHifpIZoKg0W3h+/fGuoS9FuK0ifk28wSGTY95I/YNJBpcb/jtg6AYH4WYmrT2DhpixtrgRJSozARBF6UZU2PFWQ1UK035+uiE0WrhJG4SCSRWuRpINLiWA3Upzk0jrB4mojgyEwSNHUAue/F6B9YbrxmZbxPPda03kG5IzdVAogG3HKBtKxnn/VbPCfLuYaI+kZkgCGDGxCBxP/xeV4W/NTHfZkXX7rZwCIRpXnNFRNlwLdQvtXvG9vaww+1hor6QiSC4/s1yl4mx4qwGymvLUX1ky09MzLfBdeEWgaLJMW/kS1y3OT4R5UMj1EuhwuV2z9ncHmYbGaL+kIkgaPKbpbN7R9tnVpca50zNt8H2tjBbxhDRZtejGNXDFreHBXDA2uBElJhMBEFT3yydvXtiVQtfK1X+wcR8mxWF3d6BkUSTRSJEtCEL28NsI0OUf5kIgqa+Wcb59quuLinT28LCgWO7WthX4GogEb0p9vawxVVBtpEhyj+r9+HGUasemTE1loixLew3/YvYYmrGNV7BLZsd8edJhciPZNPmHETUGa/gDhUclEruW78EhhJBpBD6Slpdyb8eYWFrCZ+51TPO3j2Q325bZNwVYajIj4jSk3oQdAx9kIipyVh3C1+Tzj+ZmG+zEuyuBoaaq4FEWVBwneKWgri9XHRGbnmDkLvxBw5aUq2shqi1Itkw/T7XQv3S1pK4ZRAUU5NrR2ZabW+m65gG7qlVZ8cn5maXjA9ORIlIfWtYm2obE2M1UNVXUKuMtD1g3Snbdwu3pF61OT4R3Zpw4EwMudvuGHJ3V4rOaCfXSJZdZ+S2svPO24bcdwjH7GduI9RLsZpLW9weNnkZABElL/UgmOT5wLC2UlMlz+jqWsF1ijbvFpYKEXsHEqXHcx3v9nJhZ8V1JnoZp+w6I9srxT3lglsx9W4A0JRoWzQS54tyt3hOkCjfUg2Cxs4Hlj2Id7X/oFuJ9I+NzLdJyRXcFibqU57reFuH3J0lx8yvcwdwbis77xwuuWMmxgOAlUAvtp03Rn/VbvGcIFG+pRoETZ0PjPttt1YYOm1ivs0KwvL5QAXzB3uIqC3hwNk65O60seI/XnK2e65j5LPjdb99GxmUPWttZDRwj5WBiSgRaW8NG7mrMk61sHz1ddkYG33FxHyblRx75wPXm0izWpgoBbd5hXfYPPaxdcjdaerMYFPiR+2esbk9bLL7AxElK+0gOGNikDgfcL4fXjAx12YF17F6pVzE1UCiVIyW3AnPFUbP8t3IAZzxonuHibGaEovtnonzhblbpnZ3iCh5qQXBWvXINIDez8nE3PK4jsJiz3PdwPb5wECDq4FECRMOnOGSc3sSc1WKzqiJLeLrUfsgaHNFEIZ2d4goeakFQRfayAeHc2e8cy/XUGp/jqZD1s8HSskVQaKEbSm4Yza3hG9UKYitvY6xHKhLGm12ECyeEwSDIFFupRYENUSi5wPDrWOXTMy3mQtY2xqWCpGUkLbGJ6K35xWEsYreOCpFZ9TEWcFWjO1hi6uCu2rV2XFbgxORPSkGwQTPB660zIdAF67r2LuZRWqeDyRKmgCEqVYxnSg5bs9zpn1OEPC4KkiUQ6kFQWGqYjhG/8BGIH9qYq7NCsItmR5zs6DdNg8RGee6TirXbhYc9Px5shqptl94RcyjNN1gwQhRPqUSBE0VisQ973LNG27bWqFTjsVtYYDnA4nSUBDC6q/rm3FF758ntSDGiuD4KMRE+zvZu8QVQaIcSmtFcNrEIHG+3arXr6G17fZFE/NtVnTtBUEFKJ4PJBocrqF+goHC+XbP2CoYEYY+14koWakEQVNbCHE+0MJr9bYXsnfDcqEI7xYmoo4FGqltD/OGEaJ8yvWKYJzWMUHY/txMN2wWigSS5wOJqHNNqdt+3tm9YeTL3B4myplUgqA2tTUco1BkVbivmZhrM1N3hN6MAlcEidKgNVQa80qFyMQ4jUi0XxG010sQLsS0tcGJyIpUgqAADvQ8RswPs3ppyPj9wsIVrukxN4u0DGyOT0RvT0KncjZXSjNf/paDGDsgZc9awYip/rBElJzEg6CppqNxPsjkK5cQjG8xvjUslL1tYQBgoQhROiKpUlmN97VumRorVsEIK4eJaF0KK4Jmmo7GOfAc1VcbquQZ+4DdYLNiOFQ8H0iUpkao6knOFykdmgygsQpGLJ0T1ABvFyHKmcSDoGPojuE4W8MyCJdMzPWWuS3+c9PazFkhIupOU8JKp4Gbz6eNBs9Aou3nnq0VQRPHfogoWSmsCAozW8ND7es1WnCMF4oAQNGBtWKRUHFbmChNrUg2fKkbScylAHU9lNdMjhnrhhF7W8PGjv8QUTLSKBZJ7Gq51UhcNjFXklgxTJS+64F6PYl5VgN1VSuzlcorMkblcIzPz+7xzmGiPEk8CJo4QxL322xzfOxqr3PdqOA6dq+g0jqV9hVE9DO+VP71UL1hc46WVCv1QNZMjxtK3dJx7iov29nYcKG5IkiUI4kHQWFgRTBOEFTnLyIaHrJyRtAmXyoWixBlQN2XV20VjgRK+9d8edHG2AAQqvYFI3Ea8neDLWSI8iWNreGxnkeIEwTrK4iGh40HQQG7PQSJKDtqvrxoOgwGSvtXW9ErpreEN4u0bv/ZZ++cIFcEiXLEaj+8G9WqR6ZNjBNnRTAK5YqJuW7kuvbCc8jzgUSZU/PlRQmEW4rObb2O1QhVfSmUl22GQAAIlVhCm6+s9ppKs5cgUZ4kGgRh6mq5OM2kg9D42RvrLP/mQETdqfvyqh/p61tKzjbPFZVOfz5SOlwO9KVWJBOpRg60XgLELZ+xWTlMRPmRdBA0Is4HWCgcW0HQXg9BMAgSZZUvle831U/LBbcy5GKsXHRGnDafBy2pVpoSy43Azg7FTeeN9BJK6QRBE+fAiSg5iQZBB5gxMlCMareWhJXWMQWL/8xCQ/eNEpE9rUg2WhEa8CVcF64Dx3WFePNzQWodaUCndV0dAPhapHlGsPdz4ESUmHyuCMa4VcTXYjWBVyGiASYlpISSIRCk/S6bNcIYW8Pj3BomonSqhu1r+fAnb0/0migioiyJ1UvQklr1yExacxNRZxINgtrA1nCc1UB98Uqv06RCO7xnmIjMiNVLcLfNG0aIKA9ytyIY545hLRzIQrGVwOsYpaXmPcNERESUmNwFwThUfQXh1rG234aJiPpVrKbSlq6Zc6BZOUyUE4kGQcfEPcNxtoaXrvc6DRFRroWqfeWwsHTNHCB4uwhRTiR9RvCengeJsTVMRERERO315dawLBbzWS1CRGSI1MjdOWkiSl5/BsFry/m7Xo6IyKDVSLU9Jx3nqA0R9bfcBUF+cBERmRGnC0M3TLQKI6Jk5C8I8owgERERkRGJBcFadbYvqsg0oNJ+ByIiIiITElwR9BLrKyVrK9auVooUrF0kH+j0Lqknov6i4LBYhIjayt3WcBxhEFq7Z1hqaSWsSYVIK642EpEZy0H7YhEior4MgsHE+HlbY0cSUajMX+YudXoXxBPRgJoYTfsNiChlfRkEbWtFum56zFUpjY9JRHQrYpxBkGjQMQh2wZfKb0msmBqvJbEiJaSp8YiIiIjiYBDs0koglwKJ1V7HCYFwNeJqIBERESWPQbAH9UDWelkZDBX8ui+vsEiEiIiI0tCXQbC40kjs+pGVQC5dD/SVTgpIFKBWQ9SXGQKJiIgoRYW0X8CGQr1+W5Lz+VL5vsSVgusUy64YdgWKRQc/dwWKVIgkEAYaTT+SLQZAIiIiSluSQXAxwblSEUkVrkgspf0eRERx6CUeTyYadIltDU/MHV5Mai4iIoqhxiBINOj68owgEdGgGys529N+ByLKvr4MgsXpqS1pvwMRUZocqHLa70BE2deXQZCIiNIjgPm034GI4sldENTN9l1a3KXr70ngVYiIiIhyLekguNzrAPrilbbPCMXOLERE7WgWixANvESDoAYWkpyPiGhQjRad6XbPMAgSUe62huNwdk3BCXwelCYiSoVmP1WinMhfEIxxRtAJQ5SWrrN1AhFRChQEd3+IciLRICgMbA3HOSNIRDToSg7afhnWr/HzlGjQJb0imMh2gZiaRKF+fTiJuYiIssgVaH88ptV+h4WI+lvutobjtI8RQx5K15aKCbwOERHdYGLu8Hza70BE8SS8NayT2Roue4CMKr3ORUSUVyUHu9o9o85eSOJViCjDEg2CEiKxreGhS5e3JTEXERH9nJ77xRJRchLeGlZGgqBeYu8rIqKbGSs57QtFLBXesV8sUb4kGgQn5r5o5gMiRhPUoYp3j5G5iIhyxoFioQgRxZK7YhEgXjd8Ryo2lSaigTRciLEiaOlWEQHMWxmYiKxIPAhq4HjPY8T4ACveMcGm0kQ0kOK0juH1ckQE9PGKIAD2EiSigRSrmbS1FcHeu0MQUXISD4JGtg3ibA3v3sFegkQ0kAoC420fshQEk+oOQURm9O+K4MQoStdqU/bfhogoW4oO7mj3jLJ2vZzPFUGiHEk8CCoDK4JxgqAYH0VxZeW2XuciIsqTSlG0Xw0ErFUNT8zNckWQKEdSWBE01EswRg+ssos9JuYiIsoLT+i2QVCfs3OjiIliQCJKVuJB0FQvwTirgu5QGcVry6wcJqKBMVp0pts9Y7F1DFcDiXImlTOCAjjV6xhxVgTdyXF4165xe5iIBkaaFcPgrSJEuZNKENTAYs9jxDjo7OzegdKVq2O9zkVElBdxKob1WTtbw2wdQ5Q/aVUN9/xhEatgZGoSQ5cub+t1LiKivEizYlhCL1oZmIisSWlruPdvjbEuTC97KPnBXb3ORUSUBxMlTLd9qOVbrBg2dJ88ESUmlSBo6ltjnMo3b3xkmAUjRDQIYt0xHOdLdBdMnP0mouSlEgRNfWuMs73BghEiGhRlV7cNgsrS+UDNQhGiXErtZhET/abifLNlwQgRDQrPFdPtnolTaNelRVsDE5E9qQVBkVDlsJiaxPCrF3f3OhcRUZYVXVF2gbZfem2tCJq4NYqIkpfiXcPJFYyUXexxAr/c63xERFk1UWhfKKKX6tYKRXjHMFE+pRYEFfS8iXHiFIyUJidQfv2NaRPzERFl0UhJTLd7xuK28HneMUyUT6kFQWMFIzG2OcTuHSj/9NWtJuYjIsoiT8RYEbS0LQxuCxPlVopbw4YKRmLeMMJzgkTUr4quKMdqJG0tCPJGEaK8SjUICgPtBmJ9sPGcIBH1sTjnA9HyrfUQNHXUh4iSl3IQNPDhEfPDjecEiahfxTkfaG81kDeKEOVZqkFQIpg3MU7cc4IjPzk7ZWI+IqIsSfN8oIkjPkSUnlSD4HqV2flex4nzAefs3YPyxcvv6XUuIqIsqRTFeJrnAwULRYhyLdUguG6+1wHifsBVtm7ZznuHiaifjBXTPh/IIEiUZ6kHQSPfJmN+yLnvvAOVixfbfnMmIsqLEVfc3e4ZdfqMtfkn5g7PWxuciKxLPQhKQ98m43zQOe/fg5Efn/2AifmIiLKg7LZfEbS1LczzgUT5l3oQnJg7vCiAU72Oo37QPgiK8VFUEO1mGxki6gfbPHG3ALx2z8X5fOwGzwcS5V/qQRAAtIEPE33xSqw7NEs7t6Pyymt7ep2PiChtoyW03RaO+9nYDZ4PJMq/TARBI/0EEXN7eO8ejLx8bqeJ+YiI0jQU53zgC6dtTb/M84FE+ZeJIJhoP8GpSQxfX/4lbg8TUZ6NlZztsbaFeb8wEd1CJoLgxNzskolDx3HPwZSnbuf2MBHl2m0e9rV7Ri/VrbWNEcAxKwMTUaIyEQQBQED3/qHS8uNtD3/8Xm4PE1GuDbvtg6CtIhHAXMcHIkpXZoKggjDy7TJOEBTjo9jSXPmlwurquIk5iYiSFLta2NL5QAGcmpg7vGhlcCJKVGaC4PqHSs/XzcX9Blx6zy4ML/50V6/zERElLVa1sMVtYc1tYaK+kZkguC657WE2lyaiHCq6ohyrWtjitrCCYhAk6hOZCoIK6qiRceJuDw8VdvPuYSLKk9s9pLotDOD8xNwXF2wNTkTJylQQXP9wSWx7uPCendjy8tl39zofEVFSxgoi1WphcFuYqK9kKgiuM7M9/GL7b8POfXsxdvbch3uej4goAZWiGC85aHu2WT170to7mNq5IaJsyFwQNLY9HHNVcGjXHcMjL597v4k5iYhsmiy1Xw0E4h2P6RK3hYn6TOaCoLHt4dNnoJfqbZ9zP3IPtvzkzPt6nY+IyLaRYowm0ucuQNfaf/Z1idvCRH0mc0FwnZmegjFWBcX4KEaj4P3sKUhEWbbNE3e7wFi756S9IhFuCxP1oUwGQWPbw8/FOydTvP99GH/xHz9oYk4iIhu2emJ/24daPquFiagjmQyCpraHda0Ofa79hevO3j0YvXr1Xifwy73OSURkWtwiEZurgYCeszg4EaUkk0FwjZkPnbgfjEPveWdly0/OvdfEnEREJt1Zxkyc5+LugnTD1DWgRJQtmQ2Cxu4efuF0vKKR+/di7OWzHzUxJxGRKXFvErFZJKKB47xbmKg/ZTYITswdXtTAcRNjxTozU/Ywsm1sG1vJEFGW3FkW++PcJGJzW9gBjlobnIhSldkgCJj78JExm6u6H7kHY//4w/tMzElEZMJoEW2LRPRS3WaRyLKEz21hoj6V6SA4Onf4KIDlngeKedOIGB/Flonh3eXXr073PCcRUY+mKmJfyvcKA8CxibnZJZsTEFF6Mh0E1x01MUjcVcHizP2YeGGBrWSIKHVbS2ImznNxP9+6oaBYLUzUxzIfBBVg5ENIX7wSq5WMGB/F2FDx/VwVJKI0TVXEvjgNpNWLp4GWb+UdBHCKvQOJ+lvmg6DJohH57ROxnuOqIBGlLfZqYMzPtS5xNZCoz2U+CALmikbU2QtcFSSizOtkNdDivcLL6+e0iaiP5SIIrn8Y9XzTCBC/xQJXBYkoLXFXA20WiTh377a61EhE2ZCLILjuqIlB4jaY5qogEaUh7mqgPncB6mz7HY5uhZ/e/5nV1dVTKysr+6xNQkSpy00QVPCNnVXhWUEiyqosnA2Uv/huRFsqaDQaH5BSnWw0GnO1Wm3c2oRElJrcBMH1PlZfNTFWp6uClVcu7DYxLxHRrWRlNVB94D1r82jA9300m63PF4vFU81mc8bapESUitwEQQBQwKypseJ+my49+FHcfvL7nzE1LxHR2ym6onx7STwY51mbq4Fq5xTUrqmfn09KNBrNnb4ffKfRaBzj6iBR/8hVEFy/9PxJE2OpF05DX7zS/sGyh5Gd27Zt+dHL95uYl4jo7cS9U9j2aqD8pV+46d8LggCrq41HCoXi+UajUbX2EkSUmFwFQcBcg2kAkN+I156w8JF7MHn6pX/uBH7Z1NxERBsqRTEe505hwO5qoB4bgXrPrls/ozWazeaoHwR/3Gg0jjebzWlrL0RE1uUuCE7MHZ431WA6bl9BlD1U7rmrMr5w+kMm5iUi2uzOMmZi3Sl8+ozd1cBP3Bf72TAIsbq6+s+iKDrXbDZnrb0UEVmVuyAIADqFs4LOfXtx+9XX/3lhdZVnY4jImIkSpiuuuCfOs3F3Mbqhx0Yg14tEYv+MBprNFprN5pdWV1fPs5iEKH9yGQRNrwqqF+M1ZfV++YO47bl/eMDEvEREAHBH2ZmJ85zlW0Q6Wg28URRJNBqNnUEQfqfZbB5lMQlRfuQyCALprAqKqUlsHfXex3YyRGTCVEXsKzm49aE8AGj5iJ7K1mrgW8ZYbzXTaDQ/VyqVF1dXVw8aej0isii3QdDkqqCu1SGfidtk+oO4/eT3P8PCESLqRUftYp47CbR8a+/Sy2rgW8aSEqurK2NhGH292WzOs5iEKNtyGwQBw6uCz56M1WQaZQ+jv7h7GwtHiKgXuyp4MFa7mKU65LMnrb2HidXAt7PeauZAFMlTLCYhyq5cB0GTq4Jo+R0XjhSvLW83MjcRDZSOCkSeOp6b1cAbKaXQbDZHW77/pUajwZtJiDIo10EQMLsqqF44Ha+dDADvX3wMd5z4e944QkQdKbqifGfFiXV+Tp+7AHX6jLV3sbUaeKO1VjOND0RR9B3eW0yULbkPgkZXBQFEjz8d6zkxPoqxd22fnjj1g1hNYImIgLUbROLcJwzE/zzqVvTpj1gdf7O1RtQttFqtz3uet8BiEqJsyH0QBMyuCnZSOOJ+5B5MvnrhM9wiJqI4xkrO9rEiDsR5Vj5zwmq7GLVzqu0tIjZEkcTq6uquKJJfbzQax1hMQpSuvgiCE3OH5wF81dR4sQtHwC1iIorvzjLibQlbLhAB7J4NbGej1Uyz2XpEKSzw3mKi9PRFEAQAZXBVEC0fklvERGTQ7i3Og0UHd8R5Vj7+tNUCEfWeXVC7pqyNH9dGq5kgCP+40WgsrKys7Ev7nYgGTd8EwYm5w4sA/tDUeOrshbXeXTFwi5iIbmWihOkRFx+O86zt+4QBIPp0tr63BkGARqN5DyBONpvNWRaTECWnb4IgACj4cwCWTY0nv32ioy3iqb997tfYaJqINuukShgt33qBiPzEfdBjW6zO0Q2lFBqNBlq+/yXP8xbYaoYoGX0VBCfmZpcEYO6sSYdbxKMfet+2iRf+MdZBcCIaDNMVcbCjKmGLW8LwSog+9Av2xjdgvdXMLinldxqNxjGuDhLZ1VdBEABG5w4fFcApU+N1skXs7N2DbSLcP/Lyufebmp+I8muqIvYNuXhvnGfV6TNWewYC61vC5ZLVOUzQWqPRaKLVaj1SLpcXm83mobTfiahf9V0QBABpclUQnW0RF2c+iO0v/fBXeF6QaLCNlZztce8STmJLWO2cSqR5tElRJLGysjIWhuFf8N5iIjv6MgiabifTyRYxyh6GPvnh4TtO/P1neF6QaDAVXVG+s4yDce4SBhLYEkb2CkTi0hpotXw0Gs0DSutzvLeYyKy+DIIAoOBXYbBwRJ29ELvRtJiaxPjd75zmeUGiwbSrgtitYtSLp61vCcsP/QL0HbdZncM2KSUaq6vw/eBLzWZzkcUkRGb0bRA0XjiC9S3ii1diPevct5fnBYkG0FRF7Ku44p44z+qlOqKnjN2Q+fZzjI0gSrF5tElar7WaWSsmUby3mMiAvg2CwFrhiMl7iAEg+qunYm/hFB/8GKb+8R8f5XlBosEwVnK2T5bEI3Gfj/4y/udJt6JPfyQXBSKd2Gg1EwTh58vl8iLvLSbqXl8HQQDQwCEY3CLWtXpHh7qHfuNX8I7/Nv+bPC9I1N+KrijvrOBQ3OflN47H3mHolnrPrlTuE05KEARYWVkd01p/ncUkRN3p+yC4fuPInMkx1ekzsVvKoOxhy69+fHj7/N/9hsl3IKJsuWtYHIpbHNLRZ0i3vBLCh/r/mPKmVjMHACywmISoM30fBAFgbO7wrMnegkBn3+bF1CQm3n3nztu++73PmHwHIsqGu7aIg3GLQ/RSZ7sK3QofPtB3W8K3EoYRVlZWxqIo+hLvLSaKbyCCIABIqEOmx+zkvKB77/twRxn7J079IJ89HIjobe2oOPvjFocAyZwL7Pct4ZvRGmg2W2g2W/cIxznJYhKi9gYmCE7MfXEBwB+aHFPX6mthMKbCL/8S7qi/8RlWEhP1h6mK2Le1hNgr/dETT1s/FzgoW8K3stFqJgyjz5fL5QUWkxDd3MAEQcDOFrE6ewHyG/ELk0sPz7CSmKgPdHRzCNb7Bb5w2uYrARi8LeGb0RrwfR+rq41dWuPrjUbjGItJiN5qoIIgAEjgIAxWEQOAfO4k1IvxP+CHfuNXsPP553+LYZAon8ZKzvadFcQuDtEXryRyLnBQt4RvZVOrmUcALDQaDaP9ZYnybuCC4FoVsZ41PW70VAetIMoeKr/y0QrbyhDlT9EV5R0VfDZuCETLR/hnT1h+q7XG0YO+JXwrG61mlFJ/3Gw251lMQrRm4IIgAIzNfWEOwJNGB934sI95CFyMj77ZVoZhkCgfiq4o3zUsDrnAWKwf6PBzoRfRQ9wSbufNVjO+f8BxnJPNZnOWxSQ06AYyCAKAgn8IhreIOw6DboyFUgAAIABJREFUU5O47RMf2MkwSJR9GyEwbpsYAIgSaBoNAPIT90HtmrI+T78IgxCrqw0A+FK5XF7gvcU0yAY2CE7MzS6ptfOCRnV6FmgjDN7xX4//OsMgUTZ1EwLlN44nUhyit23tm7uEbXNdF6VSCZVKBSMjwxt/eReA7zQajWNcHaRBNLBBEAAm5g7Pw3BLGWDt1oDoiQ7D4Pt2TjMMEmXTrgoe7CQEqhdP2785BFhrFfPYp+3Pk1OO46wHvyFs2TKCSmUInleC6771tz4hxCPlcnmx2WweSv5NidIj0n6BLFiqHpkXgPFT1u6n9sP9ZPz+0erF07j802snrxz46H8y/S5E1J27toiDnTSMVi+eTqRCGADCRz/NKuFNHMeBW3BRcF24rgshuv4t7jiAQ0NDQ4vm3o4omwZ6RXCDhm+8pQwAyG+f6KitjHPfXmzbedu9t333e5/hyiBR+joNgfriFURPxe8r2gv5oV8Y+BAohECxWMDQUBkjI8MYHq6g7HkoFAq9hEBgbWHgHO8tpkHAFcF1teqX9zlwrOzlFB57AM59e2M/L0/+ENdOn1+8/OkD/48qeS0b70REt9ZNCEyqQljtnEL4m79qfZ6sEUKgUFhb7XMLBTi9hb1YtNanhBDVoaGheeuTEaWAK4Lr1q6g079vY+zo8c6ulXLvfR/PDBKlpOiK8vtGnd/LagiEV0L46GCcCxQCKBRceJ6H4ZFhjIwMo1wuo1gsJhIC195B3IO1YhLeW0x9iSuCN1iuHjkK4HPGBy57KP7uoxBTk7F/RF+8gjf+9vuvXJr56H/gyiCRfd1UB6PlI/zTv4au1S2+2c8E//LXoO+4LZG5kibEWmWv6xbW/zdzaxXLSqlDw8PDxzr5oVr1yLQDHNr4cwV1bG3xgSh9DII3qFVnx1148xqIvRoQG8MgUWZ1HQL/7IlEegUCQPTQP4P8wHsSmSsp7nphx8aWb07ELiZZrh6ZA/D5t/lbTyr4hybmZpdMvxxRJxgE30atOjvuwFtE3NsDOtFlGFx++vnXL37iY18Pt45dMv5ORAOuUhTju4bEZ7McAuUvvhvRw/m/Qs5xHBQKhbwFv7ezrLWerVQqczd9oHpkFsCXbvb3BXBKwp9hGKQ0ZW7dPQvWmk2rGSuDd/Gbh5iaxPivf3rbzuef/63iteXtVt6LaECNlZzte4bF72U5BKqdU7kNgY7joFgq/lxl71ovv1yHQAAYE0L8caPRWHi7e4tr1SPTAKq3GkAD9zjwbhokiZLAIHgTE3NfXBDA71gZvJvfRMoehn/tlys7n3/+tyqvXNht5b2IBsw2T9y9s4JDAvBi/1DCIVBv25qr4pCNli7lsme6pUsmCSHucV335I3FJA4wh3i7SsZvuCLqRP/9qjSs3dJ+T7rYJgaA4Kl5XJh65xMrd73rB1bei2gATFXEvsmSeKSjH0o4BMIrIfjNX810cUgaLV0y7LxSqhp88U+XHOA7cX9obO7wQP9Do3RxRbCNsbnDswC+amXwLn9TKT08g50rtUdv++73PmPlvYj63F1bxMFOQ6C+eGWtOjipEAhkMgRubumycWdv0i1dMmyX4zhfd7eOdVRVTJQmBsEYxuYOH9JrVWLmrYdBdfpMRz9WmPkgtm/fsn9q/rnfYK9BoniKrijfPeoc6qRHIPCzPoFJtYgB1iqEsxICfz74jWBoaAilUjGL7V1Sp144DX1tOXah4StNNPd96F+/5YwhUVJyf1o3KX+w/xPHHBR+BYD5Yo1IQn3/xxBbRzvaJnamJlEZq9zmPffizsb4xCU1VF4x/m5EfWKs5GzfVRGfLTl4Ryc/l2iz6HVpt4lxXRfFYhGeV3pztc91XTjOwK/43VrLR/gXx4BIxv6Rf3NGFF9p6d/bfuenJrZv+9UTly59i23CKFH8Vd2B9bYyCwCsXfDZ6XV0AICWj8Z/ebb52l3vfqKxc8dZO29GlF/bPHH3HUPiYEdFIQDUi6fX7g5OMASqX7wrDB+eKSY2IdYqe92Ci2Kh0A/VvKmR3zgO+Vz8m0oX6sDn/2nzb8P6POBUF/7+D7i1TIlhEOzQ+p3E87DRY3Cd+7F74T7UeauI4Onv4rI38q3aPe8/YeG1iHJp9xbnwREXH+7059SLpxE9/rSNV7qVr+rZ//l/k1L+tZSq43eOayP4FdabOfdjNW/SdK2O8F//eUc/8+svCFx6++8YTyLwDi0s/D77C5J1/NXfhSTCoHP/XhQefaDjn1M/PIs3fvTqjy9/9INf500kNMiKrijvGRafLTmdr+B3urJjyFfH5g4f2viTK1eu/Q9ay/8TwEivA7Oy177wz56APnch9vNPXAT+7blb/ntYhhCzC8//AfsMklX8NOhSImFw9w4UfuthoNzRbhb0Uh2rT59ovLZv3+Otbbcv2nk7ouyaKGF6R8X5bKdbwWj5iL5xHOqF05be7O3d7IaJS5cubdNa/++uW/itjsYTQGF9m5fBzz51+gyiv3oq9vOrEvjvXxBYieI8rY9Du9WFf/hfeTcxWcFPhx4kEQbF1CQKjz3Qca9BgFvFNJi63QpOvEfgujjXjP30p6/9d8VS4d86Qky97Rhi487e9fDHat5Ehf/qz6GX4leU/9HLAn/zeqez6D9EUJ7jdjGZxiDYo3r1yCEN/IXVScoeir/9MMS7dnT8o2rxVSx9/8yFS/ff+x+j4WF+gFDf6uq+4HVpVAYDnd01++yzz27ZuXP3vymXi/8TsBb83lz1Y/BLjfz2Cchn4n/XfmuBSCf0eTg4tHDi8HyXAxC9BYOgAYmEQXRZUQwALR/Np59vXrzzHf+Zt5FQP9pRcfZPlDDT8VYwUisK6SgEbtBai+Xl5d2e5/3fAPJ5+XAf0bU6wj/9646+QPzLUwIvr/Y881cRlKtcHSQTGAQNSSoMdltEAgDypXO4eu7171+5/wN/w0IS6geVohjfOSQOdlMQAgDRE08nfh4Q6C4E3qjRaFSFELOweDSFbi16/GmoF+P/9xOjQKQTy9C6uvAPh4+aGpAGE4OgQUmFQTE1ieLvPtpxEQmAtZ6Dx7/Xem3qnY+z5yDlWS+rgHqpjugvn0r8PCBgJgRuqNVq457nHRWiwzuTqWfq7AVE/9cTsZ/vrECkE/r4+nbxoumRaTAwCBqWRAEJgJ7ODQJcHaT86nUVUJ+7gPAvn0r8PCBgNgRu1mw2ZwAchcVm9/TzOm0X012BSCf0Hy78/eFZmzNQf2IQtCCxMAjA/dR+uJ/c390Pt3y0Xvihf7FQ+a/X33vXC2bfjMi8XcPOzGgR+7tZBQQA+cwJyG+nU0RvKwRuqNVq4+VyuQrgSzbGp59RL5xG9ET8c6W9FYh05BQcXWUxCXWCQdCSJMNgt/0GN6jFV7F05uK5S3e/9z+xspiyaKKE6e1l58FuKoKBta1g+fjTUGfjr+AY9qSCf8hWCNxsZWVln+M4R4UQ99ieayC1fAT/6s87WlH+/A8EFpYtvtONNP4EoTfLYhKKg0HQoiTDYK9bxQAQfu8HeD1wnqndNf09bhdTFhRdUd5VwYMVt/tQo06fWasKTmEreN3P3RiSFBaT2NFpu5hvvg4ceTmV32qXAXGI9xZTOwyCltWqs+MuvHkNJPLtvNt7it/U8tE89ZPrrw6NHmMxCaWpl2IQAKndEnKDVELghmazOa21nmMxiRmd3idsr0CkI0+ubxcvpvoWlFkMgglIOgz2chvJBr10HfWFnyy+tvNd3wq3jl0y+HpEt7TNE3dPDokH3R5WsvS5C4gefxq6Fv+2B/P074/NfSET98Surq4edBxnDiwm6UmnBSL/xzmBxy9afKH4eG8x3RSDYEJq1dlxB94cgM8lNWdPhSTr5CuXUPvplYXXp6eP8/wg2TRRwvQdZWem22pgAEDLX9u6e+6kwTfrnAB+Z3QuW/3d1lvNzAohPp/2u+RRp+1iXl5dax6dMaegnUO8t5g2y9x/pf1uuXrkKBIMgyZWBwEg/OHZ8OpK9N03dr3zuzw/SCZVimL8zjJmejkHCGRlFRDLCjg4MZfdqs1mszmzvl3MYpIOdHqfcOIFIp1gMQltwiCYgqQaT29mYnUQAMKXFqOr14O/YyCkXpkKgFlZBQRwXkEdnJj7Yi5WW5rN5iyAKlhM0laOCkQ6wHuLaU3W/0vtW7XqkRkHOIYEP4TF1CQKDx/oqbJ4AwMhdctYAEQmKoIB2O8RaEuz2ZzGWiNq3lt8Mx22i8lIgUgnnkTgHeLq4OBiEEzR/9/e/fzGdZ1nHH/OHZIzshOJhGNHDgSUsRd1nUWuGlgRYANhgWyLMJsWXWXi/gG+BopIbAqYKhCz9sbjtOtkhMCrdCEhAVoUQUA2NmBTsH2JJIKRWBHVKPppmxyaDMkh554u7iU9okhqLjkz99f3s5E0HA7PYig+POe877vg/cAtyan3q4hkS+nZkyp98/SB+w62IxCiU90MgCnoC9gu0crgboiKSepid/A+cecJp6hAJA6KSQqMIJiwqIikLqm/7R0qZQ387Tfk/PXTXXm5jQ/mNxuBef/WFx77JYEQ7UaGNPqFsnP6SEl/eegXW1tX6633E5sOcr/0VAYfVjSZpK8FbWkXt0Dk9nq4G5hddka25FFMUixZfsfmSsObmlQCo6GcJ06o9M3TXTkulqTWn+60lhb/fPnm8CO/pMq42B5/yLjHBox7qCrgNsF7l9X6xdtJF4NsSX1RyEExt/gzcdvFpLpAJBbmFhcJQTBFlryXx61MXQkczzhfezoMhMNHu/J6trGslZufXLk7eGT200ce+V1XXhSpN1gylS+WjXtsSKcP0wewnb16Xa1fvJ2WY+DoPqDGR2r5btAbFZMUdm5x3HnCb34iff+DPP1IpZikKPL0rs2FBW9qtCRd6Pe9QUlSpazScydVevZkV+4PbmlevfHpxxt65+PhkXc5Ns6nkSGNPlI2bjfu/22xi0tq/WxGweUr3XrJbsj8fcA4lpeX3VKpVFPRiknW1rXx+hsdt4tZaUnP+0a3kq1Z6hF7Xs2KRzFJfhEEUyiJ5tP32AqEXWg30y74aDFYXlq9cqd05M0/Hzv6f119cfRdL3b/pCgA/uLtpEfD7dQwkpe2JtH9UrS5xXHbxdT/KP34j7n+ccrc4hzL9Ts366J+gzUl9J+vGTmq0jdPd62gpF3z6o1Pl0pDv75VefhX7BJmy2Nl89SxIeN2pfij3VYhyJvvJ94Opl14FBxUs9IfsFeiyST1vM8tjjtPOPsFInHYmei4eD7plaB7ivLuzaxEj4ojvQyEdr2p5t3Fjz7aNO9+PPxIWkpBscPW0e+RknnKSN27NyClNgBGXj9Wm/CSXkSa5L2YZPMnP4t1HSE/BSIda0i2RjFJfhAEMyKpquJ2vQyEkhR8umLXF5dvNOzA7+4cHfnfnnwRdOyxsnnqc0Nm9EhJT3Xz6HdbugNgw8hWj9b+maOwXeR1bnHcdjH5KxCJZU6O9Sgmyb7CvoOzKJpGUlfSv4n3qKiknW1u2ObHS3eWbOn3H33+2FsbLcvxcY8NlkxlZECjR4f0VE92/iIpvQPY7mKg9WrWpoQkYXl52XUcp56XucVx5gnnu0AkBuYWZx5BMGOiQpJJScn/Jl4pq/S1p+U8d7JrbWf20rz9ycLqRnB9sfLwrxsD5d/39IsVyLEh5/jnBzT6uQE91a1+f3uxV6+r9e7lNAfAhmQn89Igup/yUEzSeut9tX4+0/HzC1AgEoO9JjkexSTZxLs4o5LsObgb5+knVXruZNcaU+8nWF5tNf+8fntF5npj8Mh7y2bgds+/aE48NGiGjw1q9OGSRsslM9qTI98dgvfC8JeWPoC7sdKMlap57w3YS6urq6PW2lomi0lizhO+vS49P5epecL9cjE6Lp5PeiHoHEEwwxJvM7OL7XuETz/Zs2PjnYKVtc3mytqdNad0uzE45DfsIK1pIls7fpWSPd6v4CeFx79BtPuXkkkge2EXsMuyOLc47jzhf/nA6Fef9HBB2cbc4owhCOZAau4OtquU5XzlSZWePSnz+KN9//Ibi8uN5mbw0Zp1bi0//LnfNJrBrb4vos+ODTnHHxqwx4+UzPEho+O9PurdTXD5ShgA09UEelfsAvZOlopJ7M272vjhGx0/31+SXvgNPzo7MCfrVJlbnH68m3MiVXcHdzAjR+U8e1LOV57s+V3C/bSWV1c2N1vLa6Z0a03mj2uDlT9lMSAeG3KOl40dPjJgjg86dnjQmOODjr6Y1Hrs4pKCN99XcPlK2nf/tlAR3Cerq6tj0XFxaotJ4s4T/vt3KRCJx55Ts1KjmCS9CII5s+D9wDVyaialI6Gcp5+U85Un+3p0/CB2s9XaXF1f2Ai0siGz2CoNNFac0lVJWm6ZW/2uWB4Z0qgkVQbM8JAxw4OOHR4wZrikYKTkOMkl6XZr69uFH/bm3aRXE8frgdYnqQjur2husaeUHRcHl69o8yc/6/j5FIgcFHOL04x3dE41vJc9Kd1VfGkMhfvZXF1v2M3Whh0YsNZxgs3NYHlzs7UsSSqXl1VyOr46fqSkUbuxWdn6d7k8kNiOXsfW1sOj399eycTRb7twOoi8kRo/iJKyuro6qvAKSzp+SY05T5gCka64qGa5yu5guhAEcyyNxSR72QqF5okTiR4f4152cUn2D9czGf4iFIOkzOrqalUJjs7cEneeMAUiXdOQtZ5/qZhzu9OIIFgAaT8u3sk8/uj2TmEShSZFZ2/e3d75y9ix704cA6fUwsLCcKVSSeyXVLuwFBaIdNguhgKRXmBucVrwzi6QqPdgTWmqLn6QqPrYeeIEu4U9sr3rF+38pXDcWyxUA2dHUnOL484TpkCkl+w55hYniyBYQFm4P7gXM3JU5okTBMNDsItLsjfuboe/jO/6bYsC4CT3ALMl2h301KdZ6nHnCf/nTenfr/KjsrcoJkkS7+6Ciu4PekphJV8slXIYCr/0aPjn449movCkn+zV6wpu3JW9GYa/jLR4ieOakSaP1rhzlGXLy8tuqVSqqcdXWDZ++EbHv/ystKS/e5cCkb5hbnEiCIIFl6WCkk6ZkaMyjz+6HQ41crQYO4dr6+H9vq3QF/2ZYwTAHOrl3OK484T/7UOj/7rT7VXgARqSqTK3uH8IgpAkLXhTo440qRwFwp2cJ05IlbLMlx4Ng+KRciZ3EO3ikrSwpODGXWlhKQx9C0t53OnbCwEw56LJJPWuzi2OOU+YApGkUUzSL7zLcY8iBMLdbAVDjRyVGQl3D50nTnz28S+f2OtTuyfa0ZMku9r29xt3w48VK+zthgBYMNHc4q4UuLV+PqPWW+93/Px/nDP6cOWwXxWH1JBsjWKS3iIIYldRIKwq63cIe6FSlvOlw7e1aQ972BcBsMC6MbfYLixp49Ufdfx8CkRSh7nFPcQ7HfvKTVEJMsdKM45sjZnAkMJiEsdx6geZWxxnnjAFIilGMUlPEATRsSVvqmrDY+Ps9CFEFp0PpDptYLCbuMUkcecJUyCSdvaa5HgUk3QPQRCxLXhTY064Q9i9i9wouoakWhQA55NeDNItztzijVd+1PE8YQpEMuWiHOtRTHJ4vONxYNE9Qk/hXUKOjRFbePyrOvf/cBBRMUlde/z/E3ee8Au/NfIbXVoc+qEhYyb9d84wS/wQCILoiiVvqhpI1azMM0aiGpLqgVRj9w+HtVcxSdx5wv99R5r6kB+J2WRnZEsexSQHw7seXdW2Szgu7hLiXheNdIHdP/TC6urqmLW2tlVMsvnT/1Hw3uWOPpcCkbyw59Ss1CgmiYcgiJ5Z8l4etzLjCkMhR8cFZKQ5K1sPZC6w+4d+WF1dnQz+cP2lOPOE/+Oq0U9v9nBR6CPmFsdFEERfRBXH46LApAiuSbrA0S+S0vinVy9rs/VXnTz3w5WweTTyxp5Xs+KxO/hgvPvRVwve5HBJ5XFCYb6EO3+aDhTUR2rf554OEhP90vnjTp9PgUiuNWSt51/iOsp+CIJIFMfH2WWlGSN7gWNfpEXUAH9eHf5fQoFIUTC3eD98ByA1FrwfuI6ccSONWyn29AD03DVJ00aabmn9wkhtkiMXpErDm5qU9FInz6VApIjsOeYW348giFQKj5CHxqLdwjFRgZyEhqRpyU4HstMc+SLtGt7UojrcDaRApLDmokbU00kvJC0IgsiEBW9qtCSNWWnMSC47hj1B8ENmRcfCC5089/Z6uBuIAmNu8Ta+E5BJbTuG7lY4FHcMY9kq8DCS31LgE/yQZXGCIAUiiDQkUy363GKCIHIj3DW0bls4HBVHypK2CjvkS3Y+kPFHahyLIH8a3tS8HvA9/+Yn0vc/4Ecf2hW7mITvBuTagjc5LJVdR9aVzHDOA2LDSn4Y+LQYSNOS5qnoRVE0vJc9yby218dXWrLP+8bc6mzqHIqlsHOLCYIorAVvalTSaEkatWE43PpTaZyZbKS5QFo00qLCsKcw7AWLHOsCoYY3VZf0nZ2PNwOt/+vvTPlXn/R/TciUOVmnWqS5xQRBYB9bO4pb/3bCCuZ22+HxINpD3WePWb8lE11gJuQBcS14U2OO5FlpWJKM5P/De+b5G2v6fNJrQ0YUqJiEIAgAyD3XfW1YQ2s1ydy3WwjsrhhziwmCAIDCcE9PjSkwNdGCCp27qGa5mtfdQYIgAKBw3FNTk5LxRNspdCa3xSQEQQBAIbmnp0aj3cFvJb0WZIWdkS15eSomIQgCAArNPfXKuBTUJJPHtlLoifzMLSYIAgAKLyom8STzUtJrQVbko5iEIAgAQMR95lVXplWTTOp6iSKt7Hk1K15Wi0kIggAA7OA+M1WVMTVRTILONGSt51+aqCe9kLgIggAA7MJ1XxvW4PqkjF5Iei3IiuzNLSYIAgCwD3oPIqaGZGtZKSYhCAIA0AH36694snZSHBejM3NyrJf2YhKCIAAAHaL3IGJL+dxigiAAADGFx8Wq03sQnbHXJMfzZ89cSHolOxEEAQA4AHoP4gAuRsfF80kvZAtBEACAQwiPi1Wn9yA6lKq5xQRBAAC6gN6DiGlO1qkmPbeYIAgAQJfQexDx2XNqVmpJFZMQBAEA6LJwVF1QF70H0ZHk5hYTBAEA6BF6DyKmi2qWq/3cHSQIAgDQQ2F18Xpd9B5EZ/paTEIQBACgD+g9iHj6M7eYIAgAQB+5p6Ym6T2IztlzvZxbTBAEAKDP6D2IeHpXTEIQBAAgIe6pV8aloMZxMTrSg7nFBEEAABJE70HE1JBMtVtziwmCAACkQNh7sFXjuBid6U4xCUEQAIAUofcgYmhItnaYYhKCIAAAKRP2HlyrSeY7Sa8FmXDgucUEQQAAUoreg4ihIWs9/9JEPc4nEQQBAEi5qPegJ46L8SDWfjdOGCQIAgCQAfQeRMdihEGCIAAAGULvQXTGfLuTFjMEQQAAMiYqJvEYVYd9NORY90HtZQiCAABkFL0HsT87489OjO33DIIgAAAZ5z4zVZUxNVFMgvvsf0Ts9HMpAACg+/xLE3U1y6OSPZ/0WpA2QW2/j7IjCABAjoS9B01N0leTXgtSYp8qYoIgAAA5RO9BtJnzZ8+6u32AIAgAQE6FvQdNTdK3kl4LEubYL+9WQcwdQQAAcsp/e2Lenz07Lsf+jWSvJb0eJChQdbeHCYIAAOSc//bEtJoVV7Lnkl4LkmLGd32038sAAADJYVRdgTXLI77/4mL7Q+wIAgBQIOFx8cSYrP2upEbS60EfVdbuKxghCAIAUEDbvQetXk96LeiTQGM7HyIIAgBQUL7/4qJ/6awXFpNoLun1oMesGd75EEEQAICC89+emPZnz7oy5kVxXJxfxnI0DAAAdue/c6YWjqrTxaTXgv4gCAIAgG2+/+IivQeLg/YxAABgT9GoupeSXge6w589e0/2Y0cQAADsyZ+dmJRjvyzZmaTXgu4jCAIAgH1t9x6U+bYoJsmy+yrDCYIAAKAj/uyZC/QezDK7uPMRgiAAAOjYdu9B65wUvQczjyAIAABi8y99z6f3YObM73yAIAgAAA7ss96D9nzSa8EDze98gCAIAAAOJew9OFGl92DKWYIgAADokXBU3cSoZM+J4+IUKvk7H6GhNAAA6Dr39NSoAtUl842k14LQzmbSEjuCAACgB+7tPchxcfJ2bwhOEAQAAD0T9h6suPQeTNz0bg8SBAEAQE/d23uQUXWJsKULuz3MHUEAANBX7jNTVRlTk3Qs6bUUg70WFvHcjx1BAADQV/6liTq9B/vIml13AyWCIAAASMC9vQcZVddbTn2vj3A0DAAAEueempqUjCeOi7ts72NhiR1BAACQAv7sxKQc60q6mPRacsVqcr8PsyMIAABSxT31yrgU1CTzF0mvJeMaapZHff/Fxb2ewI4gAABIle3eg+GoOhyYre0XAiV2BAEAQIoxqu7AHrgbKBEEAQBABtB7MC57zp+dmHzQszgaBgAAqbfde5BRdR2w19Ss1Dp5JjuCAAAgU9zTU2MKTE3SV5NeSzqZb/uzZ/ZsIn3PM3u9FAAAgF5wv/6KJ2snxXFxGzvjz06MdfpsjoYBAEAm+e+cqdF78B4NOarG+QR2BAEAQOaFx8WqF7r3oDEv+u+c6ehu4Pan9GotAAAA/eS6rw1raM2TzEtJryUBF/3Zs+NxP4kgCAAAcqV4vQftNTUr7oN6Bu6GIAgAAHIpHFVn68p3MUlD1hnzL33PP8gnUywCAAByKRxVl/Peg9Z6Bw2BEjuCAACgANxnXnVlgrry1HvQ2u/6lybqh3kJgiAAACiM3PQetHrdv3TWO+zLEAQBAEChhNXF63VJ30p6LQfSpRAoEQQBAEBBZbL3YBeOg9sRBAEAQKG5p6YmJeMp3cfFjbAwpHshUCIIAgAApLz3oL0mWxo/THXwXgiCAAAAkbD3YFBL0XHxRTXL1YM0i+4EQRAAAKCN6742rMH1SRm9kOAyGpKp+rO5HK7cAAAAnElEQVRnLvTyixAEAQAAdhH2HmzV+n9cbM+rWfF6tQvYjiAIAACwj/71HrQzsqVDTQqJiyAIAADwAGHvwbWaZL7T/Ve352VLtX4GwC0EQQAAgA5F1cVVSdVDFpTMyZi61ofq/TgC3gtBEAAA4ACiO4TjksYkje4dDO01SfOSpiXHV3NoOsnwBwAAAAAAAAAAAAAAAAAAAAAAgJz6f5aTWv3teOl8AAAAAElFTkSuQmCC","e":1},{"id":"image_2","w":126,"h":148,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_3","w":223,"h":139,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN8AAACLCAYAAADh5kzNAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAFTUlEQVR4nO3dT0ikdRjA8ef3zjSjrO3uSFpEYaEGMbN1cBCXZXcN9VJEwgYFe5GMboG3GoLQU9dpj1sHoSiChcyoMLRc1sMe3NCIrUNrCrJ7MBjTHTa39X27KAyu89d5f887M9/PScd33vdB+OLrq7/3NZtjH80LUGdCzzzZ4vTEl46dTb6tPUs+YSNyXnsIoOocR5xkvCc7NXf92PDAp9rjHMbRHgDwk9OfvLw9u/CG9hyHIT7Ut2jEhJOnvgxigMSH+hfQAIkPjWEvwOxXP7ysPco+4kPjiEaM6Xvh63vfzXVojyJCfGgwpr014p16/vcgBEh8aDimLdYchACJDw0pCAESHxqWaYs1u+3tv2TGxk9qHJ/40NCcRFdr5K03F1WOrXFQIEic7o7O7K9//Gn9uLYPCASRRoDEB+xxujs6s9cWl6wdz9aBgFrgJOMv3v3+6o9WjmXjIEAtCb3UO5S9tuj7MiTiAw7hJOOjfgdIfEAeTjI+mp1ZuOTb/v3aMVAPnN7Eu9ufT3/oy7792ClQN5qiEn7l3ER2aq7q94IhPqCYpqj4cTsK4gNK4cNqeOIDShWNmFDiuS+2Ln12thq7Iz6gDObEo0741f6fqxEg8QFlMk88FgoPD8wcdS0g8QEVqMZiXOIDKmTaYs1ed+dvlS7GJT7gCMzTj7dELl64VUmAxAcckZPoao1cvHCr7Pf5MQzQaJxEV2u5i3GJD6iSclfDEx9QRU53R2d2+qeFkrb1exig0ThDp8+UEiDxAT5whk6f2Z5ZmCq4ja1hgEYTPtfzWqHV8GGbw9gSGuyT0ECf9hiw6MEnV8RdWdce4yFOMj56d2r275bhwfcf+prGQEAjCZ1PvnfYanjiA/y2txr+YIDEB9iwH2DOYlziA2xpikruo6mJD7ApGjGmNzGdyWRO1uXVTvfGTfECeOUL/nFvbxTdxtvcEslsFd8usyVeiduVsj/39obIvzu5L4Vi6dRmXcZX6jcP9ctdWZf7qbT2GAVx2gkoIT5ACfEBSogPUEJ8gBLiA5QQH6CE+AAlxAcoIT5ACfEBSogPUEJ8gBLiA5QQH6CE+AAlxAcoIT5ACfEBSogPUBKYGyiFBnm2Airn3rhZczfNCk58PNgER+CtrNdcfJx2AkqID1BCfIAS4gOUBOaCi/cXz1ZA5bx7O8U3CpjAxPff5SvaIwBWcdoJKCE+QAnxAUqID1BCfIAS4gOUEB+ghPgAJcQHKCE+QAnxAUqID1BCfIAS4gOUEB+ghPgAJcQHKCE+QAnxAUqID1BCfICSwNy97JF3XtceATXswbdXxbuzoT1GWQITn3n2Ke0RUMNMc1Q87SHKxGknoIT4ACXEByghPkBJYC647M5d1x4BNazWnkorEqT4ZokPjYXTTkAJ8QFKiA9QQnyAEuIDlBAfoIT4ACXEByghPkAJ8QFKiA9QQnyAEuID7FsTIT7AOk9kVYT4AOuMyJII8QHWER+gZFdkXoT4ANvWYunUqgjxAbZN7X9AfIBFrriT+x8TH2CJEVmOpT9Y2v+c+AB70rmfEB9gx9rxdGoy9wXiAywwIuMHXyM+wGdGZPngTz0R4gN8tyvuyGGvEx/gr4ncK5y5iA/wzzcn0qnxfF8kPsAHRmTZlZ2RQtsQH1BlRmR5V3b6Y+nxzULbER9QRaWGJ0J8QNWUE55IgB6OCdS4j4+nU2PlvIH4gKNZc0VGYunUfLlvJD6gMv+ISLrQnxKKIT6gPGsiXtqV+5Ol/m6XD/EBRRiRZU9k3hV3Mt9/q1QiLCIT1doZUC+MyOquyKrIztJRf8Ll8z83UUYWe8a9VQAAAABJRU5ErkJggg==","e":1},{"id":"image_4","w":268,"h":269,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_5","w":431,"h":588,"u":"","p":"data:image/png;base64,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","e":1},{"id":"image_6","w":555,"h":719,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAisAAALPCAYAAACje4C8AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nO3dW5Cmd33Y+d/znrrfPkxPT8+gGY2EkD2yGHYRkdgVxnIAE+MCVxIwlVwYal1O5PVWseWL5WJ953IK3+CLjS5Wvkq27E3tOlRiFVu7UGsMMQhjEypIiIpRQBJCWNLM7Bx6+vj24T3sRU+P5tDnft9+/u/zfD5VlKSZ1tt/St1vf+f//A/Zv/mrhefnVnrvCACAhPzX91YuPf6Oyv9bm1vpvePiXO943gMCALjVQ2+L41mWXazkPRAAgJ2IFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBptX68yGg9i8ceqMf5e+vxjpPViIhYWe/Fq1c68eKb6/H8a+uHet1HH6jH6anbX/dvXl6LVy+3D/y6v3CuEefvrfX1dQGA/jt0rJyZqsan3t+M42OVuDjXib98cTUiNoLg/L21OH+mGY890Ij/42+WY2W9t6/X/ecfGIvRerbl6/7zvz8WP7nS2ffrnr+3Fp98b3PL1330gXqcPzMWL15oxzP/qbWv1wUABiP7X786P3vQiww3gyIi4v/8dmvLGYlfONeIjz0yGhfnOvGvn91bWGy+7sp6L5757krfXvf8vbX41M+PxcW5Tjzzn1biwlznro/58PmR+KXzI3FxrhNPf21p19cEAAbj7z9UjQ88VP3GodasfOr9zYiIePprS9s+Ovnrl9fif/vmcpyeqsavPjK662uO1rP41PubsbLe2/V1n/luK05PVePD50f29LqffG/zZtxsFSoREf/hxdV9vS4AMFgHjpVHH6jH8bFKfPn7K3F9ubvjx756uR1/+eLqzX9nJ+fvrcXxsUo8892VXWdLnn9tYz3M+881YrSe7fixjz1Qj9F6Fl/+/uqeXvfFC+09vS4AMFgHjpXz99bj+nJ3z4tnn7vxce+6d+dlMo890IiLc509L3L9m5fXboxn59c9f299X6/7lz9YjdF6Fg+equ7p4wGAwThwrDTrWbx6eetHKVu5vtyN68vdXWcqTk9V9vW6m49zpneZsXnHyWq8+Obed/lsvu6ZKbECAHk61JqV/e6Wub7c2/Ux0Gg92/fr2rUDAMV1qFg5c3x/sw7vOFnddX3LxblOnN7H647Wsz2tK7m+3N01lG61+bFCCADydeBYuXC9E+84Wd1zAGyuKdluF85br9uNB09W97ywdfN1d3vE8+rlTpy/t7bn191cW7OfR1IAQP8dOFb++sbC1l99z962I//qI6Nxfbm7a1T8zctrMVrP9rwd+cPnR+L6cnfXCHr+p+s3T67dy+v+0vmR+MmVzq6vCwAM1oFj5fpyN/7yxdU4f2bjRNjtjNaz+OR/07y5zXk3F+Y2jrx//7nGjmExWs/iyQ+M3dzmvJtXL7fj+dfW45fOj8SjD9R3fd3RehZffmH31wUAButQx+3/hxdX4/hYJR59oB7T45X465dXb86cbB6L/+HzIzeCorXn3Thf/v5KjNaz+Ngjo3H+3vptr3t8rBIPnto4YG60nsUz39365NztXnd6vBKffO/GFQB3vu5jD9Rvnq3yzHdbZlUAIAGHOm5/0y+ca8T7zzW2XL9yfbm77ZH5e3ndXzo/suU6k59c6cSXX9j6yPzdfPj8yLYHvh3mdQGA/tk8br8vsbLpwVO1ePDWW5cv92fNx1G97g/ebO+6WwkAOBqbsXLoW5dv9erl9oFmUIr2ugBA/xzqnBUAgEETKwBA0sQKAJA0sQIAJE2sAABJq52ayJYa1ejL1mUAgH453tw4D632j99TezkizuY7HACArXkMBAAkTawAAEkTKwBA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACRNrAAASRMrAEDSxAoAkDSxAgAkTawAAEkTKwBA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACStlvcAgJx0uxGrq1v/3tpa9Lrd234pGx3d+mOr1YhGo8+DA3iLWIGiWVuL6HTeCo52O2J9/a3fuyNC9qq31w9sNCIqNyZtm82IiMg2f21k5K3fA9gjsQLDaHNWZG0teu32xt+32xv/y9va2lt/v7ISEVuETqMRUa9HNBobIXPj7wG2IlYgdd1uRKsVvbW1iFYrnSg5jLW1jf8tLd0eMo1GxMjIRsA0GjdnZoByEyuQmhtRcluclMWNiLktYEZHNwJmdHQjXjxGgtIRK5C3dnsjTpaXN+LkgGtKCmtlJWJlJXpzcxv/fGPGJRsdjRgfz3dswJEQK5CHpaXoraxELC2Va+akHzZnXzbjZXz8rXCpeUuDIvKdDUeh2709UMye9M/SUvSWliKuXt2IlfHxyCYnLdiFAhErMEgLCxuPd5aW8h5JObTbEXNzG7MuwgUKQ6xAv7Va0VtcNIOStzvCJZua8qgIhpTvWuiHdjt6CwsRCwvWoKSo3Y7e1asbj4rGxyMbG4uYnMx7VMAeiRU4jKWlt2ZRGA63rnGZnNyYcTHbAknzHQr71e1urEWZmzOLMsy63bceE42PR3bsmEPoIFFiBfaq3Y7e7Ky1KEW0OdtSq0U2Pe0RESRGrMBuNhfMLizkPRIGrd2O3uXLG4+IpqY2HhE5MRdyJ1ZgO63WxkzKjcv4KJFuN2J2duMRkWiB3IkVuJNIYZNogSSIFdi0tha9K1dECncTLZArsQKbC2etSWE3t0RLNjNjIS4cEbFCeXW7G39Snp3NeyQMm253YyHu7Gxkp07Z8gwDJlYop4WFjRNNbUHmMNrt6F24EDE6Gtnb3uZwORgQ31mUi3UpDMLKSvR++tOI6WnrWWAAxArl0O1urEuZm8t7JBTZ7Gz0FhY21rOMj+c9GigMsULxLS1trC/wyIej0G5H79KljSP8Z2Y8GoI+8F1EcW0ugnTJIHlYWopeq7VxfP/UVN6jgaEmVigmsymkoNvdWMi9tGQBLhyCVWAUS7cbvUuXNqbhhQqpWFmJ3uuvWzMFByTzKY5WS6SQrs1ZlpWVjbNZ7BiCPRMrFELv6lV/amU4bK5lueceh8nBHkl7htvamul1hk+3G70LFza20wO7MrPC8HIKLcNudjZ6S0uR3Xuvx0KwA98dDKXe1at2+1AMa2sbp9+2WnmPBJIlVhgu3a7HPhTPjcdCvq5hax4DMTzW1qL35ptmUyis3tWrEWtrGyffeiwEN4kVhsPCwsZjHyi6hYXora5axwK38J1A8nqzs0KFctlcx7K2lvdIIAlihaT1Ll+OsL2TMup2Nx57LizkPRLIncdApGnzjdqfLCmzG5dxZhERk5N5jwZyY2aF9AgVuE3v8uWNxbdQUmZWSIsdP7C1ubnodbsb9wpByZhZIR1CBXZmVxwlJVZIg1CBvVlY8L1C6YgV8idUYH9WVo70e+bihfkj+TywHbFCvoQKHMwRfO8sLq7Gb//Gn8Zv/8afxuLi6sA+D+xGrJAfoQKHM8DvoZdfuhyf/cwz8cpLV2JpcS0++5lnBAu5ESvkQ6hAfwzge+nWUNn0yktX4ul/+c2+fQ7YD7HC0RMq0F9ra33bJfTnX3oxPvuZZ2Jp8e5zjr7y5RfjT/7Vf+zL54H9ECscLaECg7G0dOhg+bMvfC/+8A++umWobPrf//V34lvP/vhQnwf2S6xwdNptoQKDdIhzWD7/ua/GHz21t8c8n//cX8TLLznvhaMjVjga3W70Ll4UKjBoCwvR28fln4uLq/F7v/ul+MqXX9zzv7O0uBZ/+LmvWnDLkRErDJ67fuBozc7u6bbmxcXV+OxnnjnQYx0LbjlKYoWB683NCRU4Yr3LlyPa7W1//+WXLsenfu2Pb9vxs19f+fKL8edf2vuMDByUWGGgut1eXFmpxfLY8byHAuVRqWxceFjb+q7aF557Y9sdP/v19FPPWr/CwIkVBura5eXodHqx0K7FfHM67+FA8VUqkd17b8Tk5Ja//edfejE++z/2J1Qi3lq/AoMkVhiYuWutaK93bv5zq1ON2bGT0Yssx1FBgTUaG6HSaGz5208/9Wz84R/0PyxeeelKPP3Us31/XdgkVhiI1tJ6tJbX7/r1tXbEtebJaFfrOYwKCmyXUPn8574az3zhhYF9+me+8EK88NwbA3t9yk2s0Hfr652Ym21t+/vtTi+u1aZirTpyhKOCApucjOy++yIqd7+lb15GuJ+tyQf1+c/9he3MDIRYoa+63V5cv7J9qGzq9SJmq5PRaowfwaigwKamNhbTbmGrO34G6dLFBcfxMxBihb6am21Fp7P3g9/moxkLI1MDHBEUV3bqVGQzM1v+3lGHyiaPgxgEsULfLC2uxWpr+3MdtrPcq8f10RMW3sJeVSqRnTmz846fPm1NPgiPg+g3sUJfrK93YuH6yoH//dVuJa4JFtjd5tbkZnPL397LZYSD5nEQ/SZWOLS9rlPZTbubxeWRmWhnWx9kBaXXaET29rfvuONnr5cRDtozX3jBYXH0jVjh0Baur+xrncpOer2Ia43j0apt/adGKK3x8Y0ZlW12/Oz3MsKj8EfuDqJPxAqHstJqb3meymH0ehHzlfFYrE/09XVhaE1ORnbPPduGykEvIxy0F55/w91B9IVY4cC63d6O56kc1lI2GvMNO4Uot2xmZsetyYe9jHDQnn7qWYttOTSxwoHNzbai1+0N9HO0oh5XR2YsvKV8Ni8jnNo62Pt5GeEgLS2uWWzLoYkVDmSl1T7QNuWDaPeyuDpywsJbyuOILyMctGe+8EJcvDCf9zAYYmKFfRv045+tdHpZXGscj9XK1rsgoDByuoxw0NzMzGGIFfZtcX514I9/ttLrRVyvHbNTiOLK+TLCQXrh+TecbMuBiRX2ZW21Hcs5Tz3PV8Zjvr719DgMrUQuIxykp596Nu8hMKTECvsyfz2NVf2tbCRmG9MW3lIMCV1GOEivvHTFVmYORKywZ0uLa9Fe7+Q9jJvWohrXGtPRyap5DwUOLMXLCAfJziAOQqywJ91uLxbn05hVuVU7KnG1Pm2nEMMn8csIB+XSxQWzK+ybWGFPFq6v5LKodi96EXG1fjxaldG8hwJ7MwSXEQ6S2RX2S6ywq/X1Tt+P1B+E+dpELFTH8x4G7GyILiMcFLMr7JdYYVcL11fyHsKeLVebMV+ftPCWNA3hZYSDYnaF/RAr7GhttR1rq+ksqt2LVjYS1xrHBQtpGdLLCAfF7Ar7IVbY0dy14ZlVuVU7qnG54Yh+0jDslxEOyp994Xt5D4EhIVbYVmtpPTqdbt7DOLBeZHHNwlvyVJDLCAfllZeuONWWPRErbCvFrcr71YuNhbfLVUf0c8QKdhnhoJhdYS/MkbOlYZ9VudNCdTzaWS2OtRfyHgpl0GhE9ra37XgZ4bDe8dNv33r2x3HxwnycPnMs76GQMDMrbKkIsyp3alVG4mrdEf0MWIEvIxyUP/lX38l7CCROrHCXos2q3KqdVeNqw4m3DEgJLiMchG89+0osLhbvD0j0j1jhLkWcVblVJypxrT4Va5V63kOhSEpyGeEgLC2uxbe+UZ5t2+yfWOE2RZ5VuVUvspitTdkpRF+U7TLCQbDQlp2IFW5T9FmVO83XJmK+tvVuDdhVSS8jHIRXXroSL790Oe9hkCixwk1rq+1SzKrcqVUZieu1Yxbesj8lv4xwEP7s31p4zNasMuSmss2q3Gq10ohr9ak43l6Iam+4rhcgB5s7frZYSBuxsePHQtr9+9azr0TEL+c9DBJkZoWIiOi0u0N3B1C/tbNaXK0ft1OIne1yGeFnP/OMUDmgpcU19wWxJbFCRJR7VuVWvcjiqiP62c4eLiN84XnHxx9GmS5zZO/8EZLodnuxstLOexhJma9NRKdTiYnOct5DIRHZzMy2d/xs7vixPuXwvvXsj2NxcTUmJkbyHgoJMbNCrLba0ev28h5GcpaqYzFfm7Twtux2uYzwW8/+WKj0mTNXuJNYwZvsDlqVkbhWnxIsZbWHywh/73e/5HuozzwK4k4eA5Xc+non2uvlXli7m3ZWi8uNE3FifS5qPY/LSsNlhLnxKIg7mVkpueUFfyLci15kca0+FauVrX9wUTA7XEa4uLjqMsIj4FEQtxIrJWdh7d71IovrtWOxXN36EDAKYpfLCG1NPhoeBXErsVJiraV1C2sPYKE67oj+onIZYTLECrcSKyW2srKe9xCGVqsyErMW3haKywjTI1jYJFZKqtvtxWrLI6DDWMvqca0+5cTbYbeHywj/h9/4t3b85OCvrFvhBu+yJSVU+qOd1W7cKTQfja6ZqqGzuTV5mx0/f/aF78UfPfXNIx4Um1547vW8h0AixEpJeQTUP73IYrY2Fcfai9HsruQ9HPbKZYTJu3RxIS5emI/TZ47lPRRy5jFQCXkENBjztYlYqI7nPQz2wmWEQ8O6FSLESikJlcFZrjbjeu2YhbcpcxnhUHnhOf8t8BiolDwCGqzVSuPGOpaFqPacDpyS7NSpbRfSuowwTd+zboUws1JKZlYGr53V4mr9uJ1Cqdi8jHCbUHEZYbqWFtfi5Zcu5z0MciZWSmZFqByZzSP6W5XRvIdSbi4jHHoeBeGPfSWztipWjlIvspivTUSnU4mJznLewymfRiOy06cjalu/1bmMcDi8/COH8ZWdWCkZj4DysVQdi25Wjcn2YmThioMjscPW5MXF1Xj6X37Tjp8h4bwVxEqJdNrd6HS6eQ+jtFqVkVivV+PE+pxgGbTJyW3v+Nnc8ePo/OFx6eJCLC6uxsTESN5DISfWrJTI2qqdKXnbWHg7beHtIE1Pu4ywgF7xKKjUxEqJ2LKchk5WiWv1qVitbH3EOweXnToV2fT0lr8nVIabLczlJlZKxMxKOnqRxfXaMTuF+sVlhIUnMsvNXHRJdNrd6HWtk0jNfG0i1rv1ONZeyHsow6tW29jx4zLCQnv5R85aKTOxUhJmVdLVqoxEp16J4+vzFt7ul8sIS+PSRUFfZh4DlYTzVdK2ltXjWn3Kwtv9cBlh6TgcrrzESkmsr9uynLp2VhMse+UywlK6eGE+7yGQE++KJdDt9qK97jHQMOhFFlfrx+NYezGa3ZW8h5MklxGWl1gpLzMrJSBUhs98bSIWquN5DyMtLiMsPY+BysvMSglYXDuclqvN6GTVmGovWHi7eRnhNjt+/vxLL8Yf/sFXj3hQHIXxiUace+hU3HPmWPy9x87mPRxyIlZKYN3MytBarTTiWn2q3Ef0u4ywFN7z6Nm458yxOH1mMs793KmYmBiJ94gTbhArJdBpl/SHXEG0s1pcbpyIE+tzUeuVbFeXywgL5T2Pno2JyZH42YdOxukzx+L0mWPxsz930p0/7EqslIA1K8OvF1lcq0/FZHupPAtvXUY4lAQJgyBWCs4joOLoRRbztYnodbIY67TyHs5gTU/veMfPH37uq0IlR4KEoyZWCs4joOJZqI5HO6sV9oh+W5PTIEhIiVgpOI+AiqlVGYn1erVYC28rlY2D3prNLX/bjp/+EyQMC7FScB4DFVc7q8XV+nQcb88P/8JblxEOzM8+dPLmzpqJyZE499ApQcLQESsF56blYutklbhWn4rj7flodNfzHs7BuIzw0LYKknvOTMbpM8fyHtqufvrGWiy3uvHDl1px5Vo7nnjfZLzz3GjewyIxYqXgHAhXfL3IYrY2NZxH9I+Pb6xR2WZr8u/9z19yx88NRQmS5VY3fvrGWly51o6r1+6eETx5oiZWuItYgYKYr03Eerc+PAtvbU2+S1mCZCfLLZeucjexUmBrq0O+joF9a1VGolOvxPH1+aQX3pZ5x48g2f1zwJ3EChTMWla/sY5lIaq9xB4DViqRzczseBnh5z/3F0MfKoLk4MyssBWxUmDr677py2pjp9DxtI7oL9hlhPecnrxtq+/fe+y+GJ/cuHQvdXkHyU7+zswKWxArBWYnULn1Iour9eNpLLwd0ssIhzlIrlxrx5Vr7fi719diudWJ//LySiy3umKAoSRWCqwrVoiNhbftTjUmO0v5DCDxywgFSXp++sZavP3s1jNwlJNYKTCn17JpudqMXlaJyfbi0S68TWTHjyAZLtatcCexAiVx5Ef0H/FlhIIEikusQIm0s1pcbpwY+MLbQW1NHp9o3NhZcyxOn5kUJAX1w5daDobjNmKlwJxey1Z6kcW1+lRMtRdipNvnH5R9uIzwziA593Onbm4DTt3mzpqrV9tx5dq6IIE+EStQQr3I4nrtWEx2lmKs0+rPi+7jMsIiBcnNbcAvD9lVBzBExAqU2EJ1PNpZ7fBH9O9yGeHFC/Nx+syx+F+e/qQgAfZNrEDJHXrh7Q6XEW46feZYcqe3CpJ0/ZeXV+LjeQ+CpIgVINpZ7cY6lsX9LbzdYWtyCgQJFINYKah1Z6ywT5vBcrw9H43u+q4fv9OOn6MkSKD4xEpBOWqfg+hFFrO1qZ2P6N/lMsJBubmz5vXVm9uABQmUg1gB7jJfm4j1bv3uhbe7XEZ4WFsFyU/fWIuWE02h1MQKsKVWZSS6tSym2gsbC293uYxwrwQJsF9iBdjWaqWxsY4lW4navad33PFzK0EC9JNYAXb0ysJIvO3kVDy4S6j86TNX46++syhIgL7b2x+TgFJa62TxzdfrUalmu36smRNgUMQKsK3/eKEeq4O77xBgT8QKsKULi5X40TVvEUD+vBMVVFbZfdoetrPWyeKbbwxmezLAfomVgqrXq3kPgSH2/P9Xi4XVvEcBsEGsALe52qrEf74sdoF0iBXgNt98o573EABuI1aAm567VIury9Y7ka93nhvNewgkRqwUmEW27MfiWhbPX3JOJJAesVJg9br/vOzds6/b/QOkyU8zIP72Si0uLJqJA9IkVqDkFteyeM7jHxLy8EPNvIdAYsRKgTVG/ABid9++UI+1Tt6jANieWIESe22+Gq/NeRsA0uZdqsDsBmIna50snv07Z6qQHluXuZNYKTC7gdjJt9+sefwDDAU/zQrMzArbubBYiZdmHalPeu4/aws9dxMrBeYyQ7ay1sni2dc9/iFNY00/lribr4qCM7vCnZ67VIvFNV8XpOntZlbYglgpOOtWuNXVViX+9ooZN9JlZoWt+KoouGrVf2Le4vEPqbv/vpG8h0CC/CQruGrNf2I2PHepFtdaHv+QNjMrbMVXRcHVLLIl3KjM8HDGClsRKwVXrfmTNBHfcPgbQ2DmhKBma2Kl4Gxf5m+v1OLikm910ndSrLAN72Al4FFQeblRmWHiERDbESslYPtyeX37TTcqMzxOnvC4kq35KVYCtYaZlTJ6bb4ar837Fmd43H+fA+HYmneyEjCzUj5uVGYYOb2W7fgpVgKNEWsWysaNygybh61XYQdipSQssi0PNyozjMyqsBOxUhKNET+8ysCNygyrhx9q5j0EEiZWSsJ5K+XgRmWGlZkVdiJWSsLMSvG5UZlhNXOi5kA4diRWSqJaq7iBueDs/mFYOQyO3fjpVSJmV4rruUu1uLbi8Q/D6Z3nrFdhZ2KlRGxhLiY3KjPsHn7IzAo7EyslYmalmNyozDCzXoW9ECslYt1K8bhRmWFnvQp74V2uZEaa/gRTFG5UpggefWQ87yEwBMRKyVi3UhxuVKYIzKywF2KlZEabtcgqdo0MOzcqUwQPnxuNsaavY3bnq6SELLQdbm5Upigee7dHQOyNWCmh0VE/6IaZG5UpikcfGct7CAwJsVJCFtkOLzcqUxT3n23YssyeiZUSqlQywTKE3KhMkVhYy36IlZLyKGj4uFGZInnifZN5D4EhIlZKyszKcHGjMkUyc6IWbz/byHsYDBGxUlIeBQ0Xu38okl/54FTeQ2DIiJUSa475k80wcKMyRWMXEPslVkrMAXHpc6MyRWMXEAchVkpudNSbRsrcqEzReATEQYiVkhub9CgoVW5UpmiazYpHQById8KSq9erUavbZZIaNypTRI+9e8xdQByIrxpifMLsSmrcqEwROVuFgxIrxIiFtklxozJFNHOi5tRaDsw7IlGpZBbaJsKNyhTVJz46nfcQGGJihYiImDg2kvcQCDcqU0wW1nJYYoWIiKjWKtEYsdA2T25Upqh+8fEJC2s5FF893GR2JT9uVKbIPvIhZ6twOGKFmxojtahWfUnkwY3KFNUTj084sZZD85OJ25hdOXpuVKbIbFemH8QKt2mO182uHDG7fyiqh8+N2q5MX/ipxF3MrhwdNypTZB//mO3K9IdY4S5mV46GG5UpMrMq9JOfSGzJ7MrguVGZIjOrQj+JFbZkdmWw3KhMkZlVod+8W7ItsyuD4UZlis6sCv0mVtiW2ZXBcKMyRWZWhUHwk4gdTR73ptNPblSm6H79kzN5D4EC8q7JjkabNXcG9YkblSm6Jx6fiLefbeQ9DApIrLAra1f6w43KFJ21KgyKWGFXjZFaNMfMCByGG5Upuo9/9Lg7gBgYscKeTBwbiazipNWDcKMyRTdzouZmZQZKrLAn1Volxic8iz4INypTdJ/46HSMNf04YXB8dbFnE8dGbGXeJzcqU3QPnxuNJ943kfcwKDg/ediXqRO2Mu+H3T8Una3KHAWxwr5YbLt3blSm6D7+0eO2KnMkxAr7Nnl81GLbXbhRmaKzqJajJFbYt0oli6npZt7DSJoblSm6Jz99yqJajoyvNA5ktFmLkaaZg624UZmi+8gHj7n/hyPlHZUDm5puehx0h7WOG5UptpkTNSfVcuTECgfmcdDdnv07NypTbB7/kAdfcRyKx0FvcaMyRefxD3nxzsqhTU03S39YnBuVKbr7zzY8/iE35f4JQ19UKlnpD4t77pIblSk2j3/Ik688+qIxUouJYyN5DyMXFxYdqU+x/fqvzTj8jVyJFfpm4thINEbK9UPbjcoU3aPvHouPfOhY3sOg5MQKfXV8ZqxU25n/85WqG5UprJkTtXjy06fyHgaIFfqrUsnixKmxvIdxJK62Ko7Up9B+57fusU6FJPgqpO/q9WpMHi/+glu7fyiyJwxGC6QAABDoSURBVD91yjoVkiFWGIjxiUahb2d2ozJF9sTjE/HE+ybyHgbcJFYYmKkTzajVi7fgdnEti7+94vEPxXT/2YZ1KiRHrDBQJ04Vb8HtNxypT0E1m5X43d85k/cw4C5ihYHaXHBblGBxozJFtRkqFtSSIl+VDFy9Xi3EhYduVKbInvy0BbWkS6xwJEabtaEPFjcqU1RPfupUPPbuchw5wHASKxyZ5nh9aI/kd6MyRWXnD8PAuy9HauLYyNBtaXajMkX1xOMTdv4wFMQKR27qRHOogsWNyhTRo+8eEyoMDbFCLoYlWNyoTBE5S4VhI1bIzeTx0aQPjXOjMkV0/9mGLcoMHV+t5GbzDJZUg8WNyhSNUGFY+YolV6kGixuVKRqhwjDzVUvuUgwWu38oEqHCsPOVSxI2gyWFRbduVKZIhApF4KuXZFQqWe67hNyoTJEIFYrCuzLJmTqxcSx/a3n9yD+3G5Upis1zVIQKRSBWSNLUiWZUa5VYnF89ss/pRmWKwsm0FI13ZpI1cWzkyC4/dKMyRSFUKCLvziStOV6PrJLF3Gwret3ewD6PG5Upgic/dcqlhBSSWCF5o81aVGtjce3y8kCCxY3KDLtmsxJPfvpUPPbusbyHAgPhHZqhUK9X49Tpib6fxeJGZYZds1mJ3/2dM0KFQjOzwtCoVLI4ec94zF1r9W2nkBuVGWa2JlMWYoWhM3WiGbVGNRaurxzqddyozDCzkJYyESsMpfGJRjRGqgdex+JGZYaZhbSUjVhhaG2uY7l+dTnWVvf3LMeNygyjmRO1+J3fuifefraR91DgSIkVhtrGnULjsTi/uucD5NyozDByIi1l5h2bQpg4NhKNkWrMXVuJTqe748fa/cOw+fVfm4mPfOhY3sOA3IgVCqMxUouZe8ZjbrYVq632lh/jRmWGyf1nG/Hkp0957EPpiRUKpVLJYnpmLFZa7btOvXWjMsPkIx88Fh//2LTHPhBihYIabdaiMTJx2yyLG5UZBjMnavHkp0/FO8+N5j0USIZYobBunWX51o/W3KhM8symwNbECoU32qzF2bdl0bjYMbNCksymwM7ECqXwzjPVeMfJanzzpU585yeKhXR8/KPH4yMfmjKbAjsQK5TGaD3iI++qxs/dk8VfvNiJS/P9v8EZ9urhc6Px65+csdMH9kCsUDoPzFTit36xEt95tRPPvtSJ1a13OcNAzJyoxSc+Ou24fNgHsUJpPf5gNR65z6Mhjo5HPnAwYoVS23w09PiDlfjKDzrxo0s7n34LB/HE4xPx8Y9Nx8kT3nLhIHznQERMNbP4p++txWtXu/HsS5346TXrWTg861KgP8QK3OKBmUr8dzMV0cKhPHxuND7+sWlbkaFPxApsQbRwECIFBkOswA5EC3shUmCwxArswWa0XJrvxXd+0onvv24hLhsLZz/yoSlrUmDAxArswz3HsvhHj9TiAw/14oXXu/GdV53TUjbNZiV+8Uak2N0DR8N3GhzAVDOLDzxUjQ88VI3vv96N7/zEibhFd//ZRvzKB6fi0UfGnJMCR0yswCE9cl8lHrnvrUdEP7zYNdtSEM1mJR5791g88b5J61EgR2IF+mTzEdE/eiTi+69344eXug6ZG1JmUSAtYgUGYHO2Za7Vix9e7Mb33+h6TJS4mRO1m4FiLQqkxXckDNBUM4vHH6zG4w9WhUuC7j/biHeeG40n3jdpRw8kTKzAEbk1XFbWI350aeNR0WtXrXE5Sg+fG43H3j1uBgWGiO9UyMFo/a1HRRERr13txmvXevGjS2Zd+m3mRC3eeW40Hn1kPN55btQaFBhCYgUS8MBMJR6YifjAQxuzLq9d68ZPr/bi4nzXqbn7tBkn7zzXjIcfGjV7AgXguxgSM1qPePieSjx8T0RENSI2Zl4uzffi0kJv469mX256+NxovP1sIx5+qBlvP9sQJ1BAvqthCGzOvNxqM2DmWhEX57sx14qYaxU3YmZO1OLkjVmT++8biZMnahbFQkmIFRhStwdM9eavv3Z142yX1248Ptr850vzveQX8t5/thFjzUq8/cZf779vJMaaFQeyQcmJFSiYB2YqN/564xceqt71MZsBExGx0o5dHysdH8t2/by7zXLcGRwPP9SMiLgZJwDbyVqt1tcj4oN5DwQAYAvfsIcPAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSVst7AKSrNzsfvdn5vIcBFFTl3lMRoyN5D4MhIFa4S/e7P4jOV78dvetCBRis7MypqP7yz0flXT+b91BImMdA3Kb9774S7X//FaECHInehcvR/jf/d3S++u28h0LCxAo3dX/8enSf+0HewwBKqPO1b3vszLbECjf1fvx63kMASqz7XX9YYmtihbesrOY9AgC4i1jhpuzMqbyHAJRY5b+yyJatiRVuqrz3XYIFyEXlMe8/bE+scJv6b/+TqDz2rryHAZRI9YlHo/ZPfyXvYZCwrNVqfT0iPpj3QEjMymp0f/x69N68nPdIgILKfuY+B8OxF99wKBxbGx3ZOKTJQU0A5MxjIAAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSVst7ADBIvTffjFhZyXsY/Tc9Hdn0dN6jADgSZlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGm1vAcAADe12xHr63mPYjBGRiIq5ggOQqwAkIzewkLE7GzewxiI7MyZiGYz72EMJYkHACRNrAAASRMrAEDSxAoAkDSxAgAkTawAAEkTKwBA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACRNrAAASRMrAEDSxAoAkDSxAgAkTawAAEkTKwBA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACRNrAAASRMrAEDSxAoAkDSxAgAkTawAAEkTKwBA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACRNrAAASRMrAEDSxAoAkDSxAgAkTawAAEkTKwBA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACRNrAAASRMrFNvict4jGIzZ+bxHAHBkxAqF1lsoZqz0xApQIrW8B5CEVit6Kyt5j6LvslotYnIy72EAwKGIlYiNUJmdzXsYfdcbHY1MrAAw5DwGAgCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBIWi3vAQDs29pa9K5cyXsUA5GdPBnRaOQ9DEiKWAGGT6cTsbKS9ygGo9PJewSQHI+BAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFGDq9xeW8hzAwRf7/BgclVoCh01tYynsIA1Pk/29wUGIFAEiaWAEAkiZWAICkiZWI6P349byHMBC9C1fyHgIAHJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEgHa3VvEdAgsQKAMnoXbic9xBIkFgBAJImVgCApIkVACBpYgUASFot7wGkoDe7FO1//7W8h9F32YP3ReW9j+Q9DAA4FDMrAEDSxAoAkDSxAgAkTawAAEmzwBaAdLQ70btwNe9RDER23315D2FoiRUAktFbWInO176d9zAGovHEf5v3EIaWx0AAQNLECgCQNLECACRNrAAASRMrAEDSxAoAkDRblym0znd/FL1XX897GH1X/Qc/n/cQAI6MmRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGm1vAcAsH9Z9C5czXsQg3HmdN4jgOSIFWAIZdH+f76V9yAGovbf/5O8hwDJ8RgIAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBImlgBAJImVgCApIkVACBpYgUASJpYAQCSJlYAgKSJFQAgaWIFAEiaWAEAkiZWAICkiRUAIGliBQBI2dfFCgCQNLECACRNrAAASRMrAEDKfiJWAICUiRUAIF0rKyvfEysAQKrmpqenr4sVACBV34uwwBYASNfXI8QKAJCoTqfzxQixAgCkaW5iYsJjIAAgWV/c/BuxAgAkp9vt3oyVWp4DSUX2M/dFNX4+72H0XTZ9LO8hAMBBzI2Pj4uVW1V+5r6In7kv72EAABueuvUfxAqFVrn3VHTzHsQAmDUDCu6Pb/0HsUKhVf/hB6Oa9yDou2z6WFT/QfEe3UYIUYiIP2k2mz+59RfECjB0suljUf3lYsYKEL9/5y/YDQQApOKuWZUIMysAJKTy3ndFZsNDWc3FFrMqEWIFgIRk08es2ymvp7aaVYnwGAgAyFmv13uh2Wz+/na/L1YAgFx1u93f3On3xQoAkKd/sXlh4XbECgCQl2/s9Phnk1gBAPLw2srKyif28oFiBQA4anOdTucT09PT1/fywWIFADhqn9htncqtxAoAcJT+WbPZ/Pp+/gWxAgAclX/WbDb/eL//klgBAI7CgUIlwnH7AMBgzXU6nQ/tZ43KncysAAAD0ev1XjhsqESIFQBgAHq93v+1urp66FCJ8BgIAOizXq/3P42NjT3Vr9cTKwBAX/R6vRe63e5v9mM25VZiBQDoh38xNjb2+4N4YbECABzGNyLiN5vN5k8G9QnECgBwEK/FRqR8fdCfyG4gAGA/XouNA97ecRShEmFmBQDYm290u92nxsfHv3jUn1isAADbmev1en+cZdlTg1yTshuxAgDcai4ivtjtdr+YxyzKVsQKAJRcr9d7ISK+nmXZF49qHcp+iBUAKJfXer3e97Is+15EfH1lZeV709PT1/Me1E5qNwac9zgAgD7p9XrXb8TIzb/vdDrX+32y7FH5/wHZkJ3LU65+iQAAAABJRU5ErkJggg==","e":1},{"id":"image_7","w":289,"h":213,"u":"","p":"data:image/png;base64,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","e":1}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[736,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-48.182,10.172],[-92.931,6.987],[-23.986,28.925]],"o":[[0,0],[90,-19],[133,-10],[34,-41]],"v":[[99,-13],[180,-93],[413,7],[593,-140]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.8,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":0,"k":15,"ix":1}},{"n":"o","nm":"offset","v":{"a":0,"k":0,"ix":7}}],"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":102,"s":[0]},{"t":115,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":355,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"Слой 11","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":115,"s":[-50]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":128,"s":[20]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.256],"y":[0]},"t":141,"s":[-16]},{"t":154,"s":[3]}],"ix":10},"p":{"a":0,"k":[1260.125,1089.046,0],"ix":2},"a":{"a":0,"k":[214.593,579.774,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":115,"s":[0.238,0.238,100]},{"t":128,"s":[85.238,85.238,100]}],"ix":6}},"ao":0,"ip":115,"op":470,"st":115,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"hand","parent":2,"refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":115,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":128.448,"s":[21]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":141.896,"s":[-7]},{"t":154,"s":[8]}],"ix":10},"p":{"a":0,"k":[240.721,173.843,0],"ix":2},"a":{"a":0,"k":[616.925,464.077,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":115,"s":[0,0,100]},{"i":{"x":[0.628,0.628,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":128.448,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.154,0.154,0.333],"y":[0,0,0]},"t":141.896,"s":[110,110,100]},{"t":154,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":115,"op":470,"st":115,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"Слой 9","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":74.2,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":94,"s":[835,527,0],"to":[0,0,0],"ti":[-48.182,10.172,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":97.94,"s":[916,447,0],"to":[90,-19,0],"ti":[-92.931,6.987,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":106.737,"s":[1149,547,0],"to":[133,-10,0],"ti":[-23.986,28.925,0]},{"t":115,"s":[1329,400,0]}],"ix":2},"a":{"a":0,"k":[69.82,94.658,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":94,"s":[0,0,100]},{"t":97.849609375,"s":[100,100,100]}],"ix":6}},"ao":1,"ip":0,"op":355,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":2,"nm":"Слой 7","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[1],"y":[0]},"t":81,"s":[-11]},{"t":91,"s":[0]}],"ix":10},"p":{"a":0,"k":[277.746,275.202,0],"ix":2},"a":{"a":0,"k":[4.162,141.356,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.973,0.973,0.333],"y":[0,0,0]},"t":81,"s":[0,0,100]},{"t":91,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":0,"op":355,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":2,"nm":"Слой 6","refId":"image_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.816],"y":[0]},"t":67,"s":[-45]},{"i":{"x":[0.185],"y":[1]},"o":{"x":[0.327],"y":[0]},"t":81,"s":[17.421]},{"t":87,"s":[0]}],"ix":10},"p":{"a":0,"k":[260.342,502.825,0],"ix":2},"a":{"a":0,"k":[213.522,272.061,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.377,0.377,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":67,"s":[0,0,100]},{"i":{"x":[0.367,0.367,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":81,"s":[105.263,105.263,100]},{"t":87,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":56,"op":411,"st":56,"bm":0},{"ddd":0,"ind":7,"ty":2,"nm":"card 3","refId":"image_5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":65,"s":[0]},{"t":68,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[332.78,728.457,0],"ix":2},"a":{"a":0,"k":[215.058,293.51,0],"ix":1},"s":{"a":0,"k":[89.097,89.097,100],"ix":6}},"ao":0,"ip":56,"op":411,"st":56,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"card main","refId":"image_6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[17]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":12,"s":[17]},{"t":25,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[735.875,1469.939,0],"to":[0,-50.37,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[735.875,329.939,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[735.875,683.939,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[735.875,420.939,0],"to":[0,0,0],"ti":[0,0,0]},{"t":51,"s":[735.875,564.939,0]}],"ix":2},"a":{"a":0,"k":[277.375,359.439,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[35,35,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":12,"s":[87,87,100]},{"t":51,"s":[87,87,100]}],"ix":6}},"ao":0,"ip":0,"op":355,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":2,"nm":"card 2","refId":"image_5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[-23]},{"t":70,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":54,"s":[676.78,616.457,0],"to":[-57.333,18.667,0],"ti":[57.333,-18.667,0]},{"t":70,"s":[332.78,728.457,0]}],"ix":2},"a":{"a":0,"k":[215.058,293.51,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":54,"s":[40.097,40.097,100]},{"t":70,"s":[89.097,89.097,100]}],"ix":6}},"ao":0,"ip":52,"op":407,"st":52,"bm":0},{"ddd":0,"ind":10,"ty":2,"nm":"Слой 8","refId":"image_7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59,"s":[28]},{"t":76,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.333,"y":0},"t":59,"s":[806.006,736.464,0],"to":[68.667,0,0],"ti":[-68.667,0,0]},{"t":76,"s":[1218.006,736.464,0]}],"ix":2},"a":{"a":0,"k":[144.416,106.146,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":59,"s":[51,51,100]},{"t":76,"s":[100,100,100]}],"ix":6}},"ao":0,"ip":57,"op":412,"st":57,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[735.765,539.765,0],"ix":2},"a":{"a":0,"k":[395.765,-8.235,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.878,0.878,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":0,"s":[-2.632,-2.632,100]},{"i":{"x":[0,0,0.667],"y":[3.775,3.775,1]},"o":{"x":[0.191,0.191,0.333],"y":[0,0,0]},"t":17,"s":[107.868,107.868,100]},{"t":28,"s":[91.368,91.368,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[984,984],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.835,0.9217,0.965,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[396,-8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":355,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/public/workspace_8.pdf b/public/workspace_8.pdf new file mode 100644 index 0000000..3a732dc Binary files /dev/null and b/public/workspace_8.pdf differ diff --git a/src/Providers/AuthProviders/AuthProviders.jsx b/src/Providers/AuthProviders/AuthProviders.jsx index 79ea4fa..c1d6310 100644 --- a/src/Providers/AuthProviders/AuthProviders.jsx +++ b/src/Providers/AuthProviders/AuthProviders.jsx @@ -2,7 +2,7 @@ import { createContext, useEffect, useState } from "react"; -import axiosInstance from "../../Utils/axiosInstance"; + import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; @@ -10,8 +10,9 @@ import { toast } from "react-toastify"; export const AuthContext = createContext(null); -const AuthProviders = ({children}) => { +const AuthProviders = ({children, workspaceId }) => { const [user, setUser] = useState(null); + const [workspaceDetails, setWorkspaceDetails] = useState(null); const [loading, setLoading] = useState(false); const navigate = useNavigate(); @@ -54,6 +55,7 @@ const AuthProviders = ({children}) => { } } + unsubscribe() // console.log("user data show from authproviders -> ", user) },[]) @@ -63,6 +65,7 @@ const AuthProviders = ({children}) => { handleLogout, loading, setLoading, + workspaceDetails, } return ( diff --git a/src/Route/Route.jsx b/src/Route/Route.jsx index 4507a1c..fd9cd86 100644 --- a/src/Route/Route.jsx +++ b/src/Route/Route.jsx @@ -12,113 +12,218 @@ import CreateWorkspace from "../components/Pages/Workspace/CreateWorkspace"; import EditWorkspace from "../components/Pages/Workspace/EditWorkspace"; import DynamicDashboard from "../components/Pages/DynamicDashboard/DynamicDashboard"; import Member from "../components/Pages/DynamicDashboard/Member"; -import Dashboard from "../components/Pages/Dashboard/Dashboard"; +// import Dashboard from "../components/Pages/Dashboard/Dashboard"; import Calendarui from "../components/Pages/Dashboard/Calendarui/Calendarui"; import PrivateRoute from "../PrivateRoute/PrivateRoute"; import Board from "../components/Pages/Board/Board"; import Plans from "../components/Pages/Plans/Plans"; import Tasks from "../components/Pages/Tasks/Tasks"; - +import Features from "../components/Pages/Features/Features"; +import Export from "../components/Pages/Export/Export"; +import Contact from "../components/Pages/Contact/Contact"; +import MarketingDetails from "../components/Pages/Home/DifferentTypeOfTabSection/TabPages/MarketingDetails"; +import OperationDetails from "../components/Pages/Home/DifferentTypeOfTabSection/TabPages/OperationDetails"; +import ItDetials from "../components/Pages/Home/DifferentTypeOfTabSection/TabPages/ItDetials"; +import ProductDetails from "../components/Pages/Home/DifferentTypeOfTabSection/TabPages/ProductDetails"; +import CompanyDetails from "../components/Pages/Home/DifferentTypeOfTabSection/TabPages/CompanyDetails"; +import Inside from "./../components/Pages/Inside/Inside"; +import DynamicProfile from "../components/User/DynamicProfile"; +import TermsCondition from "../components/Pages/TermsCondition/TermsCondition"; +import PrivacyPolicy from "../components/Pages/PrivacyPolicy/PrivacyPolicy"; const router = createBrowserRouter([ - { - path: "/", - element: , - children: [ - { - path: "/", - element: , - }, - { - path: "/login", - element: , - }, - { - path: "/register", - element: , - }, - { - path: "/otp/verify", - element: , - }, - { - path: "/forgotpassword", - element: , - }, - { - path: "/profile", - element: - }, - { - path: "/forget", - element: - }, - { - path: "/password-reset-confirm/:uid/:token", - element: - }, - { - path: "/workspace", - element: , - }, - { - path: "/createworkspace", - element: , - }, - { - path: "/editworkspace/:workspaceId", - element: , - }, - // { - // path: "workspace/:id", - // element: , - // // loader: ({params}) => fetch(`https://projectsyncifyapi.onrender.com/workspace/list/${params.id}`) - // }, - ], - }, - - { - path: "/workspace/:id", - element: , - // loader: ({params}) => fetch(`https://projectsyncifyapi.onrender.com/workspace/list/${params.id}`), - children: [ - { - path: "/workspace/:id", - element: , - }, - { - path: "/workspace/:id/profile", - element: , - }, - { - path: "/workspace/:id/boards", - element: , - }, - { - path: "/workspace/:id/tasks", - element: , - }, - { - path: "/workspace/:id/plans", - element: - }, - { - path: "/workspace/:id/calendar", - element: - } - ] - }, - { - path: "/dashboard", - element: , - children: [ - { - path: "/dashboard/profile", - element: , - }, - - ], - }, - ]); + { + path: "/", + element: , + children: [ + { + path: "/", + element: , + }, + { + path: "/features", + element: , + }, + + { + path: "/contact", + element: , + }, + { + path: "/login", + element: , + }, + { + path: "/register", + element: , + }, + { + path: "/otp/verify", + element: , + }, + { + path: "/forgotpassword", + element: , + }, + { + path: "/profile", + element: ( + + + + ), + }, + { + path: "/terms&condition", + element: ( + + + + ), + }, + { + path: "/privacypolicy", + element: ( + + + + ), + }, + { + path: "/profile/:pId", + element: , + }, + { + path: "/forget", + element: , + }, + { + path: "/password-reset-confirm/:uid/:token", + element: , + }, + { + path: "/marketingDetails", + element: , + }, + { + path: "/operationDetails", + element: , + }, + { + path: "/itDetails", + element: , + }, + { + path: "/productDetails", + element: , + }, + { + path: "/companyDetails", + element: , + }, + { + path: "/workspace", + element: ( + + {" "} + + + ), + }, + { + path: "/createworkspace", + element: ( + + + + ), + }, + { + path: "/editworkspace/:workspaceId", + element: ( + + {" "} + + + ), + }, + + ], + }, + + { + path: "/workspace/:id", + element: , + children: [ + { + path: "/workspace/:id", + element: ( + + {" "} + {" "} + + ), + }, + { + path: "/workspace/:id/boards", + element: ( + + {" "} + {" "} + + ), + }, + { + path: "/workspace/:id/tasks", + element: ( + + {" "} + {" "} + + ), + }, + { + path: "/workspace/:id/plans", + element: ( + + {" "} + {" "} + + ), + }, + { + path: "/workspace/:id/export", + element: ( + + {" "} + {" "} + + ), + }, + { + path: "/workspace/:id/calendar", + element: , + }, + { + path: "/workspace/:id/inside", + element: , + }, + ], + }, + // { + // path: "/dashboard", + // element: ( + // + // + // + // ), + // children: [ + // { + // path: "/dashboard/profile", + // element: , + // }, + // ], + // }, +]); - export default router; \ No newline at end of file +export default router; diff --git a/src/Utils/Util.js b/src/Utils/Util.js new file mode 100644 index 0000000..dfdc814 --- /dev/null +++ b/src/Utils/Util.js @@ -0,0 +1,16 @@ +import dayjs from "dayjs"; + +export function getMonth(month = dayjs().month()) { + const year = dayjs().year(); + const firstDayOfMonth = dayjs(new Date(year, month, -1)).day(); + let currentMonthCount = 0 - firstDayOfMonth; + const dayMatrix = new Array(5).fill([]).map(() => { + return new Array(7).fill(null).map(() => { + currentMonthCount++; + return dayjs(new Date(year, month, currentMonthCount)); + }); + }); + return dayMatrix; +} + +export default getMonth(); diff --git a/src/assets/ProjectManagement.png b/src/assets/ProjectManagement.png new file mode 100644 index 0000000..0eff872 Binary files /dev/null and b/src/assets/ProjectManagement.png differ diff --git a/src/assets/bannerDark.png b/src/assets/bannerDark.png new file mode 100644 index 0000000..79f110b Binary files /dev/null and b/src/assets/bannerDark.png differ diff --git a/src/assets/bannerLight.png b/src/assets/bannerLight.png new file mode 100644 index 0000000..6519525 Binary files /dev/null and b/src/assets/bannerLight.png differ diff --git a/src/assets/nophoto.png b/src/assets/nophoto.png new file mode 100644 index 0000000..3a2bbe0 Binary files /dev/null and b/src/assets/nophoto.png differ diff --git a/src/assets/user1.png b/src/assets/user1.png new file mode 100644 index 0000000..19f8592 Binary files /dev/null and b/src/assets/user1.png differ diff --git a/src/assets/user2.png b/src/assets/user2.png new file mode 100644 index 0000000..bc27437 Binary files /dev/null and b/src/assets/user2.png differ diff --git a/src/components/Home/Home.jsx b/src/components/Home/Home.jsx index 506d202..fc553be 100644 --- a/src/components/Home/Home.jsx +++ b/src/components/Home/Home.jsx @@ -1,24 +1,23 @@ import Sponsors from "./Sponsors"; import TopCompanySlider from "../Pages/Home/TopCampanySliderSection/TopCompanySlider"; import DifferentTypeOfTabSection from "../Pages/Home/DifferentTypeOfTabSection/DifferentTypeOfTabSection"; - import HomeEmailSection from "../Pages/Home/HomeEmailSection/HomeEmailSection"; - import CustomerSection from "../Pages/Home/CustomerSection/CustomerSection"; -// import Login from "../Pages/Login/login"; import Banner from "./Banner"; +import FeaturesHome from "../Pages/Home/Features/FeaturesHome"; +import Developer from "../Pages/Home/Developer"; -import Features from "../Pages/Home/Features/Features"; const Home = () => { return (
- - + + +
); }; diff --git a/src/components/Home/Sponsors.jsx b/src/components/Home/Sponsors.jsx index 78b4a1d..e3e8bc6 100644 --- a/src/components/Home/Sponsors.jsx +++ b/src/components/Home/Sponsors.jsx @@ -1,39 +1,45 @@ +import Marquee from "react-fast-marquee"; import Title from "../../pages/shared/Title"; - const Sponsors = () => { - const data = [ - { - url: "https://i.ibb.co/MfVRkVv/5.png" - }, - - { - url: "https://i.ibb.co/b5hkbyc/6.png" - }, - { - url: "https://i.ibb.co/jhJ2MtC/9.png" - }, - ]; + const data = [ + { + url: "https://i.ibb.co/WsDJzHR/11.png", + }, + + { + url: "https://i.ibb.co/b5hkbyc/6.png", + }, + { + url: "https://i.ibb.co/jhJ2MtC/9.png", + }, + { + url: "https://i.ibb.co/WD4gsDc/hp.png", + }, + { + url: "https://i.ibb.co/W6JKz3S/8.png", + }, + ]; - return ( -
- {/*

Our Clients Who Uses Syncify Most

*/} - - <div className="flex items-center justify-center"> - <div className="grid grid-cols-1 md:grid-cols-3 gap-4 pt-10"> - {data.map((item, index) => ( - <div key={index} className="w-72 bg-opacity-50 p-10 rounded dark:shadow-slate-600 shadow-2xl"> - <img - src={item.url} - alt="Sponsor" - className="w-60 h-40 " - /> - </div> - ))} + return ( + <div className="w-full h-fit px-10 py-8 my-3"> + <Title title="Our Clients Who Uses Syncify Most" /> + <div className="flex items-center justify-center pt-10"> + <Marquee gradient={false} speed={100}> + + {data.map((item, index) => ( + <div + key={index} + className="bg-opacity-50 p-10 rounded-md dark:shadow-slate-600 shadow-md mx-4" + > + <img src={item.url} alt="Sponsor" className="w-52 h-40 " /> </div> - </div> - </div> - ); + ))} + + </Marquee> + </div> + </div> + ); }; export default Sponsors; diff --git a/src/components/Home/banner.jsx b/src/components/Home/banner.jsx index 6a8a874..e6b926c 100644 --- a/src/components/Home/banner.jsx +++ b/src/components/Home/banner.jsx @@ -1,48 +1,113 @@ import { Link } from "react-router-dom"; +import bannerDark from "../../assets/bannerDark.png"; +import bannerLight from "../../assets/bannerLight.png"; +import { AuthContext } from "../../Providers/AuthProviders/AuthProviders"; +import { useContext } from "react"; const Banner = () => { - return ( - <div className="relative bg-gradient-to-b from-[#73e9fe] dark:from-[#542e77] to-[#78118f] dark:to-[#44b4e0] text-[#8401A1] dark:text-[#73e9fe]"> - <div className="h-[85vh] flex flex-col justify-center items-center space-y-4 space-x-4 md:space-x-0"> - <div> - <h1 className="text-center text-5xl font-bold "> - A smarter way to work - </h1> - </div> - <div> - <p className="text-sm md:text-lg text-center text-black font-semibold"> - With ProjectSyncify, you can drive clarity and impact at scale by - connecting work and <br /> workflows to company-wide goals. - </p> - </div> + const { user } = useContext(AuthContext); + return ( + <div> + <div className="md:hidden relative bg-gradient-to-b from-[#73e9fe] to-[#1d02b8] text-[#0c01a1]"> + <div className="h-[85vh] flex flex-col justify-center items-center space-y-4 space-x-4 md:space-x-0"> + <div> + <h1 className="text-center text-5xl font-bold "> + A smarter way to work + </h1> + </div> + <div> + <p className="text-sm md:text-lg text-center text-black font-semibold"> + With ProjectSyncify, you can drive clarity and impact at scale by + connecting work and <br /> workflows to company-wide goals. + </p> + </div> - <div className="flex gap-5"> - <Link to="/login"> - <button className="btn bg-[#8401A1] hover:bg-gradient-to-r from-[#30acc2] to-[#8401A1] text-white rounded-sm"> - Get Started - </button> - </Link> - - <button className="px-4 py-2 border border-[#73e9fe] dark:border-[#8401A1] text-[#73e9fe] dark:text-white hover:bg-[#73e9fe] hover:text-[#8401A1] hover:dark:text-[#8401A1] font-bold rounded-sm"> - See how it works - </button> - </div> - </div> - - <div > - <svg - className="absolute bottom-0 " - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 1440 220"> - <path - className="fill-[#fff] dark:fill-[#000]" - fillOpacity={1} - d="M0,0L34.3,21.3C68.6,43,137,85,206,101.3C274.3,117,343,107,411,96C480,85,549,75,617,101.3C685.7,128,754,192,823,192C891.4,192,960,128,1029,112C1097.1,96,1166,128,1234,128C1302.9,128,1371,96,1406,80L1440,64L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z"></path> - </svg> + <div className="flex gap-5"> + <Link to="/login"> + <button className="px-4 py-2 bg-[#0c01a1] hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] text-white rounded-sm"> + Get Started + </button> + </Link> + <Link to="/workspace"> + <button className="px-4 py-2 border border-[#73e9fe] dark:border-[#0c01a1] text-[#1a1737] dark:text-white hover:bg-[#73e9fe] hover:dark:text-[#0c01a1] rounded-sm font-bold dark:font-normal"> + See how it works + </button> + </Link> + </div> + </div> - </div> + <div> + <svg + className="absolute bottom-0 " + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 1440 220" + > + <path + className="fill-[#fff] dark:fill-[#000]" + fillOpacity={1} + d="M0,0L34.3,21.3C68.6,43,137,85,206,101.3C274.3,117,343,107,411,96C480,85,549,75,617,101.3C685.7,128,754,192,823,192C891.4,192,960,128,1029,112C1097.1,96,1166,128,1234,128C1302.9,128,1371,96,1406,80L1440,64L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z" + ></path> + </svg> + </div> + </div> + <div className="hidden md:block mt-12"> + <div + className="pl-28 hidden dark:flex justify-start items-center min-h-screen bg-cover bg-center " + style={{ backgroundImage: `url(${bannerDark})` }} + > + <div className=" p-10 rounded-lg max-w-lg text-left"> + <h1 className="text-4xl font-bold mb-4"> + Syncify Project Management + </h1> + <p className="mb-6 "> + With ProjectSyncify, you can drive clarity and impact at scale by + connecting work and workflows to company-wide goals. + </p> + {!user ? ( + <Link to="/login"> + <button className="px-4 py-2 bg-[#0c01a1] hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] text-white rounded-sm"> + Get Started + </button> + </Link> + ) : ( + <Link to="/workspace"> + <button className="px-4 py-2 bg-[#0c01a1] hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] text-white rounded-sm"> + Get Started + </button> + </Link> + )} + </div> + </div> + <div + className="pl-28 flex dark:hidden justify-start items-center min-h-screen bg-cover bg-center " + style={{ backgroundImage: `url(${bannerLight})` }} + > + <div className=" p-10 rounded-lg max-w-lg text-left"> + <h1 className="text-4xl font-bold mb-4"> + Syncify Project Management + </h1> + <p className="mb-6 font-medium"> + With ProjectSyncify, you can drive clarity and impact at scale by + connecting work and workflows to company-wide goals. + </p> + {!user ? ( + <Link to="/login"> + <button className="px-4 py-2 bg-[#0c01a1] hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] text-white rounded-sm"> + Get Started + </button> + </Link> + ) : ( + <Link to="/workspace"> + <button className="px-4 py-2 bg-[#0c01a1] hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] text-white rounded-sm"> + Get Started + </button> + </Link> + )} + </div> </div> - ); + </div> + </div> + ); }; -export default Banner; \ No newline at end of file +export default Banner; diff --git a/src/components/Pages/Authentication/Login/Login.jsx b/src/components/Pages/Authentication/Login/Login.jsx index 5901063..fa78941 100644 --- a/src/components/Pages/Authentication/Login/Login.jsx +++ b/src/components/Pages/Authentication/Login/Login.jsx @@ -10,14 +10,15 @@ import { AuthContext } from "../../../../Providers/AuthProviders/AuthProviders"; const Login = () => { const axiosData = useAxios(); const navigate = useNavigate(); - const [logindata , setLogindata] = useState({ - email : "", - password : "" - }) - const [error, setError] = useState("") - const {loading,setLoading} = useContext(AuthContext) + const [reload, setReload] = useState(false); + const [logindata, setLogindata] = useState({ + email: "", + password: "", + }); + const [error, setError] = useState(""); + const { loading, setLoading } = useContext(AuthContext); - console.log({loading, setLoading}) + console.log({ loading, setLoading }); const [passwordVisible, setPasswordVisible] = useState(false); @@ -28,162 +29,172 @@ const Login = () => { const handleChange = (e) => { setLogindata({ ...logindata, - [e.target.name] : e.target.value - }) - } + [e.target.name]: e.target.value, + }); + }; const handleSignInWithGoogle = async (response) => { - - try{ - // console.log(response); // Logging the response for debugging + try { + // console.log(response); // Logging the response for debugging console.log(response); - const payload = response.credential - console.log('payload', typeof payload) + const payload = response.credential; + console.log("payload", typeof payload); setLoading(true); - const server_res = await axios.post("https://projectsyncifyapi.onrender.com/api/v1/auth/google/", {"access_token": payload}) + const server_res = await axios.post( + "https://projectsyncifyapi.onrender.com/api/v1/auth/google/", + { access_token: payload } + ); setLoading(false); - console.log('server -> ',server_res) - + console.log("server -> ", server_res); const user = { - "email": server_res.data.email, - "name": server_res.data.full_name, - "userId": server_res.data.user_id - } + email: server_res.data.email, + name: server_res.data.full_name, + userId: server_res.data.user_id, + }; - if(server_res.status === 200){ - localStorage.setItem('user', JSON.stringify(user)) - localStorage.setItem('access', JSON.stringify(server_res.data.access_token)) - localStorage.setItem('refresh', JSON.stringify(server_res.data.refresh_token)) + if (server_res.status === 200) { + localStorage.setItem("user", JSON.stringify(user)); + localStorage.setItem( + "access", + JSON.stringify(server_res.data.access_token) + ); + localStorage.setItem( + "refresh", + JSON.stringify(server_res.data.refresh_token) + ); navigate("/workspace"); - toast.success("login successfull") - } - } - catch(err){ - setLoading(false) - console.log('error from google -> ',err.response.status) - if(err.response.status === 500){ - toast.warning("Server Error!!!") - } + toast.success("login successfull"); + } + } catch (err) { + setLoading(false); + console.log("error from google -> ", err.response.status); + if (err.response.status === 500) { + toast.warning("Server Error!!!"); + } } - - }; - const handleSubmit = async(e) => { - e.preventDefault() - const {email , password} = logindata - if(!email || !password){ - setError("All fields are required") - } - else{ + const handleSubmit = async (e) => { + e.preventDefault(); + const { email, password } = logindata; + if (!email || !password) { + setError("All fields are required"); + } else { try { - setLoading(true) - const res = await axiosData.post("/auth/login/",logindata) - const response = res.data - console.log('response from login -> ',response) - setLoading(false) + setLoading(true); + const res = await axiosData.post("/auth/login/", logindata); + const response = res.data; + console.log("response from login -> ", response); + setLoading(false); + console.log({ response }); const user = { - "email" : response.email, - "names" : response.full_name, - "userId" : response.user_id - } - if(res.status === 200){ - localStorage.setItem("user",JSON.stringify(user)) - localStorage.setItem('access',JSON.stringify(response.access_token)) - localStorage.setItem('refresh',JSON.stringify(response.refresh_token)) - setLoading(false) - navigate("/workspace") - toast.success(response.message) + email: response.email, + names: response.full_name, + userId: response.user_id, + }; + console.log({ user }); + if (res.status === 200) { + localStorage.setItem("user", JSON.stringify(user)); + localStorage.setItem("access", JSON.stringify(response.access_token)); + localStorage.setItem( + "refresh", + JSON.stringify(response.refresh_token) + ); + setLoading(false); + navigate("/workspace"); + toast.success(response.message); + setReload(!reload) } - console.log(response) - } - catch (error) { - setLoading(false) - if(error.response.status === 500){ - toast.warning("Server Error!") + console.log(response); + } catch (error) { + setLoading(false); + if (error.response.status === 500) { + toast.warning("Server Error!"); } - - console.log(error) - console.log(error.response.status) + + console.log(error); + console.log(error.response.status); } } - } + }; useEffect(() => { - //global google - google.accounts.id.initialize({ - client_id: import.meta.env.VITE_GOOGLE_CLIENT_ID, // Using client ID from environment variable - callback: handleSignInWithGoogle // Callback function when sign-in completes - }); + //global google + google.accounts.id.initialize({ + client_id: import.meta.env.VITE_GOOGLE_CLIENT_ID, // Using client ID from environment variable + callback: handleSignInWithGoogle, // Callback function when sign-in completes + }); - // Render the sign-in button - google.accounts.id.renderButton( - document.getElementById("signInDiv"), // Assuming there's an element with id 'signInDiv' - { - theme: "outline", - size: "large", - text: "continue_with", - shape: "circle", - width: 200 // Width should be a number, not a string - } - ); - },[]) + // Render the sign-in button + google.accounts.id.renderButton( + document.getElementById("signInDiv"), // Assuming there's an element with id 'signInDiv' + { + theme: "outline", + size: "large", + text: "continue_with", + shape: "circle", + width: 200, // Width should be a number, not a string + } + ); + }, [reload]); return ( - <div className="py-10 px-10 text-[#8401A1] dark:text-[#73e9fe]"> - {loading && <div className="flex justify-center items-center"><span className="loading loading-ring loading-md"></span>Loging Processing....</div>} + <div className="py-10 px-10 text-[#0c01a1] dark:text-[#73e9fe]"> + {loading && ( + <div className="flex justify-center items-center"> + <span className="loading loading-ring loading-md"></span>Loging + Processing.... + </div> + )} <div className="flex gap-3 justify-center md:justify-normal items-center"> - <Link to={'/'} className="text-2xl font-bold"> + <Link to={"/"} className="text-2xl font-bold"> <TiArrowBackOutline /> </Link> - <Link to={'/'} className="text-lg font-bold"> + <Link to={"/"} className="text-lg font-bold"> Back to home </Link> </div> <div className="min-h-[600px] md:min-h-[600px] flex flex-col md:flex-row justify-between gap-3 md:gap-5"> <div className="w-full md:w-[60%] flex flex-col items-center justify-center md:p-0"> - <h1 className="text-3xl md:text-5xl font-bold text-transparent bg-gradient-to-r from-[#8401A1] to-[#73e9fe] bg-clip-text py-3"> + <h1 className="text-3xl md:text-5xl font-bold text-transparent bg-gradient-to-r from-[#0c01a1] to-[#73e9fe] bg-clip-text py-3"> Login </h1> <p className="mt-6 text-lg">Login with your social account</p> <div className="flex gap-4 mt-3"> - {/* <button > + {/* <button > <FcGoogle className="w-8 h-8" /> </button> */} - <div id='signInDiv'></div> - <button> + <div id="signInDiv"></div> + {/* <button> <FaGithub className="w-8 h-8" /> - </button> + </button> */} </div> <span className="my-5 hidden md:flex"> __________________________________or__________________________________ </span> <hr /> - <form - onSubmit={handleSubmit} - className="w-full md:w-1/2"> - - <div className="flex flex-col mt-5 "> - <input - type="text" - placeholder="Email" - name="email" - className=" outline-none border-2 w-full mt-4 px-8 py-4 bg-[#EEF5F3] rounded-full" - value={logindata.email} - onChange={handleChange} - /> - <br /> - <input - type="password" - placeholder="Password" - name="password" - className="w-full px-8 py-4 bg-[#EEF5F3] rounded-full" - value={logindata.password} - onChange={handleChange} - /> + <form onSubmit={handleSubmit} className="w-full md:w-1/2"> + <div className="flex flex-col mt-5 "> + <input + type="text" + placeholder="Email" + name="email" + className=" outline-none border-2 w-full mt-4 px-8 py-4 bg-[#EEF5F3] rounded-full" + value={logindata.email} + onChange={handleChange} + /> + <br /> + <input + type="password" + placeholder="Password" + name="password" + className="w-full px-8 py-4 bg-[#EEF5F3] rounded-full" + value={logindata.password} + onChange={handleChange} + /> -{/* <div className="relative"> + {/* <div className="relative"> <input type={passwordVisible ? 'text' : 'password'} className=" outline-none border-2 w-full mt-4 px-8 py-4 bg-[#EEF5F3] rounded-full" @@ -242,32 +253,33 @@ const Login = () => { </div> </div> */} - - <button - className="mt-5 w-full text-white py-3 rounded-full bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] hover:from-[#73e9fe] hover:to-[#9d11bd]" - style={{ - // background: "linear-gradient(135deg, #5AA6E1, #D939F5)", - color: "white", - fontSize: "20px", - fontWeight: "bold", - cursor: "pointer", - }} - > - Sign in - </button> - </div> + <button + className="mt-5 w-full text-white py-3 rounded-full bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] hover:from-[#73e9fe] hover:to-[#9d11bd]" + style={{ + // background: "linear-gradient(135deg, #5AA6E1, #D939F5)", + color: "white", + fontSize: "20px", + fontWeight: "bold", + cursor: "pointer", + }} + > + Sign in + </button> + </div> </form> - <p className="text-start"><NavLink to='/forget'>Forget Password</NavLink></p> + <p className="text-start"> + <NavLink to="/forget">Forget Password</NavLink> + </p> </div> <div - className="w-full md:w-[40%] text-white flex flex-col justify-center items-center text-center gap-y-2 md:gap-y-3 px-10 py-24 rounded md:p-0" - style={{ - background: "linear-gradient(135deg, #5AA6E1, #D939F5)", - }} + + className="w-full md:w-[40%] text-white flex flex-col justify-center items-center text-center gap-y-2 md:gap-y-3 px-10 py-24 rounded md:p-0 bg-gradient-to-r from-[#1711bd] to-[#73e9fe] dark:from-[#1133bd] dark:to-[#73e9fe] dark:bg-gradient-to-r" + + > <h1 className="text-3xl md:text-5xl font-bold">New Here ?</h1> <h3 className="text-lg md:text-xl md:px-16"> - Sign up and discover a grea amount of opportunities + Sir-gragn up and discover a grea amount of opportunities </h3> <Link to="/register"> <button className="hover:bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] text-white font-bold px-10 py-2 rounded-full border-2"> @@ -277,6 +289,7 @@ const Login = () => { </div> </div> </div> + ); }; diff --git a/src/components/Pages/Authentication/Register/Register.jsx b/src/components/Pages/Authentication/Register/Register.jsx index 9b3738e..cca427a 100644 --- a/src/components/Pages/Authentication/Register/Register.jsx +++ b/src/components/Pages/Authentication/Register/Register.jsx @@ -5,157 +5,127 @@ import { useEffect, useState } from "react"; import useAxios from "../../../../hooks/useAxios"; import { Link, useNavigate, useSearchParams } from "react-router-dom"; import { toast } from "react-toastify"; -import { FcGoogle } from "react-icons/fc"; -import { FaGithub } from "react-icons/fa"; import axios from "axios"; // import SocialLogin from "../../../../pages/shared/SocialLogin"; +const image_hosting_key = import.meta.env.VITE_IMAGE_HOSTING_KEY; +const image_upload_api = `https://api.imgbb.com/1/upload?key=${image_hosting_key}`; + const Register = () => { const navigate = useNavigate(); - const [searchparams] = useSearchParams() + const [searchparams] = useSearchParams(); const axiosData = useAxios(); + const [imageUrl, setImageUrl] = useState(""); const [formdata, setFormdata] = useState({ email: "", first_name: "", last_name: "", password: "", password2: "", - - }) - + image: "", + }); const handleChange = (e) => { setFormdata({ ...formdata, - [e.target.name]: e.target.value - }) - } + [e.target.name]: e.target.value, + }); + }; + + const { email, first_name, last_name, password, password2, image } = formdata; + + const handleImageUpload = async (e) => { + const imageFile = new FormData(); + imageFile.append("image", e.target.files[0]); + + try { + const imageRes = await axios.post(image_upload_api, imageFile); + const image_url = imageRes.data.data.url; + setImageUrl(image_url); + setFormdata({ + ...formdata, + image: image_url, + }); + } catch (error) { + console.error("Image upload failed:", error); + toast.error("Image upload failed"); + } + }; - const { email, first_name, last_name, password, password2 } = formdata const handleSubmit = async (e) => { - e.preventDefault() - console.log('Fromdata -> ',formdata) - if (!email || !first_name || !last_name || !password || !password2) { - alert("All fields are required") + e.preventDefault(); + + if (!email || !first_name || !last_name || !password || !password2 || !imageUrl) { + alert("All fields are required"); + return; } - else if (password !== password2) { - alert("Password does not match") + + if (password !== password2) { + alert("Passwords do not match"); + return; } - else { - try { - console.log('formdata->',formdata) - const res = await axiosData.post("/auth/register/", formdata) - const response = res.data - console.log(response) - console.log(response) - if (res.status === 201) { - toast.success("please check email and provide otp!!!") - navigate("/otp/verify") - } - } catch (error) { - console.log('error -> ',error.response.data.email[0]) - toast.warning(error.response.data.email[0]) + try { + const res = await axiosData.post("/auth/register/", formdata); + const response = res.data; + if (res.status === 201) { + toast.success("Please check email and provide OTP!!!"); + navigate("/otp/verify"); } + } catch (error) { + console.log("Error -> ", error.response.data.email[0]); + toast.warning(error.response.data.email[0]); } - } + }; const handleSignInWithGoogle = async (response) => { - - try{ - // console.log(response); // Logging the response for debugging - console.log(response); - const payload = response.credential - console.log('payload', typeof payload) - const server_res = await axios.post("https://projectsyncifyapi.onrender.com/api/v1/auth/google/", {"access_token": payload}) - console.log('server -> ',server_res) - + try { + const payload = response.credential; + const server_res = await axios.post("https://projectsyncifyapi.onrender.com/api/v1/auth/google/", { "access_token": payload }); const user = { - "email": server_res.data.email, - "name": server_res.data.full_name + email: server_res.data.email, + name: server_res.data.full_name, + image: server_res.data.image, + }; + + if (server_res.status === 200) { + localStorage.setItem("user", JSON.stringify(user)); + localStorage.setItem("access", JSON.stringify(server_res.data.access_token)); + localStorage.setItem("refresh", JSON.stringify(server_res.data.refresh_token)); + navigate("/workspace"); + toast.success("Login successful"); + } + } catch (err) { + console.log("Error from Google -> ", err.response.status); + if (err.response.status === 500) { + toast.warning("Server side facing error"); } - - if(server_res.status === 200){ - localStorage.setItem('user', JSON.stringify(user)) - localStorage.setItem('access', JSON.stringify(server_res.data.access_token)) - localStorage.setItem('refresh', JSON.stringify(server_res.data.refresh_token)) - navigate("/dashboard"); - toast.success("login successfull") - } - } - catch(err){ - console.log('error from google -> ',err.response.status) - if(err.response.status === 500){ - toast.warning("Server side facing error") - } } - - }; - const handleSignInWithGithub = async (response) => { - window.location.assign(`https://github.com/login/oauth/authorize/?client_id=${import.meta.env.VITE_GITHU_ID}`) - } - - const send_code_to_backend = async () => { - if(searchparams){ - try { - const qcode = searchparams.get('code'); - const response = await axiosInstance.post('/auth/github/', {"code": qcode}) - const result = response.data - - console.log('result -> ',result) - - if(response.status === 200){ - - const user = { - "email": result.email, - "name": result.full_name - } - - localStorage.setItem('user', JSON.stringify(user)) - localStorage.setItem('access', JSON.stringify(result.access_token)) - localStorage.setItem('refresh', JSON.stringify(result.refresh_token)) - navigate("/workspace"); - toast.success("login successfull") - } - } catch (error) { - console.log(error) + let code = searchparams.get('code'); + useEffect(() => { + console.log(import.meta.env.VITE_GOOGLE_CLIENT_ID); + + const userData = localStorage.getItem("user"); + console.log({ userData }); + + google.accounts.id.initialize({ + client_id: import.meta.env.VITE_GOOGLE_CLIENT_ID, + callback: handleSignInWithGoogle, + }); + + google.accounts.id.renderButton( + document.getElementById("signInDiv"), + { + theme: "outline", + size: "large", + text: "continue_with", + shape: "circle", + width: 200, } - } - } - - -let code = searchparams.get('code') -useEffect(() => { - console.log(import.meta.env.VITE_GOOGLE_CLIENT_ID) - - const userData = localStorage.getItem("user"); - console.log({userData}) - - - if(code){ - send_code_to_backend() - } - - //global google - google.accounts.id.initialize({ - client_id: import.meta.env.VITE_GOOGLE_CLIENT_ID, // Using client ID from environment variable - callback: handleSignInWithGoogle // Callback function when sign-in completes - }); - - // Render the sign-in button - google.accounts.id.renderButton( - document.getElementById("signInDiv"), // Assuming there's an element with id 'signInDiv' - { - theme: "outline", - size: "large", - text: "continue_with", - shape: "circle", - width: 200 // Width should be a number, not a string - } - ); -},[code]) + ); + }, [code]); return ( <div className="py-10 px-10 "> @@ -177,35 +147,25 @@ useEffect(() => { /> </div> <div className="w-full md:w-1/2 rounded-lg"> - <h1 className="text-center text-3xl md:text-5xl font-bold text-transparent bg-gradient-to-r from-[#8401A1] to-[#73e9fe] bg-clip-text py-3"> + <h1 className="text-center text-3xl md:text-5xl font-bold text-transparent bg-gradient-to-r from-[#0c01a1] to-[#73e9fe] bg-clip-text py-3"> Register </h1> - <div className="text-center flex flex-col items-center" > + <div className="text-center flex flex-col items-center"> <p className="text-lg">Login with your social account</p> - <div className="flex gap-4 mt-3"> - {/* <button > - <FcGoogle className="w-8 h-8" /> - </button> */} + <div className="flex gap-4 mt-3"> <div id='signInDiv'></div> - <button onClick={handleSignInWithGithub}> - <FaGithub className="w-8 h-8" /> - </button> - </div> - - + </div> <span className="my-1 hidden md:flex"> __________________________________or__________________________________ </span> </div> - <div className="px-8 py-3"> - - <form className="flex flex-col mt-5 " onSubmit={handleSubmit}> - <div className="flex flex-col md:flex-row justify-between gap-4 "> + <form className="flex flex-col mt-5" onSubmit={handleSubmit}> + <div className="flex flex-col md:flex-row justify-between gap-4"> <input type="text" placeholder="First Name" - className="w-full md:w-1/2 px-4 py-2 border-2 outline-none rounded-lg bg-slate-100 dark:bg-slate-900 " + className="w-full md:w-1/2 px-4 py-2 border-2 outline-none rounded-lg bg-slate-100 dark:bg-slate-900" name="first_name" value={first_name} onChange={handleChange} @@ -213,7 +173,7 @@ useEffect(() => { <input type="text" placeholder="Last Name" - className="w-full md:w-1/2 px-4 py-2 border-2 outline-none rounded-lg bg-slate-100 dark:bg-slate-900 " + className="w-full md:w-1/2 px-4 py-2 border-2 outline-none rounded-lg bg-slate-100 dark:bg-slate-900" name="last_name" value={last_name} onChange={handleChange} @@ -222,7 +182,7 @@ useEffect(() => { <input type="email" placeholder="Email" - className="px-4 py-2 border-2 outline-none rounded-lg mt-5 bg-slate-100 dark:bg-slate-900 " + className="px-4 py-2 border-2 outline-none rounded-lg mt-5 bg-slate-100 dark:bg-slate-900" name="email" value={email} onChange={handleChange} @@ -230,7 +190,7 @@ useEffect(() => { <input type="password" placeholder="Password" - className="px-4 py-2 border-2 outline-none rounded-lg my-5 bg-slate-100 dark:bg-slate-900 " + className="px-4 py-2 border-2 outline-none rounded-lg my-5 bg-slate-100 dark:bg-slate-900" name="password" value={password} onChange={handleChange} @@ -238,17 +198,22 @@ useEffect(() => { <input type="password" placeholder="Confirm Password" - className="px-4 py-2 border-2 outline-none rounded-lg bg-slate-100 dark:bg-slate-900 " + className="px-4 py-2 border-2 outline-none rounded-lg bg-slate-100 dark:bg-slate-900" name="password2" - onChange={handleChange} value={password2} + onChange={handleChange} + /> + <input + type="file" + placeholder="Profile Picture" + className="px-4 py-2 border-2 outline-none rounded-lg my-5 bg-slate-100 dark:bg-slate-900" + name="image" + onChange={handleImageUpload} /> <button - type="submit" - className="mt-5 w-full text-white py-3 rounded-lg bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] hover:from-[#73e9fe] hover:to-[#9d11bd]" + className="mt-5 w-full text-white py-3 rounded-lg bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] hover:from-[#73e9fe] hover:to-[#9d11bd]" style={{ - fontSize: "20px", fontWeight: "bold", cursor: "pointer", @@ -257,7 +222,6 @@ useEffect(() => { Sign up </button> </form> - <h3 className="mt-4"> Already have an account? Please{" "} <Link to="/login" className="underline"> diff --git a/src/components/Pages/Board/Board.jsx b/src/components/Pages/Board/Board.jsx index 0a0098c..7f939d3 100644 --- a/src/components/Pages/Board/Board.jsx +++ b/src/components/Pages/Board/Board.jsx @@ -1,51 +1,337 @@ import { useContext, useEffect, useState } from "react"; import { AuthContext } from "../../../Providers/AuthProviders/AuthProviders"; import CreateTask from "./CreateTask"; -import DragNDrop from "../Tasks/DragNDrop"; + import EditDeleteTask from "../Tasks/EditDeleteTask"; -import { useLocation } from "react-router-dom"; +import { useLocation, useParams } from "react-router-dom"; import CreateBoard from "./CreateBoard"; +import axios from "axios"; +import { IoIosCreate } from "react-icons/io"; +import { FaRegEdit } from 'react-icons/fa'; +import { BiCollapseVertical, BiDownArrowCircle, BiUpArrowCircle } from "react-icons/bi"; +import { HiMiniChevronUpDown } from "react-icons/hi2"; +import { MdAddTask, MdDeleteForever } from "react-icons/md"; +import ChatUI from './../Chat/ChatUI'; +import { toast } from "react-toastify"; -const Board = () => { - const location = useLocation(); - const timelineData = location.state; - console.log('timeline data recive in board from location state -> ',timelineData); + +const Board = () => { const { user } = useContext(AuthContext); - const [tasks, setTasks] = useState([]); - const [currentTask, setCurrentTask] = useState(null); - useEffect(() => { - fetch(`https://projectsyncifyapi.onrender.com/workspace/tasks/${timelineData?._id}`) - .then(res => res.json()) - .then(data => { - const filteredTasks = data.filter(task => task.email === user?.email); - setTasks(filteredTasks); - }) - .catch(error => console.log(error)); - }, [user?.email]); - - const updateTasks = () => { - fetch(`https://task-backend-azure.vercel.app/tasks`) - .then(res => res.json()) - .then(data => { - const filteredTasks = data.filter(task => task.email === user?.email); - setTasks(filteredTasks); - }) - .catch(error => console.log(error)); + console.log({ user }) + const { id } = useParams() + const [loading, setLoading] = useState(true) + + const [boards, setBoards] = useState(null); + const [reload, setReload] = useState(false); + const [members, setMembers] = useState(null); + const [expandedBoardId, setExpandedBoardId] = useState(null); + + const getSpecificMembers = async () => { + + try { + const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v2/workspace/${id}/members/`) + console.log("get member -> ", result.data) + setMembers(result.data) + } catch (error) { + console.log("get member error -> ", error) + } + } + + const [formData, setFormData] = useState({ + id: "", + scrum_Name: "", + name: "", + details: "", + assign: "", + + } + ); + + const [selectedTimeline, setSelectedTimeline] = useState(null); + + const handleOpenDialog = (board, modalName) => { + if (!members) { + getSpecificMembers() + } + console.log({ board }) + setSelectedTimeline(board); + console.log(board.name) + setFormData({ + id: board.id, + scrum_Name: board.name, + name: "", + details: "", + assign: "" + }); + document.getElementById("createTask").showModal(); + }; + + const handleChange = (e) => { + const { name, value } = e.target; + console.log({ name, value }) + setFormData(prevState => ({ + ...prevState, + [name]: value + })); + }; + + const handleCreateTaskButton = async (e) => { + e.preventDefault() + + const newTask = { + scrum_Name: formData.id, + name: "", + details: "", + assign: "", + which_Type: "" + } + + newTask.scrum_Name = Number(formData.id); + newTask.name = e.target.taskName.value; + newTask.details = e.target.details.value; + newTask.assign = e.target.assign.value; + newTask.which_Type = e.target.which_type.value; + + + console.log({ newTask }) + + const result = await axios.post(`https://projectsyncifyapi.onrender.com/workspace/tasks/create/`, newTask) + + if (result) { + toast.success('Task Successfully Created.'); + + setReload(!reload); + handleCloseModelButton('createTask') + } + else { + console.log('timeline post result -> ', result) + } + } + {/** end update timeline form functionlity */ } + + const handleCloseModelButton = () => { + document.getElementById("createTask").close() + } + + // const [showTasks, setShowTasks] = useState(false); + + const handleToggle = (boardId) => { + // console.log("toggle button clicked", boardId) + // console.log("before expant board id -> ", expandedBoardId); + // console.log((null === 27)) + setExpandedBoardId(expandedBoardId === boardId ? null : boardId); + // setShowTasks(!showTasks); + }; - + + const handleDeleteButton = async (boardId) => { + const result = await axios.delete(`https://projectsyncifyapi.onrender.com/workspace/scrum/delete/${boardId}/`); + if (result) { + toast.success("Successfully deleted board."); + setReload(!reload) + } + } + + console.log('after expant board id -> ', expandedBoardId) + + useEffect(() => { + const getBoard = async () => { + try { + const result = await axios.get(`https://projectsyncifyapi.onrender.com/workspace/user/${user?.userId}/workspace/${id}/scrums/`); + console.log({ result }); + setBoards(result.data); + + + } catch (error) { + console.error("Error fetching boards:", error); + } finally { + setLoading(false); + } + }; + + if (user) { + setLoading(true); + getBoard(); + } else { + setLoading(false); + } + }, [reload]) + + + + return ( - <div className="h-screen"> - {/** timeline all data exist in timelineData variable */} - <div> - <CreateBoard timelineData={timelineData} /> + <div className=""> + <div className=" py-2 mt-4"> + <div className="flex justify-between items-center pb-2"> + <h1 className="text-3xl pb-2 font-semibold "> + Board + </h1> + + </div> + + <hr className="w-full h-1 bg-gradient-to-r from-[#0c01a1] to-[#73e9fe] " /> + <p className="text-sm font-semibold mt-2 text-black dark:text-white mb-10"> + To ensure seamless progress tracking and maintenance of your project, check out the boards into your project structure. Assign task and distinct roles to each member to streamline collaboration and enhance accountability throughout the project lifecycle. Also chat with your team members. + </p> </div> - <div>Timeline Details: {timelineData?.name} </div> - <CreateTask updateTasks={updateTasks} /> - - </div> + + {/* {loading && <h3>Loading .... </h3>} */} + {!loading && boards?.length === 0 ? <h3 className="text-center text-xl font-semibold">No Board Found, Go to Plan and Create New Board after assigning Team Leader</h3> + + : + <div className="overflow-x-auto shadow-xl rounded w-full"> + <table className="table w-full"> + <thead> + <tr className=" text-sm text-[#2c01a1] dark:text-[#73e9fe]"> + <th> Plans Name </th> + <th>Board Name</th> + + <th className="text-center">Assigned </th> + <th> Name</th> + <th>Delete</th> + <th>Add Task</th> + <th>Chat</th> + <th>Toggle Tasks</th> + </tr> + </thead> + <tbody> + {!loading && boards?.map((board, idx) => ( + <> + <tr key={idx} className=" text-sm text-black dark:text-white"> + <td>{board?.timeline_name}</td> + <td>{board?.name}</td> + <td className="text-center"> + <div className="flex items-center"> + <img src={board?.assign?.image} alt="" className="w-8 h-8 rounded-full" /> + </div> + </td> + <td className="font-semibold"> + {board?.assign?.first_name + " " + board?.assign?.last_name} + </td> + <td> + <button className="mx-4" onClick={() => handleDeleteButton(board.id)}> + <MdDeleteForever className="text-xl" title="Delete" /> + </button> + </td> + <td> + <button className="font-bold px-4 py-2 rounded-md" onClick={() => handleOpenDialog(board, "createTask")}> + <MdAddTask className="text-xl" title="Add Task" /> + </button> + + <dialog id="createTask" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#2c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton("createTask")}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#2c01a1]">Create Task</h3> + <form onSubmit={handleCreateTaskButton}> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Board Name</span> + </label> + <input type="text" name="scrum_Name" value={formData.scrum_Name} + onChange={handleChange} + placeholder="Board Name" className="input input-bordered bg-slate-200 dark:bg-black" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Task Name</span> + </label> + <input type="text" name="taskName" placeholder="Task Name" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Task Details</span> + </label> + <input type="text" name="details" placeholder="Text Details" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Assign Member</span> + </label> + <select name="assign" className="select select-bordered bg-slate-200 dark:bg-black"> + <option disabled selected>Assign</option> + {members?.map((member, idx) => <option key={idx} value={member.user_email}>{member.user_email}</option>)} + </select> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Which Type</span> + </label> + <select name="which_type" className="select select-bordered bg-slate-200 dark:bg-black"> + <option disabled selected>Which_type</option> + <option value="Feature">Feature</option> + <option value="Bug Fix">Bug Fix</option> + <option value="Code Test">Code Test</option> + <option value="Task">Task</option> + </select> + </div> + + <div className="flex justify-center mt-6"> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#2c01a1] text-white rounded w-full px-4 py-2" type="submit">Create</button> + </div> + </form> + </div> + </dialog> + </td> + + <td> + <ChatUI boardId={board.id} User={user} board={board} /> + </td> + + <td> + <button onClick={() => handleToggle(board.id)} className="mx-4 px-2 py-1 rounded"> + {expandedBoardId === board.id ? <BiCollapseVertical className="text-xl" title="show Less" /> : <HiMiniChevronUpDown className="text-xl" title="click to show more" />} + </button> + </td> + </tr> + + {expandedBoardId === board.id && ( + <tr className="text-center text-sm text-black dark:text-white w-full"> + <td colSpan="10" className="w-full px-10"> + <div className="overflow-x-auto w-full shadow-xl rounded"> + <table className="table w-full"> + <thead> + <tr className="text-center text-sm text-[#2c01a1] dark:text-[#73e9fe] bg-cyan-50 dark:bg-gray-900"> + <th>Task Name</th> + <th>Assigned To</th> + <th>Status</th> + <th>Type</th> + <th>Priority</th> + </tr> + </thead> + <tbody> + {board.tasks.map((task, taskIdx) => ( + <tr key={taskIdx} className="text-center text-sm text-black dark:text-white"> + <td>{task.name}</td> + <td>{task.assign?.email}</td> + <td>{task.status}</td> + <td>{task.which_Type}</td> + <td>{task.priority}</td> + </tr> + ))} + </tbody> + </table> + </div> + </td> + </tr> + )} + </> + ))} + </tbody> + </table> + </div>} + + + + + </div > + ); }; export default Board; + + diff --git a/src/components/Pages/Board/CreateBoard.jsx b/src/components/Pages/Board/CreateBoard.jsx index b7e071e..f7e5840 100644 --- a/src/components/Pages/Board/CreateBoard.jsx +++ b/src/components/Pages/Board/CreateBoard.jsx @@ -54,7 +54,7 @@ const CreateBoard = ({ timelineData }) => { <div className="modal-box"> <button id="closeBtn" - className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" + className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" onClick={handleCloseModal} > ✕ diff --git a/src/components/Pages/Board/CreateTask.jsx b/src/components/Pages/Board/CreateTask.jsx index 606b8ca..4870dc7 100644 --- a/src/components/Pages/Board/CreateTask.jsx +++ b/src/components/Pages/Board/CreateTask.jsx @@ -1,120 +1,190 @@ -import { useContext } from "react"; +import { useContext, useState } from "react"; import { AuthContext } from "../../../Providers/AuthProviders/AuthProviders"; import { toast } from "react-toastify"; import TaskAni from "../../../../public/tasks.json"; import Lottie from "lottie-react"; +import { MdAddTask } from "react-icons/md"; -const CreateTask = ({ updateTasks }) => { - const { user } = useContext(AuthContext); +const CreateTask = ({ data }) => { + const boardData = data.board; + + const {id, name} = data.board; + + const [formData, setFormData] = useState({ + id: "", + scrum_Name: "", + name: "", + details: "", + assign: "", + + } + ); + + const [selectedTimeline, setSelectedTimeline] = useState(null); + + const handleOpenDialog = (board, modalName) => { + console.log({board}) + setSelectedTimeline(board); + console.log(board.name) + setFormData({ + id: board.id, + scrum_Name: board.name, + name: "", + details: "", + assign: "" + }); + document.getElementById("createTask").showModal(); + }; + + const handleChange = (e) => { + const { name, value } = e.target; + console.log({name,value}) + setFormData(prevState => ({ + ...prevState, + [name]: value + })); + }; + + const handleCreateTaskButton = async (e) => { + e.preventDefault() + + const newTask = { + scrum_Name: id, + name: "", + details: "", + assign: "" + } + + newTask.scrum_Name = id; + newTask.name = e.target.name.value; + newTask.details = e.target.details.value; + newTask.assign = e.target.assign.value + + + console.log({ newTask }) + + const result = await axios.put(`https://projectsyncifyapi.onrender.com/workspace/timelines/update/${formData.timelineId}/`, updateTimeline) + + if (result) { + toast.success('Successfully Updated timeline'); + + setReload(!reload); + handleCloseModelButton('createTask') + } + else { + console.log('timeline post result -> ', result) + } + } + {/** end update timeline form functionlity */ } const handleCloseModelButton = () => { - document.getElementById('my_modal_5').close() + document.getElementById("createTask").close() } - const handleCreateTask = (event) => { - event.preventDefault(); + // const handleCreateTask = (event) => { + // event.preventDefault(); - const form = event.target; - const scrum_Name = form.scrum_Name.value; - const name = form.name.value; - const details = form.details.value; - const assign = form.assign.value; - const priority = form.priority.value; + // const form = event.target; + // const scrum_Name = form.scrum_Name.value; + // const name = form.name.value; + // const details = form.details.value; + // const assign = form.assign.value; + // const priority = form.priority.value; - if (!scrum_Name || !name || !details || !priority) { - toast.error('Please fill in all required fields'); - return; - } + // if (!scrum_Name || !name || !details || !priority) { + // toast.error('Please fill in all required fields'); + // return; + // } - const status = 'To-Do'; - const newTask = { scrum_Name , name , details, assign,status,priority }; + // const status = 'To-Do'; + // const newTask = { scrum_Name , name , details, assign,status,priority }; - fetch('https://projectsyncifyapi.onrender.com/workspace/tasks/create/', { - method: 'POST', - headers: { - 'content-type': 'application/json' - }, - body: JSON.stringify(newTask) - }) - .then(res => res.json()) - .then(data => { - if (data.insertedId) { - toast.success('Task Added Successfully'); - handleCloseModelButton(); - updateTasks(); - } - }) - .catch(error => { - console.error('Error creating task:', error); - toast.error('Failed to create task'); - }); + // fetch('https://projectsyncifyapi.onrender.com/workspace/tasks/create/', { + // method: 'POST', + // headers: { + // 'content-type': 'application/json' + // }, + // body: JSON.stringify(newTask) + // }) + // .then(res => res.json()) + // .then(data => { + // if (data.insertedId) { + // toast.success('Task Added Successfully'); + // handleCloseModelButton(); + // updateTasks(); + // } + // }) + // .catch(error => { + // console.error('Error creating task:', error); + // toast.error('Failed to create task'); + // }); - form.reset(); - }; + // form.reset(); + // }; return ( <div> - <div className="flex justify-center"> - <div className="flex items-center gap-6"> + <button className=" font-bold px-4 py-2 rounded-md" onClick={() => handleOpenDialog(boardData,"crateTask")}> + <MdAddTask className="text-xl" /> + </button> + {/* <div className="flex justify-center"> */} + {/* <div className="flex items-center gap-6"> - <div className=" dark:text-[#73e9fe] text-[#8401A1] mt-6"> + <div className=" dark:text-[#73e9fe] text-[#0c01a1] mt-6"> <p className="text-3xl font-bold mb-1">Wanna Create Task?</p> - <p className="text-sm mb-4 text-black dark:text-white">For maintain your project progress. <br />Create your task and track your progress... <br />Click below<span className="font-extrabold font-2xl text-[#8401A1] dark:text-[#73e9fe]"> ↓↓ </span> and explore more</p> - <button className="bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_5').showModal()}>Add Task</button> + <p className="text-sm mb-4 text-black dark:text-white">For maintain your project progress. <br />Create your task and track your progress... <br />Click below<span className="font-extrabold font-2xl text-[#0c01a1] dark:text-[#73e9fe]"> ↓↓ </span> and explore more</p> + <button className="bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_5').showModal()}>Add Task</button> </div> <div className="w-80 h-80"> <Lottie animationData={TaskAni} loop={true} /> </div> - </div> + </div> */} - <dialog id="my_modal_5" className="modal"> + <dialog id="createTask" className="modal"> <div className="modal-box bg-white dark:bg-black"> - <form onSubmit={handleCreateTask} > - <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={handleCloseModelButton}>✕</button> - <h3 className="font-bold text-2xl text-center">Create Task</h3> - <div className="form-control"> - <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Board Name</span> - </label> - <input type="text" name="scrum_Name" placeholder="Board Name" className="input input-bordered bg-slate-200 dark:bg-black" /> - </div> + <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#2c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton("createTask")}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#2c01a1]">Create Task</h3> + <form onSubmit={handleCreateTaskButton} > + <div className="form-control"> <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Task Name</span> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Board Name</span> </label> - <input type="text" name="name" placeholder="Name" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#8401A1]" /> + <input type="text" name="scrum_Name" value={formData.scrum_Name} + onChange={handleChange} + placeholder="Board Name" className="input input-bordered bg-slate-200 dark:bg-black" /> </div> <div className="form-control"> <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Task Details</span> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Task Name</span> </label> - <input type="text" name="details" placeholder="Text Details" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#8401A1]" /> + <input type="text" name="taskName" placeholder="Task Name" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> </div> <div className="form-control"> <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Assign</span> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Task Details</span> </label> - <input type="text" name="assign" placeholder="Assign Task" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#8401A1]" /> + <input type="text" name="details" placeholder="Text Details" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#0c01a1]" /> </div> <div className="form-control"> <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Priority</span> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Priority</span> </label> <select name="priority" className="select select-bordered bg-slate-200 dark:bg-black"> - <option disabled selected>Priority</option> - <option>Low</option> - <option>Medium</option> - <option>High</option> + <option disabled selected>Assign</option> + <option>chowdhuryrasel040@gmail.com</option> + <option>rasel@gmail.com</option> + <option>rahul@gmail.com</option> </select> </div> <div className="flex justify-center mt-6"> - <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-2" type="submit">Create</button> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-2" type="submit">Create</button> </div> </form> </div> </dialog> - </div> + {/* </div> */} </div> ); }; diff --git a/src/components/Pages/Board/NewBoard/BoardDelete.jsx b/src/components/Pages/Board/NewBoard/BoardDelete.jsx new file mode 100644 index 0000000..091a337 --- /dev/null +++ b/src/components/Pages/Board/NewBoard/BoardDelete.jsx @@ -0,0 +1,31 @@ +import { MdDeleteForever } from "react-icons/md"; +import Swal from "sweetalert2"; + +const BoardDelete = () => { + const handleBoardDelete = () => { + Swal.fire({ + title: 'Are you sure?', + text: "You won't be able to revert this board!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes, delete it!' + }).then((result) => { + if (result.isConfirmed) { + Swal.fire( + 'Deleted!', + 'Your board has been deleted.', + 'success' + ) + } + }); + } + return ( + <div> + <button className=" font-bold px-4 py-2 rounded-md" onClick={() => handleBoardDelete()}> <MdDeleteForever className="text-xl" /></button> + </div> + ); +}; + +export default BoardDelete; \ No newline at end of file diff --git a/src/components/Pages/Board/NewBoard/NewBoard.jsx b/src/components/Pages/Board/NewBoard/NewBoard.jsx new file mode 100644 index 0000000..39719ee --- /dev/null +++ b/src/components/Pages/Board/NewBoard/NewBoard.jsx @@ -0,0 +1,263 @@ +import React, { useState } from "react"; +import { BiCollapseVertical, BiDownArrowCircle, BiUpArrowCircle } from "react-icons/bi"; +import { FaRegEdit } from "react-icons/fa"; +import { HiMiniChevronUpDown } from "react-icons/hi2"; +import { IoChatbubblesOutline } from "react-icons/io5"; +import { MdAddTask, MdDeleteForever } from "react-icons/md"; +import CreateTask from "../CreateTask"; +import EditDeleteTask from "../../Tasks/EditDeleteTask"; +import BoardDelete from "./BoardDelete"; +import ChatUI from "../../Chat/ChatUI"; +import axios from "axios"; +import { toast } from "react-toastify"; + +const NewBoard = ({board,reload,setReload}) => { + console.log({board,reload, setReload}) + const [formData, setFormData] = useState({ + id: "", + scrum_Name: "", + name: "", + details: "", + assign: "", + + } + ); + + const {tasks} = board; + const allData = { + board, + reload, + setReload, + tasks + } + const [showTasks, setShowTasks] = useState(false); + + const handleToggle = () => { + setShowTasks(!showTasks); + }; + + const handleDeleteButton = async (boardId) => { + const result = await axios.delete(`https://projectsyncifyapi.onrender.com/workspace/scrum/delete/${boardId}`); + if(result){ + toast.success("Successfully deleted board."); + setReload(!reload) + } + } + + const [selectedTimeline, setSelectedTimeline] = useState(null); + + const handleOpenDialog = (board, modalName) => { + console.log({board}) + setSelectedTimeline(board); + console.log(board.name) + setFormData({ + id: board.id, + scrum_Name: board.name, + name: "", + details: "", + assign: "" + }); + document.getElementById("createTask").showModal(); + }; + + const handleChange = (e) => { + const { name, value } = e.target; + console.log({name,value}) + setFormData(prevState => ({ + ...prevState, + [name]: value + })); + }; + + const handleCreateTaskButton = async (e) => { + e.preventDefault() + + const newTask = { + scrum_Name: id, + name: "", + details: "", + assign: "" + } + + newTask.scrum_Name = id; + newTask.name = e.target.name.value; + newTask.details = e.target.details.value; + newTask.assign = e.target.assign.value + + + console.log({ newTask }) + + const result = await axios.put(`https://projectsyncifyapi.onrender.com/workspace/timelines/update/${formData.timelineId}/`, updateTimeline) + + if (result) { + toast.success('Successfully Updated timeline'); + + setReload(!reload); + handleCloseModelButton('createTask') + } + else { + console.log('timeline post result -> ', result) + } + } + {/** end update timeline form functionlity */ } + + const handleCloseModelButton = () => { + document.getElementById("createTask").close() + } + + return ( + <div className="overflow-x-auto shadow-xl rounded w-full"> + <table className="table w-full"> + <thead> + <tr className="text-center text-sm text-[#0c01a1] dark:text-[#73e9fe]"> + <th> Plans Name </th> + <th>Board Name</th> + + <th>Assigned </th> + + <th>Delete</th> + <th>Add Task</th> + <th>Chat</th> + {/* <th>All Tasks</th> */} + </tr> + </thead> + <tbody> + <tr className="text-center text-sm text-black dark:text-white"> + <td>{board?.timeline_name}</td> + <td>{board?.name}</td> + {/* <td>status</td> */} + <td>{board?.assign?.first_name}</td> + + <td> + <BoardDelete onClick={() => handleDeleteButton(board.id) } /> + {/* <button className="mx-4"> + <MdDeleteForever className="text-xl" /> + </button> */} + </td> + <td> + {/* <CreateTask data={allData}/> */} + {/* <button className="mx-4"> + <MdAddTask className="text-xl" /> + </button> */} + {/** start create task button with modal */} + <div> + <button className=" font-bold px-4 py-2 rounded-md" onClick={() => handleOpenDialog(board,"crateTask")}> + <MdAddTask className="text-xl" /> + </button> + {/* <div className="flex justify-center"> */} + {/* <div className="flex items-center gap-6"> + + <div className=" dark:text-[#73e9fe] text-[#2c01a1] mt-6"> + <p className="text-3xl font-bold mb-1">Wanna Create Task?</p> + <p className="text-sm mb-4 text-black dark:text-white">For maintain your project progress. <br />Create your task and track your progress... <br />Click below<span className="font-extrabold font-2xl text-[#2c01a1] dark:text-[#73e9fe]"> ↓↓ </span> and explore more</p> + <button className="bg-gradient-to-r from-cyan-500 to-[#2c01a1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_5').showModal()}>Add Task</button> + </div> + <div className="w-80 h-80"> + <Lottie animationData={TaskAni} loop={true} /> + </div> + </div> */} + + <dialog id="createTask" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#2c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton("createTask")}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#2c01a1]">Create Task</h3> + <form onSubmit={handleCreateTaskButton} > + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Board Name</span> + </label> + <input type="text" name="scrum_Name" value={formData.scrum_Name} + onChange={handleChange} + placeholder="Board Name" className="input input-bordered bg-slate-200 dark:bg-black" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Task Name</span> + </label> + <input type="text" name="taskName" placeholder="Task Name" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Task Details</span> + </label> + <input type="text" name="details" placeholder="Text Details" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Priority</span> + </label> + <select name="priority" className="select select-bordered bg-slate-200 dark:bg-black"> + <option disabled selected>Assign</option> + <option>chowdhuryrasel040@gmail.com</option> + <option>rasel@gmail.com</option> + <option>rahul@gmail.com</option> + </select> + </div> + <div className="flex justify-center mt-6"> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#2c01a1] text-white rounded w-full px-4 py-2" type="submit">Create</button> + </div> + </form> + </div> + </dialog> + {/* </div> */} + </div> + {/** end create task button with modal */} + </td> + <td> + <ChatUI /> + + </td> + <td> + <button onClick={handleToggle} className="mx-4 px-2 py-1 rounded"> + {showTasks ? <BiCollapseVertical classname="text-xl" /> : <HiMiniChevronUpDown className="text-xl" />} + </button> + </td> + + </tr> + {showTasks && tasks?.map((task, idx) => ( + <tr key={idx} className="text-center text-sm text-black dark:text-white w-full"> + <td colSpan="8" className="w-full px-10"> + <div className="overflow-x-auto w-full shadow-xl rounded"> + <table className="table w-full"> + <thead> + <tr className="text-center text-sm text-[#2c01a1] dark:text-[#73e9fe] bg-cyan-50 dark:bg-gray-900"> + <th>Task Name</th> + <th>Assigned To</th> + <th>Status</th> + <th>Type</th> + <th>Priority</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + <tr className="text-center text-sm text-black dark:text-white"> + <td>{task.name}</td> + <td>{task.assignedTo}</td> + <td>{task.status}</td> + <td>{task.type}</td> + <td>{task.priority}</td> + <td> + {/* <button className="mx-4"> + <FaRegEdit className="text-xl" /> + </button> */} + <EditDeleteTask /> + </td> + </tr> + </tbody> + </table> + </div> + </td> + </tr> + )) +} + + + + </tbody> + </table> + </div> + ); +}; + +export default NewBoard; diff --git a/src/components/Pages/Board/NewBoard/singleShowTask.jsx b/src/components/Pages/Board/NewBoard/singleShowTask.jsx new file mode 100644 index 0000000..fc5e941 --- /dev/null +++ b/src/components/Pages/Board/NewBoard/singleShowTask.jsx @@ -0,0 +1,46 @@ +import React from 'react'; + +const singleShowTask = () => { + return ( +<tr className="text-center text-sm text-black dark:text-white w-full "> + <td colSpan="8" className="w-full px-10"> + <div className="overflow-x-auto w-full shadow-xl rounded"> + <table className="table w-full"> + <thead> + <tr className="text-center text-sm text-[#2c01a1] dark:text-[#73e9fe] bg-cyan-50 dark:bg-gray-900"> + <th>Task Name</th> + <th>Assigned To</th> + <th>Status</th> + <th>Type</th> + <th>Priority</th> + <th> + + + </th> + + </tr> + </thead> + <tbody> + <tr className="text-center text-sm text-black dark:text-white"> + <td>Task Name</td> + <td>assigned person</td> + <td>Status</td> + <td>I don't know what type it is, ask nazim vai</td> + <td>Priority</td> + <td> + {/* <button className="mx-4"> + <FaRegEdit className="text-xl" /> + </button> */} + <EditDeleteTask /> + </td> + </tr> + {/* Add more tasks as needed */} + </tbody> + </table> + </div> + </td> +</tr> + ); +}; + +export default singleShowTask; \ No newline at end of file diff --git a/src/components/Pages/Board/previousShowMultipleBoardCode.jsx b/src/components/Pages/Board/previousShowMultipleBoardCode.jsx new file mode 100644 index 0000000..f1c05d8 --- /dev/null +++ b/src/components/Pages/Board/previousShowMultipleBoardCode.jsx @@ -0,0 +1,150 @@ +{!loading && boards?.map((board, idx) => ( + <div key={idx} className="overflow-x-auto shadow-xl rounded w-full"> + <table className="table w-full"> + <thead> + <tr className="text-center text-sm text-[#2c01a1] dark:text-[#73e9fe]"> + <th> Plans Name </th> + <th>Board Name</th> + + <th>Assigned </th> + + <th>Delete</th> + <th>Add Task</th> + <th>Chat</th> + {/* <th>All Tasks</th> */} + </tr> + </thead> + <tbody> + <tr className="text-center text-sm text-black dark:text-white"> + <td>{board?.timeline_name}</td> + <td>{board?.name}</td> + {/* <td>status</td> */} + <td>{board?.assign?.first_name}</td> + + <td> + <button className="mx-4" onClick={() => handleDeleteButton(board.id)}> + <MdDeleteForever className="text-xl" /> + </button> + </td> + <td> +<div> + <button className=" font-bold px-4 py-2 rounded-md" onClick={() => handleOpenDialog(board,"crateTask")}> + <MdAddTask className="text-xl" /> + </button> + + <dialog id="createTask" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#2c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton("createTask")}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#2c01a1]">Create Task</h3> + <form onSubmit={handleCreateTaskButton} > + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Board Name</span> + </label> + <input type="text" name="scrum_Name" value={formData.scrum_Name} + onChange={handleChange} + placeholder="Board Name" className="input input-bordered bg-slate-200 dark:bg-black" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Task Name</span> + </label> + <input type="text" name="taskName" placeholder="Task Name" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Task Details</span> + </label> + <input type="text" name="details" placeholder="Text Details" className="input input-bordered bg-slate-200 dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Assign Member</span> + </label> + <select name="assign" className="select select-bordered bg-slate-200 dark:bg-black"> + <option disabled selected>Assign</option> + {members?.map((member, idx) => <option key={idx} value={member.user_email}>{member.user_email}</option>)} + </select> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#2c01a1]">Which Type</span> + </label> + <select name="which_type" className="select select-bordered bg-slate-200 dark:bg-black"> + <option disabled selected>Which_type</option> + <option value="Feature">Feature</option> + <option value="Bug Fix">Bug Fix</option> + <option value="Code Test">Code Test</option> + <option value="Task">Task</option> + </select> + </div> + + <div className="flex justify-center mt-6"> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#2c01a1] text-white rounded w-full px-4 py-2" type="submit">Create</button> + </div> + </form> + </div> + </dialog> +</div> + </td> + + <td className="absolute"> + <ChatUI boardId={board.id} User={user} board={board}/> + + </td> + + <td> + <button onClick={handleToggle} className="mx-4 px-2 py-1 rounded"> + {showTasks ? <BiCollapseVertical classname="text-xl" /> : <HiMiniChevronUpDown className="text-xl" />} + </button> + </td> + + </tr> + + {showTasks && <tr className="text-center text-sm text-black dark:text-white w-full"> + <td colSpan="8" className="w-full px-10"> + <div className="overflow-x-auto w-full shadow-xl rounded"> + <table className="table w-full"> + <thead> + <tr className="text-center text-sm text-[#2c01a1] dark:text-[#73e9fe] bg-cyan-50 dark:bg-gray-900"> + <th>Task Name</th> + <th>Assigned To</th> + <th>Status</th> + <th>Type</th> + <th>Priority</th> + {/* <th>Actions</th> */} + </tr> + </thead> + <tbody> + + {showTasks && +board.tasks.map((task, idx) => ( +<tr className="text-center text-sm text-black dark:text-white"> + <td>{task.name}</td> + <td>{task.assign?.email}</td> + <td>{task.status}</td> + <td>{task.which_Type}</td> + <td>{task.priority}</td> + <td> + {/* <button className="mx-4"> + <FaRegEdit className="text-xl" /> + </button> */} + {/* <EditDeleteTask /> */} + </td> + </tr> +)) +} + + </tbody> + </table> + </div> + </td> + </tr>} + + + </tbody> + </table> + </div> +))} \ No newline at end of file diff --git a/src/components/Pages/Chat/ChatOnetoOne.jsx b/src/components/Pages/Chat/ChatOnetoOne.jsx new file mode 100644 index 0000000..bac0f1c --- /dev/null +++ b/src/components/Pages/Chat/ChatOnetoOne.jsx @@ -0,0 +1,145 @@ +import { useEffect, useRef, useState } from "react"; +import { IoClose } from "react-icons/io5"; +import { RiChatSmile3Line } from "react-icons/ri"; + +const ChatOnetoOne = ({user, profile}) => { + console.log({user, profile}) + const [showChat, setShowChat] = useState(false); + const [userId, setUserId] = useState(null); + const [userGroup, setUserGroup] = useState(null); + const [messages, setMessages] = useState([]); + const [newMessage, setNewMessage] = useState(''); + const ws = useRef(null); + + const handleChat = (userId, otherId) => { + let groupId; + + if (userId > otherId) { + // Concatenating the user IDs in ascending order to form a group ID + groupId = otherId.toString() + "oto" + userId.toString(); + } else { + // Concatenating the user IDs in descending order to form a group ID + groupId = userId.toString() + "oto" + otherId.toString(); + } + + setUserId(userId) + setUserGroup(groupId) + }; + + console.log({messages}) + const handleToggleChat = (groupId, userId) => { + setShowChat(!showChat); + handleChat(groupId, userId); + }; + + + const loadMessage=()=>{ + fetch(`https://projectsyncifyapi.onrender.com/api/v1/chat/${userGroup}/`) + .then((res) =>res.json()) + .then((data) =>{ + + console.log({data}) + setMessages(data)}) + .catch((err) =>console.log(err)); + }; + + + + + useEffect(() => { + if (userId && userGroup) { + ws.current = new WebSocket(`wss://projectsyncifyapi.onrender.com/ws/v1/chat/${userGroup}/`); + ws.current.onopen = () => console.log('WebSocket connected...'); + loadMessage() + console.log(messages) + ws.current.onmessage = (event) => { + const data = JSON.parse(event.data); + console.log({data}) + setMessages((prevMessages) => [...prevMessages, data]); + }; + ws.current.onerror = (event) => console.log('WebSocket error', event); + ws.current.onclose = (event) => console.log('WebSocket closed', event); + + return () => { + if (ws.current) { + ws.current.close(); + } + }; + } + }, [userId, userGroup]); + + const handleMessageSend = () => { + console.log({ userId, userGroup }); + + ws.current.send(JSON.stringify({ + 'user': userId, + 'message': newMessage + })); + setNewMessage(''); + }; + + return ( + <div className=""> + <button onClick={() => handleToggleChat(user?.userId, profile?.id)} className="font-bold px-4 py-4 rounded-full bg-[#0154a1] text-white "> + <RiChatSmile3Line className="text-4xl rounded-full " title="Chat Now"/> + </button> + {showChat && ( + <div className="fixed bottom-10 right-4 w-96 h-96 bg-white dark:bg-gray-950 shadow-lg rounded-lg flex flex-col"> + <div className="flex items-center justify-between p-4 bg-[#0154a1] text-white rounded-t-lg"> + <div className="flex items-center"> + <img + src={profile?.image ? `${profile?.image}` : `${profile?.image}`} + alt={profile?.get_full_name} + className="w-6 h-6 rounded-full mr-2" + /> + <span className="text-lg font-semibold"> + {profile?.get_full_name} + </span> + </div> + <button onClick={handleToggleChat}> + <IoClose className="text-2xl" /> + </button> + </div> +<div className="flex-1 p-4 overflow-y-auto"> + <div className="flex flex-col space-y-2"> + {/* Chat messages will go here */} + <div className="flex flex-col space-y-2"> + {messages.map((message, index) => ( + <div + key={index} + className={`p-2 rounded-md ${message.user?.id === userId ? 'self-end bg-[#0154a1] text-white' : (message.user === userId) ? 'self-end bg-[#0154a1] text-white' : 'self-start bg-gray-200'}`} + > + + <div className="flex items-center"> + <img + src={message.user.image ? `${message.user.image}` : `${message.user_image}`} + alt={message.user_first_name} + className="w-4 h-4 rounded-full mr-2" + /> + <span style={{ color: message.user.id == userId ? 'green' : {color: message.user === userId ? "green" :'red' }}}> + {message.user_first_name ? message.user_first_name : message.user.first_name } + </span> + </div> + <div>{message.message}</div> + </div> + ))} + </div> + </div> +</div> + <div className="p-4 flex items-center justify-center"> + <input + type="text" + value={newMessage} + onChange={(e) => setNewMessage(e.target.value)} + placeholder="Type a message..." + className="w-full p-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 bg-gray-100 dark:bg-gray-800" + /> + <button onClick={handleMessageSend} className="ml-2 bg-[#0154a1] text-white px-4 py-2 rounded-md">Send</button> + </div> + </div> + )} + </div> + ); +}; + +export default ChatOnetoOne; \ No newline at end of file diff --git a/src/components/Pages/Chat/ChatUI.jsx b/src/components/Pages/Chat/ChatUI.jsx new file mode 100644 index 0000000..d4df58c --- /dev/null +++ b/src/components/Pages/Chat/ChatUI.jsx @@ -0,0 +1,129 @@ +import { useState, useEffect, useRef } from "react"; +import { IoChatbubblesOutline, IoClose } from "react-icons/io5"; + +const ChatUI = ({ boardId, User, board }) => { + console.log({ boardId, User, board }); + const [showChat, setShowChat] = useState(false); + const [userName, setUserName] = useState(null); + const [userGroup, setUserGroup] = useState(null); + const [messages, setMessages] = useState([]); + const [newMessage, setNewMessage] = useState(''); + const ws = useRef(null); + + const handleChat = (groupId, userName) => { + localStorage.setItem('userName', userName); + localStorage.setItem('userGroup', groupId); + setUserName(userName); + setUserGroup(groupId); + }; + + console.log({messages}) + const handleToggleChat = (groupId, userName) => { + setShowChat(!showChat); + handleChat(groupId, userName); + }; + + + const loadMessage=()=>{ + fetch(` https://projectsyncifyapi.onrender.com/api/v1/chat/${userGroup}/`) + .then((res) =>res.json()) + .then((data) =>setMessages(data)) + .catch((err) =>console.log(err)); + }; + + + + + useEffect(() => { + if (userName && userGroup) { + ws.current = new WebSocket(`wss://projectsyncifyapi.onrender.com/ws/v1/chat/${userGroup}/`); + ws.current.onopen = () => console.log('WebSocket connected...'); + loadMessage() + console.log(messages) + ws.current.onmessage = (event) => { + const data = JSON.parse(event.data); + console.log({data}) + setMessages((prevMessages) => [...prevMessages, data]); + }; + ws.current.onerror = (event) => console.log('WebSocket error', event); + ws.current.onclose = (event) => console.log('WebSocket closed', event); + + return () => { + if (ws.current) { + ws.current.close(); + } + }; + } + }, [userName, userGroup]); + + const handleMessageSend = () => { + console.log({ userName, userGroup }); + + ws.current.send(JSON.stringify({ + 'user': userName, + 'message': newMessage + })); + setNewMessage(''); + }; + + return ( + <div className=""> + <button onClick={() => handleToggleChat(boardId, User?.userId)} className="font-bold px-4 py-2 rounded-md"> + <IoChatbubblesOutline className="text-2xl" title="Chat" /> + </button> + {showChat && ( + <div className="fixed bottom-10 right-4 w-96 h-96 bg-white dark:bg-gray-950 shadow-lg rounded-lg flex flex-col"> + <div className="flex items-center justify-between p-4 bg-[#0154a1] text-white rounded-t-lg"> + <h3 className="text-lg font-semibold">{board.name}</h3> + <button onClick={() => setShowChat(false)}> + <IoClose className="text-2xl" /> + </button> + </div> + <div className="flex-1 p-4 overflow-y-auto"> + <div className="flex flex-col space-y-2"> + {messages.map((message, index) => ( + // <div + // key={index} + // className={`p-2 rounded-md ${message.user.id === userName ? 'self-end bg-[#0154a1] text-white' : 'self-start bg-gray-200'}`} + // > + // <span style={{ color: message.user.id === userName ? 'green' : 'red' }}>{message.user.first_name}</span>{message.message} + // </div> + +<div + key={index} + className={`p-2 rounded-md ${message.user?.id === userName ? 'self-end bg-[#0154a1] text-white' : (message.user === userName) ? 'self-end bg-[#0154a1] text-white' : 'self-start bg-gray-200'}`} +> + + <div className="flex items-center"> + <img + src={message.user.image ? `${message.user.image}` : `${message.user_image}`} + alt={message.user_first_name} + className="w-4 h-4 rounded-full mr-2" + /> + <span style={{ color: message.user.id == userName ? 'green' : {color: message.user === userName ? "green" :'red' }}}> + {message.user_first_name ? message.user_first_name : message.user.first_name } + </span> + </div> + <div>{message.message}</div> +</div> + + ))} + </div> + </div> + <div className="p-4 flex items-center justify-center"> + <input + type="text" + value={newMessage} + onChange={(e) => setNewMessage(e.target.value)} + placeholder="Type a message..." + className="w-full p-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 bg-gray-100 dark:bg-gray-800" + /> + <button onClick={handleMessageSend} className="ml-2 bg-[#0154a1] text-white px-4 py-2 rounded-md">Send</button> + </div> + </div> + )} + </div> + ); +}; + +export default ChatUI; diff --git a/src/components/Pages/Contact/Contact.jsx b/src/components/Pages/Contact/Contact.jsx new file mode 100644 index 0000000..4f9282b --- /dev/null +++ b/src/components/Pages/Contact/Contact.jsx @@ -0,0 +1,150 @@ +import { FiSend } from "react-icons/fi"; +import { MdOutlineContactSupport } from "react-icons/md"; +import { ToastContainer, toast } from "react-toastify"; +import emailjs from "@emailjs/browser"; +import { useState } from "react"; +import Con from "../../../../public/contact.json"; +import Lottie from "lottie-react"; +const Contact = () => { + const [name, setName] = useState(""); + const [email, setEmail] = useState(""); + const [message, setMessage] = useState(""); + const handleSubmit = (e) => { + e.preventDefault(); + const serviceId = "service_paazs8s"; + const templateId = "template_wtff4y4"; + const publicKey = "-JYW9yU44lnGatpYW"; + + const templateParams = { + from_name: name, + from_email: email, + to_name: "Project Syncify", + message: message, + }; + emailjs + .send(serviceId, templateId, templateParams, publicKey) + .then((response) => { + console.log("Email sent successfully", response); + toast.success("Email sent successfully!"); + setName(""); + setEmail(""); + setMessage(""); + }) + .catch((error) => { + console.log("Error sending email", error); + toast.error("Error sending email. Please try again."); + }); + }; + return ( + <div className="px-10 py-20"> + <div className="text-center mt-3 mb-5"> + <div className="flex flex-col md:flex-row-reverse items-center justify-between mt-0 mb-10"> + <div className="w-full md:w-1/3 mx-10 text-center md:text-start"> + <h1 className="text-4xl md:text-5xl font-bold ">Contact Us</h1> + <p className="text-sm my-2 ">Get in touch with us. We will respond as soon as possible.</p> + <p className="text-sm my-2 ">Reach Out for any type of Inquiries, or Just to Say Hi!</p> + <p className="text-sm my-2 ">Send us a message!</p> + </div> + <div className="w-full md:w-1/2 ml-10"> + <Lottie animationData={Con} loop={true} /> + </div> + </div> + </div> + <div className="py-10 md:mb-16"> + <h1 className="text-3xl md:text-4xl pt-10 md:pt-10 font-bold "> + Have any question? We would love to hear from you. + </h1> + <hr className="hidden md:flex md:w-[70%] h-1 bg-gradient-to-r from-[#141679] to-[#73e9fe] mt-1" /> + + <div className="grid grid-cols-1 md:grid-cols-3 gap-y-8 md:gap-y-0 justify-center items-center gap-x-10 mt-10 md:mt-20"> + <div className="h-auto md:h-[320px] lg:h-[200px] shadow-md px-10 py-8 space-y-3 rounded-lg border-t-4 border-t-blue-700"> + <h1 className="text-lg font-semibold">User Guide</h1> + <p> + User guide provides detailed information on how to use project + management tools, including how to set goals, track progress, and + communicate with team members. + </p> + </div> + <div className="h-auto md:h-[350px] lg:h-[250px] shadow-md px-10 py-8 space-y-3 rounded-lg border-t-4 border-t-cyan-500"> + <h1 className="text-lg font-semibold">Help & Support</h1> + <p className="mb-10"> + Providing comprehensive help and support for project management + involves offering resources, tools, and assistance to team members + and stakeholders. + </p> + </div> + <div className="h-auto md:h-[320px] lg:h-[200px] shadow-md px-10 py-8 space-y-3 rounded-lg border-t-4 border-t-blue-700"> + <h1 className="text-lg font-semibold">Exclusive Services</h1> + <ul className="list-disc list-inside ml-10" > + <li>Project Management</li> + <li>Task Management</li> + <li>Team Collaboration</li> + <li>Project Planning</li> + </ul> + </div> + </div> + + </div> + + <section> + <h1 className="text-3xl md:text-4xl pt-10 md:pt-10 font-bold "> + Get in Touch + </h1> + <hr className="w-[44%] md:w-[18%] h-1 bg-gradient-to-r from-[#141679] to-[#73e9fe] " /> + <div className="flex flex-col md:flex-row justify-center items-center mt-6"> + + <div className="w-full md:w-1/2 h-[300px] md:h-[350px] flex justify-center "> + <img + src="https://i.ibb.co/m6VC4xg/Online-report-bro.png" + alt="" + className="h-full" + /> + </div> + <div className="w-full md:w-1/2"> + + <form + onSubmit={handleSubmit} + className=" flex flex-col justify-center gap-4 h-[500px]" + > + <input + required + type="text" + name="name" + value={name} + onChange={(e) => setName(e.target.value)} + placeholder="Enter your name" + className="px-4 py-3 outline-none rounded-lg text-lg border-2 bg-gray-50 dark:bg-slate-950" + /> + <input + required + type="text" + name="email" + value={email} + onChange={(e) => setEmail(e.target.value)} + placeholder="Enter your email" + className="px-4 py-3 outline-none rounded-lg text-lg border-2 bg-gray-50 dark:bg-slate-950" + /> + <textarea + required + name="message" + placeholder="Enter your message..." + rows="6" + value={message} + onChange={(e) => setMessage(e.target.value)} + className="px-4 py-3 outline-none rounded-lg text-lg border-2 bg-gray-50 dark:bg-slate-950" + ></textarea> + + <div className="flex w-full justify-end p-2"> + <button value="Send" type="submit" className="btn px-5 py-3"> + Send <FiSend className="text-lg" /> + </button> + </div> + </form> + </div> + </div> + </section> + </div> + ); +}; + +export default Contact; diff --git a/src/components/Pages/Dashboard/Calendarui/CalendarHeader.jsx b/src/components/Pages/Dashboard/Calendarui/CalendarHeader.jsx new file mode 100644 index 0000000..91dc24f --- /dev/null +++ b/src/components/Pages/Dashboard/Calendarui/CalendarHeader.jsx @@ -0,0 +1,83 @@ +import React, { useContext } from "react"; +import { FaArrowLeft, FaArrowRight } from "react-icons/fa"; +import GlobalContext from "../../../../context/GlobalContext"; +import { RiCalendarTodoFill } from "react-icons/ri"; +import dayjs from "dayjs"; + +const CalendarHeader = () => { + const { year, monthIndex, setMonthIndex } = useContext(GlobalContext); + + function handlePrevMonth() { + setMonthIndex(monthIndex - 1); + } + + function handleNextMonth() { + setMonthIndex(monthIndex + 1); + } + + function handleReset() { + const currentDate = dayjs(); + setMonthIndex(currentDate.month()); + } + + const months = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ]; + return ( + <div> + <div className="dark:text-[#73e9fe] text-[#010ca1] "> + <div className=" py-2"> + <div className="dark:text-[#73e9fe] text-[#010ca1] "> + <div className=" py-2 mt-4"> + <div className="flex justify-between items-center pb-2"> + <h1 className="text-3xl pb-2 font-semibold">Check Out Plans</h1> + </div> + <hr className="w-full h-1 bg-gradient-to-r from-[#0c01a1] to-[#73e9fe]" /> + </div> + </div> + <div className="px-4 py-2 flex justify-between items-center"> + <div className="flex items-center"> + <RiCalendarTodoFill className="w-12 h-10" /> + <h2 className="text-xl font-bold mx-2"> + {months[monthIndex]} {year} + </h2> + </div> + <div className="flex items-center"> + <button + onClick={handleReset} + className="border border-slate-400 rounded py-2 px-4 mr-5" + > + Today + </button> + <div className="flex items-center"> + <button onClick={handlePrevMonth}> + <span className="cursor-pointer"> + <FaArrowLeft /> + </span> + </button> + <button className="mx-2" onClick={handleNextMonth}> + <span className="cursor-pointer"> + <FaArrowRight /> + </span> + </button> + </div> + </div> + </div> + </div> + </div> + </div> + ); +}; + +export default CalendarHeader; diff --git a/src/components/Pages/Dashboard/Calendarui/Calendarui.jsx b/src/components/Pages/Dashboard/Calendarui/Calendarui.jsx index 4d729a6..96dbc10 100644 --- a/src/components/Pages/Dashboard/Calendarui/Calendarui.jsx +++ b/src/components/Pages/Dashboard/Calendarui/Calendarui.jsx @@ -1,14 +1,35 @@ -import React, { useState } from "react"; -import Calendar from "react-calendar"; - +import { useState, useEffect, useContext } from "react"; +import Sidebar from "./Sidebar"; +import CalendarHeader from "./CalendarHeader"; +import Month from "./Month"; +import { getMonth } from "../../../../Utils/Util"; +import GlobalContext from "../../../../context/GlobalContext"; +import { useParams } from "react-router-dom"; const Calendarui = () => { - const [date, setDate] = useState(new Date()); - const onChange = (date) => { - setDate(date); - }; + const [currentMonth, setCurrentMonth] = useState(getMonth()); + const [timelineEvents, setTimelineEvents] = useState([]); + const { monthIndex } = useContext(GlobalContext); + const { id } = useParams(); + + useEffect(() => { + setCurrentMonth(getMonth(monthIndex)); + }, [monthIndex]); + + useEffect(() => { + fetch( + `https://projectsyncifyapi.onrender.com/workspace/get-timeline-dates/${id}/` + ) + .then((response) => response.json()) + .then((data) => setTimelineEvents(data)) + .catch((error) => console.error("Error fetching timeline data:", error)); + }, []); + return ( - <div className="flex justify-center items-center mt-10 h-screen"> - <Calendar onChange={onChange} value={date} /> + <div className="h-full flex flex-col"> + <CalendarHeader /> + <div className="flex "> + <Month month={currentMonth} timelineEvents={timelineEvents} /> + </div> </div> ); }; diff --git a/src/components/Pages/Dashboard/Calendarui/Day.jsx b/src/components/Pages/Dashboard/Calendarui/Day.jsx new file mode 100644 index 0000000..951f414 --- /dev/null +++ b/src/components/Pages/Dashboard/Calendarui/Day.jsx @@ -0,0 +1,67 @@ +import React from "react"; +import dayjs from "dayjs"; +import isBetween from "dayjs/plugin/isBetween"; + +dayjs.extend(isBetween); + +const Day = ({ day, rowIdx, timelineEvents }) => { + const startEventsOnDay = timelineEvents.filter((event) => + dayjs(day).isSame(dayjs(event.start_Date), 'day') + ); + + const endEventsOnDay = timelineEvents.filter((event) => + dayjs(day).isSame(dayjs(event.end_Date), 'day') + ); + + + const colors1 = ["#4CAF50"]; + const colors = ["#FF5733"]; + return ( + <div className="relative border border-gray-200 flex flex-col h-32"> + <header className="flex flex-col justify-center items-center relative"> + {rowIdx === 0 && ( + <div className="w-full text-center"> + <p className="text-sm bg-[#e9fcff] dark:bg-[#1d2a42] border-2 border-gray-300 font-bold opacity-80"> + {day?.format("ddd").toUpperCase()} + </p> + </div> + )} + <p className="text-sm px-2 pt-1 text-center">{day?.format("DD")}</p> + </header> + <div className="relative flex flex-col items-center mt-1 flex-grow"> + {startEventsOnDay.map((event, index) => ( + <div + key={index} + className="w-[25%] h-1 opacity-80" + style={{ + top: `${index * 10}px`, + backgroundColor: colors1[index % colors1.length], + margin: "1px 0", + borderRadius: "2px", + zIndex: 10, + }} + title={`Start: ${event.name}`} + > + + </div> + ))} + {endEventsOnDay.map((event, index) => ( + <div + key={index} + className="w-[25%] h-1 opacity-80" + style={{ + top: `${(startEventsOnDay.length + index) * 10}px`, + backgroundColor: colors[index % colors.length], + margin: "1px 0", + borderRadius: "2px", + zIndex: 10, + }} + title={`End: ${event.name}`} + ></div> + ))} + </div> + </div> + ); +}; + +export default Day; diff --git a/src/components/Pages/Dashboard/Calendarui/Month.jsx b/src/components/Pages/Dashboard/Calendarui/Month.jsx new file mode 100644 index 0000000..728cf10 --- /dev/null +++ b/src/components/Pages/Dashboard/Calendarui/Month.jsx @@ -0,0 +1,40 @@ +import React, { useContext } from "react"; +import dayjs from "dayjs"; +import GlobalContext from "../../../../context/GlobalContext"; +import Day from "./Day"; // Adjust the path as needed + +const Calendar = ({ timelineEvents }) => { + const { year, monthIndex } = useContext(GlobalContext); + + const generateMonth = (monthIndex, year) => { + const firstDayOfMonth = dayjs(new Date(year, monthIndex, 1)); + const lastDayOfMonth = dayjs(new Date(year, monthIndex + 1, 0)); + const daysInMonth = []; + + let currentDay = firstDayOfMonth.startOf("week"); + + while (currentDay.isBefore(lastDayOfMonth.endOf("week"))) { + daysInMonth.push(currentDay); + currentDay = currentDay.add(1, "day"); + } + + return daysInMonth; + }; + + const daysInMonth = generateMonth(monthIndex, year); + + return ( + <div className="grid grid-cols-7 w-full gap-1"> + {daysInMonth.map((day, i) => ( + <Day + key={i} + day={day} + rowIdx={Math.floor(i / 7)} + timelineEvents={timelineEvents} + /> + ))} + </div> + ); +}; + +export default Calendar; diff --git a/src/components/Pages/Dashboard/Calendarui/Sidebar.jsx b/src/components/Pages/Dashboard/Calendarui/Sidebar.jsx new file mode 100644 index 0000000..55683fc --- /dev/null +++ b/src/components/Pages/Dashboard/Calendarui/Sidebar.jsx @@ -0,0 +1,7 @@ +import React from "react"; + +const Sidebar = () => { + return <div></div>; +}; + +export default Sidebar; diff --git a/src/components/Pages/Dashboard/Dashboard.jsx b/src/components/Pages/Dashboard/Dashboard.jsx index 46d43c7..1d8f4af 100644 --- a/src/components/Pages/Dashboard/Dashboard.jsx +++ b/src/components/Pages/Dashboard/Dashboard.jsx @@ -32,7 +32,7 @@ const Dashboard = ({ sidebarToggle, setSidebarToggle }) => { // </div> <AuthProviders> - <div className="bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe] "> + <div className="bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe] "> <div className="flex flex-col"> <Navbar handleThemeChange={handleThemeChange} /> <div className="w-1/4 "> diff --git a/src/components/Pages/Dashboard/Navbar.jsx b/src/components/Pages/Dashboard/Navbar.jsx index 4511ed8..04c01b1 100644 --- a/src/components/Pages/Dashboard/Navbar.jsx +++ b/src/components/Pages/Dashboard/Navbar.jsx @@ -1,18 +1,17 @@ -import React, { useContext } from 'react'; -// import { FaBars, FaBell, FaSearch, FaUserCircle } from 'react-icons/fa'; -import { FaBars } from 'react-icons/fa'; +import { useContext, useEffect, useState } from 'react'; import axiosInstance from './../../../Utils/axiosInstance'; import { Link, useNavigate } from 'react-router-dom'; import { AuthContext } from '../../../Providers/AuthProviders/AuthProviders'; import { toast } from 'react-toastify'; -import { FaBell, FaSearch, FaUserCircle } from 'react-icons/fa'; +import { FaUserCircle } from 'react-icons/fa'; const Navbar = ({ sidebarToggle, setSidebarToggle, handleThemeChange }) => { const navigate = useNavigate(); const { user } = useContext(AuthContext); console.log({ user }) + const [profile, setProfile] = useState(null); const handleLogout = async () => { const refresh = JSON.parse(localStorage.getItem('refresh')) @@ -27,62 +26,107 @@ const Navbar = ({ sidebarToggle, setSidebarToggle, handleThemeChange }) => { toast.warning("logout successful") } } + const handleProfile = () => { + console.log("profile button clicked"); + navigate("/profile"); + }; + + + const [menuVisible, setMenuVisible] = useState(false); + + const handleToggleMenu = () => { + setMenuVisible(!menuVisible); + }; + + + const handleMenuClick = (action) => { + action(); + setMenuVisible(false); + }; + + + useEffect(() => { + if (user && user.userId) { + fetch(`https://projectsyncifyapi.onrender.com/api/v1/user/details/${user.userId}/`) + .then((res) => { + if (!res.ok) { + throw new Error('Network response was not ok'); + } + return res.json(); + }) + .then((data) => { + console.log(data); + setProfile(data); + }) + .catch((error) => { + console.error('Error fetching profile:', error); + }); + } + }, [user]); return ( - <div className ="mx-auto sm:max-w-xl md:max-w-full lg:max-w-screen-xl p-4" > - <nav className='flex justify-between items-center gap-10 backdrop-filter backdrop-blur-3xl mb-10 fixed top-0 left-0 z-50 w-full h-20 px-3'> - <div className='flex items-center text-xl'> - - <a href="/"> - <img src={"https://i.ibb.co/T4FSNsb/Justlogo.png"} className="w-14 h-12 " alt="logo" /> - </a> - <a href="/"> - <h1 className="text-2xl font-bold italic ">Project Syncify</h1> - </a> + <div className="mx-auto sm:max-w-xl md:max-w-full lg:max-w-screen-xl p-4" > + <nav className='flex justify-between items-center gap-10 backdrop-filter backdrop-blur-3xl mb-10 fixed top-0 left-0 z-50 w-full h-20 px-3 bg-gradient-to-r from-blue-200 dark:from-blue-900 to-blue-50 dark:to-black'> + <div className='flex items-center text-xl'> + + <Link to="/"> + <img src={"https://i.ibb.co/T4FSNsb/Justlogo.png"} className="w-14 h-12 " alt="logo" /> + </Link> + <Link to="/"> + <h1 className="text-2xl font-bold italic ">Project Syncify</h1> + </Link> - </div> + </div> - <div className='flex items-center gap-x-5'> - {/* <div className='relative md:w-65'> + <div className='flex items-center gap-2 md:gap-x-3 mr-4'> + {/* <div className='relative md:w-65'> <span className='relative md:absolute inset-y-0 left-0 flex items-center pl-2'> <button className='p-1 focus:outline-none md:text-black'><FaSearch /></button> </span> <input type="text" className='w-full px-4 py-1 pl-12 rounded shadow outline-none hidden md:block' placeholder='Search' /> </div> */} - <div className='mt-1'> - <label className="swap swap-rotate "> - - <input type="checkbox" onChange={handleThemeChange} /> - - <svg className="swap-on fill-current w-6 h-6 md:w-8 md:h-8 text-[#8401A1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1,1,0,0,0,0-1.41l-.71-.71A1,1,0,0,0,4.93,6.34Zm12,.29a1,1,0,0,0,.7-.29l.71-.71a1,1,0,1,0-1.41-1.41L17,5.64a1,1,0,0,0,0,1.41A1,1,0,0,0,17.66,7.34ZM21,11H20a1,1,0,0,0,0,2h1a1,1,0,0,0,0-2Zm-9,8a1,1,0,0,0-1,1v1a1,1,0,0,0,2,0V20A1,1,0,0,0,12,19ZM18.36,17A1,1,0,0,0,17,18.36l.71.71a1,1,0,0,0,1.41,0,1,1,0,0,0,0-1.41ZM12,6.5A5.5,5.5,0,1,0,17.5,12,5.51,5.51,0,0,0,12,6.5Zm0,9A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z" /></svg> - - {/* moon icon */} - <svg className="swap-off fill-current w-6 h-6 md:w-8 md:h-8 text-[#8401A1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z" /></svg> - - </label> - </div> - - {/* <div className=''><FaBell className='w-6 h-6 ' /></div> */} - - <div className='relative'> - { - user ? <> <button className=' group '> - <FaUserCircle className='w-6 h-6 mt-1' /> - <div className='z-10 absolute hidden bg-slate-100 dark:bg-slate-900 rounded-lg shadow w-32 group-focus:block top-full right-0'> - <ul className='py-2 text-sm'> - <li><a href="">Profile</a></li> - <li><a href="">Setting</a></li> - <li onClick={handleLogout}>Logout</li> - </ul> - </div> - </button></> - : <><Link to={'/login'} className='text-white'><FaUserCircle className='w-6 h-6 mt-1' /></Link></> - } + <div className='mt-1'> + <label className="swap swap-rotate "> + + <input type="checkbox" onChange={handleThemeChange} /> + + <svg className="swap-on fill-current w-8 h-8 md:w-10 md:h-10 text-[#0c01a1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1,1,0,0,0,0-1.41l-.71-.71A1,1,0,0,0,4.93,6.34Zm12,.29a1,1,0,0,0,.7-.29l.71-.71a1,1,0,1,0-1.41-1.41L17,5.64a1,1,0,0,0,0,1.41A1,1,0,0,0,17.66,7.34ZM21,11H20a1,1,0,0,0,0,2h1a1,1,0,0,0,0-2Zm-9,8a1,1,0,0,0-1,1v1a1,1,0,0,0,2,0V20A1,1,0,0,0,12,19ZM18.36,17A1,1,0,0,0,17,18.36l.71.71a1,1,0,0,0,1.41,0,1,1,0,0,0,0-1.41ZM12,6.5A5.5,5.5,0,1,0,17.5,12,5.51,5.51,0,0,0,12,6.5Zm0,9A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z" /></svg> + + {/* moon icon */} + <svg className="swap-off fill-current w-8 h-8 md:w-10 md:h-10 text-[#0c01a1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z" /></svg> + + </label> + </div> + + {/* <div className=''><FaBell className='w-6 h-6 ' /></div> */} + + <div className='relative'> + { + user ? <> <button className=' group ' onClick={handleToggleMenu}> + + <img src={profile?.image} alt="image" className='w-8 md:w-10 h-8 md:h-10 rounded-full' /> + {/* <FaUserCircle /> */} + {menuVisible && ( + <div className='z-10 absolute bg-slate-100 dark:bg-slate-900 rounded-lg shadow w-20 top-full right-0'> + <ul className='py-2 text-sm text-left px-4'> + <li onClick={() => handleMenuClick(handleProfile)} className='hover:font-bold'> + Profile + </li> + <li onClick={() => handleMenuClick(handleLogout)} className='hover:font-bold'> + Logout + </li> + </ul> + </div> + )} + + </button></> + : <><Link to='/login' className='text-white'><FaUserCircle className='w-6 h-6 mt-1' /></Link></> + } + </div> </div> - </div> - </nav> + </nav> </div> ); }; diff --git a/src/components/Pages/Dashboard/Sidebar.jsx b/src/components/Pages/Dashboard/Sidebar.jsx index c3d640b..ee4a084 100644 --- a/src/components/Pages/Dashboard/Sidebar.jsx +++ b/src/components/Pages/Dashboard/Sidebar.jsx @@ -12,7 +12,7 @@ const Sidebar = ({ sidebarToggle }) => { <div className={`${ sidebarToggle ? "hidden" : "block" - } w-40 md:w-60 bg-gradient-to-b from-[#73e9fe] dark:from-[#8401A1] to-[#78118f] dark:to-[#73e9fe] absolute top-20 left-0 h-full px-4 py-2`} + } w-40 md:w-60 bg-gradient-to-b from-[#73e9fe] dark:from-[#0c01a1] to-[#78118f] dark:to-[#73e9fe] absolute top-20 left-0 h-full px-4 py-2`} > <img src="../../../assets/control.png" className="absolute cursor-pointer rounded-full -right-3 top-9 w-7 border-2 "/> <div className="my-2 mb-4"> diff --git a/src/components/Pages/DynamicDashboard/DynamicDashboard.jsx b/src/components/Pages/DynamicDashboard/DynamicDashboard.jsx index 46c4336..6d10b8a 100644 --- a/src/components/Pages/DynamicDashboard/DynamicDashboard.jsx +++ b/src/components/Pages/DynamicDashboard/DynamicDashboard.jsx @@ -27,14 +27,14 @@ const DynamicDashboard = () => { return ( <AuthProviders> - <div className="bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]"> + <div className="bg-white dark:bg-gray-950 text-[#0c01a1] dark:text-[#73e9fe] min-h-screen"> <div className="flex flex-col"> <Navbar handleThemeChange={handleThemeChange} sidebarToggle={sidebarToggle} setSidebarToggle={setSidebarToggle}/> {/* <Navbar/> */} - <div className={`${sidebarToggle ? "w-20" : "w-1/4"}`}> + <div className={`${sidebarToggle ? "w-20" : "w-1/4"} h-full`}> <DynamicSidebar id={id} sidebarToggle={sidebarToggle} setSidebarToggle={setSidebarToggle}/> </div> - <div className={`${sidebarToggle ? "w-10/12 md:w-11/12 px-4 ml-20 md:ml-24 " : "w-9/12 md:w-3/4 ml-24 md:ml-64"} relative pt-10` }> + <div className={`${sidebarToggle ? "w-10/12 md:w-11/12 px-4 ml-20 md:ml-24 " : "w-9/12 md:w-3/4 ml-24 md:ml-64"} relative pt-10 ` }> <Outlet /> </div> </div> diff --git a/src/components/Pages/DynamicDashboard/DynamicSidebar.jsx b/src/components/Pages/DynamicDashboard/DynamicSidebar.jsx index c6f6cee..1b25494 100644 --- a/src/components/Pages/DynamicDashboard/DynamicSidebar.jsx +++ b/src/components/Pages/DynamicDashboard/DynamicSidebar.jsx @@ -9,6 +9,9 @@ import { useEffect, useState } from "react"; import axios from "axios"; import { AiFillPrinter } from "react-icons/ai"; import { GoTasklist } from "react-icons/go"; +import { RiCalendarTodoFill } from "react-icons/ri"; +import { MdInsights } from "react-icons/md"; + const DynamicSidebar = ({ sidebarToggle, setSidebarToggle, id }) => { const [open, setOpen] = useState(false); @@ -19,7 +22,7 @@ const DynamicSidebar = ({ sidebarToggle, setSidebarToggle, id }) => { const getLinkClass = (path) => { return location.pathname === path - ? "bg-blue-500 text-white dark:text-[#8401A1] dark:bg-white" + ? "bg-[#0c01a1] text-white dark:text-[#0c01a1] dark:bg-[#73e9fe]" : "text-black dark:text-white"; }; @@ -47,9 +50,10 @@ const DynamicSidebar = ({ sidebarToggle, setSidebarToggle, id }) => { console.log('sidebar toggle from dynamic sidebar -> ', sidebarToggle); return ( - <div + <div className=""> + <div className={`${open ? "w-20" : "block w-20 md:w-56" - } absolute top-20 left-0 h-full px-4 py-2 border-r border-gray-300`} + } absolute top-20 left-0 px-4 py-2 border-r border-gray-300`} > {open ? ( <FaArrowRight @@ -62,7 +66,7 @@ const DynamicSidebar = ({ sidebarToggle, setSidebarToggle, id }) => { className="absolute cursor-pointer rounded-full -right-3 top-9 w-5 h-5 border-2 text-xs" /> )} - <div className="my-2 mb-4"> + <div className="my-2 mt-8 mb-2"> <h1 className={`${open? "text-xs font-semibold " : "text-xs md:text-lg font-bold text-center"}`}> {open ? workspaceDetails?.name.slice(0, 20) : workspaceDetails?.name} </h1> @@ -75,19 +79,19 @@ const DynamicSidebar = ({ sidebarToggle, setSidebarToggle, id }) => { {!open && <span className="hidden md:inline">Home</span>} </Link> </li> - <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass(`/workspace/${id}/profile`)}`}> + {/* <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass(`/workspace/${id}/profile`)}`}> <Link to={`/workspace/${id}/profile`} className="px-3"> <CgProfile className="inline-block w-6 h-6 mr-2 -mt-2" /> {!open && <span className="hidden md:inline">Profile</span>} </Link> - </li> + </li> */} <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass(`/workspace/${id}`)}`}> <Link to={`/workspace/${id}`} className="px-3"> <IoPeopleSharp className="inline-block w-6 h-6 mr-2 -mt-2" /> {!open && <span className="hidden md:inline" >Members</span>} </Link> </li> - <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass("/timeline")}`}> + <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass(`/workspace/${id}/plans`)}`}> <Link to={`/workspace/${id}/plans`} className="px-3"> <CiViewTimeline className="inline-block w-6 h-6 mr-2 -mt-2" /> {!open && <span className="hidden md:inline">Plans</span>} @@ -113,12 +117,19 @@ const DynamicSidebar = ({ sidebarToggle, setSidebarToggle, id }) => { </li> <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass(`/workspace/${id}/calendar`)}`}> <Link to={`/workspace/${id}/calendar`} className="px-3"> - <SlCalender className="inline-block w-6 h-6 mr-2 -mt-2" /> + <RiCalendarTodoFill className="inline-block w-6 h-6 mr-2 -mt-2" /> {!open && <span className="hidden md:inline">Calendar</span>} </Link> </li> + <li className={`mb-2 rounded hover:shadow py-2 ${getLinkClass(`/workspace/${id}/inside`)}`}> + <Link to={`/workspace/${id}/inside`} className="px-3"> + <MdInsights className="inline-block w-6 h-6 mr-2 -mt-2" /> + {!open && <span className="hidden md:inline">Insights</span>} + </Link> + </li> </ul> </div> + </div> ); }; diff --git a/src/components/Pages/DynamicDashboard/Member.jsx b/src/components/Pages/DynamicDashboard/Member.jsx index 6a9e84c..6da00c4 100644 --- a/src/components/Pages/DynamicDashboard/Member.jsx +++ b/src/components/Pages/DynamicDashboard/Member.jsx @@ -1,302 +1,389 @@ -import axios from 'axios'; -import Lottie from 'lottie-react'; -import { useEffect, useState } from 'react'; -import { useParams } from 'react-router-dom'; -import { toast } from 'react-toastify'; +import axios from "axios"; +import Lottie from "lottie-react"; +import { useEffect, useState } from "react"; +import { Link, useParams } from "react-router-dom"; +import { toast } from "react-toastify"; import MemberAni from "../../../../public/member.json"; import { MdDeleteForever } from 'react-icons/md'; import { IoPeopleSharp } from "react-icons/io5"; import { FaRegEdit, FaSearch } from 'react-icons/fa'; import TitlePages from '../../../pages/shared/TitlePages'; import TitleDynamic from '../../../pages/shared/TitleDynamic'; + + const Member = () => { - const [members, setMembers] = useState([]); - const [change, setChange] = useState(false) - const { id } = useParams(); - console.log({ id }) + const [members, setMembers] = useState([]); + const [change, setChange] = useState(false); + const { id } = useParams(); + // console.log({ id }); + + const newMember = { + workspace_Name: "", + role: "", + email: "", + }; + + const handleCloseModelButton = (value) => { + document.getElementById(value).close(); + }; + + const handleAddUserButton = async (e) => { + e.preventDefault(); + + newMember.workspace_Name = id; + newMember.role = e.target.userType.value; + newMember.email = e.target.email.value; + + if(!newMember.workspace_Name){ + toast.warning("Please reload page..."); + return + } + else if(!newMember.role){ + toast.warning("Please select role for this user..."); + return; + } + else if(!newMember.email){ + toast.warning("Write user email"); + return + } + try { + const result = await axios.post( + `https://projectsyncifyapi.onrender.com/api/v2/workspace/members/add/`, + newMember + ); + // console.log("result -> ", result); + toast.success("Member Successfully Added"); + setChange(!change); + handleCloseModelButton("my_modal_3"); + } catch (error) { + if(error?.message === "Network Error"){ + toast.warning("Network connection failed.Check this network"); + } + // console.log("error -> ", error); + let err = error?.response?.data?.non_field_errors[0] + if(err){ + toast.warning(err) + } + } + }; + const [formData, setFormData] = useState({ + workspace_id: id, + userId: "", + user_email: "", + new_role: "", + } + ); + const [selectedTimeline, setSelectedTimeline] = useState(null); - const newMember = { - "workspace_Name": '', - "role": '', - "email": '', - } - const handleCloseModelButton = (value) => { - document.getElementById(value).close() - } - const handleAddUserButton = async (e) => { - e.preventDefault() - newMember.workspace_Name = id; - newMember.role = e.target.userType.value; - newMember.email = e.target.email.value; +const handleOpenDialog = (member, modalName) => { + + // console.log({member}) + setSelectedTimeline(member); + // console.log(member.user_id) - try { - const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v2/workspace/members/add/`, newMember) - console.log('result -> ', result) - toast.success("Member Successfully Added"); - setChange(!change); - handleCloseModelButton("my_modal_3") - } catch (error) { - console.log('error -> ', error) - } + setFormData({ + workspace_id: id, + userId: member.user_id, + user_email: member.user_email, + new_role: "", + user_id: "", + }); - } - const handleUpdateButton = async (e) => { - e.preventDefault() - const updateMember = { - "workspace_id": id, - "new_role": e.target.userType.value, - "user_id": e.target.user_id.value - } - - try { - const result = await axios.patch(`https://projectsyncifyapi.onrender.com/api/v2/workspace/members/change-role/`, updateMember - ) - - console.log('result -> ', result) - toast.success("Member Successfully Updated"); - setChange(!change); - handleCloseModelButton("edit") - } catch (error) { - console.log('error -> ', error) - } - } + document.getElementById("edit").showModal(); + }; - const handleDeleteMember = async (user_id) => { - console.log("user id -> ", user_id) - const convertIdToSring = id.toString() - console.log(typeof convertIdToSring) - const data = { workspace_id: convertIdToSring, user_id: user_id } - console.log("data -> ", data) - try { - const result = await axios.delete("https://projectsyncifyapi.onrender.com/api/v2/workspace/members/remove/", { data } - ) - console.log("delete member -> ", result) - toast.success("Successfully deleted member") - setChange(!change) - - } catch (error) { - - console.log("delete member error -> ", error) - } - } - function getBackgroundColor(role) { - switch (role) { - case 'Associate Manager': - return 'bg-[#8401A1] text-white'; - case 'Member': - return 'bg-[#007BFF] text-white'; - case 'Team Leader': - return 'bg-[#28A745] text-white'; - default: - return 'bg-gray-400 text-black'; - } - } + const handleChange = (e) => { + const { name, value } = e.target; + // console.log({name,value}) + setFormData(prevState => ({ + ...prevState, + [name]: value + })); + }; - useEffect(() => { - const getSpecificMembers = async () => { - try { - const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v2/workspace/${id}/members/`) - console.log("get member -> ", result.data) - setMembers(result.data) - } catch (error) { - console.log("get member error -> ", error) - } - } - - getSpecificMembers() - }, [change]) - - - const memberLength = members.length; - - - return ( - <div className="h-screen "> - - {/* <div className=" flex justify-center items-center gap-6"> - <div className="w-80 h-80"> - <Lottie animationData={MemberAni} loop={true} /> - </div> - <div className=" dark:text-[#73e9fe] text-[#8401A1] mt-6"> - <p className="text-3xl font-bold mb-1">Wanna Add New <br />Member?</p> - <p className="text-sm mb-4 text-black dark:text-white">For maintain your project progress. <br />Add your member and track your progress... <br />Click below<span className="font-extrabold font-2xl text-[#8401A1] dark:text-[#73e9fe]"> ↓↓ </span> and explore more.</p> - <button className="bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_3').showModal()}>Add Member</button> - </div> - - </div> */} - <dialog id="my_modal_3" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <form onSubmit={handleAddUserButton}> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => document.getElementById('my_modal_3').close()}>✕</button> - <h2 className="font-bold text-2xl text-center my-3">Create New Member</h2> - <div className="form-control"> - <label className="label" htmlFor="email"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Email</span> - </label> - <input type="email" id="email" name="email" placeholder="Enter Email Address" className="input input-bordered bg-slate-200 dark:bg-black" /> - </div> - <div className="form-control"> - <label className="label" htmlFor="userType"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Role</span> - </label> - <select id="userType" name="userType" className="select select-bordered bg-slate-200 dark:bg-black"> - <option value="Associate Manager">Associate Manager</option> - <option value="Team Leader">Team Leader</option> - <option value="Member">Member</option> - </select> - </div> - <div className="flex justify-center mt-6"> - <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-2" type="submit">Add Member</button> - </div> - </form> - </div> - - </dialog> - <div className='dark:text-[#73e9fe] text-[#8401A1] '> - <div className=" py-2"> - <div className="flex justify-between items-center pb-2"> - <h1 className="text-3xl pb-2 font-semibold "> - Member - </h1> - <button className="bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_3').showModal()}>Add Member</button> - </div> - - <hr className="w-full h-1 bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] " /> - <p className="text-sm font-semibold mt-2 text-black dark:text-white "> - To ensure seamless progress tracking and maintenance of your project, incorporate team members into your project structure. Assign distinct roles to each member to streamline collaboration and enhance accountability throughout the project lifecycle. Add member and explore more. - </p> - </div> - {/* <TitleDynamic title="Member" subTitle="To ensure seamless progress tracking and maintenance of your project, incorporate team members into your project structure. Assign distinct roles to each member to streamline collaboration and enhance accountability throughout the project lifecycle. Add member and explore more. " /> */} + + const handleUpdateButton = async (e) => { + e.preventDefault(); + const updateMember = { + workspace_id: Number(id), + new_role: e.target.userType.value, + user_id: formData.userId, + }; + + // console.log({updateMember}) + + + try { + const result = await axios.patch( + `https://projectsyncifyapi.onrender.com/api/v2/workspace/members/change-role/`, + updateMember + ); + + // console.log("result -> ", result); + toast.success("Member Successfully Updated"); + setChange(!change); + handleCloseModelButton("edit"); + } catch (error) { + console.log("error -> ", error); + } + }; + + const handleDeleteMember = async (user_id) => { + // console.log("user id -> ", user_id); + const convertIdToSring = id.toString(); + // console.log(typeof convertIdToSring); + const data = { workspace_id: convertIdToSring, user_id: user_id }; + // console.log("data -> ", data); + try { + const result = await axios.delete( + "https://projectsyncifyapi.onrender.com/api/v2/workspace/members/remove/", + { data } + ); + // console.log("delete member -> ", result); + toast.success("Successfully deleted member"); + setChange(!change); + } catch (error) { + console.log("delete member error -> ", error); + } + }; + function getBackgroundColor(role) { + switch (role) { + case 'Associate Manager': + return 'bg-[#AF47D2] text-white'; + case 'Member': + return 'bg-[#007BFF] text-white'; + case 'Team Leader': + return 'bg-[#006769] text-white'; + default: + return 'bg-gray-400 text-black'; + } + } + + + useEffect(() => { + const getSpecificMembers = async () => { + try { + const result = await axios.get( + `https://projectsyncifyapi.onrender.com/api/v2/workspace/${id}/members/` + ); + // console.log("get member -> ", result.data); + setMembers(result.data); + } catch (error) { + console.log("get member error -> ", error); + } + }; + + getSpecificMembers(); + }, [change]); + + const memberLength = members.length; + + return ( + <div className="h-screen text-black dark:text-white"> + + + <dialog id="my_modal_3" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button + id="closeBtn" + className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" + onClick={() => document.getElementById("my_modal_3").close()} + > + ✕ + </button> + <h2 className="font-bold text-2xl text-center my-3 dark:text-[#73e9fe] text-[#0c01a1]"> + Create New Member + </h2> + <form onSubmit={handleAddUserButton}> + + <div className="form-control"> + <label className="label" htmlFor="email"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]"> + Email + </span> + </label> + <input + type="email" + id="email" + name="email" + placeholder="Enter Email Address" + className="input input-bordered bg-slate-200 dark:bg-black" + /> </div> - <div className='flex flex-col md:flex-row justify-between items-center my-6 gap-2 '> - <div> - {memberLength === 0 && <><div className='flex justify-center items-center gap-2'> - <IoPeopleSharp className='text-3xl text-[#8401A1] dark:text-[#73e9fe]'/> - <h2 className='text-xl font-bold '> No Member Found, Add Member!</h2> - </div></>} - </div> - <div className='relative md:w-65 flex items-center '> - <input type="text" className='w-full px-4 py-1 rounded shadow outline-none bg-white dark:bg-black ' placeholder='Search' /> - <button className='p-1 m-2 focus:outline-none '><FaSearch /></button> - </div> - {/* <div> - <button className="bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_3').showModal()}>Add Member</button> - </div> */} + <div className="form-control"> + <label className="label" htmlFor="userType"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]"> + Role + </span> + </label> + <select + id="userType" + name="userType" + className="select select-bordered bg-slate-200 dark:bg-black" + > + <option value="Associate Manager">Associate Manager</option> + <option value="Team Leader">Team Leader</option> + <option value="Member">Member</option> + </select> </div> - {/* <h2 className='m-4 text-5xl text-center '>User List </h2> */} - - { - memberLength > 0 && ( - <div className="overflow-x-auto shadow-xl rounded w-full "> - <table className="table"> - {/* head */} - <thead className=' text-sm text-[#8401A1] dark:text-[#73e9fe]'> - <tr className='text-center'> - - <th>Name</th> - <th>Email</th> - <th>Role</th> - <th>Edit Member</th> - <th>Delete Member</th> - - </tr> - </thead> - <tbody> - {/* row 1 */} - { - members?.map(member => - <tr key={member.user_id} className="text-center"> - <td> - <div className="flex items-center gap-3 justify-center"> - <div className="avatar"> - <div className="rounded-full w-8 h-8"> - <img src="https://img.daisyui.com/tailwind-css-component-profile-2@56w.png" alt="member image" /> - </div> - </div> - <div> - <div className="font-bold">{member.user_name}</div> - </div> - </div> - </td> - <td> - {member.user_email} - {/* <br /> + + <div className="flex justify-center mt-6"> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-2" type="submit">Add Member</button> + </div> + + + </form> + </div> + + </dialog> + <div className='dark:text-[#73e9fe] text-[#010ca1] '> + <div className=" py-2 mt-4 "> + <div className="flex justify-between items-center pb-2"> + <h1 className="text-3xl pb-2 font-semibold "> + Member + </h1> + + <button className="bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_3').showModal()}>Add Member</button> + </div> + + <hr className="w-full h-1 bg-gradient-to-r from-[#0c01a1] to-[#73e9fe] " /> + <p className="text-sm font-semibold mt-2 text-black dark:text-white "> + To ensure seamless progress tracking and maintenance of your project, incorporate team members into your project structure. Assign distinct roles to each member to streamline collaboration and enhance accountability throughout the project lifecycle. Add member and explore more. + </p> + </div> + {/* <TitleDynamic title="Member" subTitle="To ensure seamless progress tracking and maintenance of your project, incorporate team members into your project structure. Assign distinct roles to each member to streamline collaboration and enhance accountability throughout the project lifecycle. Add member and explore more. " /> */} + </div> + <div className='flex flex-col md:flex-row justify-between items-center my-6 gap-2 '> + <div> + {memberLength === 0 && <><div className='flex justify-center items-center gap-2'> + <IoPeopleSharp className='text-3xl text-[#0c01a1] dark:text-[#73e9fe]' /> + <h2 className='text-xl font-bold '> No Member Found, Add Member!</h2> + </div></>} + </div> + <div className='relative md:w-65 flex items-center '> + <input type="text" className='w-full px-4 py-1 rounded shadow outline-none bg-white dark:bg-black ' placeholder='Search' /> + <button className='p-1 m-2 focus:outline-none '><FaSearch /></button> + </div> + {/* <div> + <button className="bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_3').showModal()}>Add Member</button> + </div> */} + </div> + {/* <h2 className='m-4 text-5xl text-center '>User List </h2> */} + + { + memberLength > 0 && ( + <div className="overflow-x-auto shadow-xl rounded w-full "> + <table className="table"> + {/* head */} + <thead className=' text-sm text-[#0c01a1] dark:text-[#73e9fe]'> + <tr className='text-center'> + + <th>Name</th> + <th>Email</th> + <th>Role</th> + <th>Edit Member</th> + <th>Delete Member</th> + + </tr> + </thead> + <tbody> + {/* row 1 */} + { + members?.map(member => + <tr key={member.user_id} className="text-center"> + <td> + <div className="flex items-center gap-3 "> + <div className="avatar"> + <div className="rounded-full w-8 h-8"> + <img src={member.user_image} alt="member image" /> + </div> + </div> + <div> + <Link to={`/profile/${member.user_id}`}>{member.user_name}</Link> + </div> + </div> + </td> + <td> + {member.user_email} + {/* <br /> <span className="badge badge-ghost badge-sm">{user.phone}</span> <span className="badge badge-ghost badge-sm">{user.email}</span> */} - </td> - {/* <td>{user.roll === 'admin' ? <button onClick={() => handleMakeUser(user)} className="btn btn-ghost bg-red-600 text-white ">Admin</button> + </td> + {/* <td>{user.roll === 'admin' ? <button onClick={() => handleMakeUser(user)} className="btn btn-ghost bg-red-600 text-white ">Admin</button> : <button onClick={() => handleMakeAdmin(user)} className="btn btn-ghost bg-red-600 text-white ">User</button>}</td> */} - <td className=""> - <p className={`px-1 py-1 rounded ${getBackgroundColor(member.role)}`}> - {member.role} - </p> - </td> - - <th> - {/* <Link to= {`/admin/admin/userDetails`} state={user} className="btn btn-accent p-2 m-2">details</Link> */} - {/* <button className="btn btn-neutral px-4 py-2">Edit</button> */} - - {/** Member edit button and model start */} - <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - <button className="mx-4" onClick={() => document.getElementById('edit').showModal()}> - <FaRegEdit className="text-xl" /> - </button> - <dialog id="edit" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <form onSubmit={handleUpdateButton}> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => document.getElementById('edit').close()}>✕</button> - <h2 className="text-2xl font-bold mb-4 text-center">Update Member Role</h2> - - <div className='form-control'> - <label htmlFor="email" className="label">Email</label> - <input type="email" id="email" name="email" value={member.user_email} className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Email" /> - </div> - <div className="form-control mb-4"> - <label htmlFor="email" className="label">User Id</label> - <input type="text" id="user_id" name="user_id" value={member.user_id} readOnly className="input input-bordered bg-slate-200 dark:bg-black" /> - - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">Role</label> - <select id="userType" name="userType" className="select select-bordered bg-slate-200 dark:bg-black"> - <option value="Associate Manager">Associate Manager</option> - <option value="Team Leader">Team Leader</option> - <option value="Member">Member</option> - </select> - </div> - <div className="flex justify-between my-4"> - <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-3">Update Member</button> - </div> - </form> - </div> - </dialog> - </th> - <th> - {/** Member edit button and model end */} - <button className="mx-4" onClick={() => handleDeleteMember(member.user_id)}> - <MdDeleteForever className="text-xl " /> - </button> - </th> - </tr> - ) - } - - </tbody> - {/* foot */} - {/* <tfoot> + <td className=""> + <p className={`px-1 py-1 rounded ${getBackgroundColor(member.role)}`}> + {member.role} + </p> + </td> + + <th> + {/* <Link to= {`/admin/admin/userDetails`} state={user} className="btn btn-accent p-2 m-2">details</Link> */} + {/* <button className="btn btn-neutral px-4 py-2">Edit</button> */} + + {/** Member edit button and model start */} + <button className='btn-ghost'> </button> + {/* You can open the modal using document.getElementById('ID').showModal() method */} + <button className="mx-4" onClick={() => handleOpenDialog(member, "edit")}> + <FaRegEdit className="text-xl" /> + </button> + <dialog id="edit" className="modal"> + <div className="modal-box bg-white dark:bg-black dark:text-[#73e9fe] text-[#2c01a1]"> + + <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#2c01a1] dark:text-[#73e9fe]" onClick={() => document.getElementById('edit').close()}>✕</button> + <h2 className="text-2xl font-bold mb-4 text-center">Update Member Role</h2> + + <form onSubmit={handleUpdateButton}> + + <div className='form-control'> + <label htmlFor="email" className="label">Email</label> + <input type="email" id="email" name="email" value={formData.user_email} className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Email" /> + </div> + <div className="form-control mb-4"> + <label htmlFor="email" className="label">User Id</label> + <input type="text" id="user_id" name="user_id" value={formData.userId} className="input input-bordered bg-slate-200 dark:bg-black" /> + + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Role</label> + <select id="userType" name="userType" className="select select-bordered bg-slate-200 dark:bg-black"> + <option value="Associate Manager">Associate Manager</option> + <option value="Team Leader">Team Leader</option> + <option value="Member">Member</option> + </select> + </div> + <div className="flex justify-between my-4"> + <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#2c01a1] text-white rounded w-full px-4 py-3">Update Member</button> + </div> + </form> + </div> + </dialog> + </th> + <th> + {/** Member edit button and model end */} + <button className="mx-4" onClick={() => handleDeleteMember(member.user_id)}> + <MdDeleteForever className="text-xl " /> + </button> + </th> + </tr> + ) + } + + </tbody> + {/* foot */} + {/* <tfoot> <tr > <th></th> <th>Name</th> @@ -305,15 +392,16 @@ const Member = () => { <th>Action</th> </tr> </tfoot> */} + </table> + </div> + )} + </div> + ); +} + +export default Member; + - </table> - </div> - ) - } - </div > - ); -}; -export default Member; \ No newline at end of file diff --git a/src/components/Pages/Export/Export.jsx b/src/components/Pages/Export/Export.jsx new file mode 100644 index 0000000..7a7e1f8 --- /dev/null +++ b/src/components/Pages/Export/Export.jsx @@ -0,0 +1,76 @@ +import Lottie from "lottie-react"; +import { useEffect } from "react"; +import { useState } from "react"; +import { useParams } from "react-router-dom"; +import pdfani from "../../../../public/pdf.json"; +import pdfani2 from "../../../../public/pdf2.json"; +import pdfanimation from "../../../../public/pdft.json"; +const Export = () => { + const [file, setFile] = useState(null); + const { id } = useParams(); + console.log({ id }); + + useEffect(() => { + fetch(`https://projectsyncifyapi.onrender.com/workspace/pdf/${id}/`) + .then((res) => res.blob()) + .then((data) => { + setFile(data); + console.log(data); + }); + }, [id]); + + const handleDownload = () => { + const link = document.createElement("a"); + link.href = URL.createObjectURL(file); + link.download = "document.pdf"; + link.click(); + }; + + + return ( + <div className="h-screen"> + <div className="py-2 mt-6"> + <div className="flex justify-between items-center pb-2"> + <h1 className="text-3xl pb-2 font-semibold"> + Export Project Documentation + </h1> + <button + className="bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold px-4 py-2 rounded-md" + onClick={handleDownload} title={"Download"} + > + Download + </button> + </div> + + <hr className="w-full h-1 bg-gradient-to-r from-[#0c01a1] to-[#73e9fe]" /> + <p className="text-sm font-semibold mt-2 text-black dark:text-white"> + Export all the data associated with your project. To keep a Documentation + of your project. With the workflow of your project. Thank you for + using our Project Syncify . + </p> + </div> + <div className="flex justify-center items-center"> + + <div className="hidden dark:flex justify-center items-center text-center"> + <div className="w-[480px]"> + <Lottie animationData={pdfanimation} loop={true} /> + + </div> + <div className="w-[480px]"> + <Lottie animationData={pdfani2} loop={true} /> + </div> + </div> + + <div className="w-[480px] dark:hidden"> + <Lottie animationData={pdfani} loop={true} /> + </div> + + + + </div> + + </div> + ); +}; + +export default Export; \ No newline at end of file diff --git a/src/components/Pages/Features/Features.jsx b/src/components/Pages/Features/Features.jsx new file mode 100644 index 0000000..1b925ae --- /dev/null +++ b/src/components/Pages/Features/Features.jsx @@ -0,0 +1,312 @@ +import { LuLayoutDashboard } from "react-icons/lu"; +import { TbClockCancel } from "react-icons/tb"; +import { CiViewBoard } from "react-icons/ci"; +import { FaRegCalendarCheck } from "react-icons/fa"; +import { GoProjectRoadmap } from "react-icons/go"; +import { FaRegUser } from "react-icons/fa"; +import { FaChalkboard } from "react-icons/fa"; +import { FaUserCheck } from "react-icons/fa"; +import { FaChalkboardUser } from "react-icons/fa6"; +import { MdAddTask, MdLeaderboard } from "react-icons/md"; +import { GrStatusUnknown } from "react-icons/gr"; +import { FaFolderPlus } from "react-icons/fa"; +import { CiSquareMore } from "react-icons/ci"; +import { LuClipboardSignature } from "react-icons/lu"; +import { MdOutlineTask } from "react-icons/md"; +import { IoChatbubbleEllipsesOutline, IoChatbubblesOutline, IoPersonAddOutline } from "react-icons/io5"; +import Lottie from "lottie-react"; +import Fea from "../../../../public/tasks.json"; +import { Link } from "react-router-dom"; // Correct import for page navigation + +const Features = () => { + return ( + <div className="px-10 py-20"> + <div className="text-center mt-3 mb-5"> + <div className="flex flex-col md:flex-row-reverse items-center justify-between mt-0 mb-10"> + <div className="w-full md:w-1/3 mx-10 text-center md:text-start"> + <h1 className="text-4xl text-blue-800 dark:text-[#73e9fe] font-bold">Project Syncify</h1> + <p className="text-sm my-2">Scroll down and learn more about us.</p> + <p className="text-sm my-2">Reach Out for any type of Inquiries, or Just to Say Hi!</p> + <p className="text-sm my-2">Thank you for visiting.</p> + </div> + <div className="w-full md:w-1/2 ml-10"> + <Lottie animationData={Fea} loop={true} /> + </div> + </div> + </div> + + {/* actions */} + <div className="my-10 grid grid-cols-1 md:grid-cols-4 gap-4"> + <div className="card col-span-2 flex justify-center gap-y-3 items-center rounded-lg shadow-md p-10 bg-gray-100 dark:bg-black text-center"> + <Link to="/workspace" > + <div className="flex flex-col items-center" title="Create a new project"> + <GoProjectRoadmap className="font-bold text-3xl" /> + <h1 className="text-lg">Project Create</h1> + </div> + </Link> + </div> + <div className="card flex justify-center gap-y-3 items-center rounded-lg shadow-md md:p-14 bg-gray-100 dark:bg-black"> + <FaRegUser className="font-bold text-3xl" /> + <h1 className="text-lg">Member add</h1> + </div> + <div className="card flex justify-center gap-y-3 items-center rounded-lg shadow-md py-10 md:py-14 px-6 md:px-10 bg-gray-100 dark:bg-black"> + <FaChalkboard className="font-bold text-3xl" /> + <h1 className="text-lg">Plans for board</h1> + </div> + <div className="card flex justify-center gap-y-3 items-center rounded-lg shadow-md py-10 md:py-14 px-6 md:px-10 bg-gray-100 dark:bg-black"> + <FaUserCheck className="font-bold text-3xl" /> + <h1 className="text-lg">Assign team lead</h1> + </div> + <div className="card flex justify-center gap-y-3 items-center rounded-lg shadow-md py-10 md:py-14 px-6 md:px-10 bg-gray-100 dark:bg-black"> + <FaChalkboardUser className="font-bold text-3xl" /> + <h1 className="text-lg">Board create</h1> + </div> + <div className="card flex justify-center gap-y-3 items-center rounded-lg shadow-md py-10 md:py-14 px-6 md:px-10 bg-gray-100 dark:bg-black"> + <MdAddTask className="font-bold text-3xl" /> + <h1 className="text-lg">Task assign</h1> + </div> + <div className="card flex justify-center gap-y-3 items-center rounded-lg shadow-md py-10 md:py-14 px-6 md:px-10 bg-gray-100 dark:bg-black"> + <GrStatusUnknown className="font-bold text-3xl" /> + <h1 className="text-lg">Task status</h1> + </div> + </div> + + {/* project management */} + <div className="my-20"> + <div className="flex flex-col md:flex-row justify-between items-center gap-2"> + <div className="w-full md:w-1/3 flex flex-col gap-3 text-left md:text-right"> + <div> + <h3 className="text-xl font-semibold dark:text-white"> + <span className=" md:hidden text-red-600 font-extrabold text-xl mr-2">.</span> + Role Based + <span className="hidden md:inline ml-2 text-red-600 font-extrabold text-xl">.</span> + </h3> + <p> + Advance project management with role-based access control. + Create a focus framework for setting and tracks workflow. + </p> + </div> + <div> + <h3 className="text-xl font-semibold dark:text-white"> + <span className=" md:hidden text-red-600 font-extrabold text-xl mr-2">.</span> + Drag & Drop + <span className="hidden md:inline ml-2 text-red-600 font-extrabold text-xl">.</span> + </h3> + <p> + Just drag and drop tasks to mark your progress. Easy to use. + </p> + </div> + <div> + <h3 className="text-xl font-semibold dark:text-white"> + <span className=" md:hidden text-red-600 font-extrabold text-xl mr-2">.</span> + Member Assign + <span className="hidden md:inline ml-2 text-red-600 font-extrabold text-xl">.</span> + </h3> + <p> + Assign member to the plans and explore more functionality. + </p> + </div> + </div> + <div className="md:h-[480px] w-full md:w-1/3 flex justify-center items-center"> + <img + src="https://i.ibb.co/SRMthdr/Project-Management.png" + className="h-full" + alt="Project Management" + /> + </div> + <div className="flex flex-col gap-3 w-full md:w-1/3 text-left"> + <div> + <h3 className="text-xl font-semibold dark:text-white"> + <span className="text-red-600 font-extrabold text-xl mr-2">.</span> + Calendar Plans View + </h3> + <p> + Gain deep insights, make data-driven decisions, and drive + performance improvements through advanced reporting. + </p> + </div> + <div className="mt-1"> + <h3 className="text-xl font-semibold dark:text-white"> + <span className="text-red-600 font-extrabold text-xl mr-2">.</span> + Advanced Chats + </h3> + <p> + Now you can chat with specific members in a board like group chat. Also can be used for private messaging. + </p> + </div> + <div className="mt-1"> + <h3 className="text-xl font-semibold dark:text-white"> + <span className="text-red-600 font-extrabold text-xl mr-2">.</span> + Export Document + </h3> + <p> + Download your project details pdf. + </p> + </div> + </div> + </div> + </div> + + {/* cards */} + <div className="my-10 grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4"> + <div className="px-8 py-5 border-2 rounded-md space-y-2 h-[250px]"> + <div className="flex justify-end"> + <FaFolderPlus className="text-4xl font-bold" /> + </div> + <div className="flex flex-col justify-center items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Project Title</h1> + <p> + Project title is more than just a label; it is the first + impression of your project and a concise summary of its purpose + and goals. + </p> + </div> + </div> + <div className="px-8 py-5 border-2 rounded-md space-y-2 h-[250px]"> + <div className="flex justify-end"> + <CiSquareMore className="text-4xl font-bold" /> + </div> + <div className="flex flex-col justify-end items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Project Details</h1> + <p> + Project details are the comprehensive information and + specifications that define the scope, objectives in a project. + </p> + </div> + </div> + <div className="px-8 py-5 border-2 rounded-md space-y-2 h-[250px]"> + <div className="flex justify-end"> + <LuClipboardSignature className="text-4xl font-bold" /> + </div> + <div className="flex flex-col justify-end items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Plans Create</h1> + <p> + Creating plans is an essential step in achieving goals, whether in professional, or organizational contexts. It serve as + roadmaps. + </p> + </div> + </div> + <div className="px-8 py-5 border-2 rounded-md space-y-3 h-[250px]"> + <div className="flex justify-end"> + <IoPersonAddOutline className="text-3xl font-bold" /> + </div> + <div className="flex flex-col justify-end items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Team Lead Assign</h1> + <p> + User whose role is team leader. Assign the user into the plan. + Team lead can create board and assign tasks to the other user. + </p> + </div> + </div> + <div className="px-8 py-5 border-2 rounded-md space-y-2 h-[250px]"> + <div className="flex justify-end"> + <MdLeaderboard className="text-4xl font-bold" /> + </div> + <div className="flex flex-col justify-end items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Project Insights</h1> + <p> + User can see a project overview by different type of recharts. + They can see the total member, plans & tasks. + </p> + </div> + </div> + <div className="px-8 py-5 border-2 rounded-md space-y-2 h-[250px]"> + <div className="flex justify-end"> + <MdOutlineTask className="text-4xl font-bold" /> + </div> + <div className="flex flex-col justify-end items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Task Assign</h1> + <p> + It is a crucial aspect, ensuring that work is distributed + among team members efficiently, and achieves goals + effectively. + </p> + </div> + </div> + <div className="px-8 py-5 border-2 rounded-md space-y-2 h-[250px]"> + <div className="flex justify-end"> + <IoChatbubblesOutline className="text-4xl font-bold" /> + </div> + <div className="flex flex-col justify-end items-start space-y-2 h-[120px]"> + <h1 className="text-xl font-semibold">Team Chat</h1> + <p> + Members of one board can easily connected to each other via our chatting features. They can discuss about task details. + </p> + </div> + </div> + + </div> + + {/* features section */} + <div> + <div className="flex my-20 sm:mb-5 md:md-2 justify-center items-center"> + <div className="w-full md:w-[300px] text-center md:text-center flex justify-center flex-col items-center gap-y-3"> + <div className="text-center"> + <LuLayoutDashboard className="text-2xl" /> + </div> + <h2 className="font-bold text-xl">Unique Dashboard</h2> + <p> + Utilize unique dashboard to stay updated, and fully maintained for + your workflows. + </p> + </div> + </div> + <div className="flex flex-col md:flex-row justify-between items-center gap-2 h-auto md:h-[400px]"> + <div className="w-full md:w-2/5 flex flex-col gap-14 text-center md:text-right"> + <div className="flex flex-col-reverse md:flex-row gap-3 justify-center items-center sm:items-start"> + <div className="w-full md:w-[300px] text-center md:text-end space-y-2"> + <h3 className="font-bold text-xl">Time Tracking</h3> + <p> + Now, you can track your workflow's time through our system. + </p> + </div> + <TbClockCancel className="text-3xl" /> + </div> + <div className="flex flex-col-reverse md:flex-row gap-3 justify-center items-center sm:items-start"> + <div className="w-80 md:w-[300px] text-center md:text-end space-y-2"> + <h3 className="font-bold text-xl">Fun Facts</h3> + <p> + Project Syncify is an innovative project management tool + designed to streamline team collaboration and enhance + productivity. + </p> + </div> + <CiViewBoard className="text-3xl" /> + </div> + </div> + <div className="w-full md:w-2/5 flex justify-center items-center my-10 md:mt-[-50px]"> + <img + src="https://i.ibb.co/6WFpG4s/feature-center-arrow.webp" + className="h-[280px]" + alt="Feature Center Arrow" + /> + </div> + <div className="w-full md:w-2/5 flex flex-col gap-14"> + <div className="flex flex-col md:flex-row gap-3 justify-center items-center sm:items-start"> + <FaRegCalendarCheck className="text-3xl" /> + <div className="w-full md:w-[300px] text-center md:text-start space-y-2"> + <h3 className="font-bold text-xl">Timeline Widget</h3> + <p> + Stay up to date with your work duration using our timeline + feature where you can see every work update. + </p> + </div> + </div> + <div className="flex flex-col md:flex-row gap-3 justify-center items-center sm:items-start"> + <IoChatbubbleEllipsesOutline className="text-3xl" /> + <div className="w-full md:w-[300px] text-center md:text-start space-y-2"> + <h3 className="font-bold text-xl">Chat Widget</h3> + <p> + Make it easier to interact with members of your workspace with + specific workspaces chat features. + </p> + </div> + </div> + </div> + </div> + </div> + </div> + ); +}; + +export default Features; diff --git a/src/components/Pages/Home/CustomerSection/CustomerSection.jsx b/src/components/Pages/Home/CustomerSection/CustomerSection.jsx index 0612166..a8015df 100644 --- a/src/components/Pages/Home/CustomerSection/CustomerSection.jsx +++ b/src/components/Pages/Home/CustomerSection/CustomerSection.jsx @@ -1,61 +1,130 @@ -import React from 'react'; import logo1 from "../../../../assets/logo1.png"; import logo2 from "../../../../assets/logo.jpg"; +import ScrollTrigger from "react-scroll-trigger"; +import CountUp from "react-countup"; +import { Link } from "react-router-dom"; +import { useEffect, useState } from "react"; +import axios from "axios"; + const CustomerSection = () => { - return ( - <div className='bg-gradient-to-b from-[#73e9fe] to-[#78118f] w-full' > - <div className='flex sm:flex-col md:flex-row flex-wrap m-6 py-6 relative' > - {/** left side */} - <div className="w-full md:w-4/6 p-8 flex flex-col justify-around"> - <div> - <h2 className="text-white text-4xl font-bold mb-4">We love our customers and they love us too.</h2> - <p className="text-white ">We love our customers and they love us too. It is a long established fact that a reader will be distracted. It is a long established fact that a reader will be distracted.</p> - <div className="flex items-center my-2"> - <img src={logo2} alt="Logo 1" className="w-6 h-6 rounded-full" /> - <img src={logo1} alt="Logo 1" className="w-6 h-6 rounded-full" /> - <img src={logo2} alt="Logo 1" className="w-6 h-6 rounded-full" /> - <img src={logo1} alt="Logo 1" className="w-6 h-6 rounded-full" /> - <span className='ml-4 text-white font-semibold'>+334 members</span> - - </div> - </div> - - <div className='my-2'> - <button className='border-solid border rounded-full py-2 px-6 mx-2 text-sm text-white hover:bg-gradient-to-b from-[#11528f] to-[#73e9fe]'>Learn More</button> - </div> + const [counterOn, setCounterOn] = useState(false); + const [totalTask, setTotalTask] = useState(80); + const [totalPlans, setTotalPlan] = useState(320); + const [totalMember, setTotalMember] = useState(120); + + useEffect(() => { + const getProjectData = async () => { + try { + const result = await axios.get("https://projectsyncifyapi.onrender.com/api/v1/insights/") + setTotalTask(result.data?.totalTasks); + setTotalPlan(result.data?.totalWorkspaces) + setTotalMember(result.data?.totalMembers) + } catch (error) { + + } + } + + getProjectData() + },[]) + return ( + <div className="bg-gradient-to-b from-[#3fe2ff] to-[#13118f] w-full"> + <ScrollTrigger + onEnter={() => setCounterOn(true)} + onExit={() => setCounterOn(false)} + > + <div className="flex sm:flex-col md:flex-row flex-wrap m-10 py-10 px-2 md:px-6 relative"> + <div className="w-full md:w-4/6 p-2 md:p-8 flex flex-col justify-around"> + <div> + <h2 className="text-white text-4xl font-bold mb-4"> + We love our customers and they love us too. + </h2> + <p className="text-white "> + We love our customers and they love us too. It is a long + established fact that a reader will be distracted. It is a long + established fact that a reader will be distracted. + </p> + <div className="flex items-center my-2"> + <img + src={logo2} + alt="Logo 1" + className="w-6 h-6 rounded-full" + /> + <img + src={logo1} + alt="Logo 1" + className="w-6 h-6 rounded-full" + /> + <img + src={logo2} + alt="Logo 1" + className="w-6 h-6 rounded-full" + /> + <img + src={logo1} + alt="Logo 1" + className="w-6 h-6 rounded-full" + /> + <span className="ml-4 text-white font-semibold"> + {counterOn && ( + <CountUp start={320} end={334} duration={5} delay={0} /> + )} +   members + </span> + </div> + </div> + <div className="my-1"> + <Link to="/features"> + <button className="border-solid border rounded-md py-2 px-5 text-sm text-white hover:bg-gradient-to-b from-[#11528f] to-[#73e9fe]"> + Learn More + </button> + </Link> </div> - - {/** right side */} - <div className='w-full md:w-2/6 p-4 relative'> - - <div className='flex w-full text-center '> - {/* Card 1 */} - <div className="bg-white bg-opacity-20 m-4 p-8 rounded-lg shadow-lg w-1/2"> - <h3 className="text-white text-xl font-bold mb-2">300</h3> - <p className='text-white font-semibold text-xl'>Tasks</p> - </div> - - {/* Card 2 */} - <div className="bg-white bg-opacity-20 m-4 p-8 rounded-lg shadow-lg w-1/2"> - <h3 className="text-white text-xl font-bold mb-2">80</h3> - <p className='text-white text-xl font-semibold'>Projects</p> - </div> - </div> - - <div className='w-full '> - {/* Card 3 */} - <div className="text-center bg-white bg-opacity-20 m-4 p-8 rounded-lg shadow-lg"> - <h3 className="text-white text-xl font-bold mb-2">120</h3> - <p className='text-white text-xl font-semibold'>Members</p> - </div> - </div> + </div> + {/** right side */} + <div className="w-full md:w-2/6 p-2 relative"> + <div className="flex w-full text-center "> + {/* Card 1 */} + <div className="bg-white bg-opacity-20 mr-2 p-8 rounded-lg shadow-lg w-1/2"> + <h3 className="text-white text-3xl font-bold mb-2"> + {counterOn && ( + <CountUp start={totalTask-20} end={totalTask} duration={5} delay={0} /> + )} + + + </h3> + <p className="text-white font-semibold text-xl">Tasks</p> + </div> + + {/* Card 2 */} + <div className="bg-white bg-opacity-20 ml-2 p-8 rounded-lg shadow-lg w-1/2"> + <h3 className="text-white text-3xl font-bold mb-2"> + {counterOn && ( + <CountUp start={totalPlans-10} end={totalPlans} duration={5} delay={0} /> + )} + + + </h3> + <p className="text-white text-xl font-semibold">Projects</p> + </div> + </div> + + <div className="w-full "> + {/* Card 3 */} + <div className="text-center bg-white bg-opacity-20 my-2 p-8 rounded-lg shadow-lg"> + <h3 className="text-white text-3xl font-bold mb-2"> + {counterOn && ( + <CountUp start={totalMember-10} end={totalMember} duration={5} delay={0} /> + )} + + + </h3> + <p className="text-white text-xl font-semibold">Members</p> + </div> </div> + </div> </div> + </ScrollTrigger> </div> - - ); + ); }; -export default CustomerSection; \ No newline at end of file +export default CustomerSection; diff --git a/src/components/Pages/Home/Developer.jsx b/src/components/Pages/Home/Developer.jsx new file mode 100644 index 0000000..696e508 --- /dev/null +++ b/src/components/Pages/Home/Developer.jsx @@ -0,0 +1,115 @@ +import { MdOutlineMail } from "react-icons/md"; +import Title from "../../../pages/shared/Title"; +import { IoLogoGithub } from "react-icons/io5"; +import { FaLinkedin } from "react-icons/fa"; +import { toast } from "react-toastify"; + + +const Developer = () => { + const teamMembers = [ + { + name: "Sabrina Rashid", + position: "Team Leader", + role: "Frontend Developer", + email: "sabrina.rashid.sara@gmail.com", + linkedin: "https://www.linkedin.com/in/sabrina--rashid", + github: "https://github.com/sabrinara", + imageSrc: "https://i.ibb.co/RvJtjZD/429823336-448305350855105-1214185624739971414-n.png", + }, + { + name: "Nazmul Islam", + position: "Co-Leader", + role: "Backend Developer", + email: "najmulislamru@gmail.com", + linkedin: "https://www.linkedin.com/in/najmulislamnajimofficial", + github: "https://github.com/najmulislamnajim", + imageSrc: "https://avatars.githubusercontent.com/u/78375634?v=4", + }, + { + name: "Rasel Chowdhury", + position: "Member", + role: "Frontend Developer", + email: "chowdhuryrasel040@gmail.com", + linkedin: "https://www.linkedin.com/in/rasel-chowdhury-4a27a220a/", + github: "https://github.com/rasel-chowdhury1", + imageSrc: "https://avatars.githubusercontent.com/u/87080744?v=4", + }, + { + name: "Md Akther Hosen", + position: "Member", + role: "Frontend Developer", + email: "dev.aktherhosen@gmail.com", + linkedin: "https://www.linkedin.com/in/md-akther-hosen/", + github: "https://github.com/AktherHosen", + imageSrc: "https://avatars.githubusercontent.com/u/79582560?v=4", + }, + { + name: "Sifath Islam", + position: "Member", + role: "Backend Developer", + email: "sifathislam790@gmail.com", + linkedin: "https://www.linkedin.com/in/mohaimenulislam1/", + github: "https://github.com/Sifathislam", + imageSrc: "https://avatars.githubusercontent.com/u/105329974?v=4", + }, + + + ]; + + const copyToClipboard = (text, label) => { + navigator.clipboard.writeText(text).then(() => { + toast.success(`${label} copied to clipboard!`); + // alert(`${label} copied to clipboard!`); + }).catch(err => { + console.error(`Failed to copy ${label}: `, err); + }); + }; + return ( + <div> + <div className=" px-10 py-8 mb-20"> + <Title title="Developers of Project Syncify " /> + + <div className="grid grid-cols-1 md:grid-cols-3 xl:grid-cols-5 p-5 gap-3 justify-center mx-auto rounded-md"> + + {teamMembers.map((member, index) => ( + <div key={index} className="text-center space-y-1"> + <img + className="mx-auto rounded-full object-cover h-32 w-32" + src={member.imageSrc} + alt={`${member.name}'s image`} + width={300} + height={300} + /> + <h2 className="text-xl font-semibold mt-2">{member.name}</h2> + <h2 className="text-md font-semibold">{member.position} <span className="text-xs">({member.role})</span></h2> + {/* <h2 className="text-sm font-semibold">({member.role})</h2> */} + <div className="flex justify-center items-center mt-1"> + <div onClick={() => copyToClipboard(member.email, 'Email address')} style={{ cursor: 'pointer', display: 'flex', alignItems: 'center', marginBottom: '5px' }}> + <MdOutlineMail style={{ marginRight: '5px' }} /> + {/* {member.email} */} + </div> + <div onClick={() => copyToClipboard(member.github, 'GitHub username')} style={{ cursor: 'pointer', display: 'flex', alignItems: 'center', marginBottom: '5px' }}> + <IoLogoGithub style={{ marginRight: '5px' }} /> + {/* {member.github} */} + </div> + <div onClick={() => copyToClipboard(member.linkedin, 'LinkedIn profile URL')} style={{ cursor: 'pointer', display: 'flex', alignItems: 'center', marginBottom: '5px' }}> + <FaLinkedin style={{ marginRight: '5px' }} /> + {/* {member.linkedin} */} + </div> + </div> + + </div> + ))} + + + <div> + + </div> + </div> + + </div> + </div> + ); +}; + +export default Developer; \ No newline at end of file diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/Company.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/Company.jsx index b7c5a38..19cd993 100644 --- a/src/components/Pages/Home/DifferentTypeOfTabSection/Company.jsx +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/Company.jsx @@ -1,22 +1,38 @@ -import React from 'react'; +import React from "react"; import { FaArrowCircleRight } from "react-icons/fa"; - +import { Link } from "react-router-dom"; const Company = () => { - return ( - <div className='flex flex-wrap md:flex-nowrap gap-4 my-10'> - <div className='w-full md:w-1/2 mx-2'> - <img src="https://assets.asana.biz/transform/8e33dc5e-f177-43c6-891a-60c1e5a5d789/home24-company-team-ui?io=transform:fill" alt="" /> - </div> + return ( + <div className="flex flex-wrap md:flex-nowrap gap-4 my-10"> + <div className="w-full md:w-1/2 mx-2"> + <img + src="https://assets.asana.biz/transform/8e33dc5e-f177-43c6-891a-60c1e5a5d789/home24-company-team-ui?io=transform:fill" + alt="" + /> + </div> - <div className='w-full md:w-auto mx-4'> - <h2 className='text-2xl font-semibold'>Operationalize goals</h2> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Connect work to company goals </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Automate workflows across departments </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Report on progress and address bottlenecks </p> - <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#8401A1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#8401A1] dark:hover:text-white">See how it works</button> - </div> - </div> - ); + <div className="w-full md:w-auto mx-4"> + <h2 className="text-2xl font-semibold">Operationalize goals</h2> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Connect work to company goals{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Automate workflows across departments{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Report on progress and address bottlenecks{" "} + </p> + <Link to="/companyDetails"> + <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#0c01a1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#0c01a1] dark:hover:text-white"> + See how it works + </button> + </Link> + </div> + </div> + ); }; -export default Company; \ No newline at end of file +export default Company; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/DifferentTypeOfTabSection.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/DifferentTypeOfTabSection.jsx index c256cf1..1bfaf1c 100644 --- a/src/components/Pages/Home/DifferentTypeOfTabSection/DifferentTypeOfTabSection.jsx +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/DifferentTypeOfTabSection.jsx @@ -1,33 +1,86 @@ -import React, { useState } from 'react'; - -import Marketing from './Marketing'; -import Operations from './Operations'; -import IT from './IT'; -import Product from './Product'; -import Company from './Company'; -import Title from '../../../../pages/shared/Title'; +import { useState } from "react"; +import Marketing from "./Marketing"; +import Operations from "./Operations"; +import IT from "./IT"; +import Product from "./Product"; +import Company from "./Company"; +import Title from "../../../../pages/shared/Title"; const DifferentTypeOfTabSection = () => { - const [showComponent, setShowComponent] = useState("Marketing"); + const [showComponent, setShowComponent] = useState("Marketing"); - return ( - <div className='w-full px-4 md:px-10 py-6 md:py-10 my-6'> - {/* <h1 className='w-[70%] text-5xl mt-[50px] mb-[50px] '>See how different departments use Synify</h1> */} - <Title title="See how different departments use Synify" /> - <div className="flex flex-wrap gap-2 sm:items-center"> - <button onClick={() => setShowComponent("Marketing")} className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${showComponent === "Marketing" ? "bg-[#8401A1] text-white dark:bg-cyan-600" : ""}`}>Marketing</button> - <button onClick={() => setShowComponent("Operations")} className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${showComponent === "Operations" ? "bg-[#8401A1] text-white dark:bg-cyan-600" : ""}`}>Operations</button> - <button onClick={() => setShowComponent("IT")} className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${showComponent === "IT" ? "bg-[#8401A1] text-white dark:bg-cyan-600" : ""}`}>IT</button> - <button onClick={() => setShowComponent("Product")} className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${showComponent === "Product" ? "bg-[#8401A1] text-white dark:bg-cyan-600" : ""}`}>Product</button> - <button onClick={() => setShowComponent("Company")} className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${showComponent === "Company" ? "bg-[#8401A1] text-white dark:bg-cyan-600" : ""}`}>Company-wide</button> - </div> + return ( + <div className="w-full px-4 md:px-10 py-6 md:py-10 my-6"> + {/* <h1 className='w-[70%] text-5xl mt-[50px] mb-[50px] '>See how different departments use Synify</h1> */} + <Title title="See how different departments use Syncify" /> + <div className="flex flex-wrap gap-2 sm:items-center"> + <button + onClick={() => setShowComponent("Marketing")} + className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${ + showComponent === "Marketing" + ? "bg-[#0c01a1] text-white dark:bg-cyan-600" + : "" + }`} + > + Marketing + </button> + <button + onClick={() => setShowComponent("Operations")} + className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${ + showComponent === "Operations" + ? "bg-[#0c01a1] text-white dark:bg-cyan-600" + : "" + }`} + > + Operations + </button> + <button + onClick={() => setShowComponent("IT")} + className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${ + showComponent === "IT" + ? "bg-[#0c01a1] text-white dark:bg-cyan-600" + : "" + }`} + > + IT + </button> + <button + onClick={() => setShowComponent("Product")} + className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${ + showComponent === "Product" + ? "bg-[#0c01a1] text-white dark:bg-cyan-600" + : "" + }`} + > + Product + </button> + <button + onClick={() => setShowComponent("Company")} + className={`border-solid border border-slate-400 rounded-full py-4 px-6 mx-2 text-sm hover:text-base ${ + showComponent === "Company" + ? "bg-[#0c01a1] text-white dark:bg-cyan-600" + : "" + }`} + > + Company-wide + </button> + </div> - { - showComponent === "Marketing" ? <Marketing /> - : showComponent === "Operations" ? <Operations /> : showComponent === "IT" ? <IT /> : showComponent === "Product" ? <Product /> : showComponent === "Company" ? <Company /> : "no component seleted" - } - </div> - ); + {showComponent === "Marketing" ? ( + <Marketing /> + ) : showComponent === "Operations" ? ( + <Operations /> + ) : showComponent === "IT" ? ( + <IT /> + ) : showComponent === "Product" ? ( + <Product /> + ) : showComponent === "Company" ? ( + <Company /> + ) : ( + "no component seleted" + )} + </div> + ); }; -export default DifferentTypeOfTabSection; \ No newline at end of file +export default DifferentTypeOfTabSection; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/IT.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/IT.jsx index 2fef437..eebe7a1 100644 --- a/src/components/Pages/Home/DifferentTypeOfTabSection/IT.jsx +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/IT.jsx @@ -1,22 +1,40 @@ -import React from 'react'; +import React from "react"; import { FaArrowCircleRight } from "react-icons/fa"; - +import { Link } from "react-router-dom"; const IT = () => { - return ( - <div className='flex flex-wrap md:flex-nowrap gap-4 my-10'> - <div className='w-full md:w-1/2 mx-2'> - <img src="https://assets.asana.biz/transform/9462b0f2-6173-42e0-ba08-bb731ea3d24d/home24-it-team-ui?io=transform:fill" alt="" /> - </div> + return ( + <div className="flex flex-wrap md:flex-nowrap gap-4 my-10"> + <div className="w-full md:w-1/2 mx-2"> + <img + src="https://assets.asana.biz/transform/9462b0f2-6173-42e0-ba08-bb731ea3d24d/home24-it-team-ui?io=transform:fill" + alt="" + /> + </div> - <div className='w-full md:w-auto mx-4'> - <h2 className='text-2xl font-semibold'>Onboard and offboard employees</h2> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Allocate resources more effectively </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Automate and scale your workflows </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Onboard and offboard employees </p> - <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#8401A1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#8401A1] dark:hover:text-white">Explore IT</button> - </div> - </div> - ); + <div className="w-full md:w-auto mx-4"> + <h2 className="text-2xl font-semibold"> + Onboard and offboard employees + </h2> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Allocate resources more effectively{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Automate and scale your workflows{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Onboard and offboard employees{" "} + </p> + <Link to="/itDetails"> + <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#0c01a1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#0c01a1] dark:hover:text-white"> + Explore IT + </button> + </Link> + </div> + </div> + ); }; -export default IT; \ No newline at end of file +export default IT; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/Marketing.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/Marketing.jsx index 1fdaae8..93f0135 100644 --- a/src/components/Pages/Home/DifferentTypeOfTabSection/Marketing.jsx +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/Marketing.jsx @@ -1,22 +1,38 @@ -import React from 'react'; +import React from "react"; import { FaArrowCircleRight } from "react-icons/fa"; - +import { Link } from "react-router-dom"; const Marketing = () => { - return ( - <div className='flex flex-wrap md:flex-nowrap gap-4 my-10'> - <div className='w-full md:w-1/2 mx-2'> - <img src="https://assets.asana.biz/transform/fb6b5fb5-8a08-4232-aa6c-0f1515e78d57/home24-marketing-team-en-ui?io=transform:fill" alt="" /> - </div> + return ( + <div className="flex flex-wrap md:flex-nowrap gap-4 my-10"> + <div className="w-full md:w-1/2 mx-2"> + <img + src="https://assets.asana.biz/transform/fb6b5fb5-8a08-4232-aa6c-0f1515e78d57/home24-marketing-team-en-ui?io=transform:fill" + alt="" + /> + </div> - <div className='w-full md:w-auto mx-4'> - <h2 className='text-2xl font-semibold'>Meet campaign goals</h2> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Manage events and editorial calendars </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Manage events and editorial calendars </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Manage events and editorial calendars </p> - <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#8401A1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#8401A1] dark:hover:text-white">Explore Marketing</button> - </div> - </div> - ); + <div className="w-full md:w-auto mx-4"> + <h2 className="text-2xl font-semibold">Meet campaign goals</h2> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Manage events and editorial calendars{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Manage events and editorial calendars{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Manage events and editorial calendars{" "} + </p> + <Link to="/marketingDetails"> + <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#0c01a1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#0c01a1] dark:hover:text-white"> + Explore Marketing + </button> + </Link> + </div> + </div> + ); }; -export default Marketing; \ No newline at end of file +export default Marketing; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/Operations.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/Operations.jsx index 9d0ddcc..42b5a69 100644 --- a/src/components/Pages/Home/DifferentTypeOfTabSection/Operations.jsx +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/Operations.jsx @@ -1,22 +1,39 @@ -import React from 'react'; +import React from "react"; import { FaArrowCircleRight } from "react-icons/fa"; - +import { Link } from "react-router-dom"; const Operations = () => { - return ( - <div className='flex flex-wrap md:flex-nowrap gap-4 my-10'> - <div className='w-full md:w-1/2 mx-2'> - <img src="https://assets.asana.biz/transform/d06c5984-1ba8-478f-af99-b71be0f7fd61/home24-operations-team-ui?io=transform:fill" alt="" /> - </div> + return ( + <div className="flex flex-wrap md:flex-nowrap gap-4 my-10"> + <div className="w-full md:w-1/2 mx-2"> + <img + src="https://assets.asana.biz/transform/d06c5984-1ba8-478f-af99-b71be0f7fd61/home24-operations-team-ui?io=transform:fill" + alt="" + /> + </div> + + <div className="w-full md:w-auto mx-4"> + <h2 className="text-2xl font-semibold">Drive operational efficiency</h2> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Standardize and automate processes{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Track work and see progress in real time{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Unblock teams to hit revenue goals{" "} + </p> - <div className='w-full md:w-auto mx-4'> - <h2 className='text-2xl font-semibold'>Drive operational efficiency</h2> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Standardize and automate processes </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Track work and see progress in real time </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Unblock teams to hit revenue goals </p> - <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#8401A1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#8401A1] dark:hover:text-white">Explore Operations</button> - </div> - </div> - ); + <Link to="/operationDetails"> + <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#0c01a1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#0c01a1] dark:hover:text-white"> + Explore Operations + </button> + </Link> + </div> + </div> + ); }; -export default Operations; \ No newline at end of file +export default Operations; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/Product.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/Product.jsx index 2d6b9d4..579757e 100644 --- a/src/components/Pages/Home/DifferentTypeOfTabSection/Product.jsx +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/Product.jsx @@ -1,22 +1,40 @@ -import React from 'react'; +import React from "react"; import { FaArrowCircleRight } from "react-icons/fa"; - +import { Link } from "react-router-dom"; const Product = () => { - return ( - <div className='flex flex-wrap md:flex-nowrap gap-4 my-10'> - <div className='w-full md:w-1/2 mx-2'> - <img src="https://assets.asana.biz/transform/070f1abb-5a90-477c-8b90-b5eb6ba3a3f9/home24-product-team-ui?io=transform:fill" alt="" /> - </div> + return ( + <div className="flex flex-wrap md:flex-nowrap gap-4 my-10"> + <div className="w-full md:w-1/2 mx-2"> + <img + src="https://assets.asana.biz/transform/070f1abb-5a90-477c-8b90-b5eb6ba3a3f9/home24-product-team-ui?io=transform:fill" + alt="" + /> + </div> - <div className='w-full md:w-auto mx-4'> - <h2 className='text-2xl font-semibold'>Launch better products faster</h2> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Keep product development on track </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Centralize launch information </p> - <p className='flex items-center gap-2 my-2 text-lg'><FaArrowCircleRight />Tie your product roadmap to your strategy </p> - <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#8401A1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#8401A1] dark:hover:text-white">Explore Product</button> - </div> - </div> - ); + <div className="w-full md:w-auto mx-4"> + <h2 className="text-2xl font-semibold"> + Launch better products faster + </h2> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Keep product development on track{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Centralize launch information{" "} + </p> + <p className="flex items-center gap-2 my-2 text-lg"> + <FaArrowCircleRight /> + Tie your product roadmap to your strategy{" "} + </p> + <Link to="/productDetails"> + <button className="border-solid border border-slate-400 rounded py-2 px-8 my-4 bg-[#0c01a1] dark:bg-[#73e9fe] text-white dark:text-black font-semibold hover:bg-cyan-600 hover:text-black dark:hover:bg-[#0c01a1] dark:hover:text-white"> + Explore Product + </button> + </Link> + </div> + </div> + ); }; -export default Product; \ No newline at end of file +export default Product; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/CompanyDetails.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/CompanyDetails.jsx new file mode 100644 index 0000000..3060ee3 --- /dev/null +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/CompanyDetails.jsx @@ -0,0 +1,86 @@ +import React from "react"; +import { Link } from "react-router-dom"; +const CompanyDetails = () => { + return ( + <div className="p-10 mt-10 md:mt-0 md:p-20"> + <div className="flex flex-col justify-center md:flex-row gap-3"> + <div className="w-full md:w-1/2 space-y-5 px-0 py-14"> + <h1 className="text-5xl font-bold "> + The only work management <br /> platform built for scale + </h1> + <p> + With Project Syncify, syou can set company-wide goals, manage + strategic plans, and get work done on a single platform. + </p> + <Link to="/login"> + <button className="mt-5 dark:bg-cyan-600 bg-purple-800 text-white font-bold px-4 py-3 rounded-sm"> + Get Started + </button> + </Link> + </div> + <div className="w-full md:w-1/2 flex justify-end"> + <img + src="https://i.ibb.co/QDZH4v2/world-1.jpg" + className=" h-[350px]" + alt="" + /> + </div> + </div> + <div className="mt-10"> + <h1 className="text-center text-4xl font-semibold"> + A smarter way to work + </h1> + <div className="flex flex-col md:flex-row gap-10 mt-5"> + <div className="shadow-md rounded-sm space-y-2 px-3 py-8 "> + <div className="flex flex-col-reverse md:flex-row justify-between items-start md:items-center"> + <h1 className="text-2xl font-bold">Maximize impact</h1> + <img + src="https://i.ibb.co/m5Bqk4r/business.png" + className="h-[40px]" + alt="" + /> + </div> + + <p> + Increase efficiency across departments and tools on a single + platform and automate workflows to get more done in less time. + </p> + </div> + <div className="shadow-md rounded-sm space-y-2 px-3 py-8 "> + <div className="flex flex-col-reverse md:flex-row justify-between items-start md:items-center"> + <h1 className="text-2xl font-bold"> + Drive clarity and accountability + </h1> + <img + src="https://i.ibb.co/YNJsbVP/desktop-computer.png" + className="h-[40px]" + alt="" + /> + </div> + <p> + Connect work to company-wide goals to keep everyone focused on the + work that matters and make better decisions faster with real-time + data. + </p> + </div> + <div className="shadow-md rounded-sm space-y-2 px-3 py-8"> + <div className="flex flex-col-reverse md:flex-row justify-between items-start md:items-center"> + <h1 className="text-2xl font-bold">Scale with confidence</h1> + <img + src="https://i.ibb.co/1fPgjw3/locked.png" + className="h-[40px]" + alt="" + /> + </div> + <p> + Connect teams and tools across your organization with + enterprise-grade security, governance, and control. + </p> + </div> + </div> + </div> + </div> + ); +}; + +export default CompanyDetails; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/ItDetials.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/ItDetials.jsx new file mode 100644 index 0000000..7555e5c --- /dev/null +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/ItDetials.jsx @@ -0,0 +1,81 @@ +import React from "react"; +import { Link } from "react-router-dom"; +const ItDetials = () => { + return ( + <div className="p-10 mt-10 md:mt-0 md:p-20"> + <div className="flex flex-col justify-center items-center md:flex-row gap-3"> + <div className="w-full md:w-1/2 space-y-3"> + <h1 className="uppercase text-sm font-semibold">IT TEAMS</h1> + <h1 className="text-5xl font-bold"> + Where IT connects work to strategy + </h1> + <p> + Project Syncify solves many use cases and integrates with existing + tools—so there’s no extra work for IT. Connect teams and tools, + without compromising security. + </p> + <Link to="/login"> + <button className="mt-5 dark:bg-cyan-600 bg-purple-800 text-white font-bold px-4 py-3 rounded-sm"> + Get Started + </button> + </Link> + </div> + <div className="w-full md:w-1/2 flex justify-end"> + <img + src="https://i.ibb.co/StTc1jg/it-1.jpg" + className=" h-[400px]" + alt="" + /> + </div> + </div> + <div className="w-full md:w-1/2 space-y-3 mt-10"> + <h1 className="text-4xl font-bold">Automate IT workflows with ease</h1> + <p className="mb-4"> + Spend less time triaging requests and more time on critical IT work. + With Project Syncify, it’s easy to streamline workflows within and + across teams—like IT requests, onboarding, and more. + </p> + </div> + <div className="flex flex-col md:flex-row gap-5 mt-5"> + <div className="shadow-sm rounded-sm space-y-2 py-8 "> + <img + src="https://i.ibb.co/CJhHwKc/printer.png" + className="h-[50px]" + alt="" + /> + <h1 className="text-2xl font-bold">Standardize IT requests</h1> + <p> + Create a streamlined intake process—so you get all of the + information you need when a request is submitted. + </p> + </div> + <div className="shadow-sm rounded-sm space-y-2 py-8 "> + <img + src="https://i.ibb.co/YdyLG2g/distance.png" + className="h-[50px]" + alt="" + /> + <h1 className="text-2xl font-bold">Route work to the right person</h1> + <p> + Set up automations to instantly assign, route, and organize requests + as soon as they’re submitted. + </p> + </div> + <div className="shadow-sm rounded-sm space-y-2 py-8"> + <img + src="https://i.ibb.co/Pmy1QnP/processing.png" + className="h-[50px]" + alt="" + /> + <h1 className="text-2xl font-bold">Update seamlessly across tools</h1> + <p> + When a request is complete, automatically notify stakeholders via + email, Slack, or another communication tool. + </p> + </div> + </div> + </div> + ); +}; + +export default ItDetials; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/MarketingDetails.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/MarketingDetails.jsx new file mode 100644 index 0000000..be9dbcd --- /dev/null +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/MarketingDetails.jsx @@ -0,0 +1,49 @@ +import React from "react"; +import { Link } from "react-router-dom"; +const MarketingDetails = () => { + return ( + <div className="p-10 mt-10 md:mt-0 md:p-20"> + <div className="flex flex-col justify-center items-center md:flex-row gap-3"> + <div className="w-full md:w-1/2 space-y-3"> + <h1 className="uppercase text-sm font-semibold"> + Project Syncify for marketing + </h1> + <h1 className="text-5xl font-bold"> + Where marketing connects work to revenue + </h1> + <p> + Mobilize around clear goals, get more impact from your resources, + and confidently scale any campaign workflow. + </p> + <Link to="/login"> + <button className="mt-5 dark:bg-cyan-600 bg-purple-800 text-white font-bold px-4 py-3 rounded-sm"> + Get Started + </button> + </Link> + </div> + <div className="w-full md:w-1/2 flex justify-end"> + <img + src="https://i.ibb.co/Y0RjcBJ/marketting-1.jpg" + className=" h-[400px]" + alt="" + /> + </div> + </div> + <div className="flex mt-10 justify-center items-center"> + <div className="w-[600px] text-center space-y-3"> + <h3 className="uppercase text-sm font-semibold"> + THE VALUE OF ProjectSyncify + </h3> + <h1 className="text-4xl font-bold">Make every campaign count</h1> + <p> + Align marketers in a single tool, so everyone has the full picture. + With clear priorities and processes, teams can work together to hit + revenue targets and meet changing market conditions. + </p> + </div> + </div> + </div> + ); +}; + +export default MarketingDetails; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/OperationDetails.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/OperationDetails.jsx new file mode 100644 index 0000000..d949784 --- /dev/null +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/OperationDetails.jsx @@ -0,0 +1,49 @@ +import React from "react"; +import { Link } from "react-router-dom"; +const OperationDetails = () => { + return ( + <div className="p-10 mt-10 md:mt-0 md:p-20"> + <div className="flex flex-col justify-center items-center md:flex-row gap-3"> + <div className="w-full md:w-1/2 flex justify-start"> + <img + src="https://i.ibb.co/vYpGS7B/operation-1.jpg" + className=" h-[400px]" + alt="" + /> + </div> + <div className="w-full md:w-1/2 text-end space-y-3"> + <h1 className="uppercase text-sm font-semibold"> + Project Syncify for OPERATIONS + </h1> + <h1 className="text-5xl font-bold"> + Where operations connects work to outcomes + </h1> + <p> + Align work to goals, spend resources efficiently, and automate + processes across your organization—no matter how large. + </p> + <Link to="/login"> + <button className="mt-5 dark:bg-cyan-600 bg-purple-800 text-white font-bold px-4 py-3 rounded-sm"> + Get Started + </button> + </Link> + </div> + </div> + <div className="flex mt-10 justify-center items-center"> + <div className="w-[600px] text-center space-y-3"> + <h3 className="uppercase text-sm font-semibold"> + THE VALUE OF ProjectSyncify + </h3> + <h1 className="text-4xl font-bold">Transform your operations</h1> + <p> + Total visibility, for leaders and teams. See the full picture of + resources, work, and outcomes so it’s clear how to pivot and make + the most impact. + </p> + </div> + </div> + </div> + ); +}; + +export default OperationDetails; diff --git a/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/ProductDetails.jsx b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/ProductDetails.jsx new file mode 100644 index 0000000..e64e898 --- /dev/null +++ b/src/components/Pages/Home/DifferentTypeOfTabSection/TabPages/ProductDetails.jsx @@ -0,0 +1,96 @@ +import React from "react"; +import { Link } from "react-router-dom"; +const ProductDetails = () => { + return ( + <div className="p-10 mt-10 md:mt-0 md:p-20"> + <div className="flex flex-col justify-center items-center md:flex-row gap-3"> + <div className="w-full md:w-1/2 space-y-3"> + <h1 className="uppercase text-sm font-semibold"> + PRODUCT AND PRODUCT MANAGEMENT TEAMS + </h1> + <h1 className="text-5xl font-bold"> + Launch better <br /> products—faster + </h1> + <p> + Project Syncify simplifies your product development process and + helps you speed up your time to market. + </p> + <Link to="/login"> + <button className="mt-5 dark:bg-cyan-600 bg-purple-800 text-white font-bold px-4 py-3 rounded-sm"> + Get Started + </button> + </Link> + </div> + <div className="w-full md:w-1/2 flex justify-end"> + <img + src="https://i.ibb.co/qm89CzH/web.jpg" + className=" h-[400px]" + alt="" + /> + </div> + </div> + <div className="mt-10 flex flex-col md:flex-row gap-5 md:gap-3"> + <div className="w-full md:w-1/2 flex flex-col justify-center space-y-3"> + <h1 className="text-5xl font-semibold">Make your way to market</h1> + <p className="text-lg"> + Easily manage all stages of product development and launch faster. + </p> + </div> + <div className="w-full md:w-1/2"> + <div className="w-full join join-vertical "> + <div className="collapse collapse-arrow join-item border border-base-300"> + <input type="radio" name="my-accordion-4" defaultChecked /> + <div className="collapse-title text-xl font-medium"> + Keep product development on track + </div> + <div className="collapse-content"> + <p> + Organize initiatives by priority, so you can be sure you’re + focusing on the most high-impact work. + </p> + </div> + </div> + <div className="collapse collapse-arrow join-item border border-base-300"> + <input type="radio" name="my-accordion-4" /> + <div className="collapse-title text-xl font-medium"> + Centralize launch information + </div> + <div className="collapse-content"> + <p> + Monitor project status, send updates, and understand next + steps. + </p> + </div> + </div> + <div className="collapse collapse-arrow join-item border border-base-300"> + <input type="radio" name="my-accordion-4" /> + <div className="collapse-title text-xl font-medium"> + Move faster with automation + </div> + <div className="collapse-content"> + <p> + Monitor project status, send updates, and understand next + steps. + </p> + </div> + </div> + <div className="collapse collapse-arrow join-item border border-base-300"> + <input type="radio" name="my-accordion-4" /> + <div className="collapse-title text-xl font-medium"> + Tie your product roadmap to your strategy + </div> + <div className="collapse-content"> + <p> + Deliver on your company’s larger goals by connecting + individual responsibilities to top business priorities. + </p> + </div> + </div> + </div> + </div> + </div> + </div> + ); +}; + +export default ProductDetails; diff --git a/src/components/Pages/Home/Features/Features.jsx b/src/components/Pages/Home/Features/FeaturesHome.jsx similarity index 76% rename from src/components/Pages/Home/Features/Features.jsx rename to src/components/Pages/Home/Features/FeaturesHome.jsx index c1ad4fe..ea97de0 100644 --- a/src/components/Pages/Home/Features/Features.jsx +++ b/src/components/Pages/Home/Features/FeaturesHome.jsx @@ -3,15 +3,15 @@ import { MdOutlineMarkChatUnread } from "react-icons/md"; import { VscGraphLine } from "react-icons/vsc"; import Title from "../../../../pages/shared/Title"; -const Features = () => { +const FeaturesHome = () => { return ( - <div className="px-10 py-5"> + <div className="px-10 py-0"> <div className="flex justify-start text-start mb-5 gap-2"> <Title title="See how Syncify can improve your systems productivity" /> </div> {/* card */} - <div className="flex flex-col md:flex-row flex-wrap justify-between md:justify-center gap-6 "> - <div className="w-full md:w-[400px] border shadow-md p-16 rounded-xl "> + <div className="flex flex-col md:flex-row justify-between md:justify-center gap-6 "> + <div className="border shadow-md p-8 md:p-16 rounded-xl "> <div className="flex gap-5"> <div className="space-y-2"> <h1 className="text-xl font-semibold">Task Management</h1> @@ -20,7 +20,7 @@ const Features = () => { <BiBarChartSquare className="text-7xl" /> </div> </div> - <div className="w-full md:w-[400px] border shadow-md p-16 rounded-xl"> + <div className=" border shadow-md p-8 md:p-16 rounded-xl"> <div className="flex gap-5"> <div className="space-y-2"> <h1 className="text-xl font-semibold">Team Collaboration</h1> @@ -29,7 +29,7 @@ const Features = () => { <MdOutlineMarkChatUnread className="text-7xl" /> </div> </div> - <div className="w-full md:w-[400px] border shadow-md p-16 rounded-xl"> + <div className=" border shadow-md p-8 md:p-16 rounded-xl"> <div className="flex gap-5"> <div className="space-y-2"> <h1 className="text-xl font-semibold">Project Planning</h1> @@ -43,4 +43,4 @@ const Features = () => { ); }; -export default Features; +export default FeaturesHome; diff --git a/src/components/Pages/Home/HomeEmailSection/HomeEmailSection.jsx b/src/components/Pages/Home/HomeEmailSection/HomeEmailSection.jsx index 234d5b0..6fd0e14 100644 --- a/src/components/Pages/Home/HomeEmailSection/HomeEmailSection.jsx +++ b/src/components/Pages/Home/HomeEmailSection/HomeEmailSection.jsx @@ -1,31 +1,31 @@ import Lottie from "lottie-react"; +import { FiSend } from "react-icons/fi"; import Animate from "../../../../../public/emailanimate.json"; - +import { Link } from "react-router-dom"; const HomeEmailSection = () => { return ( - <div className="w-full h-fit px-4 md:px-40 py-10 my-6"> - <div className="bg-gradient-to-b from-[#9d11bd] to-[#73e9fe] md:bg-gradient-to-r md:from-[#73e9fe] md:to-[#8401A1] dark:md:from-[#8401A1] dark:md:to-[#73e9fe] w-full rounded-2xl px-4 dark:text-[#8401A1] dark:md:text-[#73e9fe]"> - <div className="flex flex-col-reverse md:flex-row justify-center items-center pb-20 md:pb-10"> - <div className="w-full md:w-1/2 flex flex-col justify-center items-start md:pl-20 pl-10 md:px-0"> - <h1 className="text-4xl md:text-7xl font-bold "> + + <div className="w-full px-4 md:px-48 py-2 mb-40 md:mb-10"> + <div className="bg-gradient-to-b from-[#0c01a1] to-[#73e9fe] md:bg-gradient-to-r md:from-[#73e9fe] md:to-[#0c01a1] dark:md:from-[#0c01a1] dark:md:to-[#73e9fe] w-full rounded-2xl dark:text-[#0c01a1] dark:md:text-[#73e9fe]"> + + <div className="flex flex-col-reverse md:flex-row justify-center items-center pb-10 md:pb-4"> + <div className="w-full md:w-1/2 flex flex-col justify-center items-start md:pl-20 pl-10 md:px-10"> + <h1 className="text-4xl md:text-6xl font-bold "> Nice to meet you! </h1> <p className="text-lg my-4 pr-10"> Get started with Synify today. And explore some excited features for keeping your team on track. </p> - <div className="mt-6 w-[90%] md:w-full flex justify-between bg-white rounded"> - <input - type="text" - placeholder="Enter your email" - className="px-8 md:px-16 py-2 md:py-4 text-lg bg-white rounded rounded-r-none text-black" - /> - <button className="py-2 md:py-4 pr-4 md:pr-8 bg-white dark:text-cyan-600 rounded rounded-l-none font-bold"> - Send - </button> + <div className="my-6 md:mt-6 md:mb-0 w-[85%] md:w-full flex justify-center bg-white rounded-lg"> + <Link to="/contact"> + <button className="flex justify-between items-center gap-3 px-2 py-3 text-lg bg-white dark:text-sky-900 font-bold"> + Contact Us <FiSend /> + </button> + </Link> </div> </div> - <div className="w-full md:w-1/2 "> + <div className="w-full md:w-1/2 "> <Lottie animationData={Animate} loop={true} /> </div> </div> diff --git a/src/components/Pages/Home/TopCampanySliderSection/Card.jsx b/src/components/Pages/Home/TopCampanySliderSection/Card.jsx index 0f66ea2..5a84e5a 100644 --- a/src/components/Pages/Home/TopCampanySliderSection/Card.jsx +++ b/src/components/Pages/Home/TopCampanySliderSection/Card.jsx @@ -2,32 +2,10 @@ import React, { useState } from "react"; import { FaArrowRight } from "react-icons/fa"; const Card = ({ data }) => { - const { image, title, label } = data; + const { image, title, paragraph } = data; const [isHovered, setIsHovered] = useState(false); return ( - // <div className='w-[100%] bg-white shadow-xl border-solid border-2 border-gray-300'> - // <div> - // <img className='h-[250px] w-[100%] object-cover' src={image} alt="images" /> - // <div className='flex flex-col gap-4 p-[20px]'> - - // <div> - // <h2 className='font-bold'>{title}</h2> - // </div> - - // <div> - // <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Distinctio eaque placeat blanditiis.</p> - // </div> - - // {/** this div section show.when user hover card */} - // <div className='items-center gap-2 hidden'> - // <p className='text-black' href="#">{label} </p> <span><FaArrowRight /></span> - // </div> - - // </div> - // </div> - // </div> - <div className="relative border rounded-lg overflow-hidden shadow-lg transition duration-300 delay-150 ease-in-out transform hover:scale-80" onMouseEnter={() => setIsHovered(true)} @@ -45,20 +23,8 @@ const Card = ({ data }) => { isHovered ? "block" : "h-20 overflow-hidden mb-2" } dark:text-white`} > - Lorem ipsum dolor sit amet consectetur adipisicing elit. Distinctio - eaque placeat blanditiis. + {paragraph} </p> - {isHovered && ( - // <button className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 mt-2"> - // {label} - // </button> - <div className="flex gap-2 items-center hover:text-cyan-600 dark:hover:text-[#8401A1] font-bold py-2 px-4 mt-2"> - <p className="">{label} </p>{" "} - <span> - <FaArrowRight /> - </span> - </div> - )} </div> </div> ); diff --git a/src/components/Pages/Home/TopCampanySliderSection/NextArrow.jsx b/src/components/Pages/Home/TopCampanySliderSection/NextArrow.jsx index 0d7a06f..724ed89 100644 --- a/src/components/Pages/Home/TopCampanySliderSection/NextArrow.jsx +++ b/src/components/Pages/Home/TopCampanySliderSection/NextArrow.jsx @@ -4,7 +4,7 @@ import { FaArrowRight } from "react-icons/fa"; const NextArrow = ({onClick}) => { return ( <div className='absolute left-20 top-[434px]' onClick={onClick} > - <div className=' outline outline-1 outline-offset-1 hover:outline-2 hover:outline-cyan-600 dark:hover:outline-[#8401A1] hover:text-cyan-600 dark:hover:text-[#8401A1] h-[30px] w-[30px] rounded-full grid place-items-center cursor-pointer'> + <div className=' outline outline-1 outline-offset-1 hover:outline-2 hover:outline-cyan-600 dark:hover:outline-[#0c01a1] hover:text-cyan-600 dark:hover:text-[#0c01a1] h-[30px] w-[30px] rounded-full grid place-items-center cursor-pointer'> <FaArrowRight /> </div> </div> diff --git a/src/components/Pages/Home/TopCampanySliderSection/TopCompanySlider.jsx b/src/components/Pages/Home/TopCampanySliderSection/TopCompanySlider.jsx index 33ae816..261e45b 100644 --- a/src/components/Pages/Home/TopCampanySliderSection/TopCompanySlider.jsx +++ b/src/components/Pages/Home/TopCampanySliderSection/TopCompanySlider.jsx @@ -1,113 +1,78 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useState } from "react"; import Slider from "react-slick"; -import Card from './Card'; -import NextArrow from './NextArrow'; -import PrevArrow from './PrevArrow'; +import Card from "./Card"; +import NextArrow from "./NextArrow"; +import PrevArrow from "./PrevArrow"; import { FaArrowRight } from "react-icons/fa"; -import Title from '../../../../pages/shared/Title'; +import Title from "../../../../pages/shared/Title"; const TopCompanySlider = () => { - const [progress, setProgress] = useState(0); - const [slideToShow, setSlideToShow] = useState(4) + const [slideToShow, setSlideToShow] = useState(4); const setSlides = () => { if (window.innerWidth <= 1280 && window.innerWidth > 1000) { setSlideToShow(3); - } - else if (window.innerWidth <= 1000 && window.innerWidth > 650) { + } else if (window.innerWidth <= 1000 && window.innerWidth > 650) { setSlideToShow(2); - } - else if (window.innerWidth <= 650) { + } else if (window.innerWidth <= 650) { setSlideToShow(1); } - } + }; useEffect(() => { setSlides(); setProgress(100 / (data.length - slideToShow + 1)); - window.addEventListener('resize', () => { setSlides() }) - }, []) + window.addEventListener("resize", () => { + setSlides(); + }); + }, []); const data = [ { id: 1, - image: "https://assets.asana.biz/transform/f55aec7c-911f-4002-90cf-fa911835ac7b/card-overstock-asana-customer?io=transform:fill,width:1440&format=webp", + image: + "https://assets.asana.biz/transform/f55aec7c-911f-4002-90cf-fa911835ac7b/card-overstock-asana-customer?io=transform:fill,width:1440&format=webp", title: "Overstock", - paragraph: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla convallis libero quis magna bibendum, at mollis quam vehicula.", - label: "Read Case Study" + paragraph: + "Overstock, an online retailer specializing in furniture and home decor, leverages project management to streamline its operations and enhance customer satisfaction.", }, { id: 2, - image: "https://assets.asana.biz/transform/5162af5c-dc51-40b1-a6c5-762ac5893b0e/card-hubspot?io=transform:fill,width:1440&format=webp", + image: + "https://assets.asana.biz/transform/5162af5c-dc51-40b1-a6c5-762ac5893b0e/card-hubspot?io=transform:fill,width:1440&format=webp", title: "Hubspot", - paragraph: "Pellentesque ac bibendum ipsum. Proin consectetur aliquet tortor, at tristique arcu tempor a. Nullam blandit turpis nec felis tincidunt.", - label: "Read Case Study" + paragraph: + "HubSpot is a leading provider of customer relationship management (CRM) software and marketing automation solutions, designed to help businesses grow.", }, { id: 3, - image: "https://assets.asana.biz/transform/df2510ec-14de-4e4e-80a1-cfe041bd142b/card-figma-asana-customer?io=transform:fill,width:1440&format=webp", + image: + "https://assets.asana.biz/transform/df2510ec-14de-4e4e-80a1-cfe041bd142b/card-figma-asana-customer?io=transform:fill,width:1440&format=webp", title: "Figma", - paragraph: "Fusce vehicula eget ligula nec faucibus. Duis nec tempor ipsum, eget dictum enim. Donec at tellus purus.", - label: "Read Case Study" + paragraph: + "Figma is a powerful, cloud-based design tool that has revolutionized the way designers and teams collaborate on digital projects.", }, { id: 4, - image: "https://assets.asana.biz/transform/cc2baf08-d92c-4470-acbf-8859e5aa423a/card-sony-music-asana-customer?io=transform:fill,width:1440&format=webp", + image: + "https://assets.asana.biz/transform/cc2baf08-d92c-4470-acbf-8859e5aa423a/card-sony-music-asana-customer?io=transform:fill,width:1440&format=webp", title: "Sony Music", - paragraph: "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut vitae sem sed quam ultrices rhoncus. Donec ac quam euismod, lobortis odio vel, molestie metus.", - label: "Read Case Study" + paragraph: + "Sony Music Entertainment is a global music conglomerate and one of the record labels, alongside Universal Music Group and Warner Music Group.", }, { id: 5, - image: "https://assets.asana.biz/transform/2fb67d4b-da8f-4720-a97e-194a511f4503/card-zoom-1x?io=transform:fill,width:1440&format=webp", - title: "Zoom", - paragraph: "Mauris id augue odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed feugiat justo et leo dictum, a eleifend tortor ultrices.", - label: "Read Case Study" - }, - { - id: 6, - image: "https://assets.asana.biz/transform/f55aec7c-911f-4002-90cf-fa911835ac7b/card-overstock-asana-customer?io=transform:fill,width:1440&format=webp", - title: "Overstock", - paragraph: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla convallis libero quis magna bibendum, at mollis quam vehicula.", - label: "Read Case Study" - }, - { - id: 7, - - image: "https://assets.asana.biz/transform/5162af5c-dc51-40b1-a6c5-762ac5893b0e/card-hubspot?io=transform:fill,width:1440&format=webp", - title: "Hubspot", - paragraph: "Pellentesque ac bibendum ipsum. Proin consectetur aliquet tortor, at tristique arcu tempor a. Nullam blandit turpis nec felis tincidunt.", - label: "Read Case Study" - }, - { - id: 8, - - image: "https://assets.asana.biz/transform/df2510ec-14de-4e4e-80a1-cfe041bd142b/card-figma-asana-customer?io=transform:fill,width:1440&format=webp", - title: "Figma", - paragraph: "Fusce vehicula eget ligula nec faucibus. Duis nec tempor ipsum, eget dictum enim. Donec at tellus purus.", - label: "Read Case Study" - }, - { - id: 9, - - image: "https://assets.asana.biz/transform/cc2baf08-d92c-4470-acbf-8859e5aa423a/card-sony-music-asana-customer?io=transform:fill,width:1440&format=webp", - title: "Sony Music", - paragraph: "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut vitae sem sed quam ultrices rhoncus. Donec ac quam euismod, lobortis odio vel, molestie metus.", - label: "Read Case Study" - }, - { - id: 10, - - image: "https://assets.asana.biz/transform/2fb67d4b-da8f-4720-a97e-194a511f4503/card-zoom-1x?io=transform:fill,width:1440&format=webp", + image: + "https://assets.asana.biz/transform/2fb67d4b-da8f-4720-a97e-194a511f4503/card-zoom-1x?io=transform:fill,width:1440&format=webp", title: "Zoom", - paragraph: "Mauris id augue odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed feugiat justo et leo dictum, a eleifend tortor ultrices.", - label: "Read Case Study" + paragraph: + "Zoom, the popular video conferencing platform, integrates project management systems to enhance collaboration and productivity for its users. ", }, ]; @@ -124,36 +89,39 @@ const TopCompanySlider = () => { breakpoint: 1280, settings: { slidesToShow: 3, - } + }, }, { breakpoint: 1000, settings: { slidesToShow: 2, - } + }, }, { breakpoint: 650, settings: { slidesToShow: 1, - } + }, }, ], - afterChange: current => { - setProgress(100 / (data.length - slideToShow + 1) * (current + 1)) - console.log(slideToShow) - } + afterChange: (current) => { + setProgress((100 / (data.length - slideToShow + 1)) * (current + 1)); + console.log(slideToShow); + }, }; return ( - <div className='w-full h-fit px-10 py-10 my-6'> + <div className="w-full h-fit px-10 py-10 my-6"> {/* <h1 className='text-5xl mt-[50px] mb-[50px] '>The world’s top companies trust Synify</h1> */} <Title title="The world’s top companies trust Synify" /> - <div className='flex gap-2 items-center dark:hover:text-[#8401A1] hover:text-cyan-600 font-semibold py-2 px-4 mt-2'> - <p className='my-2' >See all case studies </p> <span><FaArrowRight /></span> + <div className="flex gap-2 items-center dark:hover:text-[#0c01a1] hover:text-cyan-600 font-semibold py-2 px-4 mt-2"> + <p className="my-2">See all case studies </p>{" "} + <span> + <FaArrowRight /> + </span> </div> - <div className='relative mb-20'> + <div className="relative mb-20"> <Slider {...settings}> {data.map((item, index) => ( <Card key={index} data={item} /> @@ -164,10 +132,9 @@ const TopCompanySlider = () => { {/* <div className='h-[2px] bg-gray-300 w-[250px] absolute top-[520px] left-0'> <div className='bg-[#fab1a0] absolute h-[100%] transition-all' style={{ width: `${progress}%`}}></div> </div> */} - </div> </div> ); }; -export default TopCompanySlider; \ No newline at end of file +export default TopCompanySlider; diff --git a/src/components/Pages/Inside/Inside.jsx b/src/components/Pages/Inside/Inside.jsx new file mode 100644 index 0000000..e886402 --- /dev/null +++ b/src/components/Pages/Inside/Inside.jsx @@ -0,0 +1,270 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { AuthContext } from '../../../Providers/AuthProviders/AuthProviders'; +import { BarChart, Bar, Cell, XAxis, YAxis, CartesianGrid, PieChart, Pie, Legend, ResponsiveContainer, Tooltip, LineChart, Line } from 'recharts'; + +import { FaBook, FaDollarSign, FaUsers } from 'react-icons/fa'; +import { useParams } from 'react-router-dom'; +import { FaTimeline } from "react-icons/fa6"; +import ScrollTrigger from "react-scroll-trigger"; +import CountUp from "react-countup"; + +const colors = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042', 'red', 'pink']; +const COLORS = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042']; + + +const Inside = () => { + const { user } = useContext(AuthContext); + const {id} = useParams() + const [stats,setStats] = useState({}); + const [timelineData, setTimelineData] = useState({}); + const [taskData, setTaskData] = useState({}); + const [chartData,setChartData] = useState([]) + const [counterOn, setCounterOn] = useState(false); + + const pieChartData = [ + { name: 'Total Members', value: stats?.totaMembers }, + { name: 'Total Timelines', value: stats?.totalTimelines }, + { name: 'Total Tasks', value: stats?.totalTasks } + ]; + + useEffect(() =>{ + fetch(`https://projectsyncifyapi.onrender.com/api/v2/workspace/insights/${id}/`) + .then(res => res.json()) + .then(data => { + console.log({data}) + setStats(data) + setTimelineData(data.timelines); + setTaskData(data.tasks) + }) + },[]) + +const renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => { + const radius = innerRadius + (outerRadius - innerRadius) * 0.5; + const x = cx + radius * Math.cos(-midAngle * (Math.PI / 180)); + const y = cy + radius * Math.sin(-midAngle * (Math.PI / 180)); + + return ( + <text x={x} y={y} fill="white" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline="central"> + {`${(percent * 100).toFixed(0)}%`} + </text> + ); +}; + + // Convert data to format expected by Recharts BarChart component +const taskChartData = Object.entries(taskData).map(([stage, count], index) => ({ stage, count, fill: COLORS[index] })); +const barChartData = Object.entries(timelineData).map(([stage, count], index) => ({ stage, count, fill: COLORS[index] })); + +console.log({barChartData}) +console.log({taskChartData}) + +// const { members, timelines, tasks } = workspaceData; +// // Combine data from members, timelines, and tasks +// const combinedData = [ +// { category: 'Members', count: members["Associate Manager"] + members["Team Leader"] + members["Member"] }, +// { category: 'Timelines', count: timelines["In Progress"] + timelines["To Do"] + timelines["Testing"] + timelines["Done"] }, +// { category: 'Tasks', count: tasks["In Progress"] + tasks["To Do"] + tasks["Done"] } +// ]; + + // custom shape for the bar chart + const getPath = (x, y, width, height) => { + return `M${x},${y + height}C${x + width / 3},${y + height} ${x + width / 2},${y + height / 3} + ${x + width / 2}, ${y} + C${x + width / 2},${y + height / 3} ${x + (2 * width) / 3},${y + height} ${x + width}, ${y + height} + Z`; +}; + + const TriangleBar = (props) => { + const { fill, x, y, width, height } = props; + + return <path d={getPath(x, y, width, height)} stroke="none" fill={fill} />; +}; + +// custom shape for the pie chart +const RADIAN = Math.PI / 180; +const renderCustomizedLabel1 = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }) => { + const radius = innerRadius + (outerRadius - innerRadius) * 0.5; + const x = cx + radius * Math.cos(-midAngle * RADIAN); + const y = cy + radius * Math.sin(-midAngle * RADIAN); + + return ( + <text x={x} y={y} fill="white" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline="central"> + {`${(percent * 100).toFixed(0)}%`} + </text> + ); +}; + + // console.log({combinedData}) + return ( + <div className='m-8 '> + <ScrollTrigger + onEnter={() => setCounterOn(true)} + onExit={() => setCounterOn(false)} + > + <h2 className="text-xl md:text-3xl my-6 "> + <span>Hi, Welcome </span> + <span className='font-bold '> + { + user?.name ? user.name : 'Back' + } + </span> + </h2> + <div className="flex mb-20 flex-col md:flex-row justify-between mx-auto gap-5 "> + + <div className="stat rounded-md px-6 py-5 shadow-light-shadow1 border-2 border-blue-300"> + <div className="stat-figure text-secondary"> + <FaUsers className='text-3xl text-blue-400'></FaUsers> + </div> + <div className="text-[#0c01a1] dark:text-[#73e9fe]">Members</div> + <div className="stat-value">{counterOn && ( + <CountUp start={0} end={stats.totaMembers} duration={5} delay={0} /> + )}+</div> + <div className="text-[#0c01a1] dark:text-[#73e9fe]">↗︎ 400 (22%)</div> + </div> + + <div className="stat rounded-md px-6 py-5 shadow-light-shadow1 border-2 border-blue-300"> + <div className="stat-figure text-secondary "> + <FaTimeline className='text-3xl text-green-400'/> + </div> + <div className="text-[#0c01a1] dark:text-[#73e9fe]">Plans</div> + <div className="stat-value text-green-400"> {counterOn && ( + <CountUp start={1} end={stats.totalTimelines} duration={5} delay={0} /> + )} + </div> + <div className="text-[#0c01a1] dark:text-[#73e9fe]">↗︎ 400 (22%)</div> + </div> + + + <div className="stat rounded-md px-6 py-5 shadow-light-shadow1 border-2 border-blue-300"> + <div className="stat-figure text-secondary"> + <FaBook className='text-3xl text-yellow-400'></FaBook> + </div> + <div className="text-[#0c01a1] dark:text-[#73e9fe]">Tasks</div> + <div className="stat-value text-yellow-400"> {counterOn && ( + <CountUp start={2} end={stats.totalTasks} duration={5} delay={0} /> + )} +</div> + <div className="text-[#0c01a1] dark:text-[#73e9fe]">↗︎ 400 (22%)</div> + </div> + + </div> + + <div className='flex flex-col md:flex-row mb-20'> + + {/** all total using pichart */} + <div style={{width:'100%', height: 400}}> + <ResponsiveContainer> + <PieChart> + <Pie + data={pieChartData} + cx="50%" + cy="50%" + labelLine={false} + label={renderCustomizedLabel} + outerRadius={80} + fill="#8884d8" + dataKey="value" + > + {pieChartData.map((entry, index) => ( + <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} /> + ))} + </Pie> + <Legend /> + </PieChart> + </ResponsiveContainer> + + </div> + + {/** timeline data using custom chart */} + <div style={{ width: '100%', height: 400 }} > + <ResponsiveContainer> + <BarChart + data={barChartData} + > + <CartesianGrid strokeDasharray="3 3" /> + <XAxis dataKey="stage" /> + <YAxis /> + <Bar dataKey="count" fill="#8884d8" shape={<TriangleBar />} label={{ position: 'top' }}> + {barChartData.map((entry, index) => ( + <Cell key={`cell-${index}`} fill={colors[index % 6]} /> + ))} + </Bar> + </BarChart> + <h1 className='text-center text-xl font-bold my-2'>Plans Chart</h1> + </ResponsiveContainer> + </div> + + {/* <div style={{ width: '100%', height: 400 }}> + <ResponsiveContainer> + <BarChart data={barChartData}> + <CartesianGrid strokeDasharray="3 3" /> + <XAxis dataKey="stage" /> + <YAxis /> + <Tooltip /> + <Bar dataKey="count" fill="#8884d8"> + {barChartData.map((entry, index) => ( + <Cell key={`cell-${index}`} fill={entry.fill} /> + ))} + </Bar> + </BarChart> + <h1 className='text-center'>Timeline</h1> + </ResponsiveContainer> + </div> */} + + + + +{/* <div style={{ width: '100%', height: 400 }}> + <ResponsiveContainer> + <BarChart> + <CartesianGrid strokeDasharray="3 3" /> + <XAxis dataKey="category" /> + <YAxis /> + <Tooltip /> + <Legend /> + {combinedData.map((data, index) => ( + <Bar key={index} dataKey="count" name={data.category} fill={COLORS[index]} /> + ))} + </BarChart> + </ResponsiveContainer> + </div> */} + +{/* <div style={{ width: '100%', height: 400 }}> + <ResponsiveContainer> + <LineChart data={lineChartData}> + <CartesianGrid strokeDasharray="3 3" /> + <XAxis dataKey="stage" /> + <YAxis /> + <Tooltip /> + {lineChartData.map((entry, index) => ( + <Line key={`line-${index}`} type="monotone" dataKey="count" stroke={COLORS[index]} /> + ))} + </LineChart> + <h1 className='text-center'>Tasks</h1> + </ResponsiveContainer> + </div> */} + + + + </div> + <div className='flex flex-col md:flex-row mb-20'> + <div style={{ width: '100%', height: 400 }}> + <ResponsiveContainer> + <BarChart data={taskChartData}> + <CartesianGrid strokeDasharray="3 3" /> + <XAxis dataKey="stage" /> + <YAxis /> + <Tooltip /> + <Bar dataKey="count" fill="#8884d8"> + {taskChartData.map((entry, index) => ( + <Cell key={`cell-${index}`} fill={entry.fill} /> + ))} + </Bar> + </BarChart> + <h1 className='text-center text-xl my-2 font-bold'>Task Chart</h1> + </ResponsiveContainer> + </div> + </div> + </ScrollTrigger> + </div> + ); +}; + +export default Inside; \ No newline at end of file diff --git a/src/components/Pages/Plans/Plans.jsx b/src/components/Pages/Plans/Plans.jsx index 1845cdb..a2faf3e 100644 --- a/src/components/Pages/Plans/Plans.jsx +++ b/src/components/Pages/Plans/Plans.jsx @@ -1,16 +1,19 @@ import axios from 'axios'; -import { useEffect, useState } from 'react'; +import React, { useContext, useEffect, useState } from 'react'; import { FaCaretDown, FaCaretSquareDown, FaRegEdit } from 'react-icons/fa'; import { GiGameConsole } from 'react-icons/gi'; import { MdDeleteForever } from 'react-icons/md'; import { Link, useNavigate, useParams } from 'react-router-dom'; -import { toast } from 'react-toastify'; +import { toast } from 'react-toastify'; import { TbListDetails } from "react-icons/tb"; import { CiSquarePlus } from "react-icons/ci"; import { MdDeveloperBoard } from "react-icons/md"; +import { AuthContext } from '../../../Providers/AuthProviders/AuthProviders'; +import { IoPersonAddOutline } from 'react-icons/io5'; const Plans = () => { const { id } = useParams(); + const { user } = useContext(AuthContext); const [data, setData] = useState(null); // State to store fetched data const [loading, setLoading] = useState(false); // State for loading status const [error, setError] = useState(null); // State for error status @@ -104,7 +107,7 @@ const Plans = () => { const result = await axios.post('https://projectsyncifyapi.onrender.com/workspace/timelines/create/', newTimeline) if (result) { - toast.success('Successfully created timeline') + toast.success('Successfully created Plan'); setReload(!reload); handleCloseModelButton("add") console.log('result data show after add timeline -> ', result) @@ -169,7 +172,7 @@ const Plans = () => { const result = await axios.put(`https://projectsyncifyapi.onrender.com/workspace/timelines/update/${formData.timelineId}/`, updateTimeline) if (result) { - toast.success('Successfully Updated timeline'); + toast.success('Successfully Updated Plan'); setReload(!reload); handleCloseModelButton('edit') @@ -187,7 +190,7 @@ const Plans = () => { try { const result = await axios.delete(`https://projectsyncifyapi.onrender.com/workspace/timelines/delete/${timeline_id}/`); - toast.success("Successfully deleted timeline..."); + toast.success("Successfully deleted Plan"); setReload(!reload) } catch (error) { console.log("delete timeline error -> ", error) @@ -199,69 +202,79 @@ const Plans = () => { document.getElementById(value).close() } - {/** start handle assign button */} + {/** start handle assign button */ } const handleAssignButton = async (e) => { e.preventDefault() - + const timelineId = Number(e.target.timelineId.value); const email = e.target.leaderEmail.value; - console.log({timelineId, email}) + console.log({ timelineId, email }) - if(timelineId && email){ + if (timelineId && email) { try { const result = await axios.patch(`https://projectsyncifyapi.onrender.com/workspace/timelines/update/assign/${timelineId}/ - `, {"email": email}) + `, { "email": email }) console.log('result -> ', result) - toast.success("Assign Successfully"); + toast.success("Member is Assigned Successfully"); + setReload(!reload) + handleCloseModelButton("assign") - } catch (error) { + } catch (error) { console.log('error -> ', error) - } + } } + } + {/** end handle assign button */ } -} + {/** start handle create board button */ } - {/** end handle assign button */} - {/** start handle create board button */} const handleCreateBoardButton = async (e) => { e.preventDefault(); - + const timelineId = Number(e.target.timelineId.value); + console.log('data type of timeline id -> ', typeof timelineId) const boardName = e.target.name.value; const boardDetails = e.target.details.value; - console.log({timelineId, boardName, boardDetails}) + const newBoard = { + "timeline_Name": timelineId, + "name": boardName, + "details": boardDetails + } + + console.log('form data before post api hit -> ', newBoard) - if(timelineId && boardName && boardDetails){ + if (timelineId && boardName && boardDetails) { try { const result = await axios.post(`https://projectsyncifyapi.onrender.com/workspace/scrum/create/ - `, { - "timeline_name": timelineId, - "name": "boardName", - "details": "boardDetails" - }) - console.log('result -> ', result) + `, newBoard) + console.log('this result show after post in create boared api -> ', result) toast.success("Board Created Successfully"); handleCloseModelButton("board") - navigate(`/workspace/${id}/boards`) - } catch (error) { - console.log('error -> ', error) - } + navigate(`/workspace/${id}/boards`, { state: { timelineId } }) + } catch (error) { + console.log('error -> ', error); + console.log(error?.response?.data?.timeline_Name[0]); + toast.warning("Already board is created"); + handleCloseModelButton("board") + } } } - {/** end handle create board button */} + {/** end handle create board button */ } useEffect(() => { const fetchData = async () => { setLoading(true) setError('') console.log({ id }) + + try { const response = await axios.get(`https://projectsyncifyapi.onrender.com/workspace/singleworkspace/${id}/timelines/list/`); setData(response.data); // Update state with the fetched data @@ -275,630 +288,997 @@ const Plans = () => { }; + + + + + const getSpecificMembers = async () => { + try { - const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v2/workspace/${id}/members/`) - console.log("get member -> ", result.data) - setMembers(result.data) + const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v2/workspace/${id}/members/`) + console.log("get member -> ", result.data) + setMembers(result.data) } catch (error) { - console.log("get member error -> ", error) + console.log("get member error -> ", error) } - } - + } + getSpecificMembers() - fetchData(); // Call the function to fetch data + fetchData(); - }, [reload]); // Empty dependency array means this effect runs once when the component mounts + }, [reload]); + // Count the length of timelines + const timelinesLength = data?.timelines?.length || 0; + + console.log({ timelinesLength }) return ( - <div className=''> + <div className='h-fit'> + <div className=" py-2 mt-4 "> + <div className="flex justify-between items-center pb-2"> + <h1 className="text-3xl pb-2 font-semibold "> + Plans + </h1> + + <button className="bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('add').showModal()}> + Add Plan + </button> + </div> - {loading && <div>Loading...</div>} - {error && <div>Error...</div>} + <hr className="w-full h-1 bg-gradient-to-r from-[#0c01a1] to-[#73e9fe] " /> + <p className="text-sm font-semibold mt-2 text-black dark:text-white "> + To ensure seamless progress tracking and maintenance of your project, incorporate team members into your project structure. Assign distinct roles to each member to streamline collaboration and enhance accountability throughout the project lifecycle. Add member and explore more. + </p> + </div> + {/* {loading && <div>Loading...</div>} + {error && <div>Error...</div>} */} <div> - <button className="mx-4 my-4 text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded px-4 py-3" onClick={() => document.getElementById('add').showModal()}> - Add timeline - </button> + <dialog id="add" className="modal"> <div className="modal-box bg-white dark:bg-black"> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton('add')}>✕</button> - <h2 className="text-2xl font-bold mb-4 text-center">Create Timeline</h2> + <button id="closeBtn" className=" absolute right-3 top-3 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe] rounded-full border w-6 h-6" onClick={() => handleCloseModelButton('add')}>✕</button> + <h2 className="text-2xl font-bold mb-4 text-center">Create Plans</h2> <form onSubmit={handleAddTimelineButton}> - <div className='form-control'> - <label htmlFor="text" className="label">Workspace Name</label> + {/* <div className='form-control'> + <label htmlFor="text" className="label">Project Name</label> <input type="text" id="WorkspaceName" name="WorkspaceName" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Workspace Name" /> - </div> + </div> */} <div className="form-control mb-4"> - <label htmlFor="name" className="label">Timeline Name</label> - <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black" /> + <label htmlFor="name" className="label">Plan Name</label> + <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black " placeholder="Enter Plan Name" /> </div> <div className="form-control mb-4"> <label htmlFor="userType" className="label">Details</label> - <textarea name="details" id="details" className="input input-bordered bg-slate-200 dark:bg-black" ></textarea> + <textarea name="details" id="details" className="textarea textarea-bordered bg-slate-200 dark:bg-black" placeholder='Enter Details'></textarea> </div> <div className="form-control mb-4"> - <label htmlFor="userType" className="label">StartDate</label> + <label htmlFor="userType" className="label">Start Date</label> <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" /> </div> <div className="form-control mb-4"> - <label htmlFor="userType" className="label">EndDate</label> + <label htmlFor="userType" className="label">End Date</label> <input type="date" name="endDate" id="endDate" className="input input-bordered bg-slate-200 dark:bg-black" /> </div> <div className="flex justify-between my-4"> - <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-3">Add Timeline</button> + <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-3">Add Plan</button> </div> </form> </div> </dialog> </div> - - {/** Start To do component*/} - <div className='overflow-x-auto shadow-xl rounded w-full m-4'> + { timelinesLength === 0 ? ( + <div className="text-center mt-10 h-screen"> + <h1 className="text-xl font-bold">No Plans add yet... add some plans and explore more</h1> + </div> + ) : ( <div> - <button className='font-bold text-4xl rounded bg-slate-400'>To Do</button> - - <div className="overflow-x-auto shadow-xl rounded w-6/7 m-4"> - <table className="table"> - {/* head */} - <thead className=' text-lg text-[#8401A1] dark:text-[#73e9fe]'> - <tr className='text-center'> - <th>Timeline Name</th> - <th>Timeline</th> - <th>Status</th> - <th>Assign</th> - <th>Action</th> - <th> <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - - - </th> - </tr> - </thead> - <tbody> - {/* Table data of To do status */} - {data?.timelines?.filter(timeline => timeline.status === "To Do").map((timeline, index) => ( - <tr key={index} className="text-center"> - <td> - <div className="flex items-center gap-3"> - <div className="avatar"> - <div className="mask mask-squircle w-12 h-12"> - <img src="https://img.daisyui.com/tailwind-css-component-profile-2@56w.png" alt="Avatar Tailwind CSS Component" /> - </div> - </div> - <div> - <div className="font-bold">{timeline.name}</div> - </div> - </div> - </td> - <td> - {timeline.name} - </td> - - <td> - <div className="relative inline-block text-left"> - <div> - <button - type="button" - onClick={() => toggleDropdown(timeline.id)} - className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" - id={`options-menu-${timeline.id}`} - aria-haspopup="true" - aria-expanded="true" - > - {selectedStatus[timeline.id] || 'To Do'} - <FaCaretSquareDown className="-mr-1 ml-2 h-5 w-5" /> - </button> - </div> - - {isOpen[timeline.id] && ( - <div - className="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none" - role="menu" - aria-orientation="vertical" - aria-labelledby={`options-menu-${timeline.id}`} - > - <div className="py-1" role="none"> + {/** Start To do component*/} + <div className='overflow-x-auto shadow-xl rounded-sm w-full mt-4'> + <div> + <button className='font-bold text-md px-2 py-1 rounded-sm bg-sky-300 text-[#0c01a1]'>To Do</button> + + <div className="overflow-x-auto shadow-xl rounded-sm w-6/7"> + <table className="table"> + {/* head */} + <thead className=' text-sm text-[#0c01a1] dark:text-[#73e9fe]'> + <tr className='text-center'> + + <th>Plans</th> + <th>Assign</th> + <th>Status</th> + <th>Edit</th> + <th>Delete</th> + <th>Board</th> + <th> <button className='btn-ghost'> </button> + {/* You can open the modal using document.getElementById('ID').showModal() method */} + + + </th> + </tr> + </thead> + <tbody> + {/* Table data of To do status */} + {data?.timelines?.filter(timeline => timeline.status === "To Do").map((timeline, index) => ( + <tr key={index} className="text-center"> + <td> + + <div className="font-bold text-center">{timeline.name.slice(0, 16)}</div> + + </td> + + <td> + {(timeline.assign) == null && <button onClick={() => handleOpenDialog(timeline, "assign")} className='rounded-full border border-[#0c01a1] px-1 py-1 '><IoPersonAddOutline className='text-lg cursor-pointer ' title="Assign" /></button>} + + {timeline.assign && ( + <div className='flex items-center justify-center gap-6' > + <img src={timeline.assign.image} alt="image" className='w-8 h-8 rounded-full' /> + {/* <p className="font-semibold">{timeline.assign.first_name + " " + timeline.assign.last_name}</p> */} + </div> + )} + </td> + <td> + <div className="relative inline-block text-left"> + <div > <button - onClick={() => handleStatusUpdateButton(timeline.id, 'In Progress')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - In Progress - </button> - <button - onClick={() => handleStatusUpdateButton(timeline.id, 'Testing')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" + type="button" + onClick={() => toggleDropdown(timeline.id)} + className="inline-flex justify-center w-full rounded-sm border border-gray-300 shadow-sm px-4 py-2 bg-white dark:bg-gray-950 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" + id={`options-menu-${timeline.id}`} + aria-haspopup="true" + aria-expanded="true" > - Testing - </button> - <button - onClick={() => handleStatusUpdateButton(timeline.id, 'Done')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - Completed + {selectedStatus[timeline.id] || 'To Do'} + <FaCaretSquareDown className="-mr-1 ml-2 h-3 w-3" /> </button> </div> + + {isOpen[timeline.id] && ( + <div + className="absolute right-6 bottom-0 w-44 rounded-sm shadow-lg bg-white dark:bg-gray-950 ring-1 ring-black ring-opacity-5 focus:outline-none" + role="menu" + aria-orientation="vertical" + aria-labelledby={`options-menu-${timeline.id}`} + > + <div className="py-1 ml-6" role="none"> + + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'In Progress')} + className="block px-2 py-1 text-sm " + role="menuitem" + > + In Progress + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'Testing')} + className="block px-2 py-1 text-sm " + role="menuitem" + > + Testing + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'Done')} + className="block px-2 py-1 text-sm " + role="menuitem" + > + Done + </button> + </div> + </div> + )} </div> - )} - </div> - </td> - - <td> - {(timeline.assign) == null && <button onClick={() => handleOpenDialog(timeline, "assign")}><CiSquarePlus className='text-4xl cursor-pointer' /></button>} - - - </td> - - <th> - - <Link to={`/workspace/${id}/boards`} state={timeline} className="btn btn-info px-4 py-2 text-xl" > - <TbListDetails /> - </Link> - - {/** Member edit button and model start */} - <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - <button className="btn btn-success px-4 py-2" onClick={() => handleOpenDialog(timeline, "edit")}> - <FaRegEdit className="text-xl" /> - </button> - <dialog id="edit" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton('edit')}>✕</button> - <h2 className="text-2xl font-bold mb-4 text-center">Update Timeline</h2> - <form onSubmit={handleEditTimelineButton}> - <div className='form-control'> - <label htmlFor="text" className="label">Workspace Name</label> - <input type="text" id="WorkspaceName" name="WorkspaceName" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Workspace Name" value={formData.workspace_Name} - onChange={handleChange} /> - </div> - <div className="form-control mb-4"> - <label htmlFor="name" className="label">Timeline Name</label> - <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.name} - onChange={handleChange} /> + </td> + <th> + <button className=" px-4 py-2" onClick={() => handleOpenDialog(timeline, "edit")}> + <FaRegEdit className="text-xl" /> + </button> + {/** Member edit button and model start */} + + {/* You can open the modal using document.getElementById('ID').showModal() method */} + + <dialog id="edit" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton('edit')}>✕</button> + <h2 className="text-2xl font-bold mb-4 text-center">Update Plan</h2> + <form onSubmit={handleEditTimelineButton}> + <div className='form-control'> + <label htmlFor="text" className="label">Project Name</label> + <input type="text" id="WorkspaceName" name="WorkspaceName" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Workspace Name" value={formData.workspace_Name} + onChange={handleChange} /> + </div> + <div className="form-control mb-4"> + <label htmlFor="name" className="label"> Name</label> + <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.name} + onChange={handleChange} /> + + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Details</label> + <textarea name="details" id="details" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.details} + onChange={handleChange}></textarea> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Start Date</label> + <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.start_Date} + onChange={handleChange} /> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">End Date</label> + <input type="date" name="endDate" id="endDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.end_Date} + onChange={handleChange} /> + </div> + <div className="flex justify-between my-4"> + <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-3">Update</button> + </div> + </form> </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">Details</label> - <textarea name="details" id="details" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.details} - onChange={handleChange}></textarea> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">StartDate</label> - <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.start_Date} - onChange={handleChange} /> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">EndDate</label> - <input type="date" name="endDate" id="endDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.end_Date} - onChange={handleChange} /> - </div> - <div className="flex justify-between my-4"> - <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-3">Update</button> - </div> - </form> - </div> - </dialog> - {/** Member edit button and model end */} - <button className="btn btn-warning p-2 m-2" > - <MdDeleteForever className="text-xl cursor-pointer " onClick={() => handleDeleteTimeline(timeline.id)} /> - </button> - </th> - - <td>{timeline.assign && <MdDeveloperBoard className='text-4xl cursor-pointer' onClick={() => handleOpenDialog(timeline, 'board')} />}</td> -{/** start create board modal for specefic timeline */} -<dialog id="board" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => document.getElementById('board').close()}>✕</button> - <h2 className="font-bold text-2xl text-center my-3">Create Board</h2> - - <form onSubmit={handleCreateBoardButton}> - - <div className='form-control'> - <label htmlFor="email" className="label">Timeline Id</label> - <input type="text" id="timelineId" name="timelineId" value={formData.timelineId} className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Email" /> - </div> - - <div className="form-control"> - <label className="label"> - <span className="label-text">Board Name</span> - </label> - <input - type="text" - placeholder="Enter Board Name" - className="input input-bordered" - name="name" - /> - </div> - <div className="form-control"> - <label className="label"> - <span className="label-text">Board Details</span> - </label> - <input - type="text" - name="details" - placeholder="Write Board Details" - className="input input-bordered" - /> - </div> + </dialog> + {/** Member edit button and model end */} + </th> + <th> + <button className=" p-2 m-2" > + <MdDeleteForever className="text-xl cursor-pointer " onClick={() => handleDeleteTimeline(timeline.id)} /> + </button> + </th> + <th> - <div className="flex justify-center mt-6"> - <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-2" type="submit">Create</button> - </div> + <button className='px-4 py-2'> + <Link to={`/workspace/${id}/boards`} state={timeline} className=" text-xl cursor-pointer" title='Let's see the board' > + <TbListDetails /> + </Link> + </button> + </th> + + + + <td> + {!timeline?.scrum_id && <MdDeveloperBoard className='text-xl cursor-pointer' title='Create Board' onClick={() => handleOpenDialog(timeline, 'board')} />} + + + </td> + {/* <td>{(timeline?.assign?.id == user.userId) && <MdDeveloperBoard className='text-4xl cursor-pointer' onClick={() => handleOpenDialog(timeline, 'board')} />}</td> */} + + {/** start create board modal for specefic timeline */} + <dialog id="board" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" onClick={() => document.getElementById('board').close()}>✕</button> + <h2 className="font-bold text-2xl text-center my-3">Create Board</h2> + + <form onSubmit={handleCreateBoardButton}> + + <div className='form-control'> + <label htmlFor="email" className="label">Timeline Id</label> + <input type="text" id="timelineId" name="timelineId" value={formData.timelineId} className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Email" /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text">Board Name</span> + </label> + <input + type="text" + placeholder="Enter Board Name" + className="input input-bordered bg-white dark:bg-gray-950" + name="name" + /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text">Board Details</span> + </label> + <input + type="text" + name="details" + placeholder="Write Board Details" + className="input input-bordered bg-white dark:bg-gray-950" + /> + </div> + + <div className="flex justify-center mt-6"> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-2" type="submit">Create</button> + </div> + + + </form> + </div> + </dialog> + {/** end create board modal for specefic timeline */} + </tr> + ))} + </tbody> + </table> - </form> - </div> -</dialog> -{/** end create board modal for specefic timeline */} - </tr> - ))} - - </tbody> - </table> - -{/** start modal layout for assign */} -<dialog id="assign" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton("assign")}>✕</button> - <h2 className="font-bold text-2xl text-center my-3">Assign Member</h2> - - <form onSubmit={handleAssignButton}> - - <div className='form-control'> - <label htmlFor="email" className="label">Timeline Id</label> - <input type="text" id="timelineId" name="timelineId" value={formData.timelineId} className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Email" /> - </div> + {/** start modal layout for assign */} + <dialog id="assign" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton("assign")}>✕</button> + <h2 className="font-bold text-2xl text-center my-3">Assign Member</h2> - <div className="form-control"> - <label className="label" htmlFor="email"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Email</span> - </label> - <select id="leaderEmail" name="leaderEmail" className="select select-bordered bg-slate-200 dark:bg-black"> - {members?.filter(member => member.role === 'Team Leader').map((member,idx) => <option value={member.user_email} key={idx}>{member.user_email}</option>)} - </select> - </div> + <form onSubmit={handleAssignButton}> - <div className="flex justify-center mt-6"> - <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-2" type="submit">Assign Member</button> - </div> + <div className='form-control'> + <label htmlFor="email" className="label">Timeline Id</label> + <input type="text" id="timelineId" name="timelineId" value={formData.timelineId} className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Email" /> + </div> + <div className="form-control"> + <label className="label" htmlFor="email"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Email</span> + </label> + <select id="leaderEmail" name="leaderEmail" className="select select-bordered bg-slate-200 dark:bg-black"> + {members?.filter(member => member.role === 'Team Leader').map((member, idx) => <option value={member.user_email} key={idx}>{member.user_email}</option>)} + </select> + </div> - </form> - </div> -</dialog> -{/** end modal layout for assign */} + <div className="flex justify-center mt-6"> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-2" type="submit">Assign Member</button> + </div> - </div> - </div> - </div> - {/** End To do component*/} + </form> + </div> + </dialog> + {/** end modal layout for assign */} - {/** Start Progress component */} - <div className='w-8/10 mx-auto h-[200px] bg-green-400 text-white my-2 rounded-md'> - <div> - <button className='font-bold text-4xl rounded bg-slate-400'>Progress</button> - - <div className="overflow-x-auto shadow-xl rounded w-6/7 m-4"> - <table className="table"> - {/* head */} - <thead className=' text-lg text-[#8401A1] dark:text-[#73e9fe]'> - <tr className='text-center'> - <th>Timeline Name</th> - <th>Timeline</th> - <th>Status</th> - <th>Action</th> - <th> <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - - - </th> - </tr> - </thead> - <tbody> - {/* row 1 */} - {data?.timelines?.filter(timeline => timeline.status === 'In Progress').map((timeline, index) => ( - <tr key={index} className="text-center"> - <td> - <div className="flex items-center gap-3"> - <div className="avatar"> - <div className="mask mask-squircle w-12 h-12"> - <img src="https://img.daisyui.com/tailwind-css-component-profile-2@56w.png" alt="Avatar Tailwind CSS Component" /> - </div> - </div> - <div> - <div className="font-bold">{timeline.name}</div> - </div> - </div> - </td> - <td> - {timeline.name} - </td> - - <td> - <div className="relative inline-block text-left"> - <div> - <button - type="button" - onClick={() => toggleDropdown(timeline.id)} - className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" - id={`options-menu-${timeline.id}`} - aria-haspopup="true" - aria-expanded="true" - > - {selectedStatus[timeline.id] || 'To Do'} - <FaCaretSquareDown className="-mr-1 ml-2 h-5 w-5" /> - </button> - </div> + </div> + </div> + </div> + {/** End To do component*/} + + + {/** Start Progress component */} + <div className='overflow-x-auto shadow-xl rounded-sm w-full mt-10'> + <div> + <button className='font-bold text-md px-2 py-1 rounded-sm bg-green-200 text-green-900'>In Progress</button> + + <div className="overflow-x-auto shadow-xl rounded-sm w-6/7"> + <table className="table"> + {/* head */} + <thead className=' text-sm text-[#0c01a1] dark:text-[#73e9fe]'> + <tr className='text-center'> + + <th>Plans</th> + <th>Assign</th> + <th>Status</th> + <th>Edit</th> + <th>Delete</th> + <th>Board</th> + <th> <button className='btn-ghost'> </button> + {/* You can open the modal using document.getElementById('ID').showModal() method */} + + + </th> + </tr> + </thead> + <tbody> + {/* Table data of in progress status */} + + {data?.timelines ? ( + data.timelines.filter(timeline => timeline.status === "In Progress").length > 0 ? ( + data?.timelines?.filter(timeline => timeline.status === "In Progress").map((timeline, index) => ( + <tr key={index} className="text-center"> + <td> + + <div className="font-bold text-center">{timeline.name.slice(0, 16)}</div> + + </td> + + <td> + {(timeline.assign) == null && <button onClick={() => handleOpenDialog(timeline, "assign")} className='rounded-full border border-[#0c01a1] px-1 py-1 '><IoPersonAddOutline className='text-lg cursor-pointer ' title="Assign" /></button>} + + {timeline.assign && ( + <div className='flex items-center justify-center gap-6' > + <img src={timeline.assign.image} alt="image" className='w-8 h-8 rounded-full' /> + {/* <p className="font-semibold">{timeline.assign.first_name + " " + timeline.assign.last_name}</p> */} + </div> + )} + + </td> + <td> + <div className="relative inline-block text-left"> + <div > + <button + type="button" + onClick={() => toggleDropdown(timeline.id)} + className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white dark:bg-gray-950 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" + id={`options-menu-${timeline.id}`} + aria-haspopup="true" + aria-expanded="true" + > + {selectedStatus[timeline.id] || 'In Progress'} + <FaCaretSquareDown className="-mr-1 ml-2 h-3 w-3" /> + </button> + </div> + + {isOpen[timeline.id] && ( + <div + className="absolute right-6 bottom-0 w-44 rounded-sm shadow-lg bg-white dark:bg-gray-950 ring-1 ring-black ring-opacity-5 focus:outline-none" + role="menu" + aria-orientation="vertical" + aria-labelledby={`options-menu-${timeline.id}`} + > + <div className="py-1 ml-6" role="none"> + + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'To Do')} + className="block px-2 py-1 text-sm " + role="menuitem" + > + To Do + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'Testing')} + className="block px-2 py-1 text-sm " + role="menuitem" + > + Testing + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'Done')} + className="block px-2 py-1 text-sm " + role="menuitem" + > + Done + </button> + </div> + </div> + )} + </div> + </td> + + <th> + <button className=" px-4 py-2" onClick={() => handleOpenDialog(timeline, "edit")}> + <FaRegEdit className="text-xl" /> + </button> + {/** Member edit button and model start */} + + {/* You can open the modal using document.getElementById('ID').showModal() method */} + + <dialog id="edit" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton('edit')}>✕</button> + <h2 className="text-2xl font-bold mb-4 text-center">Update Plan</h2> + <form onSubmit={handleEditTimelineButton}> + <div className='form-control'> + <label htmlFor="text" className="label">Project Name</label> + <input type="text" id="WorkspaceName" name="WorkspaceName" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Workspace Name" value={formData.workspace_Name} + onChange={handleChange} /> + </div> + <div className="form-control mb-4"> + <label htmlFor="name" className="label"> Name</label> + <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.name} + onChange={handleChange} /> + + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Details</label> + <textarea name="details" id="details" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.details} + onChange={handleChange}></textarea> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Start Date</label> + <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.start_Date} + onChange={handleChange} /> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">End Date</label> + <input type="date" name="endDate" id="endDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.end_Date} + onChange={handleChange} /> + </div> + <div className="flex justify-between my-4"> + <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-3">Update</button> + </div> + </form> + </div> + </dialog> + {/** Member edit button and model end */} + </th> + <th> + <button className=" p-2 m-2" > + <MdDeleteForever className="text-xl cursor-pointer " onClick={() => handleDeleteTimeline(timeline.id)} /> + </button> + </th> + <th> - {isOpen[timeline.id] && ( - <div - className="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none" - role="menu" - aria-orientation="vertical" - aria-labelledby={`options-menu-${timeline.id}`} - > - <div className="py-1" role="none"> + <button className='px-4 py-2'> + <Link to={`/workspace/${id}/boards`} state={timeline} className=" text-xl cursor-pointer" title='Let's see the board' > + <TbListDetails /> + </Link> + </button> + </th> + + + + </tr> + )) + ) : ( + <tr> + <td colSpan="6" className="text-center py-4 font-bold"> + No timelines available with status "In Progress".Change the status !!! + </td> + </tr> + ) + ) : ( + <tr> + <td colSpan="6" className="text-center py-4"> + Loading timelines... + </td> + </tr> + )} + + </tbody> + </table> - <button - onClick={() => handleStatusUpdateButton(timeline.id, "To Do")} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - To Do + </div> + </div> + </div> + {/** End Progress component */} + + {/** Start Testing component */} + <div className='overflow-x-auto shadow-xl rounded-sm w-full mt-10'> + <div> + <button className='font-bold text-md px-2 py-1 rounded-sm bg-red-200 text-red-900'>Testing</button> + + <div className="overflow-x-auto shadow-xl rounded-sm w-6/7"> + <table className="table"> + {/* head */} + <thead className=' text-sm text-[#0c01a1] dark:text-[#73e9fe]'> + <tr className='text-center'> + + <th>Plans</th> + <th>Assign</th> + <th>Status</th> + <th>Edit</th> + <th>Delete</th> + <th>Board</th> + <th> <button className='btn-ghost'> </button> + {/* You can open the modal using document.getElementById('ID').showModal() method */} + + + </th> + </tr> + </thead> + <tbody> + {/* Table data of testing status */} + {data?.timelines ? ( + data.timelines.filter(timeline => timeline.status === "Testing").length > 0 ? ( + data.timelines.filter(timeline => timeline.status === "Testing").map((timeline, index) => ( + <tr key={index} className="text-center"> + <td> + <div className="font-bold text-center">{timeline.name.slice(0, 16)}</div> + </td> + + <td> + {timeline.assign == null ? ( + <button + onClick={() => handleOpenDialog(timeline, "assign")} + className='rounded-full border border-[#0c01a1] px-1 py-1' + > + <IoPersonAddOutline className='text-lg cursor-pointer' title="Assign" /> + </button> + ) : ( + <div className='flex items-center justify-center gap-6'> + <img src={timeline.assign.image} alt="image" className='w-8 h-8 rounded-full' /> + </div> + )} + </td> + + <td> + <div className="relative inline-block text-left"> + <button + type="button" + onClick={() => toggleDropdown(timeline.id)} + className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white dark:bg-gray-950 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" + id={`options-menu-${timeline.id}`} + aria-haspopup="true" + aria-expanded="true" + > + {selectedStatus[timeline.id] || 'Testing'} + <FaCaretSquareDown className="-mr-1 ml-2 h-3 w-3" /> + </button> + + {isOpen[timeline.id] && ( + <div + className="absolute right-6 bottom-0 w-44 rounded-sm shadow-lg bg-white dark:bg-gray-950 ring-1 ring-black ring-opacity-5 focus:outline-none" + role="menu" + aria-orientation="vertical" + aria-labelledby={`options-menu-${timeline.id}`} + > + <div className="py-1 ml-6" role="none"> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'To Do')} + className="block px-2 py-1 text-sm" + role="menuitem" + > + To Do + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'In Progress')} + className="block px-2 py-1 text-sm" + role="menuitem" + > + In Progress + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'Done')} + className="block px-2 py-1 text-sm" + role="menuitem" + > + Done + </button> + </div> + </div> + )} + </div> + </td> + + <th> + <button className="px-4 py-2" onClick={() => handleOpenDialog(timeline, "edit")}> + <FaRegEdit className="text-xl" /> </button> - <button - onClick={() => handleStatusUpdateButton(timeline.id, 'Testing')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - Testing + <dialog id="edit" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button + id="closeBtn" + className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" + onClick={() => handleCloseModelButton('edit')} + > + ✕ + </button> + <h2 className="text-2xl font-bold mb-4 text-center">Update Plan</h2> + <form onSubmit={handleEditTimelineButton}> + <div className='form-control'> + <label htmlFor="text" className="label">Project Name</label> + <input + type="text" + id="WorkspaceName" + name="WorkspaceName" + className="input input-bordered bg-slate-200 dark:bg-black" + placeholder="Enter Workspace Name" + value={formData.workspace_Name} + onChange={handleChange} + /> + </div> + <div className="form-control mb-4"> + <label htmlFor="name" className="label"> Name</label> + <input + type="text" + id="name" + name="name" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.name} + onChange={handleChange} + /> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Details</label> + <textarea + name="details" + id="details" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.details} + onChange={handleChange} + ></textarea> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Start Date</label> + <input + type="date" + name="startDate" + id="startDate" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.start_Date} + onChange={handleChange} + /> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">End Date</label> + <input + type="date" + name="endDate" + id="endDate" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.end_Date} + onChange={handleChange} + /> + </div> + <div className="flex justify-between my-4"> + <button + type="submit" + className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-3" + > + Update + </button> + </div> + </form> + </div> + </dialog> + </th> + <th> + <button className="p-2 m-2"> + <MdDeleteForever + className="text-xl cursor-pointer" + onClick={() => handleDeleteTimeline(timeline.id)} + /> </button> - <button - onClick={() => handleStatusUpdateButton(timeline.id, 'Done')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - Completed + </th> + <th> + <button className='px-4 py-2'> + <Link + to={`/workspace/${id}/boards`} + state={timeline} + className="text-xl cursor-pointer" + title="Let's see the board" + > + <TbListDetails /> + </Link> </button> - </div> - </div> - )} - </div> - </td> - <th> - - <Link to={`/workspace/${id}/boards`} state={timeline} className="btn btn-info px-4 py-2 text-xl" > - <TbListDetails /> - </Link> - - {/** Member edit button and model start */} - <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - <button className="btn btn-success px-4 py-2" onClick={() => handleOpenDialog(timeline)}> - <FaRegEdit className="text-xl" /> - </button> - <dialog id="edit" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton('edit')}>✕</button> - <h2 className="text-2xl font-bold mb-4 text-center">Update Timeline</h2> - <form onSubmit={handleEditTimelineButton}> - <div className='form-control'> - <label htmlFor="text" className="label">Workspace Name</label> - <input type="text" id="WorkspaceName" name="WorkspaceName" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Workspace Name" value={formData.workspace_Name} - onChange={handleChange} /> - </div> - <div className="form-control mb-4"> - <label htmlFor="name" className="label">Timeline Name</label> - <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.name} - onChange={handleChange} /> + </th> + </tr> + )) + ) : ( + <tr> + <td colSpan="6" className="text-center py-4 font-bold"> + No timelines available with status "Testing". Change the status !!! + </td> + </tr> + ) + ) : ( + <tr> + <td colSpan="6" className="text-center py-4"> + Loading timelines... + </td> + </tr> + )} + + + </tbody> + </table> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">Details</label> - <textarea name="details" id="details" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.details} - onChange={handleChange}></textarea> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">StartDate</label> - <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.start_Date} - onChange={handleChange} /> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">EndDate</label> - <input type="date" name="endDate" id="endDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.end_Date} - onChange={handleChange} /> - </div> - <div className="flex justify-between my-4"> - <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-3">Update</button> - </div> - </form> - </div> - </dialog> - {/** Member edit button and model end */} - <button className="btn btn-warning p-2 m-2" > - <MdDeleteForever className="text-xl cursor-pointer " onClick={() => handleDeleteTimeline(timeline.id)} /> - </button> - </th> - </tr> - ))} - - </tbody> - </table> + </div> + </div> </div> - </div> - </div> - {/** End Progress component */} - - {/** Start Completed component*/} - <div className='w-8/10 mx-auto h-[200px] bg-green-700 text-white my-2 rounded-md'> - <div> - <button className='font-bold text-4xl rounded bg-slate-400'>Completed</button> - - <div className="overflow-x-auto shadow-xl rounded w-6/7 m-4"> - <table className="table"> - {/* table headline for Completed component */} - <thead className=' text-lg text-[#8401A1] dark:text-[#73e9fe]'> - <tr className='text-center'> - <th>Timeline Name</th> - <th>Timeline</th> - <th>Status</th> - <th>Action</th> - <th> <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - - - </th> - </tr> - </thead> - <tbody> - - {/* table data of completed status */} - {data?.timelines?.filter(timeline => timeline.status === "Done").map((timeline, index) => ( - <tr key={index} className="text-center"> - <td> - <div className="flex items-center gap-3"> - <div className="avatar"> - <div className="mask mask-squircle w-12 h-12"> - <img src="https://img.daisyui.com/tailwind-css-component-profile-2@56w.png" alt="Avatar Tailwind CSS Component" /> - </div> - </div> - <div> - <div className="font-bold">{timeline.name}</div> - </div> - </div> - </td> - <td> - {timeline.name} - </td> - - <td> - <div className="relative inline-block text-left"> - <div> - <button - type="button" - onClick={() => toggleDropdown(timeline.id)} - className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" - id={`options-menu-${timeline.id}`} - aria-haspopup="true" - aria-expanded="true" - > - {selectedStatus[timeline.id] || 'To Do'} - <FaCaretSquareDown className="-mr-1 ml-2 h-5 w-5" /> - </button> - </div> - - {isOpen[timeline.id] && ( - <div - className="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none" - role="menu" - aria-orientation="vertical" - aria-labelledby={`options-menu-${timeline.id}`} - > - <div className="py-1" role="none"> - - <button - onClick={() => handleStatusUpdateButton(timeline.id, "To Do")} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - To Do + {/** Start Done component*/} + <div className='overflow-x-auto shadow-xl rounded-sm w-full mt-10'> + <div> + <button className='font-bold text-md px-2 py-1 rounded-sm bg-gray-200 text-gray-900'>Done</button> + + <div className="overflow-x-auto shadow-xl rounded-sm w-6/7"> + <table className="table"> + {/* head */} + <thead className=' text-sm text-[#0c01a1] dark:text-[#73e9fe]'> + <tr className='text-center'> + + <th>Plans</th> + <th>Assign</th> + <th>Status</th> + <th>Edit</th> + <th>Delete</th> + <th>Board</th> + <th> <button className='btn-ghost'> </button> + {/* You can open the modal using document.getElementById('ID').showModal() method */} + + + </th> + </tr> + </thead> + <tbody> + {/* Table data of Done status */} + {data?.timelines ? ( + data.timelines.filter(timeline => timeline.status === "Done").length > 0 ? ( + data.timelines.filter(timeline => timeline.status === "Done").map((timeline, index) => ( + <tr key={index} className="text-center"> + <td> + <div className="font-bold text-center">{timeline.name.slice(0, 16)}</div> + </td> + + <td> + {(timeline.assign == null) ? ( + <button + onClick={() => handleOpenDialog(timeline, "assign")} + className='rounded-full border border-[#0c01a1] px-1 py-1' + > + <IoPersonAddOutline className='text-lg cursor-pointer' title="Assign" /> + </button> + ) : ( + <div className='flex items-center justify-center gap-6'> + <img src={timeline.assign.image} alt="image" className='w-8 h-8 rounded-full' /> + </div> + )} + </td> + + <td> + <div className="relative inline-block text-left"> + <button + type="button" + onClick={() => toggleDropdown(timeline.id)} + className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white dark:bg-gray-950 text-sm font-medium focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" + id={`options-menu-${timeline.id}`} + aria-haspopup="true" + aria-expanded="true" + > + {selectedStatus[timeline.id] || 'Done'} + <FaCaretSquareDown className="-mr-1 ml-2 h-3 w-3" /> + </button> + + {isOpen[timeline.id] && ( + <div + className="absolute right-6 bottom-0 w-44 rounded-sm shadow-lg bg-white dark:bg-gray-950 ring-1 ring-black ring-opacity-5 focus:outline-none" + role="menu" + aria-orientation="vertical" + aria-labelledby={`options-menu-${timeline.id}`} + > + <div className="py-1 ml-6" role="none"> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'To Do')} + className="block px-2 py-1 text-sm" + role="menuitem" + > + To Do + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'In Progress')} + className="block px-2 py-1 text-sm" + role="menuitem" + > + In Progress + </button> + <button + onClick={() => handleStatusUpdateButton(timeline.id, 'Testing')} + className="block px-2 py-1 text-sm" + role="menuitem" + > + Testing + </button> + </div> + </div> + )} + </div> + </td> + + <th> + <button className="px-4 py-2" onClick={() => handleOpenDialog(timeline, "edit")}> + <FaRegEdit className="text-xl" /> </button> - <button - onClick={() => handleStatusUpdateButton(timeline.id, 'In Progress')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - In Progress + <dialog id="edit" className="modal"> + <div className="modal-box bg-white dark:bg-black"> + <button + id="closeBtn" + className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" + onClick={() => handleCloseModelButton('edit')} + > + ✕ + </button> + <h2 className="text-2xl font-bold mb-4 text-center">Update Plan</h2> + <form onSubmit={handleEditTimelineButton}> + <div className='form-control'> + <label htmlFor="text" className="label">Project Name</label> + <input + type="text" + id="WorkspaceName" + name="WorkspaceName" + className="input input-bordered bg-slate-200 dark:bg-black" + placeholder="Enter Workspace Name" + value={formData.workspace_Name} + onChange={handleChange} + /> + </div> + <div className="form-control mb-4"> + <label htmlFor="name" className="label"> Name</label> + <input + type="text" + id="name" + name="name" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.name} + onChange={handleChange} + /> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Details</label> + <textarea + name="details" + id="details" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.details} + onChange={handleChange} + ></textarea> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Start Date</label> + <input + type="date" + name="startDate" + id="startDate" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.start_Date} + onChange={handleChange} + /> + </div> + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">End Date</label> + <input + type="date" + name="endDate" + id="endDate" + className="input input-bordered bg-slate-200 dark:bg-black" + value={formData.end_Date} + onChange={handleChange} + /> + </div> + <div className="flex justify-between my-4"> + <button + type="submit" + className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-3" + > + Update + </button> + </div> + </form> + </div> + </dialog> + </th> + <th> + <button className="p-2 m-2"> + <MdDeleteForever + className="text-xl cursor-pointer" + onClick={() => handleDeleteTimeline(timeline.id)} + /> </button> - <button - onClick={() => handleStatusUpdateButton(timeline.id, 'Testing')} - className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" - role="menuitem" - > - Testing + </th> + <th> + <button className='px-4 py-2'> + <Link + to={`/workspace/${id}/boards`} + state={timeline} + className="text-xl cursor-pointer" + title="Let's see the board" + > + <TbListDetails /> + </Link> </button> - </div> - </div> - )} - </div> - </td> - <th> - - <Link to={`/workspace/${id}/boards`} state={timeline} className="btn btn-info px-4 py-2 text-xl" > - <TbListDetails /> - </Link> - - {/** Member edit button and model start */} - <button className='btn-ghost'> </button> - {/* You can open the modal using document.getElementById('ID').showModal() method */} - <button className="btn btn-success px-4 py-2" onClick={() => handleOpenDialog(timeline)}> - <FaRegEdit className="text-xl" /> - </button> - <dialog id="edit" className="modal"> - <div className="modal-box bg-white dark:bg-black"> - <button id="closeBtn" className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={() => handleCloseModelButton('edit')}>✕</button> - <h2 className="text-2xl font-bold mb-4 text-center">Update Timeline</h2> - <form onSubmit={handleEditTimelineButton}> - <div className='form-control'> - <label htmlFor="text" className="label">Workspace Name</label> - <input type="text" id="WorkspaceName" name="WorkspaceName" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter Workspace Name" value={formData.workspace_Name} - onChange={handleChange} /> - </div> - <div className="form-control mb-4"> - <label htmlFor="name" className="label">Timeline Name</label> - <input type="text" id="name" name="name" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.name} - onChange={handleChange} /> + </th> + </tr> + )) + ) : ( + <tr> + <td colSpan="6" className="text-center py-4 font-bold"> + No plans available with status "Done". Change the status !!! + </td> + </tr> + ) + ) : ( + <tr> + <td colSpan="6" className="text-center py-4"> + Loading timelines... + </td> + </tr> + )} + + + </tbody> + </table> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">Details</label> - <textarea name="details" id="details" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.details} - onChange={handleChange}></textarea> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">StartDate</label> - <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.start_Date} - onChange={handleChange} /> - </div> - <div className="form-control mb-4"> - <label htmlFor="userType" className="label">EndDate</label> - <input type="date" name="endDate" id="endDate" className="input input-bordered bg-slate-200 dark:bg-black" value={formData.end_Date} - onChange={handleChange} /> - </div> - <div className="flex justify-between my-4"> - <button type="submit" className="text-lg border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-3">Update</button> - </div> - </form> - </div> - </dialog> - {/** Member edit button and model end */} - <button className="btn btn-warning p-2 m-2" > - <MdDeleteForever className="text-xl cursor-pointer " onClick={() => handleDeleteTimeline(timeline.id)} /> - </button> - </th> - </tr> - ))} - - </tbody> - </table> + </div> + </div> </div> - + {/** End Done component*/} </div> - </div> - {/** End Completed component*/} + ) + } + </div> ); diff --git a/src/components/Pages/PrivacyPolicy/PrivacyPolicy.jsx b/src/components/Pages/PrivacyPolicy/PrivacyPolicy.jsx new file mode 100644 index 0000000..eebeb15 --- /dev/null +++ b/src/components/Pages/PrivacyPolicy/PrivacyPolicy.jsx @@ -0,0 +1,69 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import { RiArrowRightUpFill } from "react-icons/ri"; +const PrivacyPolicy = () => { + return ( + <div> + <div className="p-10 md:p-20"> + <div className=""> + <div className="flex flex-col justify-center items-center bg-blue-100 dark:bg-blue-950 clip-path-wave relative py-6"> + <h1 className="text-xl font-semibold">Privacy Policy</h1> + <p className="text-lg">Last update: 06 June, 2024</p> + </div> + </div> + <div className="p-3 md:p-6"> + <h2 className="text-xl font-semibold mb-4 flex items-center gap-2"> + Privacy Policy for Project Syncify! + </h2> + + <p> + At Project Syncify, accessible at ProjectSyncify.com, one of our + main priorities is the privacy of our visitors. This Privacy Policy + document contains types of information that is collected and + recorded by Project Management Pro and how we use it. + </p> + <p className="mt-4"> + If you have additional questions or require more information about + our Privacy Policy, do not hesitate to contact us through email at + privacy@ProjectSyncify.com. + </p> + <p className="mt-4"> + This privacy policy applies only to our online activities and is + valid for visitors to our website with regards to the information + that they shared and/or collect in Project Syncify. This policy is + not applicable to any information collected offline or via channels + other than this website. + </p> + <p>How we use your information:</p> + <ul className="pl-5 list-disc list-inside mt-4"> + <li>Providing and maintaining our service</li> + <li>Notifying you about changes to our service</li> + <li> + Allowing you to participate in interactive features of our service + when you choose to do so + </li> + <li>Providing customer support</li> + </ul> + </div> + <div className="p-3 md:p-6"> + <p className=" font-normal flex items-center "> + Some of advertisers on our site may use cookies and web beacons. Our + advertising partners are listed below. Each of our advertising + partners has their own Privacy Policy for their policies on user + data. For easier access, we hyperlinked to their Privacy Policies + below. + </p> + </div> + <div className="flex justify-end "> + <Link to="/"> + <button className="bg-orange-600 text-white px-4 py-2 rounded mr-2"> + I'm Understand + </button> + </Link> + </div> + </div> + </div> + ); +}; + +export default PrivacyPolicy; diff --git a/src/components/Pages/Tasks/DragNDrop.jsx b/src/components/Pages/Tasks/DragNDrop.jsx deleted file mode 100644 index 9812564..0000000 --- a/src/components/Pages/Tasks/DragNDrop.jsx +++ /dev/null @@ -1,105 +0,0 @@ -import { CiEdit } from "react-icons/ci"; -import { MdDelete } from "react-icons/md"; -import Swal from "sweetalert2"; -import { toast } from "react-toastify"; -import axios from "axios"; - -const DragNDrop = ({ tasks, setTasks, handleShowModal }) => { - const handleDragStart = (e, taskId) => { - e.dataTransfer.setData('text/plain', taskId); - }; - - const handleDragOver = (e) => { - e.preventDefault(); - }; - - const handleUpdateStatus = async (taskId, newStatus) => { - await axios.patch(`https://projectsyncifyapi.onrender.com/workspace/tasks/update/${taskId}/`, { status: newStatus }); - }; - - const handleDrop = async (e, newStatus) => { - e.preventDefault(); - const taskId = e.dataTransfer.getData('text/plain'); - try { - await handleUpdateStatus(taskId, newStatus); - const updatedTasks = tasks.map((task) => - task._id === taskId ? { ...task, status: newStatus } : task - ); - setTasks(updatedTasks); - } catch (error) { - console.error(error); - } - }; - - const handleDelete = (taskId) => { - Swal.fire({ - title: 'Are you sure?', - text: "You won't be able to revert this!", - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#3085d6', - cancelButtonColor: '#d33', - confirmButtonText: 'Yes, delete it!' - }).then((result) => { - if (result.isConfirmed) { - fetch(`https://task-backend-azure.vercel.app/tasks/${taskId}`, { - method: 'DELETE' - }) - .then(res => res.json()) - .then(data => { - if (data.deletedCount > 0) { - toast.success('Task deleted successfully'); - const remainingTasks = tasks.filter(task => task._id !== taskId); - setTasks(remainingTasks); - } - }) - .catch(error => console.log(error)); - } - }); - }; - - return ( - <div className="task-dashboard"> - <div className="task-lists grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 p-4"> - {['To-Do', 'Ongoing', 'Completed'].map((status) => ( - <div - key={status} - className="task-list border-2 border-purple-600 dark:border-cyan-500 p-4 rounded-lg" - onDrop={(e) => handleDrop(e, status)} - onDragOver={handleDragOver} - > - <h3 className="text-xl text-center font-semibold mb-4">{status}</h3> - {tasks?.filter(task => task.status === status).map((task) => ( - <div - key={task._id} - draggable - onDragStart={(e) => handleDragStart(e, task._id)} - className="task-item border-2 border-purple-600 dark:border-sky-200 p-2 rounded-md mb-2" - > - <div className="flex justify-between items-center"> - <div><p>{task.title}</p></div> - <div className="flex gap-2"> - <button - className="text-[#8401A1] dark:text-[#73e9fe]" - onClick={() => handleShowModal(task)} - > - <CiEdit className="text-[#8401A1] dark:text-[#73e9fe]" /> - </button> - <button - className="text-[#8401A1] dark:text-[#73e9fe]" - onClick={() => handleDelete(task._id)} - > - <MdDelete className="text-[#8401A1] dark:text-[#73e9fe]" /> - </button> - </div> - </div> - </div> - ))} - </div> - ))} - </div> - </div> - ); -}; - -export default DragNDrop; diff --git a/src/components/Pages/Tasks/EditDeleteTask.jsx b/src/components/Pages/Tasks/EditDeleteTask.jsx index d6e9832..c6108ce 100644 --- a/src/components/Pages/Tasks/EditDeleteTask.jsx +++ b/src/components/Pages/Tasks/EditDeleteTask.jsx @@ -2,100 +2,105 @@ import { useContext, useState, useEffect } from "react"; import { AuthContext } from "../../../Providers/AuthProviders/AuthProviders"; import Swal from "sweetalert2"; import { toast } from "react-toastify"; +import { FaRegEdit, FaRegTrashAlt } from "react-icons/fa"; +import { MdDeleteForever } from "react-icons/md"; -const EditDeleteTask = ({ currentTask, handleUpdateTask }) => { +const EditDeleteTask = () => { const { user } = useContext(AuthContext); - const [task, setTask] = useState(currentTask); + const [task, setTask] = useState(); - useEffect(() => { - setTask(currentTask); - }, [currentTask]); - const handleUpdate = (event) => { - event.preventDefault(); - const form = event.target; - const title = form.title.value; - const description = form.description.value; - const deadline = form.deadline.value; - const priority = form.priority.value; - const status = form.status.value; - const email = user.email; + const handleUpdate = () => { - const updatedTask = { ...task, title, description, deadline, priority, email, status }; + }; - fetch(`https://task-backend-azure.vercel.app/tasks/${task._id}`, { - method: 'PUT', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(updatedTask) - }) - .then(res => res.json()) - .then(data => { - if (data.modifiedCount > 0) { - Swal.fire('Task updated successfully!', '', 'success'); - handleUpdateTask(updatedTask); - form.reset(); - document.getElementById("my_modal_5").close(); - } - }) - .catch(error => console.log(error)); + const handleDelete = () => { + Swal.fire({ + title: 'Are you sure?', + text: "You won't be able to revert this task!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes, delete it!' + }).then((result) => { + // if (result.isConfirmed) { + // fetch(`https://projectsyncifyapi.onrender.com/workspace/tasks/delete/${taskId}/`, { + // method: 'DELETE' + // }) + // .then(res => res.json()) + // .then(data => { + // if (data.deletedCount > 0) { + // toast.success('Task deleted successfully'); + // const remainingTasks = task.filter(task => task._id !== taskId); + // setTask(remainingTasks); + // } + // }) + // .catch(error => console.log(error)); + // } + }); }; return ( - <div> - {task && ( - <dialog id="my_modal_5" className="modal modal-bottom sm:modal-middle"> + <div className=""> + <div> + <button className=" font-bold px-4 py-2 rounded-md" onClick={() => document.getElementById('my_modal_2').showModal()}> <FaRegEdit className="text-xl" /></button> + <dialog id="my_modal_2" className="modal modal-bottom sm:modal-middle"> <div className="modal-box bg-white dark:bg-black"> - <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("my_modal_5").close()}>✕</button> - <h3 className="font-bold text-2xl text-center">Update Task</h3> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("my_modal_2").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Update Task</h3> <form onSubmit={handleUpdate}> - - <div className="form-control"> - <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Title</span> - </label> - <input type="text" name="title" defaultValue={task.title} className="input input-bordered bg-slate-200 dark:bg-black" required /> - </div> - - <div className="form-control"> - <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Description</span> - </label> - <textarea name="description" defaultValue={task.description} className="textarea textarea-bordered bg-slate-200 dark:bg-black" required></textarea> - </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Task Name</span> + </label> + <input type="text" name="name" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Details</span> + </label> + <textarea name="details" className="textarea textarea-bordered bg-slate-200 dark:bg-black" required></textarea> + </div> <div className="flex gap-2"> - <div className="form-control w-1/3"> + <div className="form-control w-1/2"> <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Priority</span> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Priority</span> </label> - <select name="priority" className="select select-bordered w-full max-w-xs bg-slate-200 dark:bg-black" defaultValue={task.priority} required> + <select name="priority" className="select select-bordered w-full max-w-xs bg-slate-200 dark:bg-black" required>l <option value="Low">Low</option> <option value="Medium">Medium</option> <option value="High">High</option> </select> </div> - <div className="form-control"> - <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Deadline</span> - </label> - <input type="date" name="deadline" defaultValue={task.deadline} className="input input-bordered bg-slate-200 dark:bg-black" required /> - </div> - <div className="form-control w-1/3"> + + <div className="form-control w-1/2"> <label className="label"> - <span className="label-text dark:text-[#73e9fe] text-[#8401A1]">Status (can't update)</span> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Status </span> </label> - <input type="text" name="status" value={task.status} className="input input-bordered bg-slate-200 dark:bg-black" /> + <select name="status" className="select select-bordered w-full max-w-xs bg-slate-200 dark:bg-black" required> + <option value="To-Do">To-Do</option> + <option value="In Progress">In Progress</option> + <option value="Testing">Testing</option> + <option value="Complete">Complete</option> + </select> </div> </div> - + <div className="modal-action"> - <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white font-bold rounded w-full ">Update Task</button> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Update Task</button> </div> </form> </div> </dialog> - )} + + </div> + <div> + <button className=" font-bold px-4 py-2 rounded-md" onClick={() => handleDelete()}> <MdDeleteForever className="text-xl" /></button> + </div> + </div> ); }; diff --git a/src/components/Pages/Tasks/Tasks.jsx b/src/components/Pages/Tasks/Tasks.jsx index c65bcdf..a47c8ae 100644 --- a/src/components/Pages/Tasks/Tasks.jsx +++ b/src/components/Pages/Tasks/Tasks.jsx @@ -1,50 +1,112 @@ import { useContext, useEffect, useState } from "react"; import { AuthContext } from "../../../Providers/AuthProviders/AuthProviders"; -// import CreateTask from "./CreateTask"; -import DragNDrop from "./DragNDrop"; -import EditDeleteTask from "./EditDeleteTask"; +import { useParams } from "react-router-dom"; +import axios from "axios"; const Tasks = () => { - const { user } = useContext(AuthContext); - const [tasks, setTasks] = useState([]); - const [currentTask, setCurrentTask] = useState(null); + const [tasks, setTasks] = useState([]); // Ensure tasks is initialized as an array + const { id } = useParams(); + const [load, setLoad] = useState(false); - useEffect(() => { - fetch(`https://projectsyncifyapi.onrender.com/workspace/tasks/list/${tasks.id}`) - .then(res => res.json()) - .then(data => { - const filteredTasks = data.filter(task => task.email === user?.email); - setTasks(filteredTasks); - }) - .catch(error => console.log(error)); - }, [user?.email]); - - - const handleShowModal = (task) => { - setCurrentTask(task); - document.getElementById("my_modal_5").showModal(); + const handleDragStart = (e, id) => { + e.dataTransfer.setData('text/plain', id); + }; + + const handleDragOver = (e) => { + e.preventDefault(); }; - const handleUpdateTask = (updatedTask) => { - setTasks(prevTasks => prevTasks.map(task => - task._id === updatedTask._id ? { ...task, ...updatedTask } : task - )); + const handleDrop = async (e, newStatus) => { + e.preventDefault(); + const taskId = e.dataTransfer.getData('text/plain'); + handleUpdateStatus(taskId, newStatus); }; - + + const handleUpdateStatus = async (id, newStatus) => { + const updatedTasks = tasks?.map((task) => + task.id === id ? { ...task, status: newStatus } : task + ); + setTasks(updatedTasks); + + try { + const payload = { status: newStatus }; + await axios.patch(`https://projectsyncifyapi.onrender.com/workspace/task/update/status/${id}/`, payload); + setLoad(!load); + } catch (error) { + console.error("Error updating task status:", error.response?.data || error.message); + + const revertedTasks = tasks?.map((task) => + task.id === id ? { ...task, status: tasks?.find(t => t.id === id).status } : task + ); + setTasks(revertedTasks); + } + }; + + useEffect(() => { + if (user && user.userId) { + fetch(`https://projectsyncifyapi.onrender.com/workspace/user/${user.userId}/workspace/${id}/tasks/`) + .then(res => res.json()) + .then(data => { + console.log("Fetched tasks data:", data); // Add console log + if (Array.isArray(data)) { // Check if data is an array + setTasks(data); + } else { + console.error("Fetched data is not an array:", data); + } + }) + .catch(error => console.error(error)); + } + }, [user, id, load]); + return ( <div className="h-screen"> - {/* <CreateTask updateTasks={updateTasks} /> */} - <DragNDrop - tasks={tasks} - setTasks={setTasks} - handleShowModal={handleShowModal} - /> - <EditDeleteTask - currentTask={currentTask} - - handleUpdateTask={handleUpdateTask} - /> + <div className="py-2 mt-4"> + <div className="py-2"> + <div className="flex justify-between items-center pb-2"> + <h1 className="text-3xl pb-2 font-semibold"> + Assigned Tasks + </h1> + </div> + + <hr className="w-full h-1 bg-gradient-to-r from-[#0c01a1] to-[#73e9fe]" /> + <p className="text-sm font-semibold my-2 text-black dark:text-white"> + To ensure seamless progress tracking and maintenance of your project, incorporate team members into your project structure. Keep the tasks organized by status, just like in a Kanban board. So you can easily find the tasks you need to complete. Just grab them and start working on them with the team. Ensure to use the drag and drop functionality to move tasks between statuses. + </p> + </div> + {tasks.length === 0 ? ( + <p className="text-2xl text-center font-bold mt-10"> + You don't have any tasks assigned yet . + </p> + ) :( + <div className="grid grid-cols-1 md:grid-cols-3 gap-4 p-4"> + {['To Do', 'In Progress', 'Done'].map((status) => ( + <div + key={status} + className="border-2 border-gray-200 dark:border-cyan-500 p-4 rounded-sm" + onDrop={(e) => handleDrop(e, status)} + onDragOver={handleDragOver} + > + <h3 className="text-xl text-center font-semibold mb-2 hover:font-extrabold">{status}</h3> + <hr className="h-1 mb-4" /> + {tasks?.filter(task => task?.status === status)?.map((task) => ( + <div + key={task.id} + draggable + onDragStart={(e) => handleDragStart(e, task.id)} + className="task-item border-2 border-gray-300 dark:border-sky-200 p-2 hover:p-3 rounded mb-2 font-medium hover:border-2 hover:border-sky-800 hover:cursor-grabbing hover:shadow-lg hover:shadow-sky-800 hover:bg-[#0c01a1] dark:hover:bg-[#73e9fe] dark:hover:text-[#0c01a1] hover:text-white" + > + <div className="flex justify-between items-center"> + <div className="hover:font-bold"><p>{task.name}</p></div> + </div> + </div> + ))} + </div> + ))} + </div>) + } + </div> + {/* <DragNDrop reload={setLoad} load={load} tasks={tasks} setTasks={setTasks} /> */} </div> ); }; diff --git a/src/components/Pages/TermsCondition/TermsCondition.jsx b/src/components/Pages/TermsCondition/TermsCondition.jsx new file mode 100644 index 0000000..28e39fd --- /dev/null +++ b/src/components/Pages/TermsCondition/TermsCondition.jsx @@ -0,0 +1,83 @@ +import { Link } from "react-router-dom"; +const TermsCondition = () => { + return ( + <div className="p-10 md:p-20"> + <div className=""> + <div className="flex flex-col justify-center items-center bg-blue-100 dark:bg-blue-950 clip-path-wave relative py-6"> + <h1 className="text-xl font-semibold">Term & Conditions</h1> + <p className="text-lg">Last update: 06 June, 2024</p> + </div> + </div> + <div className="p-6"> + <h2 className="text-xl font-semibold mb-4"> + Welcome to Project Syncify! + </h2> + <p> + These terms and conditions outline the rules and regulations for the + use of Project Syncify services, located at ProjectSyncify.com. + </p> + <p className="mt-4"> + By accessing this website and our project management services, we + assume you accept these terms and conditions. Do not continue to use + Project Syncify if you do not agree to take all of the terms and + conditions stated on this page. + </p> + <p className="mt-4"> + Most interactive websites use cookies to let us retrieve the user's + details for each visit. Cookies are used by our website to enable the + functionality of certain areas to make it easier for people visiting + our website. Some of our affiliate/advertising partners may also use + cookies. + </p> + <h3 className="text-lg font-semibold mt-6">License</h3> + <p> + Unless otherwise stated, Project Syncify and/or its licensors own the + intellectual property rights for all material on Project Syncify. All + intellectual property rights are reserved. You may access this from + Project Syncify for your own personal use subject to restrictions set + in these terms and conditions. + </p> + <ul className="pl-5 list-disc list-inside mt-4"> + <li>Republish material from Project Syncify</li> + <li>Sell, rent, or sub-license material from Project Syncify</li> + <li>Reproduce, duplicate, or copy material from Project Syncify</li> + <li>Redistribute content from Project Syncify</li> + </ul> + <p className="mt-4">This Agreement shall begin on the date hereof.</p> + <p className="mt-4"> + Parts of this website offer an opportunity for users to post and + exchange opinions and information in certain areas of the website. + Project Syncify does not filter, edit, publish, or review Comments + prior to their presence on the website. Comments do not reflect the + views and opinions of Project Syncify, its agents, and/or affiliates. + </p> + <p className="mt-4"> + Project Syncify reserves the right to monitor all Comments and to + remove any Comments which can be considered inappropriate, offensive, + or cause breach of these Terms and Conditions. + </p> + + <p className="mt-4"> + You hereby grant Project Syncifyt a non-exclusive license to use, + reproduce, edit, and authorize others to use, reproduce and edit any + of your Comments in any and all forms, formats, or media. + </p> + + <p className="mt-4"> + No use of Project Syncify's logo or other artwork will be allowed for + linking absent a trademark license agreement. + </p> + + <div className="flex justify-end mt-6"> + <Link to="/"> + <button className="bg-blue-500 text-white px-4 py-2 rounded mr-2"> + Accept + </button> + </Link> + </div> + </div> + </div> + ); +}; + +export default TermsCondition; diff --git a/src/components/Pages/Workspace/CreateWorkspace.jsx b/src/components/Pages/Workspace/CreateWorkspace.jsx index 94891e0..7230816 100644 --- a/src/components/Pages/Workspace/CreateWorkspace.jsx +++ b/src/components/Pages/Workspace/CreateWorkspace.jsx @@ -7,7 +7,7 @@ import { FaCirclePlus } from "react-icons/fa6"; import TitlePages from "../../../pages/shared/TitlePages"; import Lottie from "lottie-react"; import AniTask from "../../../../public/tasks.json" -const CreateWorkspace = () => { +const CreateWorkspace = ({ load, setLoad}) => { const [workspaceName, setWorkspaceName] = useState(""); const [error, setError] = useState(""); const [success, setSuccess] = useState(""); @@ -55,8 +55,9 @@ const CreateWorkspace = () => { console.log({response}) if (response.status === 201) { - toast.success("Workspace created successfully!"); - setSuccess("Workspace created successfully!"); + toast.success("Project created successfully!"); + setSuccess("Project created successfully!"); + setLoad(!load); handleCloseModelButton(); setError(""); @@ -65,13 +66,13 @@ const CreateWorkspace = () => { setLoading(false) navigate('/workspace') } else { - setError("Failed to create the workspace."); + setError("Failed to create the project."); setSuccess(""); setLoading(false); } } catch (error) { - console.error("There was an error creating the workspace!", error); - setError("There was an error creating the workspace!"); + console.error("There was an error creating the project!", error); + setError("There was an error creating the project!"); setSuccess(""); setLoading(false); if(error?.response?.data?.workSpace_manager[0]){ @@ -80,7 +81,7 @@ const CreateWorkspace = () => { } }; return ( - <div className=""> + <div className="pt-10 md:pt-0"> <TitlePages title="Projects" subTitle="Maintain your project with our project manager website.Start by creating a new project or select an existing project to track your progress. Easily assign tasks to team members and set deadlines to stay on schedule. Monitor real-time updates and generate comprehensive reports with just a few clicks. Collaborate seamlessly with your team through integrated messaging and file sharing. Customize your workflow with flexible tools designed to fit your unique project needs. " /> <div className="px-10"> @@ -92,10 +93,9 @@ const CreateWorkspace = () => { {success && <p style={{ color: "green" }}>{success}</p>} </div> */} - <div className="flex items-center justify-left gap-5" > <h1 className="text-xl md:text-2xl font-bold ">Create a new project or select an existing project to track your progress.</h1> - <button className="bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white font-bold rounded-md px-4 py-2" onClick={() => document.getElementById('my_modal_3').showModal()}> + <button className="bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded-md px-4 py-2" onClick={() => document.getElementById('my_modal_3').showModal()}> {/* <FaCirclePlus className="text-7xl" /> */} Create </button> </div> @@ -103,11 +103,12 @@ const CreateWorkspace = () => { {/* modal open */} <dialog id="my_modal_3" className="modal"> <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#0c01a1] dark:text-[#73e9fe]" onClick={handleCloseModelButton}>✕</button> <form onSubmit={handleSubmit} > - <button className="btn btn-sm btn-circle absolute right-2 top-2 bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]" onClick={handleCloseModelButton}>✕</button> - <h3 className="font-bold text-2xl text-center mb-5">Create New Workspace</h3> + + <h3 className="font-bold text-2xl text-center mb-5">Create New Project</h3> <div className="form-control"> - <label className="label">Workspace Name </label> + <label className="label">Project Name </label> <input type="text" id="workspaceName" @@ -115,12 +116,12 @@ const CreateWorkspace = () => { value={workspaceName} onChange={(e) => setWorkspaceName(e.target.value)} required - placeholder="Enter Workspace Name" + placeholder="Enter Project Name" /> </div> <div className="flex justify-center mt-6"> - <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#8401A1] text-white rounded w-full px-4 py-2" type="submit">Create</button> + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-full px-4 py-2" type="submit">Create Project</button> </div> </form> </div> diff --git a/src/components/Pages/Workspace/DeleteWorkspace.jsx b/src/components/Pages/Workspace/DeleteWorkspace.jsx index 9f287c8..bba8c59 100644 --- a/src/components/Pages/Workspace/DeleteWorkspace.jsx +++ b/src/components/Pages/Workspace/DeleteWorkspace.jsx @@ -1,18 +1,28 @@ -import { useState } from "react"; +import { useContext, useState } from "react"; import axios from "axios"; import { MdDeleteForever } from "react-icons/md"; +import { AuthContext } from "../../../Providers/AuthProviders/AuthProviders"; +import { toast } from "react-toastify"; + const DeleteWorkspace = ({ workspaceId, onDelete }) => { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); + const { user } = useContext(AuthContext); const handleDelete = async () => { setLoading(true); setError(null); + const deleteUser = { user_id: user?.userId }; + // console.log({ deleteUser }); try { - const response = await axios.delete( - `https://projectsyncifyapi.onrender.com/workspace/list/${workspaceId}/` - ); + const response = await axios.request({ + method: 'delete', + url: `https://projectsyncifyapi.onrender.com/workspace/list/${workspaceId}/`, + data: deleteUser + }); + // console.log(response); + toast.success("Workspace deleted successfully!"); if (response.status === 204) { onDelete(workspaceId); @@ -21,6 +31,7 @@ const DeleteWorkspace = ({ workspaceId, onDelete }) => { } } catch (error) { setError("Failed to delete the workspace."); + console.log(error); } finally { setLoading(false); } diff --git a/src/components/Pages/Workspace/EditWorkspace.jsx b/src/components/Pages/Workspace/EditWorkspace.jsx index ed4c9d3..a588f29 100644 --- a/src/components/Pages/Workspace/EditWorkspace.jsx +++ b/src/components/Pages/Workspace/EditWorkspace.jsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import axios from "axios"; -import { useParams } from "react-router-dom"; +import { useNavigate, useParams } from "react-router-dom"; +import { toast } from "react-toastify"; const EditWorkspace = () => { const { workspaceId } = useParams(); @@ -9,6 +10,7 @@ const EditWorkspace = () => { const [success, setSuccess] = useState(""); const user = JSON.parse(localStorage.getItem("user")); + const navigate = useNavigate(); useEffect(() => { fetchWorkspaceDetails(); }, [workspaceId]); @@ -51,15 +53,17 @@ const EditWorkspace = () => { ); if (response.status === 200) { - setSuccess("Workspace updated successfully!"); + setSuccess("Project updated successfully!"); + toast.success("Project updated successfully!"); + navigate("/workspace"); setError(""); } else { - setError("Failed to update the workspace."); + setError("Failed to update the Project."); setSuccess(""); } } catch (error) { - console.error("There was an error updating the workspace!", error); - setError("There was an error updating the workspace!"); + console.error("There was an error updating the Project!", error); + setError("There was an error updating the Project!"); setSuccess(""); } }; @@ -68,7 +72,7 @@ const EditWorkspace = () => { <div> <div className="px-5 pt-20 md:px-10 md:py-20"> <h2 className="mt-3 mb-3 text-2xl font-semibold text-center"> - Edit Workspace + Edit Project </h2> <div className="text-center my-5"> {error && <p style={{ color: "red" }}>{error}</p>} @@ -76,22 +80,22 @@ const EditWorkspace = () => { </div> <form onSubmit={handleSubmit} - className="flex justify-center flex-col items-center space-y-3 md:space-y-6" + className="flex justify-center flex-col items-center space-y-3 md:space-y-6 " > - <div> - <label htmlFor="workspaceName">Workspace Name</label> <br /> + <div className=""> + <label htmlFor="workspaceName">Project Name</label> <br /> <input type="text" id="workspaceName" - className="border-2 p-4 w-96 mt-3" + className="input input-bordered w-96 mt-3 bg-white dark:bg-black" value={workspaceName} onChange={(e) => setWorkspaceName(e.target.value)} required placeholder="Enter Workspace Name" /> </div> - <div> - <label htmlFor="workspaceManager">Workspace Manager:</label> + {/* <div> + <label htmlFor="workspaceManager">Project Manager:</label> <br /> <input type="text" @@ -100,13 +104,8 @@ const EditWorkspace = () => { readOnly className="border-2 p-4 w-96 mt-3" /> - </div> - <button - type="submit" - className="border-none outline-none bg-[#8401A1] hover:bg-gradient-to-r from-[#30acc2] to-[#8401A1] text-white rounded-sm w-96 p-4" - > - Update Workspace - </button> + </div> */} + <button className="border-none outline-none bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white rounded w-96 px-4 py-2" type="submit">Update Project</button> </form> </div> </div> diff --git a/src/components/Pages/Workspace/UserWorkspace.jsx b/src/components/Pages/Workspace/UserWorkspace.jsx index 2ed2340..b69a3a7 100644 --- a/src/components/Pages/Workspace/UserWorkspace.jsx +++ b/src/components/Pages/Workspace/UserWorkspace.jsx @@ -1,16 +1,13 @@ - import Workspace from "./Workspace"; import CreateWorkspace from "./CreateWorkspace"; +import { useState } from "react"; const UserWorkspace = () => { + const [load, setLoad] = useState(false); return ( <div className=""> - - - <CreateWorkspace className=""/> - <Workspace /> - </div> - - + <CreateWorkspace className="" load={load} setLoad={setLoad} /> + <Workspace load={load} setLoad={setLoad}/> + </div> ); }; diff --git a/src/components/Pages/Workspace/Workspace.jsx b/src/components/Pages/Workspace/Workspace.jsx index 72cd6d5..ceb41ae 100644 --- a/src/components/Pages/Workspace/Workspace.jsx +++ b/src/components/Pages/Workspace/Workspace.jsx @@ -8,33 +8,33 @@ import { FaCirclePlus } from "react-icons/fa6"; import { IoIosOpen } from "react-icons/io"; import { MdOutlineFileOpen } from "react-icons/md"; -const Workspace = () => { - +const Workspace = ({ load, setLoad}) => { + const [reload, setReload] = useState(false); const [workspaces, setWorkspaces] = useState([]); const [loading, setLoading] = useState(true); - const { user } = useContext(AuthContext) + const { user } = useContext(AuthContext); const [error, setError] = useState(null); // const user = JSON.parse(localStorage.getItem("user")); - console.log('user data show from workspace -> ', { user }) + console.log("user data show from workspace -> ", { user }); useEffect(() => { - const fetchWorkspaces = async () => { + console.log("loading data "); setLoading(true); setError(null); - try { - console.log("currently in try block") + console.log("currently in try block"); const response = await axios.get( `https://projectsyncifyapi.onrender.com/workspace/user/${user.userId}/workspaces/` ); - console.log("response data -> ", response.data) + console.log("response data -> ", response.data); setWorkspaces(response.data); setLoading(false); - console.log('out try block') - setError("") + console.log("out try block"); + setReload(!reload); + setError(""); } catch (err) { setError("error"); setLoading(false); @@ -42,12 +42,10 @@ const Workspace = () => { }; fetchWorkspaces(); - //sabrina setted setLoading(false) here + //sabrina setted setLoading(false) here setLoading(false); - console.log("workspace data -> ", workspaces) - - }, []); - + console.log("workspace data -> ", workspaces); + }, [user?.userId, load]); const handleDeleteWorkspace = (workspaceId) => { setWorkspaces((prevWorkspaces) => @@ -55,19 +53,25 @@ const Workspace = () => { ); }; - // if (error) { // return <div>{error}</div>; // } if (loading) { - return <div>{loading && <div className="flex justify-center items-center"><span className="loading loading-ring loading-md"></span>Workspace Loading....</div>}</div> - - } - else if (workspaces.length === 0) { + return ( + <div> + {loading && ( + <div className="flex justify-center items-center"> + <span className="loading loading-ring loading-md"></span>Project + Loading.... + </div> + )} + </div> + ); + } else if (workspaces.length === 0) { return ( <div className="flex justify-center items-center my-10 px-10"> <h1 className="text-2xl"> - No workspaces available for your account. <br /> + No project available for your account. <br /> {/* <div className="flex items-center gap-2 my-2"> <Link to="/createworkspace" className=""> <FaCirclePlus /> @@ -76,35 +80,54 @@ const Workspace = () => { Create a new workspace </Link> </div> */} - </h1> </div> ); } return ( - <div className="px-10 py-10"> - + <div className="px-10 py-16 md:py-10 "> <div className="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4"> {workspaces.map((workspace) => ( - <div key={workspace.id} className="border dark:border-gray-700 rounded-lg shadow-lg shadow-gray-400 p-6"> - <h2 className="text-2xl font-semibold mb-2">{workspace.name.slice(0, 20)}</h2> + <div + key={workspace.id} + className="border dark:border-gray-700 rounded-lg shadow-lg shadow-gray-400 p-6" + > + <h2 className="text-2xl font-semibold mb-2"> + {workspace.name.slice(0, 20)} + </h2> <div className="text-sm"> - <p>Manager: <span className="text-gray-800">{workspace.workspace_manager_name }</span> </p> - <p >Email: <span className="text-gray-800">{workspace.workspace_manager_email}</span></p> - <p >Members: <span className="text-gray-800">{workspace.workspace_total_members}</span> </p> - <p>Date: <span className="text-gray-800">{workspace.created_at}</span> </p> + <p> + Manager:{" "} + <span className="text-gray-800 dark:text-gray-100"> + {workspace.workspace_manager_name} + </span>{" "} + </p> + <p> + Email:{" "} + <span className="text-gray-800 dark:text-gray-100"> + {workspace.workspace_manager_email} + </span> + </p> + <p> + Members:{" "} + <span className="text-gray-800 dark:text-gray-100"> + {workspace.workspace_total_members} + </span>{" "} + </p> + <p> + Date:{" "} + <span className="text-gray-800 dark:text-gray-100"> + {workspace.created_at} + </span>{" "} + </p> </div> <div className="flex justify-between mt-4"> <div className="flex justify-center items-center gap-1"> <Link to={`${workspace.id}`}> - <MdOutlineFileOpen - className="text-xl" /> - </Link> - <Link to={`${workspace.id}`}> - Visit + <MdOutlineFileOpen className="text-xl" /> </Link> - + <Link to={`${workspace.id}`}>Visit</Link> </div> <div className="flex justify-center items-center gap-1"> <Link to={`/editworkspace/${workspace.id}`}> @@ -115,12 +138,9 @@ const Workspace = () => { onDelete={handleDeleteWorkspace} /> </div> - </div> - </div> ))} - </div> </div> ); diff --git a/src/components/User/Arrow/Backarrow.jsx b/src/components/User/Arrow/Backarrow.jsx new file mode 100644 index 0000000..ebbc686 --- /dev/null +++ b/src/components/User/Arrow/Backarrow.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { FaArrowRight } from 'react-icons/fa6'; + +const Backarrow = ({onClick}) => { + return ( + + + <div className='absolute left-20 top-[184px]' onClick={onClick} > + <div className=' outline outline-1 outline-offset-1 hover:outline-2 hover:outline-cyan-600 dark:hover:outline-[#0c01a1] hover:text-cyan-600 dark:hover:text-[#0141a1] h-[30px] w-[30px] rounded-full grid place-items-center cursor-pointer'> + <FaArrowRight /> + </div> + </div> + ); +}; + +export default Backarrow; \ No newline at end of file diff --git a/src/components/User/Arrow/ForwardArrow.jsx b/src/components/User/Arrow/ForwardArrow.jsx new file mode 100644 index 0000000..c467805 --- /dev/null +++ b/src/components/User/Arrow/ForwardArrow.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { FaArrowLeft } from 'react-icons/fa6'; + +const ForwardArrow = ({onClick}) => { + return ( + <div className='absolute left-4 top-[184px]' onClick={onClick}> + <div className=' outline outline-1 outline-offset-1 hover:outline-2 hover:outline-cyan-600 dark:hover:outline-[#0134a1] hover:text-cyan-600 dark:hover:text-[#0401a1] h-[30px] w-[30px] rounded-full grid place-items-center cursor-pointer'> + <FaArrowLeft /> + </div> + + </div> + ); +}; + +export default ForwardArrow; \ No newline at end of file diff --git a/src/components/User/DynamicProfile.jsx b/src/components/User/DynamicProfile.jsx new file mode 100644 index 0000000..66869b7 --- /dev/null +++ b/src/components/User/DynamicProfile.jsx @@ -0,0 +1,476 @@ +// import { useContext, useEffect, useState } from "react"; +// import { AuthContext } from "../../Providers/AuthProviders/AuthProviders"; +// import { CiEdit } from "react-icons/ci"; +// import { AiOutlineProject, AiOutlineTeam } from "react-icons/ai"; +// import Info from "./Info"; +// import ChatOnetoOne from "../Pages/Chat/ChatOnetoOne"; +// import Work from "./Work"; +// import Education from "./Education"; +// import UserContact from "./UserContact"; +// import UserAbout from "./UserAbout"; +// import UserPortfolio from "./UserProtfolio"; +// import UserSkills from "./UserSkills"; +// import ProjectSlider from "./ProjectSlider"; +// import { Element, ScrollLink } from "react-scroll"; +// import { useParams } from "react-router-dom"; + +// const DynamicProfile = () => { +// const { user } = useContext(AuthContext); +// const {pId} = useParams() +// const [profile, setProfile] = useState(null); +// const [showComponent, setShowComponent] = useState("Info"); +// const [edit, setEdit] = useState(false); + +// const handleCloseModal = () => { +// document.getElementById("UserEdit").close(); +// } + +// const handleAddUserEdit = () => { +// handleCloseModal(); +// setEdit(true); +// } +// useEffect(() => { +// if (user && user.userId && pId) { +// fetch(`https://projectsyncifyapi.onrender.com/api/v1/user/details/${pId}/`) +// .then((res) => { +// if (!res.ok) { +// throw new Error('Network response was not ok'); +// } +// return res.json(); +// }) +// .then((data) => { +// console.log(data); +// setProfile(data); +// }) +// .catch((error) => { +// console.error('Error fetching profile:', error); +// }); +// } +// }, [user]); + + + + + +// console.log({ profile }); +// return ( +// <div className=" py-10"> + +// {/* profile banner */} +// <div className="py-16 md:py-28 mb-40 bg-gradient-to-r from-sky-50 dark:from-sky-900 to-sky-500 dark:to-black relative "> +// <div className="flex flex-col md:flex-row justify-between items-center gap-10"> +// <div className="w-full md:w-1/2"> +// <div className="flex items-center gap-6"> +// <div className="pl-10 md:pl-40"> +// <img src={user && profile?.image} alt={user && user.name} className="w-28 md:w-40 h-28 md:h-40 rounded-full border-4 border-sky-900 dark:border-sky-300" /> +// </div> +// <div className="flex flex-col justify-start"> +// <h1 className="text-xl md:text-3xl font-bold"> {user && profile?.first_name.toUpperCase()}</h1> +// {/* <p className=""> {user && user.email}</p> */} +// </div> +// </div> + +// {/* <div> +// <div className="flex gap-2 md:gap-5 mt-8 md:mt-16 ml-10 md:ml-40"> +// <ScrollLink to="info" smooth={true} duration={1000}> +// <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> +// Info +// </button> +// </ScrollLink> +// <ScrollLink to="education" smooth={true} duration={1000}> +// <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> +// Education +// </button> +// </ScrollLink> +// <ScrollLink to="work" smooth={true} duration={1000}> +// <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> +// Work +// </button> +// </ScrollLink> +// <ScrollLink to="contact" smooth={true} duration={1000}> +// <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> +// Contact +// </button> +// </ScrollLink> +// <ScrollLink to="projects" smooth={true} duration={1000}> +// <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> +// Projects +// </button> +// </ScrollLink> +// </div> +// </div> */} + +// <div className="flex flex-wrap gap-2 sm:items-center mt-10 md:mt-6 ml-10 md:ml-36 font-semibold "> +// <button +// onClick={() => setShowComponent("Info")} +// className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Info" +// ? "bg-sky-50 dark:bg-sky-950 " +// : "" +// }`} +// > +// Info +// </button> +// {/* <button +// onClick={() => setShowComponent("Work")} +// className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Work" +// ? "bg-sky-50 dark:bg-sky-950 " +// : "" +// }`} +// > +// Work +// </button> */} +// {/* <button +// onClick={() => setShowComponent("Education")} +// className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Education" +// ? "bg-sky-50 dark:bg-sky-950" +// : "" +// }`} +// > +// Education +// </button> */} +// <button +// onClick={() => setShowComponent("Contact")} +// className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Contact" +// ? "bg-sky-50 dark:bg-sky-950" +// : "" +// }`} +// > +// Contact +// </button> + +// </div> + +// </div> +// <div className="flex items-center justify-end text-4xl w-full md:w-1/3 mt-0 md:mt-28 mr-10 md:mr-40 mb-10"> + +// <div title="Edit"> + +// <button onClick={() => document.getElementById('UserEdit').showModal()}><CiEdit className=""/></button> +// <dialog id="UserEdit" className="modal modal-bottom sm:modal-middle"> +// <div className="modal-box bg-white dark:bg-black"> +// <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("UserEdit").close()}>✕</button> +// <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Edit</h3> +// <form onSubmit={handleAddUserEdit}> + +// <div className="form-control"> +// <label className="label"> +// <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Name</span> +// </label> +// <input type="text" name="name" className="input input-bordered bg-slate-200 dark:bg-black" required /> +// </div> + +// <div className="form-control"> +// <label className="label"> +// <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Position</span> +// </label> +// <input type="text" name="position" className="input input-bordered bg-slate-200 dark:bg-black" required /> +// </div> +// <div className="modal-action"> +// <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full text-lg">Update</button> +// </div> +// </form> +// </div> +// </dialog> +// </div> + + + +// </div> +// </div> +// </div> +// <div className=" absolute bg-gradient-to-r from-sky-200 dark:from-sky-700 to-sky-600 dark:to-black text-[#0c01a1] dark:text-white -bottom-4 md:bottom-0 w-[80%] left-1/2 -translate-x-1/2 translate-y-20 rounded"> +// {showComponent === "Info" ? ( +// <Info user={user} profile={profile} /> +// // ) : showComponent === "Work" ? ( +// // <Work /> +// // ) : showComponent === "Education" ? ( +// // <Education /> +// ) : showComponent === "Contact" ? ( +// <UserContact /> +// ) +// : null} +// </div> +// {/* profile banner end */} + + +// {/* add the chatting component here */} +// <div className="fixed bottom-10 right-4"> +// <ChatOnetoOne user={user} profile={profile} /> +// </div> + +// {/* about section start */} +// <UserAbout /> + + +// {/* portfolio section start */} +// <UserPortfolio /> + +// {/* skill section start */} +// <UserSkills /> + +// {/* education section start */} + +// <Education /> + +// {/* work section start */} +// <Work /> + + +// {/* project in slider start */} + +// <ProjectSlider user={user} profile={profile} /> + + + + + +// </div> +// ); +// }; + +// export default DynamicProfile; + + + + + +import { useContext, useEffect, useState } from "react"; +import { AuthContext } from "../../Providers/AuthProviders/AuthProviders"; +import { CiEdit } from "react-icons/ci"; +import Info from "./Info"; +import ChatOnetoOne from "../Pages/Chat/ChatOnetoOne"; +import Work from "./Work"; +import Education from "./Education"; +import UserContact from "./UserContact"; +import UserAbout from "./UserAbout"; +import UserPortfolio from "./UserProtfolio"; +import UserSkills from "./UserSkills"; +import ProjectSlider from "./ProjectSlider"; +import { Element, ScrollLink } from "react-scroll"; +import axios from "axios"; +import { useParams } from "react-router-dom"; +import { toast } from "react-toastify"; + +const DynamicProfile = () => { + const { user } = useContext(AuthContext); + const { pId } = useParams(); + const [profile, setProfile] = useState(null); + const [loading, setLoading] = useState(true); + const [reload, setReload] = useState(false); + const [showComponent, setShowComponent] = useState("Info"); + + const [edit, setEdit] = useState(false); + + const handleCloseModal = () => { + document.getElementById("UserEdit").close(); + }; + + const handleAddUserEdit = async (e) => { + + e.preventDefault(); + const updateDesignation = { + designation: e.target.designation.value, + user: user?.userId + } + console.log({ updateDesignation }); + + try { + const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v1/profile/designation/`, updateDesignation) + console.log({ result }) + handleCloseModal(); + toast.success("Designation updated successfully") + + setReload(!reload) + } + catch (error) { + console.log(error) + } + + + }; + useEffect(() => { + + const getProfileData = async () => { + setLoading(true) + try { + const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v1/profile/${pId}/`) + console.log({ result }) + setProfile(result.data) + setLoading(false) + } + catch (error) { + console.log(error) + setLoading(false) + } + } + + if (user && user.userId) { + getProfileData(); + } + }, [user, reload]); + + console.log({ profile }); + return ( + <div className=" py-10"> + {/* profile banner */} + <div className="py-16 md:py-28 mb-32 bg-gradient-to-r from-sky-50 dark:from-sky-900 to-sky-500 dark:to-black relative "> + <div className="flex flex-col md:flex-row justify-between items-center gap-10"> + <div className="w-full md:w-1/2"> + <div className="flex items-center gap-6"> + <div className="pl-10 md:pl-40"> + <img + src={profile && profile?.image} + alt={profile && profile.get_full_name} + className="w-28 md:w-40 h-28 md:h-40 rounded-full border-4 border-sky-900 dark:border-sky-300" + /> + + </div> + <div className="flex flex-col justify-start"> + <h1 className="text-xl md:text-3xl font-bold"> + {" "} + {profile && profile?.get_full_name} + </h1> + <h1 className="text-lg md:text-xl font-bold mt-2"> + {" "} + {profile && profile?.designation?.designation} + </h1> + {/* <p className=""> {user && user.email}</p> */} + </div> + </div> + + + <div className="flex flex-wrap gap-2 sm:items-center mt-10 md:mt-6 ml-10 md:ml-36 font-semibold "> + <button + onClick={() => setShowComponent("Info")} + className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Info" ? "bg-sky-50 dark:bg-sky-950 " : "" + }`} + > + Info + </button> + + <button + onClick={() => setShowComponent("Contact")} + className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Contact" ? "bg-sky-50 dark:bg-sky-950" : "" + }`} + > + Contact + </button> + </div> + </div> + <div className="flex items-center justify-end text-4xl w-full md:w-1/3 mt-0 md:mt-28 mr-10 md:mr-40 mb-10"> + <div title="Edit"> + <button + onClick={() => document.getElementById("UserEdit").showModal()} + > + <CiEdit className="" /> + </button> + <dialog + id="UserEdit" + className="modal modal-bottom sm:modal-middle" + > + <div className="modal-box bg-white dark:bg-black"> + <button + className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" + onClick={() => document.getElementById("UserEdit").close()} + > + ✕ + </button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] "> + Edit + </h3> + <form onSubmit={handleAddUserEdit}> + {/* <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]"> + Name + </span> + </label> + <input + type="text" + name="name" + className="input input-bordered bg-slate-200 dark:bg-black" + required + /> + </div> */} + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]"> + Position + </span> + </label> + <input + type="text" + name="designation" + className="input input-bordered bg-slate-200 dark:bg-black" + required + /> + </div> + <div className="modal-action"> + <button + type="submit" + className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full text-lg" + > + Update + </button> + </div> + </form> + </div> + </dialog> + </div> + </div> + </div> + </div> + {/* info */} + <div className="translate-y-[-200px] w-4/5 bg-gradient-to-r from-sky-200 dark:from-sky-700 to-sky-600 dark:to-black text-[#0c01a1] dark:text-white -bottom-4 md:bottom-0 rounded mx-10 md:mx-28"> + {showComponent === "Info" ? ( + <Info user={user} profile={profile} /> + ) : // ) : showComponent === "Work" ? ( + // <Work /> + // ) : showComponent === "Education" ? ( + // <Education /> + showComponent === "Contact" ? ( + <UserContact user={user} contact={profile.contact} reload={reload} setReload={setReload} /> + ) : null} + </div> + {/* profile banner end */} + + {/* add the chatting component here */} + + + <div> + {loading && <div className="flex items-center justify-center"><span className="loading loading-dots loading-lg"> </span>Profile loading ...</div>} + </div> + + {profile && <> + + <div className="fixed bottom-10 right-4"> + <ChatOnetoOne user={user} profile={profile} /> + </div> + + {/* about section start */} + <UserAbout user={user} about={profile.about} reload={reload} setReload={setReload} /> + + {/* portfolio section start */} + <UserPortfolio user={user} portfolio={profile.portfolio} reload={reload} setReload={setReload} /> + + {/* skill section start */} + <UserSkills user={user} skills={profile.skills} reload={reload} setReload={setReload} /> + + {/* education section start */} + + <Education user={user} education={profile.education} reload={reload} setReload={setReload} /> + + {/* work section start */} + <Work user={user} work={profile.work} reload={reload} setReload={setReload} /> + + </>} + + {/* project in slider start */} + + <ProjectSlider user={user} profile={profile} /> + </div> + ); +}; + +export default DynamicProfile; diff --git a/src/components/User/Education.jsx b/src/components/User/Education.jsx new file mode 100644 index 0000000..ff46970 --- /dev/null +++ b/src/components/User/Education.jsx @@ -0,0 +1,305 @@ +import axios from "axios"; +import { useState } from "react"; +import { FaRegEdit } from "react-icons/fa"; +import { FaPlus } from "react-icons/fa6"; +import { RiDeleteBin5Fill } from "react-icons/ri"; +import { toast } from "react-toastify"; + + +const Education = ({user,education,reload,setReload}) => { + + console.log({user,education,reload, setReload}) + const [ educationAdd , setEducationAdd ] = useState() + const [isPresentEnd, setIsPresentEnd] = useState(false); + + const [formData, setFormData] = useState({ + eduId: "", + user: user?.userId, + institution: "", + degree: "", + start_date: "", + end_date: "", + description: "", + currently_studying: false + } + ); + + const [selectedTimeline, setSelectedTimeline] = useState(null); + + + + + const handleOpenDialog = (id, edu, modalName) => { + + // console.log({member}) + setSelectedTimeline(edu); + // console.log(member.user_id) + + setFormData({ + eduId: id, + user: user?.userId, + institution: edu.institution, + degree: edu.degree, + start_date: edu.start_date, + end_date: edu.end_date, + description: edu.description, + currently_studying: edu.currently_studying + }); + + + document.getElementById(modalName).showModal(); + }; + + const handleChange = (e) => { + const { name, value } = e.target; + // console.log({name,value}) + + setFormData(prevState => ({ + ...prevState, + [name]: value + })); + }; + + + const handleUpadateEducation = async (e) => { + e.preventDefault(); + + const updateEducation = { + user: user?.userId, + institution: e.target.institution_name.value, + degree: e.target.degree.value, + start_date: e.target.startDate.value, + end_date: formData.end_date, + description: e.target.description.value, + currently_studying: formData.currently_studying + } + + console.log({updateEducation}); + + try { + const result = await axios.put(`https://projectsyncifyapi.onrender.com/api/v1/profile/education/edit/${formData.eduId}/`,updateEducation) + + toast.success('Successfully Updated Course'); + setReload(!reload); + document.getElementById("EditEducation").close() + } catch (error) { + toast.warning(error.response.data) + console.log("error from update education -> ", error) + } + } + + {/** handle Delete education functionlity */ } + const handleDeleteEducation = async (education_id) => { + try { + const result = await axios.delete(`https://projectsyncifyapi.onrender.com/api/v1/profile/education/delete/${education_id}/`); + + toast.success("Successfully deleted Education"); + setReload(!reload) + } catch (error) { + console.log("delete timeline error -> ", error) + } + } + + + const handleModalClose = () => { + document.getElementById('my_modal_2').close(); + } + + const handleAddEducation = async (e) => { + e.preventDefault() + + let endDate; + let currentlyStudying; + + if(isPresentEnd){ + currentlyStudying = true; + } + else{ + endDate = e.target.endDate.value; + currentlyStudying = false; + } + + const userEducation = { + user: user?.userId, + institution: e.target.institution_name.value, + degree: e.target.degree.value, + start_date: e.target.startDate.value, + end_date: endDate, + description: e.target.description.value, + currently_studying: currentlyStudying + } + + console.log({userEducation}) + + try { + const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v1/profile/education/create/`, userEducation) + console.log({result}); + + toast.success("Create successfully") + setReload(!reload) + handleModalClose() + } catch (error) { + console.log('error from designation -> ', error) + } + + // handleModalClose() + // setEducationAdd(true) + } + return ( + <div> + <div className=" py-10 px-10 md:px-32 md:py-12 "> + <div className="flex justify-between mb-4"> + <div> + <h1 className="text-3xl font-bold">Education</h1> + <hr className="w-full border-2 border-[#0c01a1]" /> + </div> + + <button className=" text-4xl font-bold rounded" onClick={() => document.getElementById('my_modal_2').showModal()}> + <FaPlus /> + </button> + <dialog id="my_modal_2" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("my_modal_2").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Add Education</h3> + <form onSubmit={handleAddEducation}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Institution Name</span> + </label> + <input type="text" name="institution_name" className="input input-bordered bg-slate-200 dark:bg-black " placeholder="Enter institution name" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Degree</span> + </label> + <input type="text" name="degree" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter your degree" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Description</span> + </label> + <input type="text" name="description" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter your degree" required /> + </div> + + {/* <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Result</span> + </label> + <input type="text" name="position" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter your result" required /> + </div> */} + + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Start Date</label> + <input type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">End Date</span> + </label> + {!isPresentEnd && ( + <input type="date" name="endDate" className="input input-bordered bg-slate-200 dark:bg-black" required /> + )} + <label className="flex items-center mt-2"> + <input type="checkbox" className="checkbox" checked={isPresentEnd} onChange={() => setIsPresentEnd(!isPresentEnd)} /> + <span className="ml-2 dark:text-[#73e9fe] text-[#0c01a1]">Present</span> + </label> + </div> + + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Add</button> + </div> + </form> + </div> + </dialog> + </div> + <div> + {education?.length > 0 && education.map((ele, idx) => ( + <div key={idx} className="mt-4 text-lg font-bold"> + <h1>Institution Name: {ele?.institution}</h1> + <h1>Degree: {ele?.degree}</h1> + <h1>Description: {ele?.description}</h1> + <div className="flex items-center gap-5 p-4"> + <button className="px-6 py-2 bg-blue-300 hover:bg-blue-400 rounded-md" onClick={()=> handleOpenDialog(ele.id, ele, "EditEducation")}> + <FaRegEdit className="text-xl cursor-pointer" title="Edit education" /> + </button> + <button className="px-6 py-2 bg-yellow-200 hover:bg-yellow-300 rounded-md" onClick={() => handleDeleteEducation(ele.id)}> + <RiDeleteBin5Fill className="text-xl cursor-pointer" title="Delete education" /> + </button> + + </div> + <dialog id="EditEducation" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("EditEducation").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Update Education</h3> + <form onSubmit={handleUpadateEducation}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Institution Name</span> + </label> + <input value={formData.institution} onChange={handleChange} type="text" name="institution_name" className="input input-bordered bg-slate-200 dark:bg-black " placeholder="Enter institution name" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Degree</span> + </label> + <input value={formData.degree} onChange={handleChange} type="text" name="degree" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter your degree" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Description</span> + </label> + <input value={formData.description} onChange={handleChange} type="text" name="description" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter your degree" required /> + </div> + + {/* <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Result</span> + </label> + <input type="text" name="position" className="input input-bordered bg-slate-200 dark:bg-black" placeholder="Enter your result" required /> + </div> */} + + <div className="form-control mb-4"> + <label htmlFor="userType" className="label">Start Date</label> + <input value={formData.start_date} onChange={handleChange} type="date" name="startDate" id="startDate" className="input input-bordered bg-slate-200 dark:bg-black" /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">End Date</span> + </label> + {!formData.currently_studying && ( + <input type="date" value={formData.end_date} onChange={handleChange} name="endDate" className="input input-bordered bg-slate-200 dark:bg-black" required /> + )} + <label className="flex items-center mt-2"> + <input type="checkbox" className="checkbox" checked={formData.currently_studying}/> + <span className="ml-2 dark:text-[#73e9fe] text-[#0c01a1]">Present</span> + </label> + </div> + + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Update</button> + </div> + </form> + </div> + </dialog> + {/* <h1>Duration:</h1> */} + </div> + ))} + </div> + + + + </div> + + </div> + ); +}; + +export default Education; \ No newline at end of file diff --git a/src/components/User/Info.jsx b/src/components/User/Info.jsx new file mode 100644 index 0000000..8acaf8e --- /dev/null +++ b/src/components/User/Info.jsx @@ -0,0 +1,33 @@ + + +const Info = ({ user, profile }) => { + + // for formating date design + const formatDate = (dateString) => { + if (!dateString) return ""; + const date = new Date(dateString); + return date.toLocaleDateString('en-GB', { + day: '2-digit', + month: '2-digit', + year: 'numeric', + }); + }; + return ( + <div> + <div className=" py-10 px-10 md:px-20 "> + <h1 className="text-3xl font-bold">Info</h1> + + <div className="mt-4 text-lg font-bold"> + <h1 className="my-2">Name: + <span className="font-normal"> {user && profile?.get_full_name}</span> + </h1> + <h1 className="my-2">Email: <span className="font-normal"> {user && profile?.email}</span></h1> + <h1 className="my-2">Designation: <span className="font-normal"> {user && profile?.designation?.designation}</span></h1> + {/* <h1 className="my-2">Joined: <span className="font-normal"> {user && formatDate(profile?.date_joined)}</span></h1> */} + </div> + </div> + </div> + ); +}; + +export default Info; \ No newline at end of file diff --git a/src/components/User/Profile.jsx b/src/components/User/Profile.jsx index ba94cf6..8ba6561 100644 --- a/src/components/User/Profile.jsx +++ b/src/components/User/Profile.jsx @@ -1,63 +1,258 @@ -import { useEffect } from "react"; -import { useNavigate } from "react-router-dom"; -import { toast } from "react-toastify"; -import axiosInstance from "../../Utils/axiosInstance"; +import { useContext, useEffect, useState } from "react"; +import { AuthContext } from "../../Providers/AuthProviders/AuthProviders"; +import { CiEdit } from "react-icons/ci"; +import Info from "./Info"; +import ChatOnetoOne from "../Pages/Chat/ChatOnetoOne"; +import Work from "./Work"; +import Education from "./Education"; +import UserContact from "./UserContact"; +import UserAbout from "./UserAbout"; +import UserPortfolio from "./UserProtfolio"; +import UserSkills from "./UserSkills"; +import ProjectSlider from "./ProjectSlider"; +import { Element, ScrollLink } from "react-scroll"; import axios from "axios"; const Profile = () => { - const navigate = useNavigate(); - const user = JSON.parse(localStorage.getItem("user")); - const jwt_access = localStorage.getItem("access"); + const { user } = useContext(AuthContext); + const [profile, setProfile] = useState(null); + const [loading, setLoading ] = useState(true); + const [reload, setReload] = useState(false); + const [showComponent, setShowComponent] = useState("Info"); + const [edit, setEdit] = useState(false); + + const handleCloseModal = () => { + document.getElementById("UserEdit").close(); + }; + + const handleAddUserEdit = () => { + handleCloseModal(); + setEdit(true); + }; useEffect(() => { - if (jwt_access === null && !user) { - navigate("/login"); - } else { - getSomeData(); + + const getProfileData = async() => { + setLoading(true) + try{ + const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v1/profile/${user?.userId}/`) + console.log({result}) + setProfile(result.data) + setLoading(false) + } + catch(error){ + console.log(error) + setLoading(false) + } } - }, [jwt_access, user]); - - const refresh = JSON.parse(localStorage.getItem("refresh")); - - const getSomeData = () => { - axios - .get( - `https://projectsyncifyapi.onrender.com/api/v1/user/details/${user.email}/` - ) - .then(function (response) { - // handle success - console.log(response); - }) - .catch(function (error) { - // handle error - console.log(error); - }) - .finally(function () { - // always executed - }); - }; - const handleLogout = async () => { - const res = await axiosInstance.post("/auth/logout/", { - refresh_token: refresh, - }); - if (res.status === 200) { - localStorage.removeItem("access"); - localStorage.removeItem("refresh"); - localStorage.removeItem("user"); - - toast.success(res.data.message); - navigate("/login"); + if(user && user.userId){ + getProfileData(); } - }; + }, [user, reload]); + console.log({ profile }); return ( - <div className=" h-screen px-10 py-10"> - <h1 className="text-3xl text-center">hi {user && user?.names}</h1> - <p>email: {user && user.email}</p> - {/* <button className="px-4 py-10" onClick={handleLogout}> - Logout - </button> */} + <div className=" py-10"> + {/* profile banner */} + <div className="py-16 md:py-28 mb-32 bg-gradient-to-r from-sky-50 dark:from-sky-900 to-sky-500 dark:to-black relative "> + <div className="flex flex-col md:flex-row justify-between items-center gap-10"> + <div className="w-full md:w-1/2"> + <div className="flex items-center gap-6"> + <div className="pl-10 md:pl-40"> + <img + src={user && profile?.image} + alt={user && user.name} + className="w-28 md:w-40 h-28 md:h-40 rounded-full border-4 border-sky-900 dark:border-sky-300" + /> + </div> + <div className="flex flex-col justify-start"> + <h1 className="text-xl md:text-3xl font-bold"> + {" "} + {user && user?.name} + {} + </h1> + {/* <p className=""> {user && user.email}</p> */} + </div> + </div> + + {/* <div> + <div className="flex gap-2 md:gap-5 mt-8 md:mt-16 ml-10 md:ml-40"> + <ScrollLink to="info" smooth={true} duration={1000}> + <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> + Info + </button> + </ScrollLink> + <ScrollLink to="education" smooth={true} duration={1000}> + <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> + Education + </button> + </ScrollLink> + <ScrollLink to="work" smooth={true} duration={1000}> + <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> + Work + </button> + </ScrollLink> + <ScrollLink to="contact" smooth={true} duration={1000}> + <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> + Contact + </button> + </ScrollLink> + <ScrollLink to="projects" smooth={true} duration={1000}> + <button className="flex justify-between items-center gap-3 px-2 py-1 text-sm bg-sky-200 dark:bg-sky-900 dark:text-sky-50 font-bold rounded"> + Projects + </button> + </ScrollLink> + </div> + </div> */} + + <div className="flex flex-wrap gap-2 sm:items-center mt-10 md:mt-6 ml-10 md:ml-36 font-semibold "> + <button + onClick={() => setShowComponent("Info")} + className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${ + showComponent === "Info" ? "bg-sky-50 dark:bg-sky-950 " : "" + }`} + > + Info + </button> + {/* <button + onClick={() => setShowComponent("Work")} + className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Work" + ? "bg-sky-50 dark:bg-sky-950 " + : "" + }`} + > + Work + </button> */} + {/* <button + onClick={() => setShowComponent("Education")} + className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${showComponent === "Education" + ? "bg-sky-50 dark:bg-sky-950" + : "" + }`} + > + Education + </button> */} + <button + onClick={() => setShowComponent("Contact")} + className={`rounded py-1 px-2 text-sm hover:bg-sky-200 dark:hover:bg-sky-300 hover:text-sky-900 ${ + showComponent === "Contact" ? "bg-sky-50 dark:bg-sky-950" : "" + }`} + > + Contact + </button> + </div> + </div> + <div className="flex items-center justify-end text-4xl w-full md:w-1/3 mt-0 md:mt-28 mr-10 md:mr-40 mb-10"> + <div title="Edit"> + <button + onClick={() => document.getElementById("UserEdit").showModal()} + > + <CiEdit className="" /> + </button> + <dialog + id="UserEdit" + className="modal modal-bottom sm:modal-middle" + > + <div className="modal-box bg-white dark:bg-black"> + <button + className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" + onClick={() => document.getElementById("UserEdit").close()} + > + ✕ + </button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] "> + Edit + </h3> + <form onSubmit={handleAddUserEdit}> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]"> + Name + </span> + </label> + <input + type="text" + name="name" + className="input input-bordered bg-slate-200 dark:bg-black" + required + /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]"> + Position + </span> + </label> + <input + type="text" + name="position" + className="input input-bordered bg-slate-200 dark:bg-black" + required + /> + </div> + <div className="modal-action"> + <button + type="submit" + className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full text-lg" + > + Update + </button> + </div> + </form> + </div> + </dialog> + </div> + </div> + </div> + </div> + {/* info */} + <div className="translate-y-[-200px] w-4/5 bg-gradient-to-r from-sky-200 dark:from-sky-700 to-sky-600 dark:to-black text-[#0c01a1] dark:text-white -bottom-4 md:bottom-0 rounded mx-10 md:mx-28"> + {showComponent === "Info" ? ( + <Info user={user} profile={profile} /> + ) : // ) : showComponent === "Work" ? ( + // <Work /> + // ) : showComponent === "Education" ? ( + // <Education /> + showComponent === "Contact" ? ( + <UserContact user={user} contact={profile.contact} reload={reload} setReload={setReload} /> + ) : null} + </div> + {/* profile banner end */} + + {/* add the chatting component here */} + <div className="fixed bottom-10 right-4"> + <ChatOnetoOne /> + </div> + + <div> + {loading && <div className="flex items-center justify-center"><span className="loading loading-dots loading-lg"> </span>Profile loading ...</div>} + </div> + + {profile && <> + + {/* about section start */} + <UserAbout user={user} about={profile.about} reload={reload} setReload={setReload}/> + + {/* portfolio section start */} + <UserPortfolio user={user} portfolio={profile.portfolio} reload={reload} setReload={setReload} /> + + {/* skill section start */} + <UserSkills user={user} skills={profile.skills} reload={reload} setReload={setReload}/> + + {/* education section start */} + + <Education user={user} education={profile.education} reload={reload} setReload={setReload}/> + + {/* work section start */} + <Work user={user} work={profile.work} reload={reload} setReload={setReload}/> + + </>} + + {/* project in slider start */} + + <ProjectSlider user={user} profile={profile} /> </div> ); }; diff --git a/src/components/User/ProjectSlider.jsx b/src/components/User/ProjectSlider.jsx new file mode 100644 index 0000000..965b187 --- /dev/null +++ b/src/components/User/ProjectSlider.jsx @@ -0,0 +1,80 @@ +import { useContext, useEffect, useState } from "react"; +import { AuthContext } from "../../Providers/AuthProviders/AuthProviders"; +import Slider from "react-slick"; +import NextArrow from "../Pages/Home/TopCampanySliderSection/NextArrow"; +import PrevArrow from "../Pages/Home/TopCampanySliderSection/PrevArrow"; +import Backarrow from "./Arrow/Backarrow"; +import ForwardArrow from "./Arrow/ForwardArrow"; + +const ProjectSlider = () => { + const [projects, setProjects] = useState([]); + const { user } = useContext(AuthContext); + + useEffect(() => { + if(user){ + fetch(`https://projectsyncifyapi.onrender.com/workspace/user/${user?.userId}/workspaces/`) + .then(res => res.json()) + .then(data => setProjects(data)) + .catch(error => console.log(error)); + } + + }, [user?.userId]); + + const settings = { + arrows: true, + infinite: false, + speed: 500, + nextArrow:<Backarrow />, + prevArrow: <ForwardArrow />, + slidesToShow: 4, + slidesToScroll: 1, + + responsive: [ + { + breakpoint: 1280, + settings: { + slidesToShow: 3, + }, + }, + { + breakpoint: 1000, + settings: { + slidesToShow: 2, + }, + }, + { + breakpoint: 650, + settings: { + slidesToShow: 1, + }, + }, + ], + }; + + return ( + <div className="px-10 md:px-32 py-10 "> + <div className="mb-10"> + <h1 className="text-3xl font-bold">Projects</h1> + <hr className="w-[110px] border-2 border-[#0c01a1]" /> + </div> + + + <div className="relative mb-10"> + <Slider {...settings}> + {projects?.map(project => ( + <div key={project?.id} className="w-[300px] mx-4 border-2 border-gray-300 dark:border-gray-900 rounded-lg py-6 px-8"> + <h3 className="text-lg font-semibold">{project?.name.slice(0, 20)}</h3> + <p className="text-sm text-gray-600 dark:text-white"> <span className="font-semibold text-[#0c01a1] dark:text-sky-400 ">Manager : </span> {project?.workspace_manager_name}</p> + <p className="text-sm text-gray-600 dark:text-white"><span className="font-semibold text-[#0c01a1] dark:text-sky-400 ">Manager Email : </span>{project?.workspace_manager_email}</p> + <p className="text-sm text-gray-600 dark:text-white"><span className="font-semibold text-[#0c01a1] dark:text-sky-400 ">Member : </span>{project?.workspace_total_members}</p> + </div> + ))} + </Slider> + + </div> + + </div> + ); +}; + +export default ProjectSlider; diff --git a/src/components/User/UserAbout.jsx b/src/components/User/UserAbout.jsx new file mode 100644 index 0000000..07da41a --- /dev/null +++ b/src/components/User/UserAbout.jsx @@ -0,0 +1,81 @@ +import axios from "axios"; +import { useState } from "react"; +import { FaPlus } from "react-icons/fa6"; +import { toast } from "react-toastify"; + + +const UserAbout = ({ user, about, reload, setReload }) => { + + console.log({ user, about, reload, setReload }) + + const [aboutAdd, setAboutAdd] = useState(); + + + const handleModalClose = () => { + document.getElementById('UserAbout').close(); + } + + + const handleAddAbout = async (e) => { + e.preventDefault(); + + const addAbout = { + about: e.target.about.value, + user: user?.userId + } + + console.log({ addAbout }) + + try { + const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v1/profile/about/`, addAbout) + toast.success("Updated About section") + setReload(!reload) + handleModalClose() + } catch (error) { + console.log(error) + } + } + + + return ( + <div className="mt-[-130px] px-10 md:px-32 "> + <div className="flex justify-between mb-4"> + <div> + <h1 className="text-3xl font-bold">About</h1> + <hr className="w-full border-2 border-[#0c01a1]" /> + </div> + <button className=" text-4xl font-bold rounded" title="Add About" onClick={() => document.getElementById('UserAbout').showModal()}> + <FaPlus /> + </button> + </div> + <dialog id="UserAbout" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("UserAbout").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">About</h3> + <form onSubmit={handleAddAbout}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Write Details about yourself</span> + </label> + <textarea name="about" className="textarea textarea-bordered bg-slate-200 dark:bg-black" required></textarea> + </div> + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Add</button> + </div> + </form> + </div> + </dialog> + + + + + + <p className="mt-5"> + {about?.about} + </p> + </div > + ); +}; + +export default UserAbout; \ No newline at end of file diff --git a/src/components/User/UserContact.jsx b/src/components/User/UserContact.jsx new file mode 100644 index 0000000..e255eeb --- /dev/null +++ b/src/components/User/UserContact.jsx @@ -0,0 +1,121 @@ +import React, { useContext, useState } from 'react'; +import { FaPlus } from 'react-icons/fa6'; +import { AuthContext } from '../../Providers/AuthProviders/AuthProviders'; +import axios from 'axios'; +import { toast } from 'react-toastify'; + +const UserContact = ({user,contact,reload, setReload}) => { + console.log({user,contact,reload, setReload}) + const [contactAdd, setContactAdd] = useState() + const [countryCode, setCountryCode] = useState('+88'); + + const handleModalClose = () => { + document.getElementById('my_modal_2').close(); + } + + + + const handleAddContact= async (e) => { + + e.preventDefault(); + + const userContactInfo = { + phone: e.target.phone.value, + email: e.target.email.value, + user: user?.userId + } + + + console.log({userContactInfo}) + + + + try { + const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v1/profile/contact/`, userContactInfo) + console.log({result}); + + toast.success("update successfully") + setReload(!reload) + handleModalClose() + } catch (error) { + console.log('error from designation -> ', error) + } + + }; + + return ( + <div> + <div className=" py-10 px-10 md:px-20 md:py-12"> + <div className="flex justify-between mb-4"> + <h1 className="text-3xl font-bold">Contact</h1> + + <button className=" text-4xl font-bold rounded" onClick={() => document.getElementById('my_modal_2').showModal()} > + <FaPlus /> + </button> + <dialog id="my_modal_2" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("my_modal_2").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Add Contact</h3> + <form onSubmit={handleAddContact}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Email</span> + </label> + <input type="email" value={user?.email} name="email" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Phone Number</span> + </label> + <div className="flex"> + <select + value={countryCode} + onChange={(e) => setCountryCode(e.target.value)} + className="input input-bordered bg-slate-200 dark:bg-black mr-2" + > + <option value="+88">+880 (BAN)</option> + <option value="+1">+1 (US)</option> + <option value="+44">+44 (UK)</option> + <option value="+91">+91 (India)</option> + <option value="+61">+61 (Australia)</option> + <option value="+81">+81 (Japan)</option> + + </select> + <input + type="tel" + name="phone" + className="input input-bordered bg-slate-200 dark:bg-black flex-1" + pattern="^\d{1,14}$" + placeholder="100 000 0000" + required + /> + </div> + </div> + + + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Add Contact</button> + </div> + </form> + </div> + </dialog> + + </div> + <div className="mt-4 text-lg font-bold"> + <h1>Email: {contact?.email}</h1> + <h1>Phone Number: {contact?.phone}</h1> + + </div> + + + + </div> + + </div> + ); +}; + +export default UserContact; \ No newline at end of file diff --git a/src/components/User/UserProtfolio.jsx b/src/components/User/UserProtfolio.jsx new file mode 100644 index 0000000..f66537d --- /dev/null +++ b/src/components/User/UserProtfolio.jsx @@ -0,0 +1,175 @@ +import axios from "axios"; +import { useState } from "react"; +import { FaLinkedin } from "react-icons/fa"; +import { FaGithub, FaPlus } from "react-icons/fa6"; +import { MdEmail } from "react-icons/md"; +import { Link } from "react-router-dom"; +import { toast } from "react-toastify"; +import { AiFillTwitterCircle } from "react-icons/ai" +import { ImProfile } from "react-icons/im"; + +const UserProtfolio = ({user, portfolio, reload, setReload}) => { + console.log({user,portfolio}) + const [protfolioAdd, setProtfolioAdd] = useState(); + + const [formData, setFormData] = useState({ + github: '', + linkedin: '', + portfolio: '', + twitter: '', + }); + + const handleInputChange = (e) => { + const { name, value } = e.target; + setFormData({ + ...formData, + [name]: value, + }); + }; + + const handleModalClose = () => { + document.getElementById('UserProtfolio').close(); + } + + const handleAddPortfolio = async (e) => { + + e.preventDefault(); + + + const userPortfolio = { + github: formData.github || portfolio[0]?.github, + linkedin: formData.linkedin || portfolio[0]?.linkedin, + portfolio: formData.portfolio || portfolio[0]?.portfolio, + twitter: formData.twitter || portfolio[0]?.twitter, + user: user?.userId + } + + + + console.log({userPortfolio}) + + + + try { + const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v1/profile/portfolio/`, userPortfolio) + console.log({result}); + + toast.success("update successfully") + setReload(!reload) + handleModalClose() + } catch (error) { + console.log('error from designation -> ', error) + } + + }; + + + return ( + <div className=" px-10 md:px-32 py-10 "> + <div className="flex justify-between mb-4"> + <div> + <h1 className="text-3xl font-bold">Protfolio</h1> + <hr className="w-full border-2 border-[#0c01a1]" /> + </div> + <button className=" text-4xl font-bold rounded" title="Add Protfolio" onClick={() => document.getElementById('UserProtfolio').showModal()}> + <FaPlus /> + </button> + </div> + <dialog id="UserProtfolio" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("UserProtfolio").close()}>✕</button> + <h3 className="font-bold text-2xl mb-4 text-center dark:text-[#73e9fe] text-[#0c01a1] ">Add Protfolio</h3> + <form onSubmit={handleAddPortfolio}> + + <div className="from-control"> + <div className="flex gap-2"> + <label className="label mb-2"> + <FaGithub className="w-8 h-8" /></label> + <input + type="url" + name="github" + value={formData.github} + onChange={handleInputChange} + placeholder="github url" + className="input w-full bg-white dark:bg-black" + /> + </div> + </div> + <div className="from-control"> + <div className="flex gap-2"> + <label className="label mb-2"> + <FaLinkedin className="w-8 h-8" /></label> + <input + type="url" + name="linkedin" + value={formData.linkedin} + onChange={handleInputChange} + placeholder="Linkedin Url" + className="input w-full bg-white dark:bg-black" + /> + </div> + </div> + <div className="from-control"> + <div className="flex gap-2"> + <label className="label mb-2"> + <ImProfile className="w-8 h-8" /></label> + <input + type="url" + name="portfolio" + value={formData.portfolio} + onChange={handleInputChange} + placeholder="Portfolio URL" + className="input w-full bg-white dark:bg-black" + /> + </div> + </div> + <div className="from-control"> + <div className="flex gap-2"> + <label className="label mb-2"> + <AiFillTwitterCircle className="w-8 h-8" /></label> + <input + type="url" + name="twitter" + value={formData.twitter} + onChange={handleInputChange} + placeholder="Twitter URL" + className="input w-full bg-white dark:bg-black" + /> + </div> + </div> + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Add</button> + </div> + </form> + </div> + </dialog> + + <div className="flex gap-4"> + {portfolio[0]?.github && ( + <Link to={portfolio[0].github} target="_blank"> + <FaGithub className="w-8 h-8" /> + </Link> + )} + {portfolio[0]?.linkedin && ( + <Link to={portfolio[0].linkedin} target="_blank"> + <FaLinkedin className="w-8 h-8" /> + </Link> + )} + {portfolio[0]?.portfolio && ( + <Link to={portfolio[0].portfolio} target="_blank"> + <ImProfile className="w-8 h-8" /> + </Link> + )} + {portfolio[0]?.twitter && ( + <Link to={portfolio[0].twitter} target="_blank"> + <ImProfile className="w-8 h-8" /> + </Link> + )} + + </div> + </div> + ); +}; + +export default UserProtfolio; \ No newline at end of file diff --git a/src/components/User/UserSkills.jsx b/src/components/User/UserSkills.jsx new file mode 100644 index 0000000..2808327 --- /dev/null +++ b/src/components/User/UserSkills.jsx @@ -0,0 +1,153 @@ +import axios from "axios"; +import { useContext, useEffect, useState } from "react"; +import { FaPlus } from "react-icons/fa6"; +import { AuthContext } from './../../Providers/AuthProviders/AuthProviders'; +import { toast } from "react-toastify"; + + +const UserSkillls = ({user, skills, reload, setReload}) => { + const [skillAdd, setskillAdd] = useState(); + const [skillList, setSkillList] = useState(null) + // const [reload, setReload] = useState(false) + + const dummydata = [ + { + id: 1, + name: "HTML", + }, + { + id: 2, + name: "CSS", + }, + { + id: 3, + name: "JavaScript", + }, + { + id: 4, + name: "React", + }, + { + id: 5, + name: "Redux", + }, + + ] + + const handleModalClose = () => { + document.getElementById('Userskill').close(); + } + + const handleAddskill = async (e) => { + e.preventDefault(); + + const addSkill = { + name: e.target.skill.value, + user: user?.userId + } + + console.log(addSkill) + + console.log(e.target.skill.value) + + try { + const result = await axios.post(`https://projectsyncifyapi.onrender.com/api/v1/profile/skills/add/ + `, addSkill) + toast.success("Successfully created skill") + handleModalClose() + setReload(!reload) + } catch (error) { + console.log(error) + } + } + + + + // useEffect(()=> { + // const getSkills = async () => { + // try { + // const result = await axios.get(`https://projectsyncifyapi.onrender.com/api/v1/profile/skills/${user?.userId}/`) + // setSkillList(result.data) + // console.log("get skills -> ", result) + // } catch (error) { + // console.log("get error -> ", error) + // } + // } + + // if(user){ + // getSkills() + // } + // },[user,reload]) + return ( + <div className=" px-10 md:px-32 py-10 "> + <div className="flex justify-between mb-4"> + <div> + <h1 className="text-3xl font-bold">Skills</h1> + <hr className="w-full border-2 border-[#0c01a1]" /> + </div> + <button className=" text-4xl font-bold rounded" title="Add skill" onClick={() => document.getElementById('Userskill').showModal()}> + <FaPlus /> + </button> + </div> + <dialog id="Userskill" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("Userskill").close()}>✕</button> + <h3 className="font-bold text-2xl mb-4 text-center dark:text-[#73e9fe] text-[#0c01a1] ">Add skill</h3> + <form onSubmit={handleAddskill}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Skill</span> + </label> + <select name="skill" id="" className="select select-bordered w-full bg-white dark:bg-black"> + <option value="HTML">HTML</option> + <option value="CSS">CSS</option> + <option value="Javascript">Javascript</option> + <option value="React js">React js</option> + <option value="Next js">Next js</option> + <option value="Tailwind">Tailwind</option> + <option value="Bootstrap">Bootstrap</option> + <option value="Node js">Node js</option> + <option value="Express js">Express js</option> + <option value="MongoDB">MongoDB</option> + <option value="Firebase">Firebase</option> + <option value="Git">Git</option> + <option value="Github">Github</option> + <option value="Django">Django</option> + <option value="Flask">Flask</option> + <option value="Python">Python</option> + <option value="Java">Java</option> + <option value="C++">C++</option> + <option value="C#">C#</option> + <option value="PHP">PHP</option> + <option value="SQL">SQL</option> + <option value="MySQL">MySQL</option> + </select> + + </div> + + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Add</button> + </div> + </form> + </div> + </dialog> + + <div className="flex gap-4"> + + <div className="flex flex-wrap gap-4"> + + {skills?.map((data) => ( + < div key={data.id} className="border rounded-sm px-2 py-1 text-sm shadow-lg dark:shadow-sky-900 bg-white dark:bg-black"> + <p>{data.name}</p> + </div> + ))} + </div> + + </div> + </div> + ); +}; + +export default UserSkillls; \ No newline at end of file diff --git a/src/components/User/Work.jsx b/src/components/User/Work.jsx new file mode 100644 index 0000000..6b44f0a --- /dev/null +++ b/src/components/User/Work.jsx @@ -0,0 +1,300 @@ +import axios from "axios"; +import { useState } from "react"; +import { FaRegEdit } from "react-icons/fa"; +import { FaPlus } from "react-icons/fa6"; +import { RiDeleteBin5Fill } from "react-icons/ri"; +import { toast } from "react-toastify"; + + +const Work = ({user, work, reload, setReload}) => { + + const [workAdd, setWorkAdd] = useState(); + const [isPresentEnd, setIsPresentEnd] = useState(false); + + const [formData, setFormData] = useState({ + workId: "", + user: user?.userId, + company: "", + position: "", + start_date: "", + end_date: "", + description: "", + currently_working: "" + } + ); + + const [selectedTimeline, setSelectedTimeline] = useState(null); + + + + + const handleOpenDialog = (id, work, modalName) => { + + // console.log({member}) + setSelectedTimeline(work); + // console.log(member.user_id) + + setFormData({ + workId: id, + user: user?.userId, + company: work?.company, + position: work?.position, + start_date: work?.start_date, + end_date: work?.end_date, + description: work.description, + currently_working: work.currently_working + }); + + + document.getElementById("EditWork").showModal(); + }; + + const handleChange = (e) => { + const { name, value } = e.target; + // console.log({name,value}) + + setFormData(prevState => ({ + ...prevState, + [name]: value + })); + }; + + + const handleUpadateWork = async (e) => { + e.preventDefault(); + + const updateWork = { + user: user?.userId, + company: e.target.company_name?.value, + position: e.target.position?.value, + start_date: e.target.startDate?.value, + end_date: formData.end_date, + description: e.target.description?.value, + currently_working: formData.currently_working + } + + console.log({updateWork}); + + try { + const result = await axios.put(`https://projectsyncifyapi.onrender.com/api/v1/profile/work/edit/${formData.workId}/`,updateWork) + + toast.success('Successfully Updated Course'); + setReload(!reload); + document.getElementById("EditWork").close() + } catch (error) { + toast.warning(error.response.data) + console.log("error from update education -> ", error) + } + } + + {/** handle Delete education functionlity */ } + const handleDeleteWork = async (work_id) => { + try { + const result = await axios.delete(`https://projectsyncifyapi.onrender.com/api/v1/profile/work/delete/${work_id}/`); + + toast.success("Successfully deleted work"); + setReload(!reload) + } catch (error) { + console.log("delete timeline error -> ", error) + } + } + + const handleModalClose = () => { + document.getElementById('work').close(); + } + + const handleAddWork = async (e) => { + e.preventDefault(); + let working; + let end; + if(e.target.endDate?.value === undefined){ + if(isPresentEnd){ + working = true + end = "" + } + } + else{ + working = false; + end = e.target.endDate?.value + } + const newWork = + { + user: user?.userId, + company: e.target.company_name?.value, + position: e.target.position?.value, + start_date: e.target.startDate?.value, + end_date: end, + description: e.target.description?.value, + currently_working: working + } + + console.log(newWork) + + try { + console.log("try bloack") + const result = await axios.post("https://projectsyncifyapi.onrender.com/api/v1/profile/work/create/", newWork) + console.log("after try block") + console.log({result}); + toast.success("Work Created Successfully. "); + setReload(!reload) + } catch (error) { + console.log("error form work -> ", error) + } + handleModalClose() + setWorkAdd(true) + } + + + return ( + <div> + <div className=" py-10 px-10 md:px-32 md:py-12"> + <div className="flex justify-between mb-4"> + <div> + <h1 className="text-3xl font-bold">Work</h1> + <hr className="w-full border-2 border-[#0c01a1]" /> + </div> + + <button className=" text-4xl font-bold rounded" onClick={() => document.getElementById('work').showModal()}> + <FaPlus /> + </button> + <dialog id="work" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("work").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Add Work</h3> + <form onSubmit={handleAddWork}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Company Name</span> + </label> + <input type="text" name="company_name" placeholder="Company Name" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Position</span> + </label> + <input type="text" name="position" placeholder="position" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Description</span> + </label> + <input type="text" name="description" placeholder="Write description..." className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Start Date</span> + </label> + <input type="date" name="startDate" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">End Date</span> + </label> + {!isPresentEnd && ( + <input type="date" name="endDate" className="input input-bordered bg-slate-200 dark:bg-black" required /> + )} + <label className="flex items-center mt-2"> + <input type="checkbox" className="checkbox" checked={isPresentEnd} onChange={() => setIsPresentEnd(!isPresentEnd)} /> + <span className="ml-2 dark:text-[#73e9fe] text-[#0c01a1]">Present</span> + </label> + </div> + + + + + + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Add</button> + </div> + </form> + </div> + </dialog> + </div> + + <div> + {work?.length > 0 && work.map((ele,idx) => ( + <div className="mt-4 text-lg font-bold"> + <h1>Company Name: {ele?.company}</h1> + <h1>Position: {ele?.position}</h1> + <h1>Duration: {ele?.duration}</h1> + <div className="flex items-center gap-5 p-4"> + <button className="px-6 py-2 bg-blue-300 hover:bg-blue-400 rounded-md" onClick={()=> handleOpenDialog(ele.id, ele, "EditWork")}> + <FaRegEdit className="text-xl cursor-pointer" title="Edit work" /> + </button> + <button className="px-6 py-2 bg-yellow-200 hover:bg-yellow-300 rounded-md" onClick={() => handleDeleteWork(ele.id)}> + <RiDeleteBin5Fill className="text-xl cursor-pointer" title="Delete Work" /> + </button> + + <dialog id="EditWork" className="modal modal-bottom sm:modal-middle"> + <div className="modal-box bg-white dark:bg-black"> + <button className="btn btn-sm btn-circle btn-ghost absolute right-2 top-2" onClick={() => document.getElementById("EditWork").close()}>✕</button> + <h3 className="font-bold text-2xl text-center dark:text-[#73e9fe] text-[#0c01a1] ">Update Work</h3> + <form onSubmit={handleUpadateWork}> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Company Name</span> + </label> + <input type="text" value={formData.company} onChange={handleChange} name="company_name" placeholder="Company Name" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Position</span> + </label> + <input value={formData.position} onChange={handleChange} type="text" name="position" placeholder="position" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Description</span> + </label> + <input value={formData.description} onChange={handleChange} type="text" name="description" placeholder="Write description..." className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">Start Date</span> + </label> + <input value={formData.start_date} onChange={handleChange} type="date" name="startDate" className="input input-bordered bg-slate-200 dark:bg-black" required /> + </div> + <div className="form-control"> + <label className="label"> + <span className="label-text dark:text-[#73e9fe] text-[#0c01a1]">End Date</span> + </label> + {!formData.currently_working && ( + <input type="date" name="endDate" className="input input-bordered bg-slate-200 dark:bg-black" required /> + )} + <label className="flex items-center mt-2"> + <input type="checkbox" className="checkbox" checked={formData.currently_working} /> + <span className="ml-2 dark:text-[#73e9fe] text-[#0c01a1]">Present</span> + </label> + </div> + + + + + + + <div className="modal-action"> + <button type="submit" className="px-4 py-2 bg-gradient-to-r from-cyan-500 to-[#0c01a1] text-white font-bold rounded w-full ">Update</button> + </div> + </form> + </div> + </dialog> + + </div> + </div> + ))} + </div> + + </div> + + </div> + ); +}; + +export default Work; \ No newline at end of file diff --git a/src/context/ContextWrapper.jsx b/src/context/ContextWrapper.jsx new file mode 100644 index 0000000..a92ce1e --- /dev/null +++ b/src/context/ContextWrapper.jsx @@ -0,0 +1,28 @@ +import React, { useState } from "react"; +import GlobalContext from "./GlobalContext"; +import dayjs from "dayjs"; + +const ContextWrapper = (props) => { + const [state, setState] = useState({ + year: dayjs().year(), + monthIndex: dayjs().month(), + }); + + const setMonthIndex = (index) => { + if (index > 11) { + setState((prevState) => ({ year: prevState.year + 1, monthIndex: 0 })); + } else if (index < 0) { + setState((prevState) => ({ year: prevState.year - 1, monthIndex: 11 })); + } else { + setState((prevState) => ({ ...prevState, monthIndex: index })); + } + }; + + return ( + <GlobalContext.Provider value={{ ...state, setMonthIndex }}> + {props.children} + </GlobalContext.Provider> + ); +}; + +export default ContextWrapper; diff --git a/src/context/GlobalContext.js b/src/context/GlobalContext.js new file mode 100644 index 0000000..7c8abf3 --- /dev/null +++ b/src/context/GlobalContext.js @@ -0,0 +1,9 @@ +import React from "react"; + +const GlobalContext = React.createContext({ + year: 2024, + monthIndex: 0, + setMonthIndex: (index) => {}, +}); + +export default GlobalContext; diff --git a/src/index.css b/src/index.css index b957292..c5ee248 100644 --- a/src/index.css +++ b/src/index.css @@ -2,23 +2,26 @@ @tailwind components; @tailwind utilities; -body{ - overflow-x: hidden; +body { + overflow-x: hidden; } -main{ - padding: 0 60px; +main { + padding: 0 60px; } -.slick-slide>div{ - margin: 0 30px; +.slick-slide > div { + margin: 0 30px; } -.slick-slide>div:nth-child(1){ - margin-left: 0; +.slick-slide > div:nth-child(1) { + margin-left: 0; } -.slick-list{ - margin-right: -30px; +.slick-list { + margin-right: -30px; } +.clip-path-wave { + clip-path: ellipse(100% 100% at 50% 0%); +} diff --git a/src/layouts/Root.jsx b/src/layouts/Root.jsx index ebf62a1..4fb0a45 100644 --- a/src/layouts/Root.jsx +++ b/src/layouts/Root.jsx @@ -5,33 +5,32 @@ import { useEffect, useState } from "react"; import AuthProviders from "../Providers/AuthProviders/AuthProviders"; // import AuthProviders from "../Providers/AuthProviders/AuthProviders"; - const Root = () => { - const location = useLocation(); - const [theme, setTheme] = useState("light"); - const noHeaderFooter = location.pathname.includes('login') || location.pathname.includes('register'); - + const location = useLocation(); + const [theme, setTheme] = useState("light"); + const noHeaderFooter = + location.pathname.includes("login") || + location.pathname.includes("register"); - useEffect(() => { - if (theme === "dark") { - document.documentElement.classList.add("dark"); - } else { - document.documentElement.classList.remove("dark"); - } - }, [theme]); - const handleThemeChange = () => { - setTheme(theme === "dark" ? "light" : "dark"); + useEffect(() => { + if (theme === "dark") { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); } - return ( - <AuthProviders> - <div className="bg-white dark:bg-black text-[#8401A1] dark:text-[#73e9fe]"> - {noHeaderFooter || <Navbar handleThemeChange={handleThemeChange} /> } - <Outlet /> - {noHeaderFooter || <Footer />} - </div> - </AuthProviders> - - ); + }, [theme]); + const handleThemeChange = () => { + setTheme(theme === "dark" ? "light" : "dark"); + }; + return ( + <AuthProviders> + <div className="bg-white dark:bg-gray-950 text-[#0c01a1] dark:text-[#73e9fe] min-h-screen"> + {noHeaderFooter || <Navbar handleThemeChange={handleThemeChange} />} + <Outlet /> + {noHeaderFooter || <Footer />} + </div> + </AuthProviders> + ); }; export default Root; diff --git a/src/main.jsx b/src/main.jsx index 782e42d..65d996e 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -3,17 +3,29 @@ import ReactDOM from "react-dom/client"; import "./index.css"; import { RouterProvider } from "react-router-dom"; import { ToastContainer } from "react-toastify"; -import 'react-toastify/dist/ReactToastify.css'; +import "react-toastify/dist/ReactToastify.css"; import "react-calendar/dist/Calendar.css"; import router from "./Route/Route"; - - +import ContextWrapper from "./context/ContextWrapper"; ReactDOM.createRoot(document.getElementById("root")).render( <React.StrictMode> + + <ContextWrapper> - <ToastContainer /> + <ToastContainer + position="top-right" + autoClose={1000} + hideProgressBar={false} + newestOnTop={false} + closeOnClick + rtl={false} + pauseOnFocusLoss + draggable + pauseOnHover + /> + <RouterProvider router={router} /> - + </ContextWrapper> </React.StrictMode> ); diff --git a/src/pages/shared/Footer.jsx b/src/pages/shared/Footer.jsx index 8261681..2e3ef04 100644 --- a/src/pages/shared/Footer.jsx +++ b/src/pages/shared/Footer.jsx @@ -1,112 +1,81 @@ +import { IoMailUnreadOutline } from "react-icons/io5"; + const Footer = () => { return ( - <div className="relative mt-40 text-purple-950 dark:text-cyan-100 font-bold"> - <div className=" relative z-10 bottom-0"> - <footer className="footer px-10 py-5 "> + <div className="pt-10 bg-gradient-to-r from-sky-200 dark:from-[#12195a] to-sky-100 dark:to-black font-bold"> + <div className=""> + <div className="flex flex-col md:flex-row justify-between items-center px-10 md:px-16 py-10 "> <aside className=""> - <div className="flex flex-col justify-center items-center h-[100px]"> - <img src={"https://i.ibb.co/T4FSNsb/Justlogo.png"} alt="" className="h-24" /> - <p className="text-2xl font-extrabold ">Providing reliable workflow</p> + <div className="flex flex-col justify-center items-center "> + <img + src={"https://i.ibb.co/T4FSNsb/Justlogo.png"} + alt="" + className="h-20" + /> + <p className="text-xl font-bold text-center "> + Project Syncify + + </p> + <p className="text-md font-semibold text-center mt-4"> + Providing reliable workflow services + + </p> + <div className="text-sm font-semibold flex items-center gap-2" target="_blank"> + <IoMailUnreadOutline /> <a href="mailto:techbuildersteam@gmail.com">techbuildersteam@gmail.com</a> + </div> </div> </aside> - <nav> + <div className="mt-10 md:mt-0"> <h6 className="text-2xl font-extrabold">Services</h6> - <a className="link link-hover">Branding</a> - <a className="link link-hover">Design</a> - <a className="link link-hover">Marketing</a> - <a className="link link-hover">Advertisement</a> - </nav> - <nav> - <h6 className="text-2xl font-extrabold">Company</h6> - <a className="link link-hover">About us</a> - <a className="link link-hover">Contact</a> - <a className="link link-hover">Jobs</a> - <a className="link link-hover">Press kit</a> - </nav> - <nav> + <div className="flex flex-col gap-2 md:gap-0 text-center mt-2 md:text-start"> + + <a href="/workspace" className="link link-hover"> + Manage Projects + </a> + <a href="/profile" className="link link-hover"> + User Profile + </a> + + </div> + </div> + <div className=" mt-10 md:mt-0"> + <h6 className="text-2xl font-extrabold">About us</h6> + <div className="flex flex-col gap-2 md:gap-0 text-center mt-2 md:text-start"> + <a href="/features" className="link link-hover"> + Features + </a> + <a href="/contact" className="link link-hover"> + Contact </a> + </div> + + </div> + <div className="mt-10 md:mt-0 text-center md:text-start"> <h6 className="text-2xl font-extrabold">Legal</h6> - <a className="link link-hover">Terms of use</a> - <a className="link link-hover">Privacy policy</a> - <a className="link link-hover">Cookie policy</a> - </nav> - </footer> + <div className="flex flex-col gap-2 md:gap-0 text-center mt-2 md:text-start"> + <a href="/terms&condition" className="link link-hover"> + Terms of use + </a> + <a href="/privacypolicy" className="link link-hover"> + Privacy policy + </a> + </div> + + </div> + </div> <div className="px-10"> - <div className="flex flex-col md:flex-row justify-center items-center gap-3 md:gap-10 py-8"> + <div className="flex flex-col justify-center items-center gap-2 pb-8 md:pt-2"> <h3>© 2024 Project Syncify, Inc.</h3> - <h3>English</h3> - <h3>Terms & Privacy</h3> - <div className="grid grid-flow-col gap-4"> - <a> - <svg - xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" - viewBox="0 0 24 24" - className="fill-current" - > - <path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"></path> - </svg> - </a> - <a> - <svg - xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" - viewBox="0 0 24 24" - className="fill-current" - > - <path d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0-3.897.266-4.356 2.62-4.385 8.816.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0 3.897-.266 4.356-2.62 4.385-8.816-.029-6.185-.484-8.549-4.385-8.816zm-10.615 12.816v-8l8 3.993-8 4.007z"></path> - </svg> - </a> - <a> - <svg - xmlns="http://www.w3.org/2000/svg" - width="24" - height="24" - viewBox="0 0 24 24" - className="fill-current" - > - <path d="M9 8h-3v4h3v12h5v-12h3.642l.358-4h-4v-1.667c0-.955.192-1.333 1.115-1.333h2.885v-5h-3.808c-3.596 0-5.192 1.583-5.192 4.615v3.385z"></path> - </svg> - </a> - </div> + {/* <h3>English</h3> */} + <h3 className="text-sm font-semibold"> + A project management website by TECH BUILDERS Team. + </h3> + </div> </div> - </div> - <div className="absolute bottom-0 w-full z-0 "> - <svg - id="wave" - style={{ transform: 'rotate(0deg)', transition: '0.3s' }} - viewBox="0 0 1440 490" - xmlns="http://www.w3.org/2000/svg" - > - <defs> - <linearGradient id="sw-gradient-0" x1="0" x2="0" y1="1" y2="0"> - <stop stopColor="rgba(29.615, 72.394, 80.008, 1)" offset="0%" /> - <stop stopColor="rgba(115, 233, 254, 1)" offset="100%" /> - </linearGradient> - </defs> - <path - style={{ transform: 'translate(0, 0px)', opacity: 1 }} - fill="url(#sw-gradient-0)" - d="M0,245L30,245C60,245,120,245,180,220.5C240,196,300,147,360,122.5C420,98,480,98,540,122.5C600,147,660,196,720,187.8C780,180,840,114,900,106.2C960,98,1020,147,1080,187.8C1140,229,1200,261,1260,302.2C1320,343,1380,392,1440,375.7C1500,359,1560,278,1620,277.7C1680,278,1740,359,1800,326.7C1860,294,1920,147,1980,130.7C2040,114,2100,229,2160,285.8C2220,343,2280,343,2340,310.3C2400,278,2460,212,2520,163.3C2580,114,2640,82,2700,89.8C2760,98,2820,147,2880,212.3C2940,278,3000,359,3060,367.5C3120,376,3180,310,3240,261.3C3300,212,3360,180,3420,147C3480,114,3540,82,3600,81.7C3660,82,3720,114,3780,163.3C3840,212,3900,278,3960,326.7C4020,376,4080,408,4140,367.5C4200,327,4260,212,4290,155.2L4320,98L4320,490L4290,490C4260,490,4200,490,4140,490C4080,490,4020,490,3960,490C3900,490,3840,490,3780,490C3720,490,3660,490,3600,490C3540,490,3480,490,3420,490C3360,490,3300,490,3240,490C3180,490,3120,490,3060,490C3000,490,2940,490,2880,490C2820,490,2760,490,2700,490C2640,490,2580,490,2520,490C2460,490,2400,490,2340,490C2280,490,2220,490,2160,490C2100,490,2040,490,1980,490C1920,490,1860,490,1800,490C1740,490,1680,490,1620,490C1560,490,1500,490,1440,490C1380,490,1320,490,1260,490C1200,490,1140,490,1080,490C1020,490,960,490,900,490C840,490,780,490,720,490C660,490,600,490,540,490C480,490,420,490,360,490C300,490,240,490,180,490C120,490,60,490,30,490L0,490Z" - /> - <defs> - <linearGradient id="sw-gradient-1" x1="0" x2="0" y1="1" y2="0"> - <stop stopColor="rgba(210.184, 98.854, 234.829, 1)" offset="0%" /> - <stop stopColor="rgba(106.349, 0, 130.097, 1)" offset="100%" /> - </linearGradient> - </defs> - <path - style={{ transform: 'translate(0, 50px)', opacity: 0.9 }} - fill="url(#sw-gradient-1)" - d="M0,147L30,147C60,147,120,147,180,163.3C240,180,300,212,360,228.7C420,245,480,245,540,245C600,245,660,245,720,261.3C780,278,840,310,900,310.3C960,310,1020,278,1080,277.7C1140,278,1200,310,1260,302.2C1320,294,1380,245,1440,245C1500,245,1560,294,1620,294C1680,294,1740,245,1800,228.7C1860,212,1920,229,1980,253.2C2040,278,2100,310,2160,302.2C2220,294,2280,245,2340,204.2C2400,163,2460,131,2520,138.8C2580,147,2640,196,2700,220.5C2760,245,2820,245,2880,228.7C2940,212,3000,180,3060,187.8C3120,196,3180,245,3240,236.8C3300,229,3360,163,3420,114.3C3480,65,3540,33,3600,73.5C3660,114,3720,229,3780,245C3840,261,3900,180,3960,130.7C4020,82,4080,65,4140,57.2C4200,49,4260,49,4290,49L4320,49L4320,490L4290,490C4260,490,4200,490,4140,490C4080,490,4020,490,3960,490C3900,490,3840,490,3780,490C3720,490,3660,490,3600,490C3540,490,3480,490,3420,490C3360,490,3300,490,3240,490C3180,490,3120,490,3060,490C3000,490,2940,490,2880,490C2820,490,2760,490,2700,490C2640,490,2580,490,2520,490C2460,490,2400,490,2340,490C2280,490,2220,490,2160,490C2100,490,2040,490,1980,490C1920,490,1860,490,1800,490C1740,490,1680,490,1620,490C1560,490,1500,490,1440,490C1380,490,1320,490,1260,490C1200,490,1140,490,1080,490C1020,490,960,490,900,490C840,490,780,490,720,490C660,490,600,490,540,490C480,490,420,490,360,490C300,490,240,490,180,490C120,490,60,490,30,490L0,490Z" - /> - </svg> </div> </div> ); }; -export default Footer; \ No newline at end of file +export default Footer; diff --git a/src/pages/shared/Navbar.jsx b/src/pages/shared/Navbar.jsx index fce687c..d2c4583 100644 --- a/src/pages/shared/Navbar.jsx +++ b/src/pages/shared/Navbar.jsx @@ -1,53 +1,55 @@ // import { VscGraph } from "react-icons/vsc"; -import { useContext, useState } from "react"; -import { Link, NavLink } from "react-router-dom"; +import { useContext, useEffect, useState } from "react"; +import { Link, NavLink, useNavigate } from "react-router-dom"; import { HiMenuAlt2 } from "react-icons/hi"; import { FaXmark } from "react-icons/fa6"; import { AuthContext } from "../../Providers/AuthProviders/AuthProviders"; - const Navbar = ({ handleThemeChange }) => { - const {user, handleLogout} = useContext(AuthContext); - console.log({user}) - const navlinks = ( - <> - <NavLink - to="/" - className={({ isActive }) => - isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold" - : "text-[#8401A1] dark:text-[#73e9fe]" - } - > - Home - </NavLink> - <NavLink - to="/features" - className={({ isActive }) => - isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold" - : "text-[#8401A1] dark:text-[#73e9fe]" - } - > - Features - </NavLink> - <NavLink - to="/solutions" - className={({ isActive }) => - isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold" - : "text-[#8401A1] dark:text-[#73e9fe]" - } - > - Solutions - </NavLink> - {/* <NavLink + const { user, handleLogout } = useContext(AuthContext); + const [profile, setProfile] = useState(null); + console.log({ user }); + const navigate = useNavigate(); + + const navlinks = ( + <> + <NavLink + to="/" + className={({ isActive }) => + isActive + ? "text-[#0c01a1] dark:text-[#73e9fe] font-bold underline underline-offset-3 " + : "text-[#0c01a1] dark:text-[#73e9fe]" + } + > + Home + </NavLink> + <NavLink + to="/features" + className={({ isActive }) => + isActive + ? "text-[#0c01a1] dark:text-[#73e9fe] font-bold underline underline-offset-3" + : "text-[#0c01a1] dark:text-[#73e9fe]" + } + > + Features + </NavLink> + {/* <NavLink + to="/profile" + className={({ isActive }) => + isActive + ? "text-[#0c01a1] dark:text-[#73e9fe] font-bold underline underline-offset-3" + : "text-[#0c01a1] dark:text-[#73e9fe]" + } + > + Profile + </NavLink> */} + {/* <NavLink {/* <NavLink to="/login" className={({ isActive }) => isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold" - : "text-[#8401A1] dark:text-[#73e9fe]" + ? "text-[#0c01a1] dark:text-[#73e9fe] font-bold" + : "text-[#0c01a1] dark:text-[#73e9fe]" } > Login @@ -56,82 +58,27 @@ const Navbar = ({ handleThemeChange }) => { to="/register" className={({ isActive }) => isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold" - : "text-[#8401A1] dark:text-[#73e9fe]" + ? "text-[#0c01a1] dark:text-[#73e9fe] font-bold" + : "text-[#0c01a1] dark:text-[#73e9fe]" } > Register </NavLink> */} - { user?.email && - <> - {/* workspace dropdown */} - {/* <div className="dropdown dropdown-bottom"> - <div - tabIndex={0} - role="button" - className={({ isActive }) => - isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold underline underline-offset-3" - : "text-[#8401A1] underline-offset-0 dark:text-[#73e9fe]" - } - > - Projects - </div> - <ul - tabIndex={0} - className="dropdown-content z-[1] menu p-2 shadow-2xl rounded-box w-52" - > - <li> - <Link to="/workspace">View All</Link> - </li> - <li> - <a href="/createworkspace">Create New</a> - </li> - </ul> - </div> */} - - <NavLink - to="/workspace" - className={({ isActive }) => - isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold underline underline-offset-3" - : "text-[#8401A1] dark:text-[#73e9fe]" - } - > - Projects - </NavLink> - - </> + {user?.email && ( + <> + <NavLink + to="/workspace" + className={({ isActive }) => + isActive + ? "text-[#0c01a1] dark:text-[#73e9fe] font-bold underline underline-offset-3" + : "text-[#0c01a1] dark:text-[#73e9fe]" } - - - - {/* dropdown - <div className="dropdown dropdown-bottom"> - <div - tabIndex={0} - role="button" - className={({ isActive }) => - isActive - ? "text-[#8401A1] dark:text-[#73e9fe] font-bold underline underline-offset-3" - : "text-[#8401A1] underline-offset-0 dark:text-[#73e9fe]" - } - > - Project - </div> - <ul - tabIndex={0} - className="dropdown-content z-[1] menu p-2 shadow-2xl rounded-box w-52" - > - <li> - <Link to="/workspace">View All</Link> - </li> - <li> - <a href="/createworkspace">Create New</a> - </li> - </ul> - </div> */} + > + Projects + </NavLink> + </> + )} </> ); @@ -141,18 +88,51 @@ const Navbar = ({ handleThemeChange }) => { setOpen(!open); }; - + const handleProfile = () => { + console.log("profile button clicked"); + navigate(`/profile/${user?.userId}`); + }; + const [menuVisible, setMenuVisible] = useState(false); + const handleToggleMenu = () => { + setMenuVisible(!menuVisible); + }; + + const handleMenuClick = (action) => { + action(); + setMenuVisible(false); + }; + + useEffect(() => { + if (user && user.userId) { + fetch( + `https://projectsyncifyapi.onrender.com/api/v1/user/details/${user.userId}/` + ) + .then((res) => { + if (!res.ok) { + throw new Error("Network response was not ok"); + } + return res.json(); + }) + .then((data) => { + console.log(data); + setProfile(data); + }) + .catch((error) => { + console.error("Error fetching profile:", error); + }); + } + }, [user]); return ( <div className=" mx-auto sm:max-w-xl md:max-w-full lg:max-w-screen-xl p-4 "> - <div className="flex justify-between items-center gap-10 backdrop-filter backdrop-blur-3xl mb-10 fixed top-0 left-0 z-50 w-full h-20 px-6"> + <div className="flex justify-between items-center gap-10 backdrop-filter backdrop-blur-3xl mb-10 fixed top-0 left-0 z-50 w-full h-20 px-6 bg-gradient-to-r from-blue-200 dark:from-blue-900 to-blue-50 dark:to-black"> <div className="hidden lg:flex justify-between items-center w-full"> {/** logo and name section */} - <div className="w-1/4 flex justify-start items-center text-[#8401A1] dark:text-[#73e9fe]"> + <div className="w-1/4 flex justify-start items-center text-[#0c01a1] dark:text-[#73e9fe]"> <a href="/"> <img src={"https://i.ibb.co/T4FSNsb/Justlogo.png"} - className="w-14 h-12 text-[#8401A1] dark:text-[#73e9fe]" + className="w-14 h-12 text-[#0c01a1] dark:text-[#73e9fe]" alt="logo" /> </a> @@ -162,17 +142,17 @@ const Navbar = ({ handleThemeChange }) => { </div> {/** nav list section */} - <div className="w-2/4 flex justify-start items-center gap-4 font-semibold text-lg text-[#8401A1] dark:text-[#73e9fe]"> + <div className="w-2/4 flex justify-start items-center gap-4 font-semibold text-lg text-[#0c01a1] dark:text-[#73e9fe]"> {navlinks} </div> {/** toggle section */} - <div className="w-1/4 flex justify-between items-center gap-1 text-[#8401A1] dark:text-[#73e9fe] font-semibold text-lg"> + <div className="w-1/4 flex justify-end items-center gap-4 text-[#0c01a1] dark:text-[#73e9fe] font-semibold text-lg"> <label className="swap swap-rotate "> <input type="checkbox" onChange={handleThemeChange} /> <svg - className="swap-on fill-current w-6 h-6 md:w-8 md:h-8 text-[#8401A1] dark:text-[#73e9fe]" + className="swap-on fill-current w-6 h-6 md:w-8 md:h-8 text-[#0c01a1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > @@ -181,33 +161,68 @@ const Navbar = ({ handleThemeChange }) => { {/* moon icon */} <svg - className="swap-off fill-current w-6 h-6 md:w-8 md:h-8 text-[#8401A1] dark:text-[#73e9fe]" + className="swap-off fill-current w-6 h-6 md:w-8 md:h-8 text-[#0c01a1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > <path d="M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z" /> </svg> </label> - <hr className="w-[3px] h-[36px] bg-[#8401A1] dark:bg-[#73e9fe]" /> + <hr className="w-[3px] h-[36px] bg-[#0c01a1] dark:bg-[#73e9fe]" /> + + <Link to="/contact">Contact</Link> + {user ? ( + <> + <button className=" group " onClick={handleToggleMenu}> + <img + src={profile?.image} + alt="image" + className="w-8 md:w-10 h-8 md:h-10 rounded-full" + /> - <a href="contact">Contact</a> - {user ? <><div onClick={handleLogout}>LogOut</div></>: <Link to="/login">Log In</Link>} - <Link to="/register"> - <button className="px-3 py-1 hidden md:flex bg-[#8401A1] dark:bg-cyan-600 hover:bg-gradient-to-r from-[#30acc2] to-[#8401A1] rounded text-white"> - Get Started - </button> - </Link> + {menuVisible && ( + <div className="z-10 absolute bg-slate-100 dark:bg-slate-900 rounded-lg shadow w-20 top-full right-0"> + <ul className="py-2 text-sm text-left px-4"> + <li + onClick={() => handleMenuClick(handleProfile)} + className="hover:font-bold" + > + Profile + </li> + <li + onClick={() => handleMenuClick(handleLogout)} + className="hover:font-bold" + > + Logout + </li> + </ul> + </div> + )} + </button> + </> + ) : ( + <> + <div className="flex gap-3 justify-center items-center"> + <Link to="/login">Log In</Link> + <Link to="/register"> + <button className="px-2 py-1 hidden md:flex bg-[#0c01a1] dark:bg-cyan-600 hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] rounded text-white"> + Get Started + </button> + </Link> + </div> + </> + )} </div> </div> {/** toggle bar button */} - <div className="flex lg:hidden w-full"> + <div className="flex lg:hidden w-full "> <div className="flex justify-between items-center w-full"> - <div className=" flex text-[#8401A1] dark:text-[#73e9fe]"> + <div className=" flex text-[#0c01a1] dark:text-[#73e9fe]"> <a href="/"> <img src={"https://i.ibb.co/T4FSNsb/Justlogo.png"} - className="w-14 h-12 text-[#8401A1] dark:text-[#73e9fe]" + className="w-14 h-12 text-[#0c01a1] dark:text-[#73e9fe]" alt="logo" /> </a> @@ -221,7 +236,7 @@ const Navbar = ({ handleThemeChange }) => { <input type="checkbox" onChange={handleThemeChange} /> <svg - className="swap-on fill-current w-8 h-8 text-[#8401A1] dark:text-[#73e9fe]" + className="swap-on fill-current w-8 h-8 text-[#0c01a1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > @@ -230,7 +245,7 @@ const Navbar = ({ handleThemeChange }) => { {/* moon icon */} <svg - className="swap-off fill-current w-8 h-8 text-[#8401A1] dark:text-[#73e9fe]" + className="swap-off fill-current w-8 h-8 text-[#0c01a1] dark:text-[#73e9fe]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > @@ -238,7 +253,31 @@ const Navbar = ({ handleThemeChange }) => { </svg> </label> </div> - <hr className="w-[3px] h-[36px] bg-[#8401A1] dark:bg-[#73e9fe]" /> + <hr className="w-[3px] h-[36px] bg-[#0c01a1] dark:bg-[#73e9fe]" /> + <div> + <button className=" group " onClick={handleToggleMenu}> + <img + src={profile?.image} + alt="image" + className="w-8 md:w-10 h-8 md:h-10 rounded-full" + title="profile" + /> + {/* <FaUserCircle /> */} + {menuVisible && ( + <div className="z-10 absolute bg-slate-100 dark:bg-slate-900 rounded-lg shadow w-20 top-full right-0"> + <ul className="py-2 text-sm text-left px-4"> + <li + onClick={() => handleMenuClick(handleProfile)} + className="hover:font-bold" + > + Profile + </li> + </ul> + </div> + )} + </button> + </div> + <div onClick={toggleMenu}> {open ? ( <FaXmark className=" text-3xl cursor-pointer" /> @@ -250,13 +289,19 @@ const Navbar = ({ handleThemeChange }) => { <div className={`${ open ? "flex" : "hidden" - } w-full h-fit bg-cyan-50 dark:bg-slate-800 bg-opacity-50 dark:bg-opacity-50 p-4 absolute top-[80px] left-0`} + } w-full h-fit bg-cyan-100 dark:bg-sky-950 bg-opacity-80 dark:bg-opacity-90 p-4 absolute top-[80px] left-0`} > <div className="flex flex-col justify-center items-center gap-4 w-full font-semibold "> {navlinks} - <a href="contact">Contact</a> - <Link to="/login">Log In</Link> - {/* <button className="px-4 py-2 flex bg-[#8401A1] dark:bg-cyan-600 hover:bg-gradient-to-r from-[#30acc2] to-[#8401A1] rounded text-white">Get Started</button> */} + <Link to="/contact">Contact</Link> + {user ? ( + <> + <h1 onClick={handleLogout}>Log Out</h1> + </> + ) : ( + <Link to="/login">Log In</Link> + )} + {/* <button className="px-4 py-2 flex bg-[#0c01a1] dark:bg-cyan-600 hover:bg-gradient-to-r from-[#30acc2] to-[#0c01a1] rounded text-white">Get Started</button> */} </div> </div> </div> diff --git a/src/pages/shared/Title.jsx b/src/pages/shared/Title.jsx index c5c67ae..32b3f23 100644 --- a/src/pages/shared/Title.jsx +++ b/src/pages/shared/Title.jsx @@ -1,10 +1,10 @@ const Title = ({ title, subTitle }) => { return ( <div> - <h1 className="text-3xl md:text-5xl py-10 md:py-10 font-bold "> + <h1 className="text-3xl md:text-4xl py-10 md:py-10 font-bold "> {title} </h1> - {/* <hr className="w-[70%]"/> */} + {/* <hr className="w-[70%]/> */} </div> ); }; diff --git a/src/pages/shared/TitlePages.jsx b/src/pages/shared/TitlePages.jsx index 2270a2f..87e524f 100644 --- a/src/pages/shared/TitlePages.jsx +++ b/src/pages/shared/TitlePages.jsx @@ -1,7 +1,7 @@ const TitlePages = ({ title, subTitle }) => { return ( <div className="px-10 pt-10 md:pt-14 pb-4"> - <h1 className="text-3xl pb-2 font-semibold "> + <h1 className="text-3xl pb-2 font-bold "> {title} </h1> <hr className="w-full h-1 bg-gradient-to-r from-[#9d11bd] to-[#73e9fe] "/> diff --git a/tailwind.config.js b/tailwind.config.js index 1f4ebec..2b1f5d8 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,25 +1,25 @@ /** @type {import('tailwindcss').Config} */ export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme:{ + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { extend: { container: { - center: true - } + center: true, + }, + colors: { + "secondary-color": "#fff", // Custom color value for --secondary-color + }, + boxShadow: { + "light-shadow1": "0px 4px 12px rgba(0, 0, 0, 0.02)", // Custom box-shadow value for --light-shadow1 + }, }, }, - darkMode: 'class', - - plugins: [ - require('daisyui'), - ], + darkMode: "class", + + plugins: [require("daisyui")], variants: { extend: { - display: ["focus-group"] - } - } -} - + display: ["focus-group"], + }, + }, +}; diff --git a/vite.config.js.timestamp-1717514206721-86f0cd149d132.mjs b/vite.config.js.timestamp-1717514206721-86f0cd149d132.mjs new file mode 100644 index 0000000..6f9fb7b --- /dev/null +++ b/vite.config.js.timestamp-1717514206721-86f0cd149d132.mjs @@ -0,0 +1,10 @@ +// vite.config.js +import { defineConfig } from "file:///D:/TP%20Again/Project-Syncify/node_modules/vite/dist/node/index.js"; +import react from "file:///D:/TP%20Again/Project-Syncify/node_modules/@vitejs/plugin-react/dist/index.mjs"; +var vite_config_default = defineConfig({ + plugins: [react()] +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxUUCBBZ2FpblxcXFxQcm9qZWN0LVN5bmNpZnlcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXFRQIEFnYWluXFxcXFByb2plY3QtU3luY2lmeVxcXFx2aXRlLmNvbmZpZy5qc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRDovVFAlMjBBZ2Fpbi9Qcm9qZWN0LVN5bmNpZnkvdml0ZS5jb25maWcuanNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xyXG5pbXBvcnQgcmVhY3QgZnJvbSAnQHZpdGVqcy9wbHVnaW4tcmVhY3QnXHJcblxyXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xyXG4gIHBsdWdpbnM6IFtyZWFjdCgpXSxcclxufSlcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUEyUSxTQUFTLG9CQUFvQjtBQUN4UyxPQUFPLFdBQVc7QUFHbEIsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNuQixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=