diff --git a/package-lock.json b/package-lock.json index c5e2f87..06ec697 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,41 +9,41 @@ "version": "0.1.0", "dependencies": { "@hapi/iron": "^7.0.1", - "@headlessui/react": "^1.7.14", + "@headlessui/react": "^1.7.15", "@headlessui/tailwindcss": "^0.1.3", "@hookform/resolvers": "^3.1.0", "@mapbox/mapbox-sdk": "^0.15.1", - "@next/bundle-analyzer": "^13.4.3", - "@prisma/client": "^4.13.0", + "@next/bundle-analyzer": "^13.4.4", + "@prisma/client": "^4.15.0", "@react-email/components": "^0.0.6", "@react-email/render": "^0.0.7", "@react-email/tailwind": "^0.0.8", - "@vercel/analytics": "^1.0.0", + "@vercel/analytics": "^1.0.1", "argon2": "^0.30.3", - "cloudinary": "^1.36.4", + "cloudinary": "^1.37.0", "cookie": "^0.5.0", "date-fns": "^2.30.0", - "dotenv": "^16.0.3", + "dotenv": "^16.1.3", "jsonwebtoken": "^9.0.0", "lodash": "^4.17.21", - "mapbox-gl": "^2.14.1", + "mapbox-gl": "^2.15.0", "multer": "^1.4.5-lts.1", "multer-storage-cloudinary": "^4.0.0", - "next": "^13.3.4", + "next": "^13.4.4", "next-connect": "^1.0.0-next.3", "passport": "^0.6.0", "passport-local": "^1.0.0", - "pino": "^8.12.0", + "pino": "^8.14.1", "pino-pretty": "^10.0.0", "react": "^18.2.0", "react-daisyui": "^3.1.2", "react-dom": "^18.2.0", "react-email": "^1.9.3", - "react-hook-form": "^7.43.9", + "react-hook-form": "^7.44.3", "react-hot-toast": "^2.4.1", - "react-icons": "^4.8.0", - "react-intersection-observer": "^9.4.3", - "react-map-gl": "^7.0.23", + "react-icons": "^4.9.0", + "react-intersection-observer": "^9.4.4", + "react-map-gl": "^7.0.25", "react-responsive-carousel": "^3.2.23", "sparkpost": "^2.1.4", "swr": "^2.1.5", @@ -51,38 +51,37 @@ "zod": "^3.21.4" }, "devDependencies": { - "@faker-js/faker": "^7.6.0", + "@faker-js/faker": "^8.0.2", "@types/cookie": "^0.5.1", - "@types/ejs": "^3.1.2", "@types/jsonwebtoken": "^9.0.2", - "@types/lodash": "^4.14.194", + "@types/lodash": "^4.14.195", "@types/mapbox__mapbox-sdk": "^0.13.4", "@types/multer": "^1.4.7", - "@types/node": "^18.16.3", + "@types/node": "^20.2.5", "@types/passport-local": "^1.0.35", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.2.1", + "@types/react": "^18.2.8", + "@types/react-dom": "^18.2.4", "@types/sparkpost": "^2.1.5", "@vercel/fetch": "^6.2.0", "autoprefixer": "^10.4.14", - "daisyui": "^2.51.6", + "daisyui": "^3.0.0", "dotenv-cli": "^7.2.1", - "eslint": "^8.39.0", + "eslint": "^8.41.0", "eslint-config-airbnb-base": "15.0.0", "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-next": "^13.3.4", + "eslint-config-next": "^13.4.4", "eslint-config-prettier": "^8.8.0", "eslint-plugin-react": "^7.32.2", "onchange": "^7.1.0", - "postcss": "^8.4.23", + "postcss": "^8.4.24", "prettier": "^2.8.8", "prettier-plugin-jsdoc": "^0.4.2", - "prettier-plugin-tailwindcss": "^0.2.8", - "prisma": "^4.13.0", + "prettier-plugin-tailwindcss": "^0.3.0", + "prisma": "^4.15.0", "tailwindcss": "^3.3.2", "tailwindcss-animate": "^1.0.5", "ts-node": "^10.9.1", - "typescript": "^5.0.4" + "typescript": "^5.1.3" } }, "node_modules/@alloc/quick-lru": { @@ -592,14 +591,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -615,22 +614,28 @@ } }, "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@faker-js/faker": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", - "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz", + "integrity": "sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" } }, "node_modules/@hapi/b64": { @@ -683,9 +688,9 @@ } }, "node_modules/@headlessui/react": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.14.tgz", - "integrity": "sha512-znzdq9PG8rkwcu9oQ2FwIy0ZFtP9Z7ycS+BAqJ3R5EIqC/0bJGvhT7193rFf+45i9nnPsYvCQVW4V/bB9Xc+gA==", + "version": "1.7.15", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.15.tgz", + "integrity": "sha512-OTO0XtoRQ6JPB1cKNFYBZv2Q0JMqMGNhYP1CjPvcJvjz8YGokz8oAj89HIYZGN0gZzn/4kk9iUpmMF4Q21Gsqw==", "dependencies": { "client-only": "^0.0.1" }, @@ -1011,31 +1016,31 @@ } }, "node_modules/@next/bundle-analyzer": { - "version": "13.4.3", - "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.3.tgz", - "integrity": "sha512-jzWk6eaCFaIXfIswyQQWnR6FN22HpWoSWe3nLa3JCNkNd2ksriJgn86oQyZRxgAPaEbVKQXBp8GZi8e5DrhVJg==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.4.tgz", + "integrity": "sha512-OxdqGfzElMjcLDw3XkUTqpEjyB/R2n3sOjiWuOGm414j5hAD2AIcXWv4q6FTN9rERgojrkw+g3z5yeLZgJ3YKg==", "dependencies": { "webpack-bundle-analyzer": "4.7.0" } }, "node_modules/@next/env": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.4.tgz", - "integrity": "sha512-oTK/wRV2qga86m/4VdrR1+/56UA6U1Qv3sIgowB+bZjahniZLEG5BmmQjfoGv7ZuLXBZ8Eec6hkL9BqJcrEL2g==" + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.4.tgz", + "integrity": "sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==" }, "node_modules/@next/eslint-plugin-next": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.3.4.tgz", - "integrity": "sha512-mvS+HafOPy31oJbAi920WJXMdjbyb4v5FAMr9PeGZfRIdEcsLkA3mU/ZvmwzovJgP3nAWw2e2yM8iIFW8VpvIA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.4.tgz", + "integrity": "sha512-5jnh7q6I15efnjR/rR+/TGTc9hn53g3JTbEjAMjmeQiExKqEUgIXqrHI5zlTNlNyzCPkBB860/ctxXheZaF2Vw==", "dev": true, "dependencies": { "glob": "7.1.7" } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.4.tgz", - "integrity": "sha512-vux7RWfzxy1lD21CMwZsy9Ej+0+LZdIIj1gEhVmzOQqQZ5N56h8JamrjIVCfDL+Lpj8KwOmFZbPHE8qaYnL2pg==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz", + "integrity": "sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==", "cpu": [ "arm64" ], @@ -1048,9 +1053,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.4.tgz", - "integrity": "sha512-1tb+6JT98+t7UIhVQpKL7zegKnCs9RKU6cKNyj+DYKuC/NVl49/JaIlmwCwK8Ibl+RXxJrK7uSXSIO71feXsgw==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz", + "integrity": "sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==", "cpu": [ "x64" ], @@ -1063,9 +1068,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.4.tgz", - "integrity": "sha512-UqcKkYTKslf5YAJNtZ5XV1D5MQJIkVtDHL8OehDZERHzqOe7jvy41HFto33IDPPU8gJiP5eJb3V9U26uifqHjw==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz", + "integrity": "sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==", "cpu": [ "arm64" ], @@ -1078,9 +1083,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.4.tgz", - "integrity": "sha512-HE/FmE8VvstAfehyo/XsrhGgz97cEr7uf9IfkgJ/unqSXE0CDshDn/4as6rRid74eDR8/exi7c2tdo49Tuqxrw==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz", + "integrity": "sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==", "cpu": [ "arm64" ], @@ -1093,9 +1098,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.4.tgz", - "integrity": "sha512-xU+ugaupGA4SL5aK1ZYEqVHrW3TPOhxVcpaJLfpANm2443J4GfxCmOacu9XcSgy5c51Mq7C9uZ1LODKHfZosRQ==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz", + "integrity": "sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ==", "cpu": [ "x64" ], @@ -1108,9 +1113,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.4.tgz", - "integrity": "sha512-cZvmf5KcYeTfIK6bCypfmxGUjme53Ep7hx94JJtGrYgCA1VwEuYdh+KouubJaQCH3aqnNE7+zGnVEupEKfoaaA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz", + "integrity": "sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA==", "cpu": [ "x64" ], @@ -1123,9 +1128,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.4.tgz", - "integrity": "sha512-7dL+CAUAjmgnVbjXPIpdj7/AQKFqEUL3bKtaOIE1JzJ5UMHHAXCPwzQtibrsvQpf9MwcAmiv8aburD3xH1xf8w==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz", + "integrity": "sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==", "cpu": [ "arm64" ], @@ -1138,9 +1143,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.4.tgz", - "integrity": "sha512-qplTyzEl1vPkS+/DRK3pKSL0HeXrPHkYsV7U6gboHYpfqoHY+bcLUj3gwVUa9PEHRIoq4vXvPzx/WtzE6q52ng==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz", + "integrity": "sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==", "cpu": [ "ia32" ], @@ -1153,9 +1158,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.4.tgz", - "integrity": "sha512-usdvZT7JHrTuXC+4OKN5mCzUkviFkCyJJTkEz8jhBpucg+T7s83e7owm3oNFzmj5iKfvxU2St6VkcnSgpFvEYA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz", + "integrity": "sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==", "cpu": [ "x64" ], @@ -1380,12 +1385,12 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "node_modules/@prisma/client": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.13.0.tgz", - "integrity": "sha512-YaiiICcRB2hatxsbnfB66uWXjcRw3jsZdlAVxmx0cFcTc/Ad/sKdHCcWSnqyDX47vAewkjRFwiLwrOUjswVvmA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.15.0.tgz", + "integrity": "sha512-xnROvyABcGiwqRNdrObHVZkD9EjkJYHOmVdlKy1yGgI+XOzvMzJ4tRg3dz1pUlsyhKxXGCnjIQjWW+2ur+YXuw==", "hasInstallScript": true, "dependencies": { - "@prisma/engines-version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a" + "@prisma/engines-version": "4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944" }, "engines": { "node": ">=14.17" @@ -1400,16 +1405,16 @@ } }, "node_modules/@prisma/engines": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.13.0.tgz", - "integrity": "sha512-HrniowHRZXHuGT9XRgoXEaP2gJLXM5RMoItaY2PkjvuZ+iHc0Zjbm/302MB8YsPdWozAPHHn+jpFEcEn71OgPw==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.15.0.tgz", + "integrity": "sha512-FTaOCGs0LL0OW68juZlGxFtYviZa4xdQj/rQEdat2txw0s3Vu/saAPKjNVXfIgUsGXmQ72HPgNr6935/P8FNAA==", "devOptional": true, "hasInstallScript": true }, "node_modules/@prisma/engines-version": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-fsQlbkhPJf08JOzKoyoD9atdUijuGBekwoOPZC3YOygXEml1MTtgXVpnUNchQlRSY82OQ6pSGQ9PxUe4arcSLQ==" + "version": "4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944.tgz", + "integrity": "sha512-sVOig4tjGxxlYaFcXgE71f/rtFhzyYrfyfNFUsxCIEJyVKU9rdOWIlIwQ2NQ7PntvGnn+x0XuFo4OC1jvPJKzg==" }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.0.0", @@ -1785,12 +1790,6 @@ "@types/ms": "*" } }, - "node_modules/@types/ejs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz", - "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", - "dev": true - }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -1856,9 +1855,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.194", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", - "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", + "version": "4.14.195", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", + "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "dev": true }, "node_modules/@types/lru-cache": { @@ -1922,9 +1921,9 @@ } }, "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==" }, "node_modules/@types/node-fetch": { "version": "2.6.3", @@ -1990,9 +1989,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", - "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.8.tgz", + "integrity": "sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -2001,9 +2000,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz", - "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", "dev": true, "dependencies": { "@types/react": "*" @@ -2296,12 +2295,9 @@ } }, "node_modules/@vercel/analytics": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.0.0.tgz", - "integrity": "sha512-RQmj7pv82JwGDHrnKeRc6TtSw2U7rWNubc2IH0ernTzWTj02yr9zvIYiYJeztsBzrJtWv7m8Nz6vxxb+cdEtJw==", - "peerDependencies": { - "react": "^16.8||^17||^18" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.0.1.tgz", + "integrity": "sha512-Ux0c9qUfkcPqng3vrR0GTrlQdqNJ2JREn/2ydrVuKwM3RtMfF2mWX31Ijqo1opSjNAq6rK76PwtANw6kl6TAow==" }, "node_modules/@vercel/fetch": { "version": "6.2.0", @@ -2754,6 +2750,7 @@ "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -2952,6 +2949,7 @@ "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, "funding": [ { "type": "opencollective", @@ -3303,9 +3301,9 @@ } }, "node_modules/cloudinary": { - "version": "1.36.4", - "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.36.4.tgz", - "integrity": "sha512-F/90SVQdUbbEipCS4jTRvUt1lzJ7tcbu7n5zPTtXq83Qj7y9AazLZmU5BdWTQLjPJ82Cq/nr67GCnWDxWATWxg==", + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.37.0.tgz", + "integrity": "sha512-hCAb3kU2nqjaHxDHxh+bi691A6LEuF68A2jHvYR5wDhDxx5qNRJLYqABbmxP6TQJriJd0Tq309fZvzBXkTW6sw==", "dependencies": { "cloudinary-core": "2.13.0", "core-js": "3.30.1", @@ -3327,18 +3325,6 @@ "lodash": ">=4.0" } }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3355,15 +3341,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -3372,6 +3349,11 @@ "color-support": "bin.js" } }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -3570,13 +3552,13 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/daisyui": { - "version": "2.51.6", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.51.6.tgz", - "integrity": "sha512-JRqOKayuFCmWe4X4k6Qvx1y7V/VNao8U5eTSOhusOKIzCsYqf56+TCSe4d7zmqGE0V6JiLDYAT8JeoWUeRKFCw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.0.0.tgz", + "integrity": "sha512-EuNK9JQd5yrPLDynAPQkG/29vjZXFWhBK4HXvM83d9oJU0EmF35UNLLs0cslBFfLK4b+bOuhgoYPJ4BjytOxNQ==", "dependencies": { - "color": "^4.2", - "css-selector-tokenizer": "^0.8.0", - "postcss-js": "^4.0.0", + "colord": "^2.9", + "css-selector-tokenizer": "^0.8", + "postcss-js": "^4", "tailwindcss": "^3" }, "funding": { @@ -3584,8 +3566,7 @@ "url": "https://opencollective.com/daisyui" }, "peerDependencies": { - "autoprefixer": "^10.0.2", - "postcss": "^8.1.6" + "postcss": "^8" } }, "node_modules/damerau-levenshtein": { @@ -4156,11 +4137,14 @@ } }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, "node_modules/dotenv-cli": { @@ -4293,7 +4277,8 @@ "node_modules/electron-to-chromium": { "version": "1.4.380", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz", - "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==" + "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==", + "dev": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -4489,6 +4474,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -4588,15 +4574,15 @@ } }, "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -4607,8 +4593,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4616,13 +4602,12 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -4688,12 +4673,12 @@ } }, "node_modules/eslint-config-next": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.3.4.tgz", - "integrity": "sha512-TknEcP+EdTqLvJ2zMY1KnWqcx8ZHl1C2Tjjbq3qmtWcHRU5oxe1PAsz3vrKG3NOzonSaPcB2SpCSfYqcgj6nfA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.4.tgz", + "integrity": "sha512-z/PMbm6L0iC/fwISULxe8IVy4DtNqZk2wQY711o35klenq70O6ns82A8yuMVCFjHC0DIyB2lyugesRtuk9u8dQ==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "13.3.4", + "@next/eslint-plugin-next": "13.4.4", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.42.0", "eslint-import-resolver-node": "^0.3.6", @@ -5030,9 +5015,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5058,14 +5043,14 @@ } }, "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5392,6 +5377,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, "engines": { "node": "*" }, @@ -5802,6 +5788,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "peer": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/grid-index": { @@ -6808,16 +6801,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6953,9 +6936,9 @@ } }, "node_modules/kdbush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", - "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" }, "node_modules/keyv": { "version": "4.5.2", @@ -7145,9 +7128,9 @@ } }, "node_modules/mapbox-gl": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.14.1.tgz", - "integrity": "sha512-KfHYcjzJeEF1UXZQin3vSdyIXoTBBdpNesTMmyzP9Dv8wRg8DnRu078Vr/CJ2A6Xocsvh9UAqTWYtHlrc20nwA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.15.0.tgz", + "integrity": "sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==", "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", @@ -7162,12 +7145,13 @@ "geojson-vt": "^3.2.1", "gl-matrix": "^3.4.3", "grid-index": "^1.1.0", + "kdbush": "^4.0.1", "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^2.0.0", "quickselect": "^2.0.0", "rw": "^1.3.3", - "supercluster": "^7.1.5", + "supercluster": "^8.0.0", "tinyqueue": "^2.0.3", "vt-pbf": "^3.1.3" } @@ -7955,16 +7939,17 @@ } }, "node_modules/next": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.4.tgz", - "integrity": "sha512-sod7HeokBSvH5QV0KB+pXeLfcXUlLrGnVUXxHpmhilQ+nQYT3Im2O8DswD5e4uqbR8Pvdu9pcWgb1CbXZQZlmQ==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.4.tgz", + "integrity": "sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==", "dependencies": { - "@next/env": "13.3.4", + "@next/env": "13.4.4", "@swc/helpers": "0.5.1", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.14", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.1", + "zod": "3.21.4" }, "bin": { "next": "dist/bin/next" @@ -7973,20 +7958,19 @@ "node": ">=16.8.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "13.3.4", - "@next/swc-darwin-x64": "13.3.4", - "@next/swc-linux-arm64-gnu": "13.3.4", - "@next/swc-linux-arm64-musl": "13.3.4", - "@next/swc-linux-x64-gnu": "13.3.4", - "@next/swc-linux-x64-musl": "13.3.4", - "@next/swc-win32-arm64-msvc": "13.3.4", - "@next/swc-win32-ia32-msvc": "13.3.4", - "@next/swc-win32-x64-msvc": "13.3.4" + "@next/swc-darwin-arm64": "13.4.4", + "@next/swc-darwin-x64": "13.4.4", + "@next/swc-linux-arm64-gnu": "13.4.4", + "@next/swc-linux-arm64-musl": "13.4.4", + "@next/swc-linux-x64-gnu": "13.4.4", + "@next/swc-linux-x64-musl": "13.4.4", + "@next/swc-win32-arm64-msvc": "13.4.4", + "@next/swc-win32-ia32-msvc": "13.4.4", + "@next/swc-win32-x64-msvc": "13.4.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -7998,9 +7982,6 @@ "fibers": { "optional": true }, - "node-sass": { - "optional": true - }, "sass": { "optional": true } @@ -8067,7 +8048,8 @@ "node_modules/node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true }, "node_modules/nopt": { "version": "5.0.0", @@ -8114,6 +8096,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8653,9 +8636,9 @@ } }, "node_modules/pino": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.12.0.tgz", - "integrity": "sha512-qHiXP7x9hFnJb0EnrLzD4onHj82Vh91lEtx6UiPT2eNoHD7lwi50CUIz+s0Z7YXgtMc7IIjss4yIIxZu6T1Tdg==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.14.1.tgz", + "integrity": "sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==", "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", @@ -8794,9 +8777,9 @@ } }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", "funding": [ { "type": "opencollective", @@ -8985,9 +8968,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.8.tgz", - "integrity": "sha512-KgPcEnJeIijlMjsA6WwYgRs5rh3/q76oInqtMXBA/EMcamrcYJpyhtRhyX1ayT9hnHlHTuO8sIifHF10WuSDKg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.3.0.tgz", + "integrity": "sha512-009/Xqdy7UmkcTBpwlq7jsViDqXAYSOMLDrHAdTMlVZOrKfM2o9Ci7EMWTMZ7SkKBFTG04UM9F9iM2+4i6boDA==", "dev": true, "engines": { "node": ">=12.17.0" @@ -9003,6 +8986,7 @@ "prettier-plugin-css-order": "*", "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-style-order": "*", @@ -9037,6 +9021,9 @@ "prettier-plugin-jsdoc": { "optional": true }, + "prettier-plugin-marko": { + "optional": true + }, "prettier-plugin-organize-attributes": { "optional": true }, @@ -9079,13 +9066,13 @@ } }, "node_modules/prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.13.0.tgz", - "integrity": "sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.15.0.tgz", + "integrity": "sha512-iKZZpobPl48gTcSZVawLMQ3lEy6BnXwtoMj7hluoGFYu2kQ6F9LBuBrUyF95zRVnNo8/3KzLXJXJ5TEnLSJFiA==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/engines": "4.13.0" + "@prisma/engines": "4.15.0" }, "bin": { "prisma": "build/index.js", @@ -9431,9 +9418,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.43.9", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.43.9.tgz", - "integrity": "sha512-AUDN3Pz2NSeoxQ7Hs6OhQhDr6gtF9YRuutGDwPQqhSUAHJSgGl2VeY3qN19MG0SucpjgDiuMJ4iC5T5uB+eaNQ==", + "version": "7.44.3", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.44.3.tgz", + "integrity": "sha512-/tHId6p2ViAka1wECMw8FEPn/oz/w226zehHrJyQ1oIzCBNMIJCaj6ZkQcv+MjDxYh9MWR7RQic7Qqwe4a5nkw==", "engines": { "node": ">=12.22.0" }, @@ -9461,17 +9448,17 @@ } }, "node_modules/react-icons": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.8.0.tgz", - "integrity": "sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.9.0.tgz", + "integrity": "sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==", "peerDependencies": { "react": "*" } }, "node_modules/react-intersection-observer": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.4.3.tgz", - "integrity": "sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.4.4.tgz", + "integrity": "sha512-KQr8ezJscRSQZR0/TjogG4mZttCzdPZj8fhDzAK+xrPYOVvFjabRNy+4EY3UhS3fJaJyIedGjA8y4yKX+nc08w==", "peerDependencies": { "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } @@ -9482,9 +9469,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-map-gl": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.0.23.tgz", - "integrity": "sha512-874jEtdS/fB2R4jSJKud9va0H0GlxhtiSFuUMATiniQ7A2lQnZLkZIPEWwIPkMmNZDXNlTAkxWEdSHzsqADVAw==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.0.25.tgz", + "integrity": "sha512-8aZfbDKxVcJnmTEC1eQ00VnTOu722i5wqnx+lV8VHN37ZvWEfMgb84EQ2kW6w/Q3zq6oZqP4helF7u4ydPFLtA==", "dependencies": { "@types/mapbox-gl": "^2.6.0" }, @@ -10103,19 +10090,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, "node_modules/sirv": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", @@ -10538,11 +10512,11 @@ } }, "node_modules/supercluster": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", - "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", "dependencies": { - "kdbush": "^3.0.0" + "kdbush": "^4.0.2" } }, "node_modules/supports-color": { @@ -11127,16 +11101,16 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { @@ -11251,6 +11225,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -11896,14 +11871,14 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -11913,15 +11888,15 @@ } }, "@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", + "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", "dev": true }, "@faker-js/faker": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", - "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.0.2.tgz", + "integrity": "sha512-Uo3pGspElQW91PCvKSIAXoEgAUlRnH29sX2/p89kg7sP1m2PzCufHINd0FhTXQf6DYGiUlVncdSPa2F9wxed2A==", "dev": true }, "@hapi/b64": { @@ -11971,9 +11946,9 @@ } }, "@headlessui/react": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.14.tgz", - "integrity": "sha512-znzdq9PG8rkwcu9oQ2FwIy0ZFtP9Z7ycS+BAqJ3R5EIqC/0bJGvhT7193rFf+45i9nnPsYvCQVW4V/bB9Xc+gA==", + "version": "1.7.15", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.15.tgz", + "integrity": "sha512-OTO0XtoRQ6JPB1cKNFYBZv2Q0JMqMGNhYP1CjPvcJvjz8YGokz8oAj89HIYZGN0gZzn/4kk9iUpmMF4Q21Gsqw==", "requires": { "client-only": "^0.0.1" } @@ -12227,79 +12202,79 @@ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, "@next/bundle-analyzer": { - "version": "13.4.3", - "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.3.tgz", - "integrity": "sha512-jzWk6eaCFaIXfIswyQQWnR6FN22HpWoSWe3nLa3JCNkNd2ksriJgn86oQyZRxgAPaEbVKQXBp8GZi8e5DrhVJg==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.4.4.tgz", + "integrity": "sha512-OxdqGfzElMjcLDw3XkUTqpEjyB/R2n3sOjiWuOGm414j5hAD2AIcXWv4q6FTN9rERgojrkw+g3z5yeLZgJ3YKg==", "requires": { "webpack-bundle-analyzer": "4.7.0" } }, "@next/env": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.4.tgz", - "integrity": "sha512-oTK/wRV2qga86m/4VdrR1+/56UA6U1Qv3sIgowB+bZjahniZLEG5BmmQjfoGv7ZuLXBZ8Eec6hkL9BqJcrEL2g==" + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.4.tgz", + "integrity": "sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==" }, "@next/eslint-plugin-next": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.3.4.tgz", - "integrity": "sha512-mvS+HafOPy31oJbAi920WJXMdjbyb4v5FAMr9PeGZfRIdEcsLkA3mU/ZvmwzovJgP3nAWw2e2yM8iIFW8VpvIA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.4.tgz", + "integrity": "sha512-5jnh7q6I15efnjR/rR+/TGTc9hn53g3JTbEjAMjmeQiExKqEUgIXqrHI5zlTNlNyzCPkBB860/ctxXheZaF2Vw==", "dev": true, "requires": { "glob": "7.1.7" } }, "@next/swc-darwin-arm64": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.4.tgz", - "integrity": "sha512-vux7RWfzxy1lD21CMwZsy9Ej+0+LZdIIj1gEhVmzOQqQZ5N56h8JamrjIVCfDL+Lpj8KwOmFZbPHE8qaYnL2pg==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz", + "integrity": "sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==", "optional": true }, "@next/swc-darwin-x64": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.4.tgz", - "integrity": "sha512-1tb+6JT98+t7UIhVQpKL7zegKnCs9RKU6cKNyj+DYKuC/NVl49/JaIlmwCwK8Ibl+RXxJrK7uSXSIO71feXsgw==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz", + "integrity": "sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==", "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.4.tgz", - "integrity": "sha512-UqcKkYTKslf5YAJNtZ5XV1D5MQJIkVtDHL8OehDZERHzqOe7jvy41HFto33IDPPU8gJiP5eJb3V9U26uifqHjw==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz", + "integrity": "sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==", "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.4.tgz", - "integrity": "sha512-HE/FmE8VvstAfehyo/XsrhGgz97cEr7uf9IfkgJ/unqSXE0CDshDn/4as6rRid74eDR8/exi7c2tdo49Tuqxrw==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz", + "integrity": "sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==", "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.4.tgz", - "integrity": "sha512-xU+ugaupGA4SL5aK1ZYEqVHrW3TPOhxVcpaJLfpANm2443J4GfxCmOacu9XcSgy5c51Mq7C9uZ1LODKHfZosRQ==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz", + "integrity": "sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ==", "optional": true }, "@next/swc-linux-x64-musl": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.4.tgz", - "integrity": "sha512-cZvmf5KcYeTfIK6bCypfmxGUjme53Ep7hx94JJtGrYgCA1VwEuYdh+KouubJaQCH3aqnNE7+zGnVEupEKfoaaA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz", + "integrity": "sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA==", "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.4.tgz", - "integrity": "sha512-7dL+CAUAjmgnVbjXPIpdj7/AQKFqEUL3bKtaOIE1JzJ5UMHHAXCPwzQtibrsvQpf9MwcAmiv8aburD3xH1xf8w==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz", + "integrity": "sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==", "optional": true }, "@next/swc-win32-ia32-msvc": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.4.tgz", - "integrity": "sha512-qplTyzEl1vPkS+/DRK3pKSL0HeXrPHkYsV7U6gboHYpfqoHY+bcLUj3gwVUa9PEHRIoq4vXvPzx/WtzE6q52ng==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz", + "integrity": "sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==", "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.4.tgz", - "integrity": "sha512-usdvZT7JHrTuXC+4OKN5mCzUkviFkCyJJTkEz8jhBpucg+T7s83e7owm3oNFzmj5iKfvxU2St6VkcnSgpFvEYA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz", + "integrity": "sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==", "optional": true }, "@nodelib/fs.scandir": { @@ -12462,23 +12437,23 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "@prisma/client": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.13.0.tgz", - "integrity": "sha512-YaiiICcRB2hatxsbnfB66uWXjcRw3jsZdlAVxmx0cFcTc/Ad/sKdHCcWSnqyDX47vAewkjRFwiLwrOUjswVvmA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.15.0.tgz", + "integrity": "sha512-xnROvyABcGiwqRNdrObHVZkD9EjkJYHOmVdlKy1yGgI+XOzvMzJ4tRg3dz1pUlsyhKxXGCnjIQjWW+2ur+YXuw==", "requires": { - "@prisma/engines-version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a" + "@prisma/engines-version": "4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944" } }, "@prisma/engines": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.13.0.tgz", - "integrity": "sha512-HrniowHRZXHuGT9XRgoXEaP2gJLXM5RMoItaY2PkjvuZ+iHc0Zjbm/302MB8YsPdWozAPHHn+jpFEcEn71OgPw==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.15.0.tgz", + "integrity": "sha512-FTaOCGs0LL0OW68juZlGxFtYviZa4xdQj/rQEdat2txw0s3Vu/saAPKjNVXfIgUsGXmQ72HPgNr6935/P8FNAA==", "devOptional": true }, "@prisma/engines-version": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-fsQlbkhPJf08JOzKoyoD9atdUijuGBekwoOPZC3YOygXEml1MTtgXVpnUNchQlRSY82OQ6pSGQ9PxUe4arcSLQ==" + "version": "4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944.tgz", + "integrity": "sha512-sVOig4tjGxxlYaFcXgE71f/rtFhzyYrfyfNFUsxCIEJyVKU9rdOWIlIwQ2NQ7PntvGnn+x0XuFo4OC1jvPJKzg==" }, "@radix-ui/react-compose-refs": { "version": "1.0.0", @@ -12785,12 +12760,6 @@ "@types/ms": "*" } }, - "@types/ejs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz", - "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", - "dev": true - }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -12856,9 +12825,9 @@ } }, "@types/lodash": { - "version": "4.14.194", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", - "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", + "version": "4.14.195", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", + "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "dev": true }, "@types/lru-cache": { @@ -12922,9 +12891,9 @@ } }, "@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==" + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==" }, "@types/node-fetch": { "version": "2.6.3", @@ -12990,9 +12959,9 @@ "dev": true }, "@types/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", - "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.8.tgz", + "integrity": "sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==", "dev": true, "requires": { "@types/prop-types": "*", @@ -13001,9 +12970,9 @@ } }, "@types/react-dom": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz", - "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", "dev": true, "requires": { "@types/react": "*" @@ -13206,10 +13175,9 @@ } }, "@vercel/analytics": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.0.0.tgz", - "integrity": "sha512-RQmj7pv82JwGDHrnKeRc6TtSw2U7rWNubc2IH0ernTzWTj02yr9zvIYiYJeztsBzrJtWv7m8Nz6vxxb+cdEtJw==", - "requires": {} + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.0.1.tgz", + "integrity": "sha512-Ux0c9qUfkcPqng3vrR0GTrlQdqNJ2JREn/2ydrVuKwM3RtMfF2mWX31Ijqo1opSjNAq6rK76PwtANw6kl6TAow==" }, "@vercel/fetch": { "version": "6.2.0", @@ -13565,6 +13533,7 @@ "version": "10.4.14", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, "requires": { "browserslist": "^4.21.5", "caniuse-lite": "^1.0.30001464", @@ -13703,6 +13672,7 @@ "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001449", "electron-to-chromium": "^1.4.284", @@ -13924,9 +13894,9 @@ } }, "cloudinary": { - "version": "1.36.4", - "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.36.4.tgz", - "integrity": "sha512-F/90SVQdUbbEipCS4jTRvUt1lzJ7tcbu7n5zPTtXq83Qj7y9AazLZmU5BdWTQLjPJ82Cq/nr67GCnWDxWATWxg==", + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.37.0.tgz", + "integrity": "sha512-hCAb3kU2nqjaHxDHxh+bi691A6LEuF68A2jHvYR5wDhDxx5qNRJLYqABbmxP6TQJriJd0Tq309fZvzBXkTW6sw==", "requires": { "cloudinary-core": "2.13.0", "core-js": "3.30.1", @@ -13941,15 +13911,6 @@ "integrity": "sha512-Nt0Q5I2FtenmJghtC4YZ3MZZbGg1wLm84SsxcuVwZ83OyJqG9CNIGp86CiI6iDv3QobaqBUpOT7vg+HqY5HxEA==", "requires": {} }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -13963,20 +13924,16 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, "colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -14147,13 +14104,13 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "daisyui": { - "version": "2.51.6", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.51.6.tgz", - "integrity": "sha512-JRqOKayuFCmWe4X4k6Qvx1y7V/VNao8U5eTSOhusOKIzCsYqf56+TCSe4d7zmqGE0V6JiLDYAT8JeoWUeRKFCw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.0.0.tgz", + "integrity": "sha512-EuNK9JQd5yrPLDynAPQkG/29vjZXFWhBK4HXvM83d9oJU0EmF35UNLLs0cslBFfLK4b+bOuhgoYPJ4BjytOxNQ==", "requires": { - "color": "^4.2", - "css-selector-tokenizer": "^0.8.0", - "postcss-js": "^4.0.0", + "colord": "^2.9", + "css-selector-tokenizer": "^0.8", + "postcss-js": "^4", "tailwindcss": "^3" } }, @@ -14538,9 +14495,9 @@ } }, "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==" }, "dotenv-cli": { "version": "7.2.1", @@ -14664,7 +14621,8 @@ "electron-to-chromium": { "version": "1.4.380", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz", - "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==" + "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==", + "dev": true }, "emoji-regex": { "version": "9.2.2", @@ -14825,7 +14783,8 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", @@ -14894,15 +14853,15 @@ } }, "eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", + "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.41.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -14913,8 +14872,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -14922,13 +14881,12 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -14983,12 +14941,12 @@ } }, "eslint-config-next": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.3.4.tgz", - "integrity": "sha512-TknEcP+EdTqLvJ2zMY1KnWqcx8ZHl1C2Tjjbq3qmtWcHRU5oxe1PAsz3vrKG3NOzonSaPcB2SpCSfYqcgj6nfA==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.4.tgz", + "integrity": "sha512-z/PMbm6L0iC/fwISULxe8IVy4DtNqZk2wQY711o35klenq70O6ns82A8yuMVCFjHC0DIyB2lyugesRtuk9u8dQ==", "dev": true, "requires": { - "@next/eslint-plugin-next": "13.3.4", + "@next/eslint-plugin-next": "13.4.4", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.42.0", "eslint-import-resolver-node": "^0.3.6", @@ -15245,20 +15203,20 @@ } }, "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true }, "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -15502,7 +15460,8 @@ "fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true }, "fs-extra": { "version": "8.1.0", @@ -15813,6 +15772,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "peer": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "grid-index": { @@ -16509,12 +16475,6 @@ } } }, - "js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -16634,9 +16594,9 @@ } }, "kdbush": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", - "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" }, "keyv": { "version": "4.5.2", @@ -16780,9 +16740,9 @@ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" }, "mapbox-gl": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.14.1.tgz", - "integrity": "sha512-KfHYcjzJeEF1UXZQin3vSdyIXoTBBdpNesTMmyzP9Dv8wRg8DnRu078Vr/CJ2A6Xocsvh9UAqTWYtHlrc20nwA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.15.0.tgz", + "integrity": "sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==", "requires": { "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", @@ -16797,12 +16757,13 @@ "geojson-vt": "^3.2.1", "gl-matrix": "^3.4.3", "grid-index": "^1.1.0", + "kdbush": "^4.0.1", "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^2.0.0", "quickselect": "^2.0.0", "rw": "^1.3.3", - "supercluster": "^7.1.5", + "supercluster": "^8.0.0", "tinyqueue": "^2.0.3", "vt-pbf": "^3.1.3" } @@ -17289,25 +17250,26 @@ "optional": true }, "next": { - "version": "13.3.4", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.4.tgz", - "integrity": "sha512-sod7HeokBSvH5QV0KB+pXeLfcXUlLrGnVUXxHpmhilQ+nQYT3Im2O8DswD5e4uqbR8Pvdu9pcWgb1CbXZQZlmQ==", + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.4.tgz", + "integrity": "sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==", "requires": { - "@next/env": "13.3.4", - "@next/swc-darwin-arm64": "13.3.4", - "@next/swc-darwin-x64": "13.3.4", - "@next/swc-linux-arm64-gnu": "13.3.4", - "@next/swc-linux-arm64-musl": "13.3.4", - "@next/swc-linux-x64-gnu": "13.3.4", - "@next/swc-linux-x64-musl": "13.3.4", - "@next/swc-win32-arm64-msvc": "13.3.4", - "@next/swc-win32-ia32-msvc": "13.3.4", - "@next/swc-win32-x64-msvc": "13.3.4", + "@next/env": "13.4.4", + "@next/swc-darwin-arm64": "13.4.4", + "@next/swc-darwin-x64": "13.4.4", + "@next/swc-linux-arm64-gnu": "13.4.4", + "@next/swc-linux-arm64-musl": "13.4.4", + "@next/swc-linux-x64-gnu": "13.4.4", + "@next/swc-linux-x64-musl": "13.4.4", + "@next/swc-win32-arm64-msvc": "13.4.4", + "@next/swc-win32-ia32-msvc": "13.4.4", + "@next/swc-win32-x64-msvc": "13.4.4", "@swc/helpers": "0.5.1", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.14", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.1", + "zod": "3.21.4" }, "dependencies": { "postcss": { @@ -17346,7 +17308,8 @@ "node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true }, "nopt": { "version": "5.0.0", @@ -17382,7 +17345,8 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true }, "normalize-url": { "version": "6.1.0", @@ -17764,9 +17728,9 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pino": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.12.0.tgz", - "integrity": "sha512-qHiXP7x9hFnJb0EnrLzD4onHj82Vh91lEtx6UiPT2eNoHD7lwi50CUIz+s0Z7YXgtMc7IIjss4yIIxZu6T1Tdg==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.14.1.tgz", + "integrity": "sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==", "requires": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", @@ -17866,9 +17830,9 @@ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" }, "postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", "requires": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -17970,9 +17934,9 @@ } }, "prettier-plugin-tailwindcss": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.8.tgz", - "integrity": "sha512-KgPcEnJeIijlMjsA6WwYgRs5rh3/q76oInqtMXBA/EMcamrcYJpyhtRhyX1ayT9hnHlHTuO8sIifHF10WuSDKg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.3.0.tgz", + "integrity": "sha512-009/Xqdy7UmkcTBpwlq7jsViDqXAYSOMLDrHAdTMlVZOrKfM2o9Ci7EMWTMZ7SkKBFTG04UM9F9iM2+4i6boDA==", "dev": true, "requires": {} }, @@ -17992,12 +17956,12 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, "prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.13.0.tgz", - "integrity": "sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.15.0.tgz", + "integrity": "sha512-iKZZpobPl48gTcSZVawLMQ3lEy6BnXwtoMj7hluoGFYu2kQ6F9LBuBrUyF95zRVnNo8/3KzLXJXJ5TEnLSJFiA==", "devOptional": true, "requires": { - "@prisma/engines": "4.13.0" + "@prisma/engines": "4.15.0" } }, "process": { @@ -18254,9 +18218,9 @@ } }, "react-hook-form": { - "version": "7.43.9", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.43.9.tgz", - "integrity": "sha512-AUDN3Pz2NSeoxQ7Hs6OhQhDr6gtF9YRuutGDwPQqhSUAHJSgGl2VeY3qN19MG0SucpjgDiuMJ4iC5T5uB+eaNQ==", + "version": "7.44.3", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.44.3.tgz", + "integrity": "sha512-/tHId6p2ViAka1wECMw8FEPn/oz/w226zehHrJyQ1oIzCBNMIJCaj6ZkQcv+MjDxYh9MWR7RQic7Qqwe4a5nkw==", "requires": {} }, "react-hot-toast": { @@ -18268,15 +18232,15 @@ } }, "react-icons": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.8.0.tgz", - "integrity": "sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.9.0.tgz", + "integrity": "sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==", "requires": {} }, "react-intersection-observer": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.4.3.tgz", - "integrity": "sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.4.4.tgz", + "integrity": "sha512-KQr8ezJscRSQZR0/TjogG4mZttCzdPZj8fhDzAK+xrPYOVvFjabRNy+4EY3UhS3fJaJyIedGjA8y4yKX+nc08w==", "requires": {} }, "react-is": { @@ -18285,9 +18249,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-map-gl": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.0.23.tgz", - "integrity": "sha512-874jEtdS/fB2R4jSJKud9va0H0GlxhtiSFuUMATiniQ7A2lQnZLkZIPEWwIPkMmNZDXNlTAkxWEdSHzsqADVAw==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/react-map-gl/-/react-map-gl-7.0.25.tgz", + "integrity": "sha512-8aZfbDKxVcJnmTEC1eQ00VnTOu722i5wqnx+lV8VHN37ZvWEfMgb84EQ2kW6w/Q3zq6oZqP4helF7u4ydPFLtA==", "requires": { "@types/mapbox-gl": "^2.6.0" } @@ -18746,21 +18710,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, "sirv": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", @@ -19077,11 +19026,11 @@ } }, "supercluster": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", - "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", "requires": { - "kdbush": "^3.0.0" + "kdbush": "^4.0.2" } }, "supports-color": { @@ -19496,9 +19445,9 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "devOptional": true }, "unbox-primitive": { @@ -19599,6 +19548,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" diff --git a/package.json b/package.json index 91d1918..143bac4 100644 --- a/package.json +++ b/package.json @@ -13,41 +13,41 @@ }, "dependencies": { "@hapi/iron": "^7.0.1", - "@headlessui/react": "^1.7.14", + "@headlessui/react": "^1.7.15", "@headlessui/tailwindcss": "^0.1.3", "@hookform/resolvers": "^3.1.0", "@mapbox/mapbox-sdk": "^0.15.1", - "@next/bundle-analyzer": "^13.4.3", - "@prisma/client": "^4.13.0", + "@next/bundle-analyzer": "^13.4.4", + "@prisma/client": "^4.15.0", "@react-email/components": "^0.0.6", "@react-email/render": "^0.0.7", "@react-email/tailwind": "^0.0.8", - "@vercel/analytics": "^1.0.0", + "@vercel/analytics": "^1.0.1", "argon2": "^0.30.3", - "cloudinary": "^1.36.4", + "cloudinary": "^1.37.0", "cookie": "^0.5.0", "date-fns": "^2.30.0", - "dotenv": "^16.0.3", + "dotenv": "^16.1.3", "jsonwebtoken": "^9.0.0", "lodash": "^4.17.21", - "mapbox-gl": "^2.14.1", + "mapbox-gl": "^2.15.0", "multer": "^1.4.5-lts.1", "multer-storage-cloudinary": "^4.0.0", - "next": "^13.3.4", + "next": "^13.4.4", "next-connect": "^1.0.0-next.3", "passport": "^0.6.0", "passport-local": "^1.0.0", - "pino": "^8.12.0", + "pino": "^8.14.1", "pino-pretty": "^10.0.0", "react": "^18.2.0", "react-daisyui": "^3.1.2", "react-dom": "^18.2.0", "react-email": "^1.9.3", - "react-hook-form": "^7.43.9", + "react-hook-form": "^7.44.3", "react-hot-toast": "^2.4.1", - "react-icons": "^4.8.0", - "react-intersection-observer": "^9.4.3", - "react-map-gl": "^7.0.23", + "react-icons": "^4.9.0", + "react-intersection-observer": "^9.4.4", + "react-map-gl": "^7.0.25", "react-responsive-carousel": "^3.2.23", "sparkpost": "^2.1.4", "swr": "^2.1.5", @@ -55,37 +55,37 @@ "zod": "^3.21.4" }, "devDependencies": { - "@faker-js/faker": "^7.6.0", + "@faker-js/faker": "^8.0.2", "@types/cookie": "^0.5.1", "@types/jsonwebtoken": "^9.0.2", - "@types/lodash": "^4.14.194", + "@types/lodash": "^4.14.195", "@types/mapbox__mapbox-sdk": "^0.13.4", "@types/multer": "^1.4.7", - "@types/node": "^18.16.3", + "@types/node": "^20.2.5", "@types/passport-local": "^1.0.35", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.2.1", + "@types/react": "^18.2.8", + "@types/react-dom": "^18.2.4", "@types/sparkpost": "^2.1.5", "@vercel/fetch": "^6.2.0", "autoprefixer": "^10.4.14", - "daisyui": "^2.51.6", + "daisyui": "^3.0.0", "dotenv-cli": "^7.2.1", - "eslint": "^8.39.0", + "eslint": "^8.41.0", "eslint-config-airbnb-base": "15.0.0", "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-next": "^13.3.4", + "eslint-config-next": "^13.4.4", "eslint-config-prettier": "^8.8.0", "eslint-plugin-react": "^7.32.2", - "postcss": "^8.4.23", + "postcss": "^8.4.24", "prettier": "^2.8.8", "prettier-plugin-jsdoc": "^0.4.2", - "prettier-plugin-tailwindcss": "^0.2.8", + "prettier-plugin-tailwindcss": "^0.3.0", "onchange": "^7.1.0", - "prisma": "^4.13.0", + "prisma": "^4.15.0", "tailwindcss": "^3.3.2", "tailwindcss-animate": "^1.0.5", "ts-node": "^10.9.1", - "typescript": "^5.0.4" + "typescript": "^5.1.3" }, "prisma": { "schema": "./src/prisma/schema.prisma", diff --git a/src/components/Account/AccountInfo.tsx b/src/components/Account/AccountInfo.tsx index 4f4d347..a59b52c 100644 --- a/src/components/Account/AccountInfo.tsx +++ b/src/components/Account/AccountInfo.tsx @@ -3,19 +3,25 @@ import validateUsernameRequest from '@/requests/validateUsernameRequest'; import { BaseCreateUserSchema } from '@/services/User/schema/CreateUserValidationSchemas'; import { Switch } from '@headlessui/react'; import { zodResolver } from '@hookform/resolvers/zod'; -import { FC, useContext, useState } from 'react'; +import { Dispatch, FC, useContext } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; import UserContext from '@/contexts/UserContext'; import sendEditUserRequest from '@/requests/User/sendEditUserRequest'; import createErrorToast from '@/util/createErrorToast'; import { toast } from 'react-hot-toast'; +import { AccountPageAction, AccountPageState } from '@/reducers/accountPageReducer'; import FormError from '../ui/forms/FormError'; import FormInfo from '../ui/forms/FormInfo'; import FormLabel from '../ui/forms/FormLabel'; import FormTextInput from '../ui/forms/FormTextInput'; -const AccountInfo: FC = () => { +interface AccountInfoProps { + pageState: AccountPageState; + dispatch: Dispatch; +} + +const AccountInfo: FC = ({ pageState, dispatch }) => { const { user, mutate } = useContext(UserContext); const EditUserSchema = BaseCreateUserSchema.pick({ @@ -47,18 +53,16 @@ const AccountInfo: FC = () => { ), }); - const [editToggled, setEditToggled] = useState(false); - const onSubmit = async (data: z.infer) => { const loadingToast = toast.loading('Submitting edits...'); try { await sendEditUserRequest({ user: user!, data }); toast.remove(loadingToast); toast.success('Edits submitted successfully.'); - setEditToggled(false); + dispatch({ type: 'CLOSE_ALL' }); await mutate!(); } catch (error) { - setEditToggled(false); + dispatch({ type: 'CLOSE_ALL' }); toast.remove(loadingToast); createErrorToast(error); await mutate!(); @@ -82,9 +86,9 @@ const AccountInfo: FC = () => { { - setEditToggled((val) => !val); + dispatch({ type: 'TOGGLE_ACCOUNT_INFO_VISIBILITY' }); await mutate!(); reset({ username: user!.username, @@ -96,7 +100,7 @@ const AccountInfo: FC = () => { /> - {editToggled && ( + {pageState.accountInfoOpen && (
{ { { { { diff --git a/src/components/Account/DeleteAccount.tsx b/src/components/Account/DeleteAccount.tsx new file mode 100644 index 0000000..73af80c --- /dev/null +++ b/src/components/Account/DeleteAccount.tsx @@ -0,0 +1,76 @@ +import { AccountPageState, AccountPageAction } from '@/reducers/accountPageReducer'; +import { Switch } from '@headlessui/react'; +import { useRouter } from 'next/router'; +import { Dispatch, FunctionComponent, useRef } from 'react'; + +interface DeleteAccountProps { + pageState: AccountPageState; + dispatch: Dispatch; +} +const DeleteAccount: FunctionComponent = ({ + dispatch, + pageState, +}) => { + const deleteRef = useRef(null); + const router = useRouter(); + + return ( +
+
+
+
+

Delete Your Account

+

Want to leave? Delete your account here.

+
+
+ { + dispatch({ type: 'TOGGLE_DELETE_ACCOUNT_VISIBILITY' }); + }} + /> +
+
+ {pageState.deleteAccountOpen && ( + <> +
+ + +
+

{`You're about to delete your account.`}

+

This action is permanent and cannot be reversed.

+
+ + +
+
+
+
+ + )} +
+
+ ); +}; + +export default DeleteAccount; diff --git a/src/components/Account/Security.tsx b/src/components/Account/Security.tsx index 739c99b..5a03485 100644 --- a/src/components/Account/Security.tsx +++ b/src/components/Account/Security.tsx @@ -1,17 +1,24 @@ import { Switch } from '@headlessui/react'; -import { FunctionComponent, useState } from 'react'; +import { Dispatch, FunctionComponent } from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { UpdatePasswordSchema } from '@/services/User/schema/CreateUserValidationSchemas'; import sendUpdatePasswordRequest from '@/requests/User/sendUpdatePasswordRequest'; +import { AccountPageState, AccountPageAction } from '@/reducers/accountPageReducer'; +import toast from 'react-hot-toast'; +import createErrorToast from '@/util/createErrorToast'; import FormError from '../ui/forms/FormError'; import FormInfo from '../ui/forms/FormInfo'; import FormLabel from '../ui/forms/FormLabel'; import FormTextInput from '../ui/forms/FormTextInput'; -const Security: FunctionComponent = () => { - const [editToggled, setEditToggled] = useState(false); +interface SecurityProps { + pageState: AccountPageState; + dispatch: Dispatch; +} + +const Security: FunctionComponent = ({ dispatch, pageState }) => { const { register, handleSubmit, formState, reset } = useForm< z.infer >({ @@ -19,9 +26,16 @@ const Security: FunctionComponent = () => { }); const onSubmit: SubmitHandler> = async (data) => { - await sendUpdatePasswordRequest(data); - setEditToggled(value => !value) - reset(); + const loadingToast = toast.loading('Changing password.'); + try { + await sendUpdatePasswordRequest(data); + toast.remove(loadingToast); + toast.success('Password changed successfully.'); + dispatch({ type: 'CLOSE_ALL' }); + } catch (error) { + dispatch({ type: 'CLOSE_ALL' }); + createErrorToast(error); + } }; return ( @@ -36,15 +50,15 @@ const Security: FunctionComponent = () => { { - setEditToggled((val) => !val); + dispatch({ type: 'TOGGLE_SECURITY_VISIBILITY' }); reset(); }} /> - {editToggled && ( + {pageState.securityOpen && ( New Password @@ -52,7 +66,7 @@ const Security: FunctionComponent = () => { { { - - - - - ); -}; - -export default BeerIndexPaginationBar; diff --git a/src/components/ui/CustomToast.tsx b/src/components/ui/CustomToast.tsx index d6b1281..1ad6822 100644 --- a/src/components/ui/CustomToast.tsx +++ b/src/components/ui/CustomToast.tsx @@ -27,9 +27,9 @@ const CustomToast: FC<{ children: ReactNode }> = ({ children }) => { const alertType = toastToClassName(t.type); return (
-

{resolveValue(t.message, t)}

+

{resolveValue(t.message, t)}

{t.type !== 'loading' && (
diff --git a/src/pages/account/index.tsx b/src/pages/account/index.tsx index 61c56b8..e5995fe 100644 --- a/src/pages/account/index.tsx +++ b/src/pages/account/index.tsx @@ -4,12 +4,21 @@ import { NextPage } from 'next'; import { Tab } from '@headlessui/react'; import Head from 'next/head'; import AccountInfo from '@/components/Account/AccountInfo'; -import { useContext } from 'react'; +import { useContext, useReducer } from 'react'; import UserContext from '@/contexts/UserContext'; import Security from '@/components/Account/Security'; +import DeleteAccount from '@/components/Account/DeleteAccount'; +import accountPageReducer from '@/reducers/accountPageReducer'; const AccountPage: NextPage = () => { const { user } = useContext(UserContext); + + const [pageState, dispatch] = useReducer(accountPageReducer, { + accountInfoOpen: false, + securityOpen: false, + deleteAccountOpen: false, + }); + if (!user) return null; return ( @@ -46,8 +55,9 @@ const AccountPage: NextPage = () => { - - + + + Your posts! diff --git a/src/prisma/migrations/20230603010553_/migration.sql b/src/prisma/migrations/20230603010553_/migration.sql new file mode 100644 index 0000000..a26cbfe --- /dev/null +++ b/src/prisma/migrations/20230603010553_/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "Location" ADD COLUMN "createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "updatedAt" TIMESTAMPTZ(3); diff --git a/src/prisma/schema.prisma b/src/prisma/schema.prisma index 7fdb15e..54302dc 100644 --- a/src/prisma/schema.prisma +++ b/src/prisma/schema.prisma @@ -106,6 +106,8 @@ model Location { postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade) postedById String BreweryPost BreweryPost? + createdAt DateTime @default(now()) @db.Timestamptz(3) + updatedAt DateTime? @updatedAt @db.Timestamptz(3) } model BreweryPost { diff --git a/src/prisma/seed/create/createNewBeerImages.ts b/src/prisma/seed/create/createNewBeerImages.ts index 3d22020..3c3947f 100644 --- a/src/prisma/seed/create/createNewBeerImages.ts +++ b/src/prisma/seed/create/createNewBeerImages.ts @@ -22,7 +22,6 @@ const createNewBeerImages = async ({ joinData: { beerPosts, users }, }: CreateNewBeerImagesArgs) => { const prisma = DBClient.instance; - const createdAt = faker.date.past(1); const beerImageData: BeerImageData[] = []; @@ -33,6 +32,7 @@ const createNewBeerImages = async ({ const caption = faker.lorem.sentence(); const alt = faker.lorem.sentence(); const path = imageUrls[Math.floor(Math.random() * imageUrls.length)]; + const createdAt = faker.date.past({ years: 1 }); beerImageData.push({ path, diff --git a/src/prisma/seed/create/createNewBeerPostComments.ts b/src/prisma/seed/create/createNewBeerPostComments.ts index 040c36a..94bec0f 100644 --- a/src/prisma/seed/create/createNewBeerPostComments.ts +++ b/src/prisma/seed/create/createNewBeerPostComments.ts @@ -34,7 +34,7 @@ const createNewBeerComments = async ({ const content = faker.lorem.lines(5); const user = users[Math.floor(Math.random() * users.length)]; const beerPost = beerPosts[Math.floor(Math.random() * beerPosts.length)]; - const createdAt = faker.date.past(1); + const createdAt = faker.date.past({ years: 1 }); const rating = Math.floor(Math.random() * 5) + 1; beerCommentData.push({ diff --git a/src/prisma/seed/create/createNewBeerPostLikes.ts b/src/prisma/seed/create/createNewBeerPostLikes.ts index ca7798d..d53d479 100644 --- a/src/prisma/seed/create/createNewBeerPostLikes.ts +++ b/src/prisma/seed/create/createNewBeerPostLikes.ts @@ -1,10 +1,13 @@ import type { BeerPost, User } from '@prisma/client'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { faker } from '@faker-js/faker'; import DBClient from '../../DBClient'; interface BeerPostLikeData { beerPostId: string; likedById: string; + createdAt: Date; } const createNewBeerPostLikes = async ({ @@ -19,10 +22,11 @@ const createNewBeerPostLikes = async ({ for (let i = 0; i < numberOfLikes; i++) { const beerPost = beerPosts[Math.floor(Math.random() * beerPosts.length)]; const user = users[Math.floor(Math.random() * users.length)]; - + const createdAt = faker.date.past({ years: 1 }); beerPostLikeData.push({ beerPostId: beerPost.id, likedById: user.id, + createdAt, }); } diff --git a/src/prisma/seed/create/createNewBeerPosts.ts b/src/prisma/seed/create/createNewBeerPosts.ts index e36b35f..408f74b 100644 --- a/src/prisma/seed/create/createNewBeerPosts.ts +++ b/src/prisma/seed/create/createNewBeerPosts.ts @@ -36,7 +36,7 @@ const createNewBeerPosts = async ({ const user = users[Math.floor(Math.random() * users.length)]; const beerType = beerTypes[Math.floor(Math.random() * beerTypes.length)]; const breweryPost = breweryPosts[Math.floor(Math.random() * breweryPosts.length)]; - const createdAt = faker.date.past(1); + const createdAt = faker.date.past({ years: 1 }); const abv = Math.floor(Math.random() * (12 - 4) + 4); const ibu = Math.floor(Math.random() * (60 - 10) + 10); diff --git a/src/prisma/seed/create/createNewBeerTypes.ts b/src/prisma/seed/create/createNewBeerTypes.ts index ca71136..8aa57eb 100644 --- a/src/prisma/seed/create/createNewBeerTypes.ts +++ b/src/prisma/seed/create/createNewBeerTypes.ts @@ -45,7 +45,7 @@ const createNewBeerTypes = async ({ joinData }: CreateNewBeerTypesArgs) => { types.forEach((type) => { const user = users[Math.floor(Math.random() * users.length)]; - const createdAt = faker.date.past(1); + const createdAt = faker.date.past({ years: 1 }); beerTypeData.push({ name: type, diff --git a/src/prisma/seed/create/createNewBreweryImages.ts b/src/prisma/seed/create/createNewBreweryImages.ts index abda436..53bffc0 100644 --- a/src/prisma/seed/create/createNewBreweryImages.ts +++ b/src/prisma/seed/create/createNewBreweryImages.ts @@ -26,7 +26,7 @@ const createNewBreweryImages = async ({ joinData: { breweryPosts, users }, }: CreateBreweryImagesArgs) => { const prisma = DBClient.instance; - const createdAt = faker.date.past(1); + const createdAt = faker.date.past({ years: 1 }); const breweryImageData: BreweryImageData[] = []; // eslint-disable-next-line no-plusplus diff --git a/src/prisma/seed/create/createNewBreweryPostComments.ts b/src/prisma/seed/create/createNewBreweryPostComments.ts index be49ae5..7e5e227 100644 --- a/src/prisma/seed/create/createNewBreweryPostComments.ts +++ b/src/prisma/seed/create/createNewBreweryPostComments.ts @@ -26,13 +26,14 @@ const createNewBreweryPostComments = async ({ const { breweryPosts, users } = joinData; const prisma = DBClient.instance; const breweryPostCommentData: BreweryPostCommentData[] = []; - const createdAt = faker.date.past(1); - const rating = Math.floor(Math.random() * 5) + 1; + // eslint-disable-next-line no-plusplus for (let i = 0; i < numberOfComments; i++) { const content = faker.lorem.lines(3).replace(/\n/g, ' '); const user = users[Math.floor(Math.random() * users.length)]; const breweryPost = breweryPosts[Math.floor(Math.random() * breweryPosts.length)]; + const createdAt = faker.date.past({ years: 1 }); + const rating = Math.floor(Math.random() * 5) + 1; breweryPostCommentData.push({ content, diff --git a/src/prisma/seed/create/createNewBreweryPostLikes.ts b/src/prisma/seed/create/createNewBreweryPostLikes.ts index a5cf993..657b5f5 100644 --- a/src/prisma/seed/create/createNewBreweryPostLikes.ts +++ b/src/prisma/seed/create/createNewBreweryPostLikes.ts @@ -1,9 +1,12 @@ import type { BreweryPost, User } from '@prisma/client'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { faker } from '@faker-js/faker'; import DBClient from '../../DBClient'; interface BreweryPostLikeData { breweryPostId: string; likedById: string; + createdAt: Date; } const createNewBreweryPostLikes = async ({ @@ -21,10 +24,12 @@ const createNewBreweryPostLikes = async ({ for (let i = 0; i < numberOfLikes; i++) { const breweryPost = breweryPosts[Math.floor(Math.random() * breweryPosts.length)]; const user = users[Math.floor(Math.random() * users.length)]; + const createdAt = faker.date.past({ years: 1 }); breweryPostLikeData.push({ breweryPostId: breweryPost.id, likedById: user.id, + createdAt, }); } await DBClient.instance.breweryPostLike.createMany({ diff --git a/src/prisma/seed/create/createNewBreweryPosts.ts b/src/prisma/seed/create/createNewBreweryPosts.ts index 9c124bc..7e38426 100644 --- a/src/prisma/seed/create/createNewBreweryPosts.ts +++ b/src/prisma/seed/create/createNewBreweryPosts.ts @@ -36,8 +36,8 @@ const createNewBreweryPosts = async ({ locations.splice(locationIndex, 1); // Remove the location from the array const description = faker.lorem.lines(20).replace(/(\r\n|\n|\r)/gm, ' '); const user = users[Math.floor(Math.random() * users.length)]; - const createdAt = faker.date.past(1); - const dateEstablished = faker.date.past(40); + const createdAt = faker.date.past({ years: 1 }); + const dateEstablished = faker.date.past({ years: 40 }); breweryData.push({ name, diff --git a/src/prisma/seed/create/createNewLocations.ts b/src/prisma/seed/create/createNewLocations.ts index 30010ef..1b09815 100644 --- a/src/prisma/seed/create/createNewLocations.ts +++ b/src/prisma/seed/create/createNewLocations.ts @@ -1,9 +1,8 @@ /* eslint-disable import/no-extraneous-dependencies */ import { faker } from '@faker-js/faker'; import { User } from '@prisma/client'; -import { GeocodeFeature } from '@mapbox/mapbox-sdk/services/geocoding'; import DBClient from '../../DBClient'; -import geocode from '../../../config/mapbox/geocoder'; +import canadianCities from '../util/canadianCities'; interface CreateNewLocationsArgs { numberOfLocations: number; @@ -19,6 +18,7 @@ interface LocationData { coordinates: number[]; address: string; postedById: string; + createdAt: Date; } const createNewLocations = async ({ @@ -27,42 +27,25 @@ const createNewLocations = async ({ }: CreateNewLocationsArgs) => { const prisma = DBClient.instance; - const locationNames: string[] = []; + const locationData: LocationData[] = []; // eslint-disable-next-line no-plusplus for (let i = 0; i < numberOfLocations; i++) { - locationNames.push(faker.address.cityName()); - } - - const geocodePromises: Promise[] = []; - - locationNames.forEach((locationName) => { - geocodePromises.push(geocode(locationName)); - }); - - const geocodedLocations = await Promise.all(geocodePromises); - - const locationData: LocationData[] = []; - - geocodedLocations.forEach((geodata) => { + const randomIndex = Math.floor(Math.random() * canadianCities.length); + const randomCity = canadianCities[randomIndex]; const randomUser = joinData.users[Math.floor(Math.random() * joinData.users.length)]; - - const city = geodata.text; - const postedById = randomUser.id; - const stateOrProvince = geodata.context?.find((c) => c.id.startsWith('region'))?.text; - const country = geodata.context?.find((c) => c.id.startsWith('country'))?.text; - const coordinates = geodata.center; - const address = geodata.place_name; + canadianCities.splice(randomIndex, 1); locationData.push({ - city, - stateOrProvince, - country, - coordinates, - address, - postedById, + address: randomCity.city, + city: randomCity.city, + coordinates: [randomCity.longitude, randomCity.latitude], + createdAt: faker.date.past({ years: 1 }), + postedById: randomUser.id, + stateOrProvince: randomCity.province, + country: 'Canada', }); - }); + } await prisma.location.createMany({ data: locationData, skipDuplicates: true }); diff --git a/src/prisma/seed/create/createNewUsers.ts b/src/prisma/seed/create/createNewUsers.ts index a8a6c54..3fec708 100644 --- a/src/prisma/seed/create/createNewUsers.ts +++ b/src/prisma/seed/create/createNewUsers.ts @@ -31,11 +31,11 @@ const createNewUsers = async ({ numberOfUsers }: CreateNewUsersArgs) => { // eslint-disable-next-line no-plusplus for (let i = 0; i < numberOfUsers; i++) { const randomValue = crypto.randomBytes(1).toString('hex'); - const firstName = faker.name.firstName(); - const lastName = faker.name.lastName(); + const firstName = faker.person.firstName(); + const lastName = faker.person.lastName(); const username = `${firstName[0]}.${lastName}.${randomValue}`.toLowerCase(); const email = faker.internet - .email(firstName, randomValue, 'example.com') + .email({ firstName, lastName, provider: 'example.com' }) .toLowerCase(); const userAvailable = @@ -51,7 +51,7 @@ const createNewUsers = async ({ numberOfUsers }: CreateNewUsersArgs) => { takenEmails.push(email); const dateOfBirth = faker.date.birthdate({ mode: 'age', min: 19 }); - const createdAt = faker.date.past(1); + const createdAt = faker.date.past({ years: 4 }); const user = { firstName, diff --git a/src/prisma/seed/util/canadianCities.ts b/src/prisma/seed/util/canadianCities.ts new file mode 100755 index 0000000..12ca6c2 --- /dev/null +++ b/src/prisma/seed/util/canadianCities.ts @@ -0,0 +1,10425 @@ +export default [ + { + city: 'Toronto', + province: 'Ontario', + latitude: 43.7417, + longitude: -79.3733, + }, + { + city: 'Montréal', + province: 'Quebec', + latitude: 45.5089, + longitude: -73.5617, + }, + { + city: 'Vancouver', + province: 'British Columbia', + latitude: 49.25, + longitude: -123.1, + }, + { + city: 'Calgary', + province: 'Alberta', + latitude: 51.05, + longitude: -114.0667, + }, + { + city: 'Edmonton', + province: 'Alberta', + latitude: 53.5344, + longitude: -113.4903, + }, + { + city: 'Ottawa', + province: 'Ontario', + latitude: 45.4247, + longitude: -75.695, + }, + { + city: 'Mississauga', + province: 'Ontario', + latitude: 43.6, + longitude: -79.65, + }, + { + city: 'Winnipeg', + province: 'Manitoba', + latitude: 49.8844, + longitude: -97.1464, + }, + { + city: 'Quebec City', + province: 'Quebec', + latitude: 46.8139, + longitude: -71.2081, + }, + { + city: 'Hamilton', + province: 'Ontario', + latitude: 43.2567, + longitude: -79.8692, + }, + { + city: 'Brampton', + province: 'Ontario', + latitude: 43.6833, + longitude: -79.7667, + }, + { + city: 'Surrey', + province: 'British Columbia', + latitude: 49.19, + longitude: -122.8489, + }, + { + city: 'Kitchener', + province: 'Ontario', + latitude: 43.4186, + longitude: -80.4728, + }, + { + city: 'Laval', + province: 'Quebec', + latitude: 45.5833, + longitude: -73.75, + }, + { + city: 'Halifax', + province: 'Nova Scotia', + latitude: 44.6475, + longitude: -63.5906, + }, + { + city: 'London', + province: 'Ontario', + latitude: 42.9836, + longitude: -81.2497, + }, + { + city: 'Victoria', + province: 'British Columbia', + latitude: 48.4283, + longitude: -123.3647, + }, + { + city: 'Markham', + province: 'Ontario', + latitude: 43.8767, + longitude: -79.2633, + }, + { + city: 'St. Catharines', + province: 'Ontario', + latitude: 43.1833, + longitude: -79.2333, + }, + { + city: 'Niagara Falls', + province: 'Ontario', + latitude: 43.06, + longitude: -79.1067, + }, + { + city: 'Vaughan', + province: 'Ontario', + latitude: 43.8333, + longitude: -79.5, + }, + { + city: 'Gatineau', + province: 'Quebec', + latitude: 45.4833, + longitude: -75.65, + }, + { + city: 'Windsor', + province: 'Ontario', + latitude: 42.2833, + longitude: -83, + }, + { + city: 'Saskatoon', + province: 'Saskatchewan', + latitude: 52.1333, + longitude: -106.6833, + }, + { + city: 'Longueuil', + province: 'Quebec', + latitude: 45.5333, + longitude: -73.5167, + }, + { + city: 'Burnaby', + province: 'British Columbia', + latitude: 49.2667, + longitude: -122.9667, + }, + { + city: 'Regina', + province: 'Saskatchewan', + latitude: 50.4547, + longitude: -104.6067, + }, + { + city: 'Richmond', + province: 'British Columbia', + latitude: 49.1667, + longitude: -123.1333, + }, + { + city: 'Richmond Hill', + province: 'Ontario', + latitude: 43.8667, + longitude: -79.4333, + }, + { + city: 'Oakville', + province: 'Ontario', + latitude: 43.45, + longitude: -79.6833, + }, + { + city: 'Burlington', + province: 'Ontario', + latitude: 43.3167, + longitude: -79.8, + }, + { + city: 'Barrie', + province: 'Ontario', + latitude: 44.3711, + longitude: -79.6769, + }, + { + city: 'Oshawa', + province: 'Ontario', + latitude: 43.9, + longitude: -78.85, + }, + { + city: 'Sherbrooke', + province: 'Quebec', + latitude: 45.4, + longitude: -71.9, + }, + { + city: 'Saguenay', + province: 'Quebec', + latitude: 48.4167, + longitude: -71.0667, + }, + { + city: 'Lévis', + province: 'Quebec', + latitude: 46.8, + longitude: -71.1833, + }, + { + city: 'Kelowna', + province: 'British Columbia', + latitude: 49.8881, + longitude: -119.4956, + }, + { + city: 'Abbotsford', + province: 'British Columbia', + latitude: 49.05, + longitude: -122.3167, + }, + { + city: 'Coquitlam', + province: 'British Columbia', + latitude: 49.2839, + longitude: -122.7919, + }, + { + city: 'Trois-Rivières', + province: 'Quebec', + latitude: 46.35, + longitude: -72.55, + }, + { + city: 'Guelph', + province: 'Ontario', + latitude: 43.55, + longitude: -80.25, + }, + { + city: 'Cambridge', + province: 'Ontario', + latitude: 43.3972, + longitude: -80.3114, + }, + { + city: 'Whitby', + province: 'Ontario', + latitude: 43.8833, + longitude: -78.9417, + }, + { + city: 'Ajax', + province: 'Ontario', + latitude: 43.8583, + longitude: -79.0364, + }, + { + city: 'Langley', + province: 'British Columbia', + latitude: 49.1044, + longitude: -122.5827, + }, + { + city: 'Saanich', + province: 'British Columbia', + latitude: 48.484, + longitude: -123.381, + }, + { + city: 'Terrebonne', + province: 'Quebec', + latitude: 45.7, + longitude: -73.6333, + }, + { + city: 'Milton', + province: 'Ontario', + latitude: 43.5083, + longitude: -79.8833, + }, + { + city: "St. John's", + province: 'Newfoundland and Labrador', + latitude: 47.4817, + longitude: -52.7971, + }, + { + city: 'Moncton', + province: 'New Brunswick', + latitude: 46.1328, + longitude: -64.7714, + }, + { + city: 'Thunder Bay', + province: 'Ontario', + latitude: 48.3822, + longitude: -89.2461, + }, + { + city: 'Dieppe', + province: 'New Brunswick', + latitude: 46.0989, + longitude: -64.7242, + }, + { + city: 'Waterloo', + province: 'Ontario', + latitude: 43.4667, + longitude: -80.5167, + }, + { + city: 'Delta', + province: 'British Columbia', + latitude: 49.0847, + longitude: -123.0586, + }, + { + city: 'Chatham', + province: 'Ontario', + latitude: 42.4229, + longitude: -82.1324, + }, + { + city: 'Red Deer', + province: 'Alberta', + latitude: 52.2681, + longitude: -113.8111, + }, + { + city: 'Kamloops', + province: 'British Columbia', + latitude: 50.6761, + longitude: -120.3408, + }, + { + city: 'Brantford', + province: 'Ontario', + latitude: 43.1667, + longitude: -80.25, + }, + { + city: 'Cape Breton', + province: 'Nova Scotia', + latitude: 46.1389, + longitude: -60.1931, + }, + { + city: 'Lethbridge', + province: 'Alberta', + latitude: 49.6942, + longitude: -112.8328, + }, + { + city: 'Saint-Jean-sur-Richelieu', + province: 'Quebec', + latitude: 45.3167, + longitude: -73.2667, + }, + { + city: 'Clarington', + province: 'Ontario', + latitude: 43.935, + longitude: -78.6083, + }, + { + city: 'Pickering', + province: 'Ontario', + latitude: 43.8354, + longitude: -79.089, + }, + { + city: 'Nanaimo', + province: 'British Columbia', + latitude: 49.1642, + longitude: -123.9364, + }, + { + city: 'Sudbury', + province: 'Ontario', + latitude: 46.49, + longitude: -81.01, + }, + { + city: 'North Vancouver', + province: 'British Columbia', + latitude: 49.3641, + longitude: -123.0066, + }, + { + city: 'Brossard', + province: 'Quebec', + latitude: 45.4667, + longitude: -73.45, + }, + { + city: 'Repentigny', + province: 'Quebec', + latitude: 45.7333, + longitude: -73.4667, + }, + { + city: 'Newmarket', + province: 'Ontario', + latitude: 44.05, + longitude: -79.4667, + }, + { + city: 'Chilliwack', + province: 'British Columbia', + latitude: 49.1577, + longitude: -121.9509, + }, + { + city: 'White Rock', + province: 'British Columbia', + latitude: 49.025, + longitude: -122.8028, + }, + { + city: 'Maple Ridge', + province: 'British Columbia', + latitude: 49.2167, + longitude: -122.6, + }, + { + city: 'Peterborough', + province: 'Ontario', + latitude: 44.3, + longitude: -78.3167, + }, + { + city: 'Kawartha Lakes', + province: 'Ontario', + latitude: 44.35, + longitude: -78.75, + }, + { + city: 'Prince George', + province: 'British Columbia', + latitude: 53.9169, + longitude: -122.7494, + }, + { + city: 'Sault Ste. Marie', + province: 'Ontario', + latitude: 46.5333, + longitude: -84.35, + }, + { + city: 'Sarnia', + province: 'Ontario', + latitude: 42.9994, + longitude: -82.3089, + }, + { + city: 'Wood Buffalo', + province: 'Alberta', + latitude: 57.6042, + longitude: -111.3284, + }, + { + city: 'New Westminster', + province: 'British Columbia', + latitude: 49.2069, + longitude: -122.9111, + }, + { + city: 'Châteauguay', + province: 'Quebec', + latitude: 45.38, + longitude: -73.75, + }, + { + city: 'Saint-Jérôme', + province: 'Quebec', + latitude: 45.7833, + longitude: -74, + }, + { + city: 'Drummondville', + province: 'Quebec', + latitude: 45.8833, + longitude: -72.4833, + }, + { + city: 'Saint John', + province: 'New Brunswick', + latitude: 45.2806, + longitude: -66.0761, + }, + { + city: 'Caledon', + province: 'Ontario', + latitude: 43.8667, + longitude: -79.8667, + }, + { + city: 'St. Albert', + province: 'Alberta', + latitude: 53.6303, + longitude: -113.6258, + }, + { + city: 'Granby', + province: 'Quebec', + latitude: 45.4, + longitude: -72.7333, + }, + { + city: 'Medicine Hat', + province: 'Alberta', + latitude: 50.0417, + longitude: -110.6775, + }, + { + city: 'Grande Prairie', + province: 'Alberta', + latitude: 55.1708, + longitude: -118.7947, + }, + { + city: 'St. Thomas', + province: 'Ontario', + latitude: 42.775, + longitude: -81.1833, + }, + { + city: 'Airdrie', + province: 'Alberta', + latitude: 51.2917, + longitude: -114.0144, + }, + { + city: 'Halton Hills', + province: 'Ontario', + latitude: 43.63, + longitude: -79.95, + }, + { + city: 'Saint-Hyacinthe', + province: 'Quebec', + latitude: 45.6167, + longitude: -72.95, + }, + { + city: 'Lac-Brome', + province: 'Quebec', + latitude: 45.2167, + longitude: -72.5167, + }, + { + city: 'Port Coquitlam', + province: 'British Columbia', + latitude: 49.2625, + longitude: -122.7811, + }, + { + city: 'Fredericton', + province: 'New Brunswick', + latitude: 45.9636, + longitude: -66.6431, + }, + { + city: 'Blainville', + province: 'Quebec', + latitude: 45.67, + longitude: -73.88, + }, + { + city: 'Aurora', + province: 'Ontario', + latitude: 44, + longitude: -79.4667, + }, + { + city: 'Welland', + province: 'Ontario', + latitude: 42.9833, + longitude: -79.2333, + }, + { + city: 'North Bay', + province: 'Ontario', + latitude: 46.3, + longitude: -79.45, + }, + { + city: 'Beloeil', + province: 'Quebec', + latitude: 45.5667, + longitude: -73.2, + }, + { + city: 'Belleville', + province: 'Ontario', + latitude: 44.1667, + longitude: -77.3833, + }, + { + city: 'Mirabel', + province: 'Quebec', + latitude: 45.65, + longitude: -74.0833, + }, + { + city: 'Shawinigan', + province: 'Quebec', + latitude: 46.5667, + longitude: -72.75, + }, + { + city: 'Dollard-des-Ormeaux', + province: 'Quebec', + latitude: 45.4833, + longitude: -73.8167, + }, + { + city: 'Brandon', + province: 'Manitoba', + latitude: 49.8483, + longitude: -99.95, + }, + { + city: 'Rimouski', + province: 'Quebec', + latitude: 48.45, + longitude: -68.53, + }, + { + city: 'Cornwall', + province: 'Ontario', + latitude: 45.0275, + longitude: -74.74, + }, + { + city: 'Stouffville', + province: 'Ontario', + latitude: 43.9667, + longitude: -79.25, + }, + { + city: 'Georgina', + province: 'Ontario', + latitude: 44.3, + longitude: -79.4333, + }, + { + city: 'Victoriaville', + province: 'Quebec', + latitude: 46.05, + longitude: -71.9667, + }, + { + city: 'Vernon', + province: 'British Columbia', + latitude: 50.267, + longitude: -119.272, + }, + { + city: 'Duncan', + province: 'British Columbia', + latitude: 48.7787, + longitude: -123.7079, + }, + { + city: 'Saint-Eustache', + province: 'Quebec', + latitude: 45.57, + longitude: -73.9, + }, + { + city: 'Quinte West', + province: 'Ontario', + latitude: 44.1833, + longitude: -77.5667, + }, + { + city: 'Charlottetown', + province: 'Prince Edward Island', + latitude: 46.2403, + longitude: -63.1347, + }, + { + city: 'Mascouche', + province: 'Quebec', + latitude: 45.75, + longitude: -73.6, + }, + { + city: 'West Vancouver', + province: 'British Columbia', + latitude: 49.3667, + longitude: -123.1667, + }, + { + city: 'Salaberry-de-Valleyfield', + province: 'Quebec', + latitude: 45.25, + longitude: -74.13, + }, + { + city: 'Rouyn-Noranda', + province: 'Quebec', + latitude: 48.2333, + longitude: -79.0167, + }, + { + city: 'Timmins', + province: 'Ontario', + latitude: 48.4667, + longitude: -81.3333, + }, + { + city: 'Sorel-Tracy', + province: 'Quebec', + latitude: 46.0333, + longitude: -73.1167, + }, + { + city: 'New Tecumseth', + province: 'Ontario', + latitude: 44.0833, + longitude: -79.75, + }, + { + city: 'Woodstock', + province: 'Ontario', + latitude: 43.1306, + longitude: -80.7467, + }, + { + city: 'Boucherville', + province: 'Quebec', + latitude: 45.6, + longitude: -73.45, + }, + { + city: 'Mission', + province: 'British Columbia', + latitude: 49.1337, + longitude: -122.3112, + }, + { + city: 'Vaudreuil-Dorion', + province: 'Quebec', + latitude: 45.4, + longitude: -74.0333, + }, + { + city: 'Brant', + province: 'Ontario', + latitude: 43.1167, + longitude: -80.3667, + }, + { + city: 'Lakeshore', + province: 'Ontario', + latitude: 42.2399, + longitude: -82.6511, + }, + { + city: 'Innisfil', + province: 'Ontario', + latitude: 44.3, + longitude: -79.5833, + }, + { + city: 'Prince Albert', + province: 'Saskatchewan', + latitude: 53.2, + longitude: -105.75, + }, + { + city: 'Langford Station', + province: 'British Columbia', + latitude: 48.4506, + longitude: -123.5058, + }, + { + city: 'Bradford West Gwillimbury', + province: 'Ontario', + latitude: 44.1333, + longitude: -79.6333, + }, + { + city: 'Campbell River', + province: 'British Columbia', + latitude: 50.0244, + longitude: -125.2475, + }, + { + city: 'Spruce Grove', + province: 'Alberta', + latitude: 53.545, + longitude: -113.9008, + }, + { + city: 'Moose Jaw', + province: 'Saskatchewan', + latitude: 50.3933, + longitude: -105.5519, + }, + { + city: 'Penticton', + province: 'British Columbia', + latitude: 49.4911, + longitude: -119.5886, + }, + { + city: 'Port Moody', + province: 'British Columbia', + latitude: 49.2831, + longitude: -122.8317, + }, + { + city: 'Leamington', + province: 'Ontario', + latitude: 42.0667, + longitude: -82.5833, + }, + { + city: 'East Kelowna', + province: 'British Columbia', + latitude: 49.8625, + longitude: -119.5833, + }, + { + city: 'Côte-Saint-Luc', + province: 'Quebec', + latitude: 45.4687, + longitude: -73.6673, + }, + { + city: 'Val-d’Or', + province: 'Quebec', + latitude: 48.1, + longitude: -77.7833, + }, + { + city: 'Owen Sound', + province: 'Ontario', + latitude: 44.5667, + longitude: -80.9333, + }, + { + city: 'Stratford', + province: 'Ontario', + latitude: 43.3708, + longitude: -80.9819, + }, + { + city: 'Lloydminster', + province: 'Saskatchewan', + latitude: 53.2783, + longitude: -110.005, + }, + { + city: 'Pointe-Claire', + province: 'Quebec', + latitude: 45.45, + longitude: -73.8167, + }, + { + city: 'Orillia', + province: 'Ontario', + latitude: 44.6, + longitude: -79.4167, + }, + { + city: 'Alma', + province: 'Quebec', + latitude: 48.55, + longitude: -71.65, + }, + { + city: 'Orangeville', + province: 'Ontario', + latitude: 43.9167, + longitude: -80.1167, + }, + { + city: 'Fort Erie', + province: 'Ontario', + latitude: 42.9167, + longitude: -79.0167, + }, + { + city: 'LaSalle', + province: 'Ontario', + latitude: 42.2167, + longitude: -83.0667, + }, + { + city: 'Sainte-Julie', + province: 'Quebec', + latitude: 45.5833, + longitude: -73.3333, + }, + { + city: 'Leduc', + province: 'Alberta', + latitude: 53.2594, + longitude: -113.5492, + }, + { + city: 'North Cowichan', + province: 'British Columbia', + latitude: 48.8236, + longitude: -123.7192, + }, + { + city: 'Chambly', + province: 'Quebec', + latitude: 45.4311, + longitude: -73.2873, + }, + { + city: 'Okotoks', + province: 'Alberta', + latitude: 50.725, + longitude: -113.975, + }, + { + city: 'Sept-Îles', + province: 'Quebec', + latitude: 50.2167, + longitude: -66.3833, + }, + { + city: 'Centre Wellington', + province: 'Ontario', + latitude: 43.7, + longitude: -80.3667, + }, + { + city: 'Saint-Constant', + province: 'Quebec', + latitude: 45.37, + longitude: -73.57, + }, + { + city: 'Grimsby', + province: 'Ontario', + latitude: 43.2, + longitude: -79.55, + }, + { + city: 'Boisbriand', + province: 'Quebec', + latitude: 45.62, + longitude: -73.83, + }, + { + city: 'Conception Bay South', + province: 'Newfoundland and Labrador', + latitude: 47.5167, + longitude: -52.9833, + }, + { + city: 'Saint-Bruno-de-Montarville', + province: 'Quebec', + latitude: 45.5333, + longitude: -73.35, + }, + { + city: 'Sainte-Thérèse', + province: 'Quebec', + latitude: 45.6333, + longitude: -73.85, + }, + { + city: 'Cochrane', + province: 'Alberta', + latitude: 51.189, + longitude: -114.467, + }, + { + city: 'Thetford Mines', + province: 'Quebec', + latitude: 46.1, + longitude: -71.3, + }, + { + city: 'Courtenay', + province: 'British Columbia', + latitude: 49.6878, + longitude: -124.9944, + }, + { + city: 'Magog', + province: 'Quebec', + latitude: 45.2667, + longitude: -72.15, + }, + { + city: 'Whitehorse', + province: 'Yukon', + latitude: 60.7029, + longitude: -135.0691, + }, + { + city: 'Woolwich', + province: 'Ontario', + latitude: 43.5667, + longitude: -80.4833, + }, + { + city: 'Clarence-Rockland', + province: 'Ontario', + latitude: 45.4833, + longitude: -75.2, + }, + { + city: 'Fort Saskatchewan', + province: 'Alberta', + latitude: 53.7128, + longitude: -113.2133, + }, + { + city: 'East Gwillimbury', + province: 'Ontario', + latitude: 44.1333, + longitude: -79.4167, + }, + { + city: 'Lincoln', + province: 'Ontario', + latitude: 43.13, + longitude: -79.43, + }, + { + city: 'La Prairie', + province: 'Quebec', + latitude: 45.42, + longitude: -73.5, + }, + { + city: 'Tecumseh', + province: 'Ontario', + latitude: 42.2431, + longitude: -82.9256, + }, + { + city: 'Mount Pearl Park', + province: 'Newfoundland and Labrador', + latitude: 47.5189, + longitude: -52.8058, + }, + { + city: 'Amherstburg', + province: 'Ontario', + latitude: 42.1, + longitude: -83.0833, + }, + { + city: 'Saint-Lambert', + province: 'Quebec', + latitude: 45.5, + longitude: -73.5167, + }, + { + city: 'Brockville', + province: 'Ontario', + latitude: 44.5833, + longitude: -75.6833, + }, + { + city: 'Collingwood', + province: 'Ontario', + latitude: 44.5, + longitude: -80.2167, + }, + { + city: 'Scugog', + province: 'Ontario', + latitude: 44.09, + longitude: -78.936, + }, + { + city: 'Kingsville', + province: 'Ontario', + latitude: 42.1, + longitude: -82.7167, + }, + { + city: 'Baie-Comeau', + province: 'Quebec', + latitude: 49.2167, + longitude: -68.15, + }, + { + city: 'Paradise', + province: 'Newfoundland and Labrador', + latitude: 47.5333, + longitude: -52.8667, + }, + { + city: 'Uxbridge', + province: 'Ontario', + latitude: 44.1167, + longitude: -79.1333, + }, + { + city: 'Essa', + province: 'Ontario', + latitude: 44.25, + longitude: -79.7833, + }, + { + city: 'Candiac', + province: 'Quebec', + latitude: 45.38, + longitude: -73.52, + }, + { + city: 'Oro-Medonte', + province: 'Ontario', + latitude: 44.5667, + longitude: -79.5833, + }, + { + city: 'Varennes', + province: 'Quebec', + latitude: 45.6833, + longitude: -73.4333, + }, + { + city: 'Strathroy-Caradoc', + province: 'Ontario', + latitude: 42.9575, + longitude: -81.6167, + }, + { + city: 'Wasaga Beach', + province: 'Ontario', + latitude: 44.5206, + longitude: -80.0167, + }, + { + city: 'New Glasgow', + province: 'Nova Scotia', + latitude: 45.5926, + longitude: -62.6455, + }, + { + city: 'Wilmot', + province: 'Ontario', + latitude: 43.4, + longitude: -80.65, + }, + { + city: 'Essex', + province: 'Ontario', + latitude: 42.0833, + longitude: -82.9, + }, + { + city: 'Fort St. John', + province: 'British Columbia', + latitude: 56.2465, + longitude: -120.8476, + }, + { + city: 'Kirkland', + province: 'Quebec', + latitude: 45.45, + longitude: -73.8667, + }, + { + city: 'L’Assomption', + province: 'Quebec', + latitude: 45.8333, + longitude: -73.4167, + }, + { + city: 'Westmount', + province: 'Quebec', + latitude: 45.4833, + longitude: -73.6, + }, + { + city: 'Saint-Lazare', + province: 'Quebec', + latitude: 45.4, + longitude: -74.1333, + }, + { + city: 'Chestermere', + province: 'Alberta', + latitude: 51.05, + longitude: -113.8225, + }, + { + city: 'Huntsville', + province: 'Ontario', + latitude: 45.3333, + longitude: -79.2167, + }, + { + city: 'Corner Brook', + province: 'Newfoundland and Labrador', + latitude: 48.9287, + longitude: -57.926, + }, + { + city: 'Riverview', + province: 'New Brunswick', + latitude: 46.0613, + longitude: -64.8052, + }, + { + city: 'Lloydminster', + province: 'Alberta', + latitude: 53.2807, + longitude: -110.035, + }, + { + city: 'Joliette', + province: 'Quebec', + latitude: 46.0167, + longitude: -73.45, + }, + { + city: 'Yellowknife', + province: 'Northwest Territories', + latitude: 62.4709, + longitude: -114.4053, + }, + { + city: 'Squamish', + province: 'British Columbia', + latitude: 49.7017, + longitude: -123.1589, + }, + { + city: 'Mont-Royal', + province: 'Quebec', + latitude: 45.5161, + longitude: -73.6431, + }, + { + city: 'Rivière-du-Loup', + province: 'Quebec', + latitude: 47.8333, + longitude: -69.5333, + }, + { + city: 'Cobourg', + province: 'Ontario', + latitude: 43.9667, + longitude: -78.1667, + }, + { + city: 'Cranbrook', + province: 'British Columbia', + latitude: 49.5097, + longitude: -115.7667, + }, + { + city: 'Beaconsfield', + province: 'Quebec', + latitude: 45.4333, + longitude: -73.8667, + }, + { + city: 'Springwater', + province: 'Ontario', + latitude: 44.4333, + longitude: -79.7333, + }, + { + city: 'Dorval', + province: 'Quebec', + latitude: 45.45, + longitude: -73.75, + }, + { + city: 'Thorold', + province: 'Ontario', + latitude: 43.1167, + longitude: -79.2, + }, + { + city: 'Camrose', + province: 'Alberta', + latitude: 53.0167, + longitude: -112.8333, + }, + { + city: 'South Frontenac', + province: 'Ontario', + latitude: 44.5081, + longitude: -76.4939, + }, + { + city: 'Pitt Meadows', + province: 'British Columbia', + latitude: 49.2333, + longitude: -122.6833, + }, + { + city: 'Port Colborne', + province: 'Ontario', + latitude: 42.8833, + longitude: -79.25, + }, + { + city: 'Quispamsis', + province: 'New Brunswick', + latitude: 45.4322, + longitude: -65.9462, + }, + { + city: 'Mont-Saint-Hilaire', + province: 'Quebec', + latitude: 45.5622, + longitude: -73.1917, + }, + { + city: 'Bathurst', + province: 'New Brunswick', + latitude: 47.62, + longitude: -65.65, + }, + { + city: 'Saint-Augustin-de-Desmaures', + province: 'Quebec', + latitude: 46.7333, + longitude: -71.4667, + }, + { + city: 'Oak Bay', + province: 'British Columbia', + latitude: 48.4264, + longitude: -123.3228, + }, + { + city: 'Sainte-Marthe-sur-le-Lac', + province: 'Quebec', + latitude: 45.53, + longitude: -73.93, + }, + { + city: 'Salmon Arm', + province: 'British Columbia', + latitude: 50.7022, + longitude: -119.2722, + }, + { + city: 'Port Alberni', + province: 'British Columbia', + latitude: 49.2339, + longitude: -124.805, + }, + { + city: 'Esquimalt', + province: 'British Columbia', + latitude: 48.4306, + longitude: -123.4147, + }, + { + city: 'Deux-Montagnes', + province: 'Quebec', + latitude: 45.5333, + longitude: -73.8833, + }, + { + city: 'Miramichi', + province: 'New Brunswick', + latitude: 47.0196, + longitude: -65.5072, + }, + { + city: 'Niagara-on-the-Lake', + province: 'Ontario', + latitude: 43.2553, + longitude: -79.0717, + }, + { + city: 'Saint-Lin--Laurentides', + province: 'Quebec', + latitude: 45.85, + longitude: -73.7667, + }, + { + city: 'Beaumont', + province: 'Alberta', + latitude: 53.3572, + longitude: -113.4147, + }, + { + city: 'Middlesex Centre', + province: 'Ontario', + latitude: 43.05, + longitude: -81.45, + }, + { + city: 'Inverness', + province: 'Nova Scotia', + latitude: 46.2, + longitude: -61.1, + }, + { + city: 'Stony Plain', + province: 'Alberta', + latitude: 53.5264, + longitude: -114.0069, + }, + { + city: 'Petawawa', + province: 'Ontario', + latitude: 45.9, + longitude: -77.2833, + }, + { + city: 'Pelham', + province: 'Ontario', + latitude: 43.0333, + longitude: -79.3333, + }, + { + city: 'Selwyn', + province: 'Ontario', + latitude: 44.4167, + longitude: -78.3333, + }, + { + city: 'Loyalist', + province: 'Ontario', + latitude: 44.25, + longitude: -76.75, + }, + { + city: 'Midland', + province: 'Ontario', + latitude: 44.75, + longitude: -79.8833, + }, + { + city: 'Colwood', + province: 'British Columbia', + latitude: 48.4236, + longitude: -123.4958, + }, + { + city: 'Central Saanich', + province: 'British Columbia', + latitude: 48.5142, + longitude: -123.3839, + }, + { + city: 'Sainte-Catherine', + province: 'Quebec', + latitude: 45.4, + longitude: -73.58, + }, + { + city: 'Port Hope', + province: 'Ontario', + latitude: 43.95, + longitude: -78.3, + }, + { + city: 'L’Ancienne-Lorette', + province: 'Quebec', + latitude: 46.8, + longitude: -71.35, + }, + { + city: 'Saint-Basile-le-Grand', + province: 'Quebec', + latitude: 45.5333, + longitude: -73.2833, + }, + { + city: 'Swift Current', + province: 'Saskatchewan', + latitude: 50.2881, + longitude: -107.7939, + }, + { + city: 'Edmundston', + province: 'New Brunswick', + latitude: 47.3765, + longitude: -68.3253, + }, + { + city: 'Russell', + province: 'Ontario', + latitude: 45.2569, + longitude: -75.3583, + }, + { + city: 'North Grenville', + province: 'Ontario', + latitude: 44.9667, + longitude: -75.65, + }, + { + city: 'Yorkton', + province: 'Saskatchewan', + latitude: 51.2139, + longitude: -102.4628, + }, + { + city: 'Tracadie', + province: 'New Brunswick', + latitude: 47.5124, + longitude: -64.9101, + }, + { + city: 'Bracebridge', + province: 'Ontario', + latitude: 45.0333, + longitude: -79.3, + }, + { + city: 'Greater Napanee', + province: 'Ontario', + latitude: 44.25, + longitude: -76.95, + }, + { + city: 'Tillsonburg', + province: 'Ontario', + latitude: 42.8667, + longitude: -80.7333, + }, + { + city: 'Steinbach', + province: 'Manitoba', + latitude: 49.5258, + longitude: -96.6839, + }, + { + city: 'Hanover', + province: 'Manitoba', + latitude: 49.4433, + longitude: -96.8492, + }, + { + city: 'Terrace', + province: 'British Columbia', + latitude: 54.5164, + longitude: -128.5997, + }, + { + city: 'Springfield', + province: 'Manitoba', + latitude: 49.9292, + longitude: -96.6939, + }, + { + city: 'Gaspé', + province: 'Quebec', + latitude: 48.8333, + longitude: -64.4833, + }, + { + city: 'Kenora', + province: 'Ontario', + latitude: 49.7667, + longitude: -94.4833, + }, + { + city: 'Cold Lake', + province: 'Alberta', + latitude: 54.4642, + longitude: -110.1825, + }, + { + city: 'Summerside', + province: 'Prince Edward Island', + latitude: 46.4, + longitude: -63.7833, + }, + { + city: 'Comox', + province: 'British Columbia', + latitude: 49.6733, + longitude: -124.9022, + }, + { + city: 'Sylvan Lake', + province: 'Alberta', + latitude: 52.3083, + longitude: -114.0964, + }, + { + city: 'Pincourt', + province: 'Quebec', + latitude: 45.3833, + longitude: -73.9833, + }, + { + city: 'West Lincoln', + province: 'Ontario', + latitude: 43.0667, + longitude: -79.5667, + }, + { + city: 'Matane', + province: 'Quebec', + latitude: 48.85, + longitude: -67.5333, + }, + { + city: 'Brooks', + province: 'Alberta', + latitude: 50.5642, + longitude: -111.8989, + }, + { + city: 'Sainte-Anne-des-Plaines', + province: 'Quebec', + latitude: 45.7617, + longitude: -73.8204, + }, + { + city: 'West Nipissing / Nipissing Ouest', + province: 'Ontario', + latitude: 46.3667, + longitude: -79.9167, + }, + { + city: 'Rosemère', + province: 'Quebec', + latitude: 45.6369, + longitude: -73.8, + }, + { + city: 'Mistassini', + province: 'Quebec', + latitude: 48.8229, + longitude: -72.2154, + }, + { + city: 'Grand Falls', + province: 'Newfoundland and Labrador', + latitude: 48.9578, + longitude: -55.6633, + }, + { + city: 'Clearview', + province: 'Ontario', + latitude: 44.3981, + longitude: -80.0742, + }, + { + city: 'St. Clair', + province: 'Ontario', + latitude: 42.7833, + longitude: -82.35, + }, + { + city: 'Canmore', + province: 'Alberta', + latitude: 51.089, + longitude: -115.359, + }, + { + city: 'North Battleford', + province: 'Saskatchewan', + latitude: 52.7575, + longitude: -108.2861, + }, + { + city: 'Pembroke', + province: 'Ontario', + latitude: 45.8167, + longitude: -77.1, + }, + { + city: 'Mont-Laurier', + province: 'Quebec', + latitude: 46.55, + longitude: -75.5, + }, + { + city: 'Strathmore', + province: 'Alberta', + latitude: 51.0378, + longitude: -113.4003, + }, + { + city: 'Saugeen Shores', + province: 'Ontario', + latitude: 44.4333, + longitude: -81.3667, + }, + { + city: 'Thompson', + province: 'Manitoba', + latitude: 55.7433, + longitude: -97.8553, + }, + { + city: 'Lavaltrie', + province: 'Quebec', + latitude: 45.8833, + longitude: -73.2833, + }, + { + city: 'High River', + province: 'Alberta', + latitude: 50.5808, + longitude: -113.8744, + }, + { + city: 'Severn', + province: 'Ontario', + latitude: 44.75, + longitude: -79.5167, + }, + { + city: 'Sainte-Sophie', + province: 'Quebec', + latitude: 45.82, + longitude: -73.9, + }, + { + city: 'Saint-Charles-Borromée', + province: 'Quebec', + latitude: 46.05, + longitude: -73.4667, + }, + { + city: 'Portage La Prairie', + province: 'Manitoba', + latitude: 49.9728, + longitude: -98.2919, + }, + { + city: 'Thames Centre', + province: 'Ontario', + latitude: 43.03, + longitude: -81.08, + }, + { + city: 'Mississippi Mills', + province: 'Ontario', + latitude: 45.2167, + longitude: -76.2, + }, + { + city: 'Powell River', + province: 'British Columbia', + latitude: 49.8353, + longitude: -124.5247, + }, + { + city: 'South Glengarry', + province: 'Ontario', + latitude: 45.2, + longitude: -74.5833, + }, + { + city: 'North Perth', + province: 'Ontario', + latitude: 43.73, + longitude: -80.95, + }, + { + city: 'Mercier', + province: 'Quebec', + latitude: 45.32, + longitude: -73.75, + }, + { + city: 'South Stormont', + province: 'Ontario', + latitude: 45.0833, + longitude: -74.9667, + }, + { + city: 'Saint-Colomban', + province: 'Quebec', + latitude: 45.73, + longitude: -74.13, + }, + { + city: 'Lacombe', + province: 'Alberta', + latitude: 52.4683, + longitude: -113.7369, + }, + { + city: 'Sooke', + province: 'British Columbia', + latitude: 48.3761, + longitude: -123.7378, + }, + { + city: 'Dawson Creek', + province: 'British Columbia', + latitude: 55.7606, + longitude: -120.2356, + }, + { + city: 'Lake Country', + province: 'British Columbia', + latitude: 50.0833, + longitude: -119.4142, + }, + { + city: 'Trent Hills', + province: 'Ontario', + latitude: 44.3142, + longitude: -77.8514, + }, + { + city: 'Sainte-Marie', + province: 'Quebec', + latitude: 46.45, + longitude: -71.0333, + }, + { + city: 'Guelph/Eramosa', + province: 'Ontario', + latitude: 43.63, + longitude: -80.22, + }, + { + city: 'Truro', + province: 'Nova Scotia', + latitude: 45.3647, + longitude: -63.28, + }, + { + city: 'Amos', + province: 'Quebec', + latitude: 48.5667, + longitude: -78.1167, + }, + { + city: 'The Nation / La Nation', + province: 'Ontario', + latitude: 45.35, + longitude: -75.0333, + }, + { + city: 'Ingersoll', + province: 'Ontario', + latitude: 43.0392, + longitude: -80.8836, + }, + { + city: 'Winkler', + province: 'Manitoba', + latitude: 49.1817, + longitude: -97.9397, + }, + { + city: 'Wetaskiwin', + province: 'Alberta', + latitude: 52.9694, + longitude: -113.3769, + }, + { + city: 'Central Elgin', + province: 'Ontario', + latitude: 42.7667, + longitude: -81.1, + }, + { + city: 'Lachute', + province: 'Quebec', + latitude: 45.65, + longitude: -74.3333, + }, + { + city: 'West Grey', + province: 'Ontario', + latitude: 44.1833, + longitude: -80.8167, + }, + { + city: 'Parksville', + province: 'British Columbia', + latitude: 49.315, + longitude: -124.312, + }, + { + city: 'Cowansville', + province: 'Quebec', + latitude: 45.2, + longitude: -72.75, + }, + { + city: 'Bécancour', + province: 'Quebec', + latitude: 46.3333, + longitude: -72.4333, + }, + { + city: 'Gravenhurst', + province: 'Ontario', + latitude: 44.9167, + longitude: -79.3667, + }, + { + city: 'Perth East', + province: 'Ontario', + latitude: 43.47, + longitude: -80.95, + }, + { + city: 'Prince Rupert', + province: 'British Columbia', + latitude: 54.3122, + longitude: -130.3271, + }, + { + city: 'Prévost', + province: 'Quebec', + latitude: 45.87, + longitude: -74.08, + }, + { + city: 'Sainte-Adèle', + province: 'Quebec', + latitude: 45.95, + longitude: -74.13, + }, + { + city: 'Kentville', + province: 'Nova Scotia', + latitude: 45.0775, + longitude: -64.4958, + }, + { + city: 'Beauharnois', + province: 'Quebec', + latitude: 45.32, + longitude: -73.87, + }, + { + city: 'Les Îles-de-la-Madeleine', + province: 'Quebec', + latitude: 47.3833, + longitude: -61.8667, + }, + { + city: 'Wellington North', + province: 'Ontario', + latitude: 43.9, + longitude: -80.57, + }, + { + city: 'St. Andrews', + province: 'Manitoba', + latitude: 50.27, + longitude: -96.9747, + }, + { + city: 'Carleton Place', + province: 'Ontario', + latitude: 45.1333, + longitude: -76.1333, + }, + { + city: 'Whistler', + province: 'British Columbia', + latitude: 50.1208, + longitude: -122.9544, + }, + { + city: 'Brighton', + province: 'Ontario', + latitude: 44.1222, + longitude: -77.7642, + }, + { + city: 'Tiny', + province: 'Ontario', + latitude: 44.6833, + longitude: -79.95, + }, + { + city: 'Gander', + province: 'Newfoundland and Labrador', + latitude: 48.9569, + longitude: -54.6089, + }, + { + city: 'Sidney', + province: 'British Columbia', + latitude: 48.6506, + longitude: -123.3986, + }, + { + city: 'Rothesay', + province: 'New Brunswick', + latitude: 45.3831, + longitude: -65.9969, + }, + { + city: 'Brock', + province: 'Ontario', + latitude: 44.3167, + longitude: -79.0833, + }, + { + city: 'Summerland', + province: 'British Columbia', + latitude: 49.6006, + longitude: -119.6778, + }, + { + city: 'Val-des-Monts', + province: 'Quebec', + latitude: 45.65, + longitude: -75.6667, + }, + { + city: 'Taché', + province: 'Manitoba', + latitude: 49.7081, + longitude: -96.6736, + }, + { + city: 'Montmagny', + province: 'Quebec', + latitude: 46.9833, + longitude: -70.55, + }, + { + city: 'Erin', + province: 'Ontario', + latitude: 43.7667, + longitude: -80.0667, + }, + { + city: 'Kincardine', + province: 'Ontario', + latitude: 44.1667, + longitude: -81.6333, + }, + { + city: 'North Dundas', + province: 'Ontario', + latitude: 45.0833, + longitude: -75.35, + }, + { + city: 'Wellesley', + province: 'Ontario', + latitude: 43.55, + longitude: -80.7167, + }, + { + city: 'Estevan', + province: 'Saskatchewan', + latitude: 49.1392, + longitude: -102.9861, + }, + { + city: 'North Saanich', + province: 'British Columbia', + latitude: 48.6142, + longitude: -123.42, + }, + { + city: 'Warman', + province: 'Saskatchewan', + latitude: 52.3219, + longitude: -106.5842, + }, + { + city: 'La Tuque', + province: 'Quebec', + latitude: 48.0652, + longitude: -74.0528, + }, + { + city: 'Norwich', + province: 'Ontario', + latitude: 42.9833, + longitude: -80.6, + }, + { + city: 'Meaford', + province: 'Ontario', + latitude: 44.58, + longitude: -80.73, + }, + { + city: 'Adjala-Tosorontio', + province: 'Ontario', + latitude: 44.1333, + longitude: -79.9333, + }, + { + city: 'Hamilton Township', + province: 'Ontario', + latitude: 44.054, + longitude: -78.2164, + }, + { + city: 'St. Clements', + province: 'Manitoba', + latitude: 50.2689, + longitude: -96.6742, + }, + { + city: 'Saint-Amable', + province: 'Quebec', + latitude: 45.65, + longitude: -73.3, + }, + { + city: 'Weyburn', + province: 'Saskatchewan', + latitude: 49.6611, + longitude: -103.8525, + }, + { + city: 'South Dundas', + province: 'Ontario', + latitude: 44.9167, + longitude: -75.2667, + }, + { + city: 'L’Île-Perrot', + province: 'Quebec', + latitude: 45.3833, + longitude: -73.95, + }, + { + city: "Notre-Dame-de-l'Île-Perrot", + province: 'Quebec', + latitude: 45.3667, + longitude: -73.9333, + }, + { + city: 'Williams Lake', + province: 'British Columbia', + latitude: 52.1294, + longitude: -122.1383, + }, + { + city: 'Elliot Lake', + province: 'Ontario', + latitude: 46.3833, + longitude: -82.65, + }, + { + city: 'Cantley', + province: 'Quebec', + latitude: 45.5667, + longitude: -75.7833, + }, + { + city: 'Nelson', + province: 'British Columbia', + latitude: 49.5, + longitude: -117.2833, + }, + { + city: 'Lambton Shores', + province: 'Ontario', + latitude: 43.1833, + longitude: -81.9, + }, + { + city: 'Mapleton', + province: 'Ontario', + latitude: 43.7358, + longitude: -80.6681, + }, + { + city: 'Georgian Bluffs', + province: 'Ontario', + latitude: 44.65, + longitude: -81.0333, + }, + { + city: 'Rawdon', + province: 'Quebec', + latitude: 46.05, + longitude: -73.7167, + }, + { + city: 'Campbellton', + province: 'New Brunswick', + latitude: 48.005, + longitude: -66.6731, + }, + { + city: 'View Royal', + province: 'British Columbia', + latitude: 48.4517, + longitude: -123.4339, + }, + { + city: 'Coldstream', + province: 'British Columbia', + latitude: 50.22, + longitude: -119.2481, + }, + { + city: 'Chester', + province: 'Nova Scotia', + latitude: 44.65, + longitude: -64.3, + }, + { + city: 'Queens', + province: 'Nova Scotia', + latitude: 44.0333, + longitude: -64.7167, + }, + { + city: 'Selkirk', + province: 'Manitoba', + latitude: 50.1436, + longitude: -96.8839, + }, + { + city: 'Saint-Félicien', + province: 'Quebec', + latitude: 48.65, + longitude: -72.45, + }, + { + city: 'Hawkesbury', + province: 'Ontario', + latitude: 45.6, + longitude: -74.6, + }, + { + city: 'Roberval', + province: 'Quebec', + latitude: 48.52, + longitude: -72.23, + }, + { + city: 'Sainte-Agathe-des-Monts', + province: 'Quebec', + latitude: 46.05, + longitude: -74.28, + }, + { + city: 'North Dumfries', + province: 'Ontario', + latitude: 43.32, + longitude: -80.38, + }, + { + city: 'Rideau Lakes', + province: 'Ontario', + latitude: 44.6667, + longitude: -76.2167, + }, + { + city: 'Sechelt', + province: 'British Columbia', + latitude: 49.4742, + longitude: -123.7542, + }, + { + city: 'North Glengarry', + province: 'Ontario', + latitude: 45.3333, + longitude: -74.7333, + }, + { + city: 'South Huron', + province: 'Ontario', + latitude: 43.32, + longitude: -81.5, + }, + { + city: 'Marieville', + province: 'Quebec', + latitude: 45.4333, + longitude: -73.1667, + }, + { + city: 'Tay', + province: 'Ontario', + latitude: 44.7167, + longitude: -79.7667, + }, + { + city: 'Temiskaming Shores', + province: 'Ontario', + latitude: 47.5167, + longitude: -79.6833, + }, + { + city: 'Hinton', + province: 'Alberta', + latitude: 53.4114, + longitude: -117.5639, + }, + { + city: 'Saint-Sauveur', + province: 'Quebec', + latitude: 45.9, + longitude: -74.17, + }, + { + city: 'Quesnel', + province: 'British Columbia', + latitude: 52.9784, + longitude: -122.4927, + }, + { + city: 'Elizabethtown-Kitley', + province: 'Ontario', + latitude: 44.7, + longitude: -75.8833, + }, + { + city: 'Morinville', + province: 'Alberta', + latitude: 53.8022, + longitude: -113.6497, + }, + { + city: 'Grey Highlands', + province: 'Ontario', + latitude: 44.3333, + longitude: -80.5, + }, + { + city: 'Stratford', + province: 'Prince Edward Island', + latitude: 46.2167, + longitude: -63.0893, + }, + { + city: 'Alfred and Plantagenet', + province: 'Ontario', + latitude: 45.5667, + longitude: -74.9167, + }, + { + city: 'Mont-Tremblant', + province: 'Quebec', + latitude: 46.1167, + longitude: -74.6, + }, + { + city: 'Martensville', + province: 'Saskatchewan', + latitude: 52.2897, + longitude: -106.6667, + }, + { + city: 'Saint-Raymond', + province: 'Quebec', + latitude: 46.9, + longitude: -71.8333, + }, + { + city: 'Amherst', + province: 'Nova Scotia', + latitude: 45.8167, + longitude: -64.2167, + }, + { + city: 'Ramara', + province: 'Ontario', + latitude: 44.6333, + longitude: -79.2167, + }, + { + city: 'Bois-des-Filion', + province: 'Quebec', + latitude: 45.6667, + longitude: -73.75, + }, + { + city: 'Leeds and the Thousand Islands', + province: 'Ontario', + latitude: 44.45, + longitude: -76.08, + }, + { + city: 'Carignan', + province: 'Quebec', + latitude: 45.45, + longitude: -73.3, + }, + { + city: 'Brockton', + province: 'Ontario', + latitude: 44.1667, + longitude: -81.2167, + }, + { + city: 'Laurentian Valley', + province: 'Ontario', + latitude: 45.7681, + longitude: -77.2239, + }, + { + city: 'East St. Paul', + province: 'Manitoba', + latitude: 49.9772, + longitude: -97.0103, + }, + { + city: 'Lorraine', + province: 'Quebec', + latitude: 45.6833, + longitude: -73.7833, + }, + { + city: 'Sainte-Julienne', + province: 'Quebec', + latitude: 45.97, + longitude: -73.72, + }, + { + city: 'Blackfalds', + province: 'Alberta', + latitude: 52.3833, + longitude: -113.8, + }, + { + city: 'Malahide', + province: 'Ontario', + latitude: 42.7928, + longitude: -80.9361, + }, + { + city: 'Oromocto', + province: 'New Brunswick', + latitude: 45.8488, + longitude: -66.4788, + }, + { + city: 'Olds', + province: 'Alberta', + latitude: 51.7928, + longitude: -114.1067, + }, + { + city: 'Huron East', + province: 'Ontario', + latitude: 43.63, + longitude: -81.28, + }, + { + city: 'Stanley', + province: 'Manitoba', + latitude: 49.1331, + longitude: -98.0656, + }, + { + city: 'Penetanguishene', + province: 'Ontario', + latitude: 44.7667, + longitude: -79.9333, + }, + { + city: 'Qualicum Beach', + province: 'British Columbia', + latitude: 49.35, + longitude: -124.4333, + }, + { + city: 'Notre-Dame-des-Prairies', + province: 'Quebec', + latitude: 46.05, + longitude: -73.4333, + }, + { + city: 'West Perth', + province: 'Ontario', + latitude: 43.47, + longitude: -81.2, + }, + { + city: 'Cavan Monaghan', + province: 'Ontario', + latitude: 44.2, + longitude: -78.4667, + }, + { + city: 'Arnprior', + province: 'Ontario', + latitude: 45.4333, + longitude: -76.35, + }, + { + city: 'Smiths Falls', + province: 'Ontario', + latitude: 44.9, + longitude: -76.0167, + }, + { + city: 'Pont-Rouge', + province: 'Quebec', + latitude: 46.75, + longitude: -71.7, + }, + { + city: 'Champlain', + province: 'Ontario', + latitude: 45.5333, + longitude: -74.65, + }, + { + city: 'Coaticook', + province: 'Quebec', + latitude: 45.1333, + longitude: -71.8, + }, + { + city: 'Minto', + province: 'Ontario', + latitude: 43.9167, + longitude: -80.8667, + }, + { + city: 'Morden', + province: 'Manitoba', + latitude: 49.1919, + longitude: -98.1006, + }, + { + city: 'Mono', + province: 'Ontario', + latitude: 44.0167, + longitude: -80.0667, + }, + { + city: 'Corman Park No. 344', + province: 'Saskatchewan', + latitude: 52.2291, + longitude: -106.8002, + }, + { + city: 'Ladysmith', + province: 'British Columbia', + latitude: 48.9975, + longitude: -123.8203, + }, + { + city: 'Bridgewater', + province: 'Nova Scotia', + latitude: 44.37, + longitude: -64.52, + }, + { + city: 'Dauphin', + province: 'Manitoba', + latitude: 51.1992, + longitude: -100.0633, + }, + { + city: 'Otterburn Park', + province: 'Quebec', + latitude: 45.5333, + longitude: -73.2167, + }, + { + city: 'Taber', + province: 'Alberta', + latitude: 49.7847, + longitude: -112.1508, + }, + { + city: 'South Bruce Peninsula', + province: 'Ontario', + latitude: 44.7333, + longitude: -81.2, + }, + { + city: 'Edson', + province: 'Alberta', + latitude: 53.5817, + longitude: -116.4344, + }, + { + city: 'Farnham', + province: 'Quebec', + latitude: 45.2833, + longitude: -72.9833, + }, + { + city: 'Kapuskasing', + province: 'Ontario', + latitude: 49.4167, + longitude: -82.4333, + }, + { + city: 'La Malbaie', + province: 'Quebec', + latitude: 47.65, + longitude: -70.15, + }, + { + city: 'Renfrew', + province: 'Ontario', + latitude: 45.4717, + longitude: -76.6831, + }, + { + city: 'Coaldale', + province: 'Alberta', + latitude: 49.7333, + longitude: -112.6167, + }, + { + city: "Portugal Cove-St. Philip's", + province: 'Newfoundland and Labrador', + latitude: 47.6272, + longitude: -52.8506, + }, + { + city: 'Zorra', + province: 'Ontario', + latitude: 43.15, + longitude: -80.95, + }, + { + city: 'Kitimat', + province: 'British Columbia', + latitude: 54, + longitude: -128.7, + }, + { + city: 'Shelburne', + province: 'Ontario', + latitude: 44.0833, + longitude: -80.2, + }, + { + city: 'Happy Valley', + province: 'Newfoundland and Labrador', + latitude: 53.3396, + longitude: -60.4467, + }, + { + city: 'Saint-Hippolyte', + province: 'Quebec', + latitude: 45.93, + longitude: -74.02, + }, + { + city: 'Castlegar', + province: 'British Columbia', + latitude: 49.3256, + longitude: -117.6661, + }, + { + city: 'Church Point', + province: 'Nova Scotia', + latitude: 44.3333, + longitude: -66.1167, + }, + { + city: 'Drumheller', + province: 'Alberta', + latitude: 51.4636, + longitude: -112.7194, + }, + { + city: 'Kirkland Lake', + province: 'Ontario', + latitude: 48.15, + longitude: -80.0333, + }, + { + city: 'Argyle', + province: 'Nova Scotia', + latitude: 43.8, + longitude: -65.85, + }, + { + city: 'Torbay', + province: 'Newfoundland and Labrador', + latitude: 47.65, + longitude: -52.7333, + }, + { + city: 'La Pêche', + province: 'Quebec', + latitude: 45.6833, + longitude: -75.9833, + }, + { + city: 'Banff', + province: 'Alberta', + latitude: 51.1781, + longitude: -115.5719, + }, + { + city: 'Innisfail', + province: 'Alberta', + latitude: 52.0333, + longitude: -113.95, + }, + { + city: 'Nicolet', + province: 'Quebec', + latitude: 46.2167, + longitude: -72.6167, + }, + { + city: 'Rockwood', + province: 'Manitoba', + latitude: 50.2856, + longitude: -97.2869, + }, + { + city: 'Drummond/North Elmsley', + province: 'Ontario', + latitude: 44.9667, + longitude: -76.2, + }, + { + city: 'Dryden', + province: 'Ontario', + latitude: 49.7833, + longitude: -92.8333, + }, + { + city: 'Iqaluit', + province: 'Nunavut', + latitude: 63.7598, + longitude: -68.5107, + }, + { + city: 'Fort Frances', + province: 'Ontario', + latitude: 48.6167, + longitude: -93.4, + }, + { + city: 'La Sarre', + province: 'Quebec', + latitude: 48.8, + longitude: -79.2, + }, + { + city: 'Trail', + province: 'British Columbia', + latitude: 49.095, + longitude: -117.71, + }, + { + city: 'Chandler', + province: 'Quebec', + latitude: 48.35, + longitude: -64.6833, + }, + { + city: 'Stone Mills', + province: 'Ontario', + latitude: 44.45, + longitude: -76.9167, + }, + { + city: 'Hanover', + province: 'Ontario', + latitude: 44.15, + longitude: -81.0333, + }, + { + city: 'South-West Oxford', + province: 'Ontario', + latitude: 42.95, + longitude: -80.8, + }, + { + city: 'Acton Vale', + province: 'Quebec', + latitude: 45.65, + longitude: -72.5667, + }, + { + city: 'Bromont', + province: 'Quebec', + latitude: 45.3167, + longitude: -72.65, + }, + { + city: 'Beckwith', + province: 'Ontario', + latitude: 45.0833, + longitude: -76.0667, + }, + { + city: 'Goderich', + province: 'Ontario', + latitude: 43.7333, + longitude: -81.7, + }, + { + city: 'Plympton-Wyoming', + province: 'Ontario', + latitude: 43.0167, + longitude: -82.0833, + }, + { + city: 'Central Huron', + province: 'Ontario', + latitude: 43.63, + longitude: -81.57, + }, + { + city: 'Rigaud', + province: 'Quebec', + latitude: 45.4833, + longitude: -74.3, + }, + { + city: 'Louiseville', + province: 'Quebec', + latitude: 46.25, + longitude: -72.95, + }, + { + city: 'Chibougamau', + province: 'Quebec', + latitude: 49.9167, + longitude: -74.3667, + }, + { + city: 'Aylmer', + province: 'Ontario', + latitude: 42.7667, + longitude: -80.9833, + }, + { + city: 'Delson', + province: 'Quebec', + latitude: 45.37, + longitude: -73.55, + }, + { + city: 'Kimberley', + province: 'British Columbia', + latitude: 49.6697, + longitude: -115.9775, + }, + { + city: 'Blandford-Blenheim', + province: 'Ontario', + latitude: 43.2333, + longitude: -80.6, + }, + { + city: 'Bayham', + province: 'Ontario', + latitude: 42.7333, + longitude: -80.7833, + }, + { + city: 'Augusta', + province: 'Ontario', + latitude: 44.7511, + longitude: -75.6003, + }, + { + city: 'Puslinch', + province: 'Ontario', + latitude: 43.45, + longitude: -80.1667, + }, + { + city: 'Beauport', + province: 'Quebec', + latitude: 46.9667, + longitude: -71.3, + }, + { + city: 'Saint-Rémi', + province: 'Quebec', + latitude: 45.2667, + longitude: -73.6167, + }, + { + city: 'St. Marys', + province: 'Ontario', + latitude: 43.2583, + longitude: -81.1333, + }, + { + city: 'Drayton Valley', + province: 'Alberta', + latitude: 53.2222, + longitude: -114.9769, + }, + { + city: 'Ponoka', + province: 'Alberta', + latitude: 52.6833, + longitude: -113.5667, + }, + { + city: 'Labrador City', + province: 'Newfoundland and Labrador', + latitude: 52.95, + longitude: -66.9167, + }, + { + city: 'Donnacona', + province: 'Quebec', + latitude: 46.6747, + longitude: -71.7294, + }, + { + city: 'Southgate', + province: 'Ontario', + latitude: 44.1, + longitude: -80.5833, + }, + { + city: 'McNab/Braeside', + province: 'Ontario', + latitude: 45.45, + longitude: -76.5, + }, + { + city: 'Macdonald', + province: 'Manitoba', + latitude: 49.6725, + longitude: -97.4472, + }, + { + city: 'Hampstead', + province: 'Quebec', + latitude: 45.4833, + longitude: -73.6333, + }, + { + city: 'Baie-Saint-Paul', + province: 'Quebec', + latitude: 47.45, + longitude: -70.5, + }, + { + city: 'Merritt', + province: 'British Columbia', + latitude: 50.1128, + longitude: -120.7897, + }, + { + city: 'Bluewater', + province: 'Ontario', + latitude: 43.45, + longitude: -81.6, + }, + { + city: 'East Zorra-Tavistock', + province: 'Ontario', + latitude: 43.2333, + longitude: -80.7833, + }, + { + city: 'Brownsburg', + province: 'Quebec', + latitude: 45.6703, + longitude: -74.4467, + }, + { + city: 'Stoneham-et-Tewkesbury', + province: 'Quebec', + latitude: 47.1667, + longitude: -71.4333, + }, + { + city: 'Asbestos', + province: 'Quebec', + latitude: 45.7667, + longitude: -71.9333, + }, + { + city: 'Huron-Kinloss', + province: 'Ontario', + latitude: 44.05, + longitude: -81.5333, + }, + { + city: 'Coteau-du-Lac', + province: 'Quebec', + latitude: 45.3, + longitude: -74.18, + }, + { + city: 'The Blue Mountains', + province: 'Ontario', + latitude: 44.4833, + longitude: -80.3833, + }, + { + city: 'Whitewater Region', + province: 'Ontario', + latitude: 45.7167, + longitude: -76.8333, + }, + { + city: 'Edwardsburgh/Cardinal', + province: 'Ontario', + latitude: 44.8333, + longitude: -75.5, + }, + { + city: 'Sainte-Anne-des-Monts', + province: 'Quebec', + latitude: 49.1333, + longitude: -66.5, + }, + { + city: 'Old Chelsea', + province: 'Quebec', + latitude: 45.5, + longitude: -75.7833, + }, + { + city: 'North Stormont', + province: 'Ontario', + latitude: 45.2167, + longitude: -75, + }, + { + city: 'Alnwick/Haldimand', + province: 'Ontario', + latitude: 44.0833, + longitude: -78.0333, + }, + { + city: 'Peace River', + province: 'Alberta', + latitude: 56.2339, + longitude: -117.2897, + }, + { + city: 'Arran-Elderslie', + province: 'Ontario', + latitude: 44.4, + longitude: -81.2, + }, + { + city: 'Saint-Zotique', + province: 'Quebec', + latitude: 45.25, + longitude: -74.25, + }, + { + city: 'Val-Shefford', + province: 'Quebec', + latitude: 45.35, + longitude: -72.5667, + }, + { + city: 'Douro-Dummer', + province: 'Ontario', + latitude: 44.45, + longitude: -78.1, + }, + { + city: 'Plessisville', + province: 'Quebec', + latitude: 46.2167, + longitude: -71.7833, + }, + { + city: 'Ritchot', + province: 'Manitoba', + latitude: 49.6647, + longitude: -97.1167, + }, + { + city: 'Otonabee-South Monaghan', + province: 'Ontario', + latitude: 44.2333, + longitude: -78.2333, + }, + { + city: 'Shediac', + province: 'New Brunswick', + latitude: 46.2167, + longitude: -64.5333, + }, + { + city: 'Slave Lake', + province: 'Alberta', + latitude: 55.2853, + longitude: -114.7706, + }, + { + city: 'Port-Cartier', + province: 'Quebec', + latitude: 50.0333, + longitude: -66.8667, + }, + { + city: 'Saint-Lambert-de-Lauzon', + province: 'Quebec', + latitude: 46.5865, + longitude: -71.2271, + }, + { + city: 'Barrington', + province: 'Nova Scotia', + latitude: 43.5646, + longitude: -65.5639, + }, + { + city: 'Rocky Mountain House', + province: 'Alberta', + latitude: 52.3753, + longitude: -114.9217, + }, + { city: 'Chatsworth', province: 'Ontario', latitude: 44.38, longitude: -80.87 }, + { + city: 'Stephenville', + province: 'Newfoundland and Labrador', + latitude: 48.55, + longitude: -58.5667, + }, + { + city: 'Muskoka Falls', + province: 'Ontario', + latitude: 45.1264, + longitude: -79.558, + }, + { + city: 'Devon', + province: 'Alberta', + latitude: 53.3633, + longitude: -113.7322, + }, + { + city: 'Yarmouth', + province: 'Nova Scotia', + latitude: 43.8361, + longitude: -66.1175, + }, + { + city: 'Boischatel', + province: 'Quebec', + latitude: 46.9, + longitude: -71.15, + }, + { + city: 'Parry Sound', + province: 'Ontario', + latitude: 45.3333, + longitude: -80.0333, + }, + { + city: 'Pointe-Calumet', + province: 'Quebec', + latitude: 45.5, + longitude: -73.97, + }, + { + city: 'Beaubassin East / Beaubassin-est', + province: 'New Brunswick', + latitude: 46.1726, + longitude: -64.3122, + }, + { + city: 'Wainfleet', + province: 'Ontario', + latitude: 42.925, + longitude: -79.375, + }, + { + city: 'Cramahe', + province: 'Ontario', + latitude: 44.0833, + longitude: -77.8833, + }, + { + city: 'Beauceville', + province: 'Quebec', + latitude: 46.2, + longitude: -70.7833, + }, + { + city: 'North Middlesex', + province: 'Ontario', + latitude: 43.15, + longitude: -81.6333, + }, + { + city: 'Amqui', + province: 'Quebec', + latitude: 48.4667, + longitude: -67.4333, + }, + { + city: 'Sainte-Catherine-de-la-Jacques-Cartier', + province: 'Quebec', + latitude: 46.85, + longitude: -71.6167, + }, + { + city: 'Clarenville', + province: 'Newfoundland and Labrador', + latitude: 48.1566, + longitude: -53.965, + }, + { + city: 'Mont-Joli', + province: 'Quebec', + latitude: 48.58, + longitude: -68.18, + }, + { + city: 'Dysart et al', + province: 'Ontario', + latitude: 45.2042, + longitude: -78.4047, + }, + { + city: 'Wainwright', + province: 'Alberta', + latitude: 52.8333, + longitude: -110.8667, + }, + { + city: 'Contrecoeur', + province: 'Quebec', + latitude: 45.85, + longitude: -73.2333, + }, + { + city: 'Beresford', + province: 'New Brunswick', + latitude: 47.7181, + longitude: -65.8794, + }, + { + city: 'Saint-Joseph-du-Lac', + province: 'Quebec', + latitude: 45.5333, + longitude: -74, + }, + { + city: 'Hope', + province: 'British Columbia', + latitude: 49.3858, + longitude: -121.4419, + }, + { + city: 'Gimli', + province: 'Manitoba', + latitude: 50.6619, + longitude: -97.0297, + }, + { + city: 'Douglas', + province: 'New Brunswick', + latitude: 46.2819, + longitude: -66.942, + }, + { + city: 'Saint-Apollinaire', + province: 'Quebec', + latitude: 46.6167, + longitude: -71.5167, + }, + { + city: 'Hindon Hill', + province: 'Ontario', + latitude: 44.9333, + longitude: -78.7333, + }, + { + city: 'Les Cèdres', + province: 'Quebec', + latitude: 45.3, + longitude: -74.05, + }, + { + city: 'La Broquerie', + province: 'Manitoba', + latitude: 49.3994, + longitude: -96.5103, + }, + { + city: 'Kent', + province: 'British Columbia', + latitude: 49.2833, + longitude: -121.75, + }, + { + city: 'Tweed', + province: 'Ontario', + latitude: 44.6, + longitude: -77.3333, + }, + { + city: 'Saint-Félix-de-Valois', + province: 'Quebec', + latitude: 46.17, + longitude: -73.43, + }, + { + city: 'Bay Roberts', + province: 'Newfoundland and Labrador', + latitude: 47.5847, + longitude: -53.2783, + }, + { + city: 'Melfort', + province: 'Saskatchewan', + latitude: 52.8564, + longitude: -104.61, + }, + { + city: 'Bonnyville', + province: 'Alberta', + latitude: 54.2667, + longitude: -110.75, + }, + { + city: 'Stettler', + province: 'Alberta', + latitude: 52.3236, + longitude: -112.7192, + }, + { + city: 'Saint-Calixte', + province: 'Quebec', + latitude: 45.95, + longitude: -73.85, + }, + { + city: 'Lac-Mégantic', + province: 'Quebec', + latitude: 45.5833, + longitude: -70.8833, + }, + { + city: 'Perth', + province: 'Ontario', + latitude: 44.9, + longitude: -76.25, + }, + { + city: 'Oliver Paipoonge', + province: 'Ontario', + latitude: 48.39, + longitude: -89.52, + }, + { + city: 'Humboldt', + province: 'Saskatchewan', + latitude: 52.2019, + longitude: -105.1231, + }, + { + city: 'Charlemagne', + province: 'Quebec', + latitude: 45.7167, + longitude: -73.4833, + }, + { + city: 'Pontiac', + province: 'Quebec', + latitude: 45.5833, + longitude: -76.1333, + }, + { + city: 'St. Paul', + province: 'Alberta', + latitude: 53.9928, + longitude: -111.2972, + }, + { + city: 'Petrolia', + province: 'Ontario', + latitude: 42.8833, + longitude: -82.1417, + }, + { + city: 'Southwest Middlesex', + province: 'Ontario', + latitude: 42.75, + longitude: -81.7, + }, + { + city: 'Front of Yonge', + province: 'Ontario', + latitude: 44.5333, + longitude: -75.8667, + }, + { + city: 'Vegreville', + province: 'Alberta', + latitude: 53.4928, + longitude: -112.0522, + }, + { + city: 'Sainte-Brigitte-de-Laval', + province: 'Quebec', + latitude: 47, + longitude: -71.2, + }, + { + city: 'Princeville', + province: 'Quebec', + latitude: 46.1667, + longitude: -71.8833, + }, + { + city: 'Verchères', + province: 'Quebec', + latitude: 45.7833, + longitude: -73.35, + }, + { + city: 'The Pas', + province: 'Manitoba', + latitude: 53.825, + longitude: -101.2533, + }, + { + city: 'Saint-Césaire', + province: 'Quebec', + latitude: 45.4167, + longitude: -73, + }, + { + city: 'La Ronge', + province: 'Saskatchewan', + latitude: 55.1, + longitude: -105.3, + }, + { + city: 'Tay Valley', + province: 'Ontario', + latitude: 44.8667, + longitude: -76.3833, + }, + { + city: 'South Bruce', + province: 'Ontario', + latitude: 44.0333, + longitude: -81.2, + }, + { + city: 'McMasterville', + province: 'Quebec', + latitude: 45.55, + longitude: -73.2333, + }, + { + city: 'Redcliff', + province: 'Alberta', + latitude: 50.0792, + longitude: -110.7783, + }, + { + city: 'Crowsnest Pass', + province: 'Alberta', + latitude: 49.5955, + longitude: -114.5136, + }, + { + city: 'Saint-Philippe', + province: 'Quebec', + latitude: 45.35, + longitude: -73.47, + }, + { + city: 'Richelieu', + province: 'Quebec', + latitude: 45.45, + longitude: -73.25, + }, + { + city: 'Notre-Dame-du-Mont-Carmel', + province: 'Quebec', + latitude: 46.4833, + longitude: -72.65, + }, + { + city: "L'Ange-Gardien", + province: 'Quebec', + latitude: 45.5833, + longitude: -75.45, + }, + { + city: 'Sainte-Martine', + province: 'Quebec', + latitude: 45.25, + longitude: -73.8, + }, + { + city: 'Saint-Pie', + province: 'Quebec', + latitude: 45.5, + longitude: -72.9, + }, + { + city: 'Peachland', + province: 'British Columbia', + latitude: 49.7736, + longitude: -119.7369, + }, + { + city: 'Ashfield-Colborne-Wawanosh', + province: 'Ontario', + latitude: 43.8667, + longitude: -81.6, + }, + { + city: 'Trent Lakes', + province: 'Ontario', + latitude: 44.6667, + longitude: -78.4333, + }, + { + city: 'Northern Rockies', + province: 'British Columbia', + latitude: 59, + longitude: -123.75, + }, + { + city: 'Cookshire', + province: 'Quebec', + latitude: 45.3729, + longitude: -71.672, + }, + { + city: 'West St. Paul', + province: 'Manitoba', + latitude: 50.0119, + longitude: -97.115, + }, + { + city: 'Windsor', + province: 'Quebec', + latitude: 45.5667, + longitude: -72, + }, + { + city: 'L’Epiphanie', + province: 'Quebec', + latitude: 45.85, + longitude: -73.4833, + }, + { + city: 'Creston', + province: 'British Columbia', + latitude: 49.09, + longitude: -116.51, + }, + { + city: 'Smithers', + province: 'British Columbia', + latitude: 54.7819, + longitude: -127.1681, + }, + { + city: 'Cornwall', + province: 'Prince Edward Island', + latitude: 46.2407, + longitude: -63.2009, + }, + { + city: 'Meadow Lake', + province: 'Saskatchewan', + latitude: 54.1242, + longitude: -108.4358, + }, + { + city: 'Lanark Highlands', + province: 'Ontario', + latitude: 45.088, + longitude: -76.517, + }, + { + city: 'Sackville', + province: 'New Brunswick', + latitude: 45.9, + longitude: -64.3667, + }, + { + city: 'Grand Falls', + province: 'New Brunswick', + latitude: 47.0344, + longitude: -67.7394, + }, + { + city: 'Cochrane', + province: 'Ontario', + latitude: 49.0667, + longitude: -81.0167, + }, + { + city: 'Marystown', + province: 'Newfoundland and Labrador', + latitude: 47.1667, + longitude: -55.1667, + }, + { + city: 'Sioux Lookout', + province: 'Ontario', + latitude: 50.1, + longitude: -91.9167, + }, + { + city: 'Didsbury', + province: 'Alberta', + latitude: 51.6658, + longitude: -114.1311, + }, + { + city: 'Saint-Honoré', + province: 'Quebec', + latitude: 48.5333, + longitude: -71.0833, + }, + { + city: 'Fernie', + province: 'British Columbia', + latitude: 49.5042, + longitude: -115.0628, + }, + { + city: 'Deer Lake', + province: 'Newfoundland and Labrador', + latitude: 49.1744, + longitude: -57.4269, + }, + { + city: 'Woodstock', + province: 'New Brunswick', + latitude: 46.1522, + longitude: -67.5983, + }, + { + city: 'Val-David', + province: 'Quebec', + latitude: 46.03, + longitude: -74.22, + }, + { + city: 'Flin Flon', + province: 'Saskatchewan', + latitude: 54.7667, + longitude: -101.8778, + }, + { + city: 'Hudson', + province: 'Quebec', + latitude: 45.45, + longitude: -74.15, + }, + { + city: 'Gananoque', + province: 'Ontario', + latitude: 44.33, + longitude: -76.17, + }, + { + city: 'Brokenhead', + province: 'Manitoba', + latitude: 50.1428, + longitude: -96.5319, + }, + { + city: 'Saint-Paul', + province: 'Quebec', + latitude: 45.9833, + longitude: -73.45, + }, + { + city: 'Burton', + province: 'New Brunswick', + latitude: 45.8009, + longitude: -66.4066, + }, + { + city: 'Spallumcheen', + province: 'British Columbia', + latitude: 50.4462, + longitude: -119.2121, + }, + { + city: 'Westlock', + province: 'Alberta', + latitude: 54.1522, + longitude: -113.8511, + }, + { + city: 'Témiscouata-sur-le-Lac', + province: 'Quebec', + latitude: 47.68, + longitude: -68.88, + }, + { + city: 'Shannon', + province: 'Quebec', + latitude: 46.8833, + longitude: -71.5167, + }, + { + city: 'Osoyoos', + province: 'British Columbia', + latitude: 49.0325, + longitude: -119.4661, + }, + { + city: 'Montréal-Ouest', + province: 'Quebec', + latitude: 45.4536, + longitude: -73.6472, + }, + { + city: 'Hearst', + province: 'Ontario', + latitude: 49.6869, + longitude: -83.6544, + }, + { + city: 'Saint-Henri', + province: 'Quebec', + latitude: 46.7, + longitude: -71.0667, + }, + { + city: 'Ste. Anne', + province: 'Manitoba', + latitude: 49.6186, + longitude: -96.5708, + }, + { + city: 'Antigonish', + province: 'Nova Scotia', + latitude: 45.6167, + longitude: -61.9833, + }, + { + city: 'Espanola', + province: 'Ontario', + latitude: 46.25, + longitude: -81.7667, + }, + { + city: 'West Elgin', + province: 'Ontario', + latitude: 42.5833, + longitude: -81.6667, + }, + { + city: 'Flin Flon (Part)', + province: 'Manitoba', + latitude: 54.7712, + longitude: -101.8419, + }, + { + city: 'Grand Bay-Westfield', + province: 'New Brunswick', + latitude: 45.3608, + longitude: -66.2415, + }, + { + city: 'Sainte-Anne-de-Bellevue', + province: 'Quebec', + latitude: 45.4039, + longitude: -73.9525, + }, + { + city: 'North Huron', + province: 'Ontario', + latitude: 43.83, + longitude: -81.42, + }, + { + city: 'Oliver', + province: 'British Columbia', + latitude: 49.1844, + longitude: -119.55, + }, + { + city: "Saint-Roch-de-l'Achigan", + province: 'Quebec', + latitude: 45.85, + longitude: -73.6, + }, + { + city: 'Stirling-Rawdon', + province: 'Ontario', + latitude: 44.3667, + longitude: -77.5917, + }, + { + city: 'Chisasibi', + province: 'Quebec', + latitude: 53.6645, + longitude: -78.7938, + }, + { + city: 'Carbonear', + province: 'Newfoundland and Labrador', + latitude: 47.7375, + longitude: -53.2294, + }, + { + city: 'Saint Marys', + province: 'New Brunswick', + latitude: 46.1748, + longitude: -66.4897, + }, + { + city: 'Chertsey', + province: 'Quebec', + latitude: 46.17, + longitude: -73.92, + }, + { + city: 'Armstrong', + province: 'British Columbia', + latitude: 50.4483, + longitude: -119.1961, + }, + { + city: 'Stonewall', + province: 'Manitoba', + latitude: 50.1344, + longitude: -97.3261, + }, + { + city: 'Shippagan', + province: 'New Brunswick', + latitude: 47.8557, + longitude: -64.6012, + }, + { + city: 'Lanoraie', + province: 'Quebec', + latitude: 45.9667, + longitude: -73.2167, + }, + { + city: 'Memramcook', + province: 'New Brunswick', + latitude: 46, + longitude: -64.55, + }, + { + city: 'Centre Hastings', + province: 'Ontario', + latitude: 44.4167, + longitude: -77.4417, + }, + { + city: 'Warwick', + province: 'Quebec', + latitude: 45.95, + longitude: -71.9833, + }, + { + city: 'East Ferris', + province: 'Ontario', + latitude: 46.2667, + longitude: -79.3, + }, + { + city: 'Hanwell', + province: 'New Brunswick', + latitude: 45.8681, + longitude: -66.7947, + }, + { + city: 'Saint-Joseph-de-Beauce', + province: 'Quebec', + latitude: 46.3, + longitude: -70.8833, + }, + { + city: 'Metchosin', + province: 'British Columbia', + latitude: 48.3819, + longitude: -123.5378, + }, + { + city: 'Lucan Biddulph', + province: 'Ontario', + latitude: 43.2, + longitude: -81.3833, + }, + { + city: 'Rivière-Rouge', + province: 'Quebec', + latitude: 46.4167, + longitude: -74.8667, + }, + { + city: 'Greenstone', + province: 'Ontario', + latitude: 50, + longitude: -86.7333, + }, + { + city: 'Saint-Mathias-sur-Richelieu', + province: 'Quebec', + latitude: 45.4667, + longitude: -73.2667, + }, + { + city: 'Neepawa', + province: 'Manitoba', + latitude: 50.2289, + longitude: -99.4656, + }, + { + city: 'Gibsons', + province: 'British Columbia', + latitude: 49.4028, + longitude: -123.5036, + }, + { + city: 'Kindersley', + province: 'Saskatchewan', + latitude: 51.4678, + longitude: -109.1567, + }, + { + city: 'Jasper', + province: 'Alberta', + latitude: 52.9013, + longitude: -118.1312, + }, + { + city: 'Barrhead', + province: 'Alberta', + latitude: 54.1167, + longitude: -114.4, + }, + { + city: 'Les Coteaux', + province: 'Quebec', + latitude: 45.28, + longitude: -74.23, + }, + { + city: 'Melville', + province: 'Saskatchewan', + latitude: 50.9306, + longitude: -102.8078, + }, + { + city: 'Saint-Germain-de-Grantham', + province: 'Quebec', + latitude: 45.8333, + longitude: -72.5667, + }, + { + city: 'Iroquois Falls', + province: 'Ontario', + latitude: 48.7667, + longitude: -80.6667, + }, + { + city: 'Havelock-Belmont-Methuen', + province: 'Ontario', + latitude: 44.5667, + longitude: -77.9, + }, + { + city: 'Cornwallis', + province: 'Manitoba', + latitude: 49.7981, + longitude: -99.8481, + }, + { + city: 'Saint-Boniface', + province: 'Quebec', + latitude: 46.5, + longitude: -72.8167, + }, + { + city: 'Edenwold No. 158', + province: 'Saskatchewan', + latitude: 50.5166, + longitude: -104.3451, + }, + { + city: 'Coverdale', + province: 'New Brunswick', + latitude: 46.0003, + longitude: -64.8859, + }, + { + city: 'Vanderhoof', + province: 'British Columbia', + latitude: 54.0143, + longitude: -124.0089, + }, + { + city: 'Southwold', + province: 'Ontario', + latitude: 42.75, + longitude: -81.3167, + }, + { + city: 'Goulds', + province: 'Newfoundland and Labrador', + latitude: 47.4517, + longitude: -52.7647, + }, + { + city: 'Saint Stephen', + province: 'New Brunswick', + latitude: 45.2, + longitude: -67.2833, + }, + { + city: 'Waterloo', + province: 'Quebec', + latitude: 45.35, + longitude: -72.5167, + }, + { + city: 'Nipawin', + province: 'Saskatchewan', + latitude: 53.3572, + longitude: -104.0192, + }, + { + city: 'Neuville', + province: 'Quebec', + latitude: 46.7, + longitude: -71.5833, + }, + { + city: 'Saint-Cyrille-de-Wendover', + province: 'Quebec', + latitude: 45.9333, + longitude: -72.4333, + }, + { + city: 'Central Frontenac', + province: 'Ontario', + latitude: 44.7167, + longitude: -76.8, + }, + { + city: 'Mont-Orford', + province: 'Quebec', + latitude: 45.3661, + longitude: -72.1838, + }, + { + city: 'Saint-Jean-de-Matha', + province: 'Quebec', + latitude: 46.23, + longitude: -73.53, + }, + { + city: 'Seguin', + province: 'Ontario', + latitude: 45.2882, + longitude: -79.8116, + }, + { + city: 'Tyendinaga', + province: 'Ontario', + latitude: 44.3, + longitude: -77.2, + }, + { + city: 'Hampton', + province: 'New Brunswick', + latitude: 45.533, + longitude: -65.833, + }, + { + city: 'Sussex', + province: 'New Brunswick', + latitude: 45.7167, + longitude: -65.5167, + }, + { + city: 'Grand Forks', + province: 'British Columbia', + latitude: 49.0333, + longitude: -118.44, + }, + { + city: 'La Pocatière', + province: 'Quebec', + latitude: 47.3667, + longitude: -70.0333, + }, + { + city: 'Caraquet', + province: 'New Brunswick', + latitude: 47.7853, + longitude: -64.9592, + }, + { + city: 'Saint-Étienne-des-Grès', + province: 'Quebec', + latitude: 46.4333, + longitude: -72.7667, + }, + { + city: 'Altona', + province: 'Manitoba', + latitude: 49.1044, + longitude: -97.5625, + }, + { + city: 'Stellarton', + province: 'Nova Scotia', + latitude: 45.5567, + longitude: -62.66, + }, + { + city: 'Wolfville', + province: 'Nova Scotia', + latitude: 45.0833, + longitude: -64.3667, + }, + { + city: 'New Maryland', + province: 'New Brunswick', + latitude: 45.8911, + longitude: -66.6847, + }, + { + city: 'Port Hardy', + province: 'British Columbia', + latitude: 50.7225, + longitude: -127.4928, + }, + { + city: 'Saint-Donat', + province: 'Quebec', + latitude: 46.3167, + longitude: -74.2167, + }, + { + city: 'Château-Richer', + province: 'Quebec', + latitude: 46.9667, + longitude: -71.0167, + }, + { + city: 'Madawaska Valley', + province: 'Ontario', + latitude: 45.5, + longitude: -77.6667, + }, + { + city: 'Deep River', + province: 'Ontario', + latitude: 46.1, + longitude: -77.4917, + }, + { + city: 'Asphodel-Norwood', + province: 'Ontario', + latitude: 44.3531, + longitude: -78.0183, + }, + { + city: 'Red Lake', + province: 'Ontario', + latitude: 51.0333, + longitude: -93.8333, + }, + { + city: 'Métabetchouan-Lac-à-la-Croix', + province: 'Quebec', + latitude: 48.4333, + longitude: -71.8667, + }, + { + city: 'Berthierville', + province: 'Quebec', + latitude: 46.0833, + longitude: -73.1833, + }, + { + city: 'Vermilion', + province: 'Alberta', + latitude: 53.3542, + longitude: -110.8528, + }, + { + city: 'Niverville', + province: 'Manitoba', + latitude: 49.6056, + longitude: -97.0417, + }, + { + city: 'Hastings Highlands', + province: 'Ontario', + latitude: 45.2333, + longitude: -77.9333, + }, + { + city: 'Carstairs', + province: 'Alberta', + latitude: 51.5619, + longitude: -114.0953, + }, + { + city: 'Danville', + province: 'Quebec', + latitude: 45.7833, + longitude: -72.0167, + }, + { + city: 'Channel-Port aux Basques', + province: 'Newfoundland and Labrador', + latitude: 47.5694, + longitude: -59.1361, + }, + { + city: 'Battleford', + province: 'Saskatchewan', + latitude: 52.7383, + longitude: -108.3153, + }, + { + city: 'Lac-Etchemin', + province: 'Quebec', + latitude: 46.4, + longitude: -70.5, + }, + { + city: 'Saint-Antonin', + province: 'Quebec', + latitude: 47.7667, + longitude: -69.4833, + }, + { + city: 'Saint-Jacques', + province: 'Quebec', + latitude: 45.95, + longitude: -73.5667, + }, + { + city: 'Swan River', + province: 'Manitoba', + latitude: 52.1058, + longitude: -101.2667, + }, + { + city: 'Sutton', + province: 'Quebec', + latitude: 45.091, + longitude: -72.5792, + }, + { + city: 'Northern Bruce Peninsula', + province: 'Ontario', + latitude: 45.08, + longitude: -81.38, + }, + { + city: 'L’Islet-sur-Mer', + province: 'Quebec', + latitude: 47.1, + longitude: -70.35, + }, + { + city: 'Carleton-sur-Mer', + province: 'Quebec', + latitude: 48.1, + longitude: -66.1333, + }, + { + city: 'Oka', + province: 'Quebec', + latitude: 45.47, + longitude: -74.08, + }, + { + city: 'Prescott', + province: 'Ontario', + latitude: 44.7167, + longitude: -75.5167, + }, + { + city: 'Amaranth', + province: 'Ontario', + latitude: 43.9833, + longitude: -80.2333, + }, + { + city: 'Marmora and Lake', + province: 'Ontario', + latitude: 44.6425, + longitude: -77.7372, + }, + { + city: 'Maniwaki', + province: 'Quebec', + latitude: 46.375, + longitude: -75.9667, + }, + { + city: 'Morin-Heights', + province: 'Quebec', + latitude: 45.9, + longitude: -74.25, + }, + { + city: 'Dundas', + province: 'New Brunswick', + latitude: 46.3155, + longitude: -64.6947, + }, + { + city: 'Napierville', + province: 'Quebec', + latitude: 45.1833, + longitude: -73.4, + }, + { + city: 'Crabtree', + province: 'Quebec', + latitude: 45.9667, + longitude: -73.4667, + }, + { + city: 'Bancroft', + province: 'Ontario', + latitude: 45.05, + longitude: -77.85, + }, + { + city: 'Saint-Tite', + province: 'Quebec', + latitude: 46.7333, + longitude: -72.5667, + }, + { + city: 'Howick', + province: 'Ontario', + latitude: 43.9, + longitude: -81.07, + }, + { + city: 'Dutton/Dunwich', + province: 'Ontario', + latitude: 42.6667, + longitude: -81.5, + }, + { + city: 'Callander', + province: 'Ontario', + latitude: 46.1781, + longitude: -79.4125, + }, + { + city: 'Simonds', + province: 'New Brunswick', + latitude: 45.3145, + longitude: -65.803, + }, + { + city: 'Baie-d’Urfé', + province: 'Quebec', + latitude: 45.4167, + longitude: -73.9167, + }, + { + city: 'New Richmond', + province: 'Quebec', + latitude: 48.1667, + longitude: -65.8667, + }, + { + city: 'Perth South', + province: 'Ontario', + latitude: 43.3, + longitude: -81.15, + }, + { + city: 'Roxton Pond', + province: 'Quebec', + latitude: 45.4833, + longitude: -72.6667, + }, + { + city: 'Sparwood', + province: 'British Columbia', + latitude: 49.7331, + longitude: -114.8853, + }, + { + city: 'Claresholm', + province: 'Alberta', + latitude: 50.0194, + longitude: -113.5783, + }, + { + city: 'Breslau', + province: 'Ontario', + latitude: 43.4816, + longitude: -80.408, + }, + { + city: 'Montague', + province: 'Ontario', + latitude: 44.9667, + longitude: -75.9667, + }, + { + city: 'Cumberland', + province: 'British Columbia', + latitude: 49.6206, + longitude: -125.0261, + }, + { + city: 'Beaupré', + province: 'Quebec', + latitude: 47.05, + longitude: -70.9, + }, + { + city: 'Saint-André-Avellin', + province: 'Quebec', + latitude: 45.7167, + longitude: -75.0667, + }, + { + city: 'Saint-Ambroise-de-Kildare', + province: 'Quebec', + latitude: 46.0833, + longitude: -73.55, + }, + { + city: 'East Angus', + province: 'Quebec', + latitude: 45.4833, + longitude: -71.6667, + }, + { + city: 'Rossland', + province: 'British Columbia', + latitude: 49.0786, + longitude: -117.7992, + }, + { + city: 'Mackenzie', + province: 'British Columbia', + latitude: 55.3381, + longitude: -123.0944, + }, + { + city: 'Golden', + province: 'British Columbia', + latitude: 51.3019, + longitude: -116.9667, + }, + { + city: 'Raymond', + province: 'Alberta', + latitude: 49.4658, + longitude: -112.6508, + }, + { + city: "Saint-Adolphe-d'Howard", + province: 'Quebec', + latitude: 45.97, + longitude: -74.33, + }, + { + city: 'Warwick', + province: 'Ontario', + latitude: 43, + longitude: -81.8917, + }, + { + city: 'Bowen Island', + province: 'British Columbia', + latitude: 49.3833, + longitude: -123.3833, + }, + { + city: 'Bonnechere Valley', + province: 'Ontario', + latitude: 45.5333, + longitude: -77.1, + }, + { + city: 'Windsor', + province: 'Nova Scotia', + latitude: 44.9803, + longitude: -64.1292, + }, + { + city: 'Pincher Creek', + province: 'Alberta', + latitude: 49.4861, + longitude: -113.95, + }, + { + city: 'Alnwick', + province: 'New Brunswick', + latitude: 47.2656, + longitude: -65.2292, + }, + { + city: 'Westville', + province: 'Nova Scotia', + latitude: 45.55, + longitude: -62.7, + }, + { + city: 'Fruitvale', + province: 'British Columbia', + latitude: 49.1161, + longitude: -117.5414, + }, + { + city: 'Pasadena', + province: 'Newfoundland and Labrador', + latitude: 49.0161, + longitude: -57.605, + }, + { + city: 'Saint-Prosper', + province: 'Quebec', + latitude: 46.2167, + longitude: -70.4833, + }, + { + city: 'Ormstown', + province: 'Quebec', + latitude: 45.13, + longitude: -74, + }, + { + city: 'Cardston', + province: 'Alberta', + latitude: 49.2025, + longitude: -113.3019, + }, + { + city: 'Westbank', + province: 'British Columbia', + latitude: 49.8423, + longitude: -119.6743, + }, + { + city: 'De Salaberry', + province: 'Manitoba', + latitude: 49.4403, + longitude: -96.9844, + }, + { + city: 'Headingley', + province: 'Manitoba', + latitude: 49.8681, + longitude: -97.3908, + }, + { + city: 'Grande Cache', + province: 'Alberta', + latitude: 53.8773, + longitude: -119.1199, + }, + { + city: 'Atholville', + province: 'New Brunswick', + latitude: 47.9894, + longitude: -66.7125, + }, + { + city: 'Saint-Agapit', + province: 'Quebec', + latitude: 46.5667, + longitude: -71.4333, + }, + { + city: 'Prince Albert No. 461', + province: 'Saskatchewan', + latitude: 53.1089, + longitude: -105.6574, + }, + { + city: 'Casselman', + province: 'Ontario', + latitude: 45.3, + longitude: -75.0833, + }, + { + city: 'Saint-Ambroise', + province: 'Quebec', + latitude: 48.55, + longitude: -71.3333, + }, + { + city: 'Hay River', + province: 'Northwest Territories', + latitude: 60.7531, + longitude: -115.9004, + }, + { + city: 'Mistissini', + province: 'Quebec', + latitude: 50.5707, + longitude: -73.6829, + }, + { + city: 'Studholm', + province: 'New Brunswick', + latitude: 45.8133, + longitude: -65.5747, + }, + { + city: 'Lumby', + province: 'British Columbia', + latitude: 50.2494, + longitude: -118.9656, + }, + { + city: 'Saint-Faustin--Lac-Carré', + province: 'Quebec', + latitude: 46.0813, + longitude: -74.4668, + }, + { + city: 'Morris-Turnberry', + province: 'Ontario', + latitude: 43.85, + longitude: -81.25, + }, + { + city: 'Placentia', + province: 'Newfoundland and Labrador', + latitude: 47.2458, + longitude: -53.9611, + }, + { + city: 'Saint-Pascal', + province: 'Quebec', + latitude: 47.5333, + longitude: -69.8, + }, + { + city: 'Mulmur', + province: 'Ontario', + latitude: 44.1917, + longitude: -80.1083, + }, + { + city: 'Blind River', + province: 'Ontario', + latitude: 46.1833, + longitude: -82.95, + }, + { + city: 'Dunham', + province: 'Quebec', + latitude: 45.1333, + longitude: -72.8, + }, + { + city: 'Havre-Saint-Pierre', + province: 'Quebec', + latitude: 50.2333, + longitude: -63.6, + }, + { + city: 'Saint-Anselme', + province: 'Quebec', + latitude: 46.6333, + longitude: -70.9667, + }, + { + city: 'Trois-Pistoles', + province: 'Quebec', + latitude: 48.12, + longitude: -69.18, + }, + { + city: 'Grande-Rivière', + province: 'Quebec', + latitude: 48.4, + longitude: -64.5, + }, + { + city: 'Powassan', + province: 'Ontario', + latitude: 46.0825, + longitude: -79.3619, + }, + { + city: 'Malartic', + province: 'Quebec', + latitude: 48.1333, + longitude: -78.1333, + }, + { + city: 'Bonavista', + province: 'Newfoundland and Labrador', + latitude: 48.6597, + longitude: -53.1208, + }, + { + city: 'Killarney - Turtle Mountain', + province: 'Manitoba', + latitude: 49.1775, + longitude: -99.6906, + }, + { + city: 'Woodlands', + province: 'Manitoba', + latitude: 50.2408, + longitude: -97.7358, + }, + { + city: 'Lewisporte', + province: 'Newfoundland and Labrador', + latitude: 49.23, + longitude: -55.07, + }, + { + city: 'Saint-Denis-de-Brompton', + province: 'Quebec', + latitude: 45.45, + longitude: -72.0833, + }, + { + city: 'Invermere', + province: 'British Columbia', + latitude: 50.5083, + longitude: -116.0303, + }, + { + city: 'Salisbury', + province: 'New Brunswick', + latitude: 46.0776, + longitude: -65.1996, + }, + { + city: 'Bifrost-Riverton', + province: 'Manitoba', + latitude: 51.0603, + longitude: -97.1436, + }, + { + city: 'Buckland No. 491', + province: 'Saskatchewan', + latitude: 53.3276, + longitude: -105.7804, + }, + { + city: 'Cartier', + province: 'Manitoba', + latitude: 49.9161, + longitude: -97.7, + }, + { + city: 'Sainte-Anne-des-Lacs', + province: 'Quebec', + latitude: 45.85, + longitude: -74.1333, + }, + { + city: 'Highlands East', + province: 'Ontario', + latitude: 44.9667, + longitude: -78.25, + }, + { + city: 'Alexander', + province: 'Manitoba', + latitude: 50.4222, + longitude: -96.075, + }, + { + city: 'Sainte-Claire', + province: 'Quebec', + latitude: 46.6, + longitude: -70.8667, + }, + { + city: 'Percé', + province: 'Quebec', + latitude: 48.5333, + longitude: -64.2167, + }, + { + city: 'Saint-Jean-Port-Joli', + province: 'Quebec', + latitude: 47.2167, + longitude: -70.2667, + }, + { + city: 'East Hawkesbury', + province: 'Ontario', + latitude: 45.5167, + longitude: -74.4667, + }, + { + city: 'Bright', + province: 'New Brunswick', + latitude: 46.1205, + longitude: -67.0545, + }, + { + city: 'Penhold', + province: 'Alberta', + latitude: 52.1333, + longitude: -113.8667, + }, + { + city: "Saint-André-d'Argenteuil", + province: 'Quebec', + latitude: 45.5667, + longitude: -74.3333, + }, + { + city: 'Saint-Côme--Linière', + province: 'Quebec', + latitude: 46.0667, + longitude: -70.5167, + }, + { + city: 'Saint-Sulpice', + province: 'Quebec', + latitude: 45.8333, + longitude: -73.35, + }, + { + city: 'Marathon', + province: 'Ontario', + latitude: 48.75, + longitude: -86.3667, + }, + { + city: 'Forestville', + province: 'Quebec', + latitude: 48.7333, + longitude: -69.0833, + }, + { + city: 'Inuvik', + province: 'Northwest Territories', + latitude: 68.3407, + longitude: -133.6096, + }, + { + city: 'Richmond', + province: 'Quebec', + latitude: 45.6667, + longitude: -72.15, + }, + { + city: 'Lake Cowichan', + province: 'British Columbia', + latitude: 48.8258, + longitude: -124.0542, + }, + { + city: 'Sables-Spanish Rivers', + province: 'Ontario', + latitude: 46.2333, + longitude: -82, + }, + { + city: 'Hillsburg-Roblin-Shell River', + province: 'Manitoba', + latitude: 51.3343, + longitude: -101.2929, + }, + { + city: 'Port Hawkesbury', + province: 'Nova Scotia', + latitude: 45.6153, + longitude: -61.3642, + }, + { + city: 'Three Hills', + province: 'Alberta', + latitude: 51.7072, + longitude: -113.2647, + }, + { + city: 'Lorette', + province: 'Manitoba', + latitude: 49.7414, + longitude: -96.8761, + }, + { + city: 'Paspebiac', + province: 'Quebec', + latitude: 48.0333, + longitude: -65.25, + }, + { + city: 'Saint-Thomas', + province: 'Quebec', + latitude: 46.0167, + longitude: -73.35, + }, + { + city: 'Saint-Jean-Baptiste', + province: 'Quebec', + latitude: 45.5167, + longitude: -73.1167, + }, + { + city: 'Portneuf', + province: 'Quebec', + latitude: 46.7, + longitude: -71.8833, + }, + { + city: 'Pictou', + province: 'Nova Scotia', + latitude: 45.6814, + longitude: -62.7119, + }, + { + city: 'Tisdale', + province: 'Saskatchewan', + latitude: 52.85, + longitude: -104.05, + }, + { + city: 'Lake of Bays', + province: 'Ontario', + latitude: 45.3043, + longitude: -79.018, + }, + { + city: 'High Level', + province: 'Alberta', + latitude: 58.5169, + longitude: -117.1361, + }, + { + city: 'Gibbons', + province: 'Alberta', + latitude: 53.8278, + longitude: -113.3228, + }, + { + city: 'Bishops Falls', + province: 'Newfoundland and Labrador', + latitude: 49.0167, + longitude: -55.5167, + }, + { + city: 'WestLake-Gladstone', + province: 'Manitoba', + latitude: 50.2862, + longitude: -98.8415, + }, + { + city: 'Normandin', + province: 'Quebec', + latitude: 48.8333, + longitude: -72.5333, + }, + { + city: 'Saint-Alphonse-Rodriguez', + province: 'Quebec', + latitude: 46.1833, + longitude: -73.7, + }, + { + city: 'Beauséjour', + province: 'Manitoba', + latitude: 50.0622, + longitude: -96.5161, + }, + { + city: 'Dalhousie', + province: 'New Brunswick', + latitude: 48.1, + longitude: -66.6167, + }, + { + city: 'Saint-Alphonse-de-Granby', + province: 'Quebec', + latitude: 45.3333, + longitude: -72.8167, + }, + { + city: 'Lac du Bonnet', + province: 'Manitoba', + latitude: 50.2577, + longitude: -96.1209, + }, + { + city: 'Clermont', + province: 'Quebec', + latitude: 47.6833, + longitude: -70.2333, + }, + { + city: 'Virden', + province: 'Manitoba', + latitude: 49.8508, + longitude: -100.9317, + }, + { + city: 'Compton', + province: 'Quebec', + latitude: 45.2333, + longitude: -71.8167, + }, + { + city: 'White City', + province: 'Saskatchewan', + latitude: 50.4353, + longitude: -104.3572, + }, + { + city: 'Ellison', + province: 'British Columbia', + latitude: 49.9646, + longitude: -119.3178, + }, + { + city: 'Mont-Saint-Grégoire', + province: 'Quebec', + latitude: 45.3333, + longitude: -73.1667, + }, + { + city: 'Wellington', + province: 'New Brunswick', + latitude: 46.4768, + longitude: -64.7478, + }, + { + city: 'Merrickville', + province: 'Ontario', + latitude: 44.8539, + longitude: -75.8269, + }, + { + city: 'Saint-Liboire', + province: 'Quebec', + latitude: 45.65, + longitude: -72.7667, + }, + { + city: 'Dégelis', + province: 'Quebec', + latitude: 47.55, + longitude: -68.65, + }, + { + city: 'Morris', + province: 'Manitoba', + latitude: 49.3986, + longitude: -97.4592, + }, + { + city: 'Saint-Alexis-des-Monts', + province: 'Quebec', + latitude: 46.4667, + longitude: -73.1333, + }, + { + city: 'Cap-Saint-Ignace', + province: 'Quebec', + latitude: 47.0333, + longitude: -70.4667, + }, + { + city: 'Saint-Anaclet-de-Lessard', + province: 'Quebec', + latitude: 48.48, + longitude: -68.42, + }, + { + city: 'Carman', + province: 'Manitoba', + latitude: 49.4992, + longitude: -98.0008, + }, + { + city: 'Athens', + province: 'Ontario', + latitude: 44.625, + longitude: -75.95, + }, + { + city: 'Melancthon', + province: 'Ontario', + latitude: 44.15, + longitude: -80.2667, + }, + { + city: 'Cap Santé', + province: 'Quebec', + latitude: 46.6667, + longitude: -71.7833, + }, + { + city: 'Harbour Grace', + province: 'Newfoundland and Labrador', + latitude: 47.6917, + longitude: -53.2167, + }, + { + city: 'Houston', + province: 'British Columbia', + latitude: 54.3975, + longitude: -126.6419, + }, + { + city: 'Adelaide-Metcalfe', + province: 'Ontario', + latitude: 42.95, + longitude: -81.7, + }, + { + city: 'Crossfield', + province: 'Alberta', + latitude: 51.4333, + longitude: -114.0333, + }, + { + city: 'Springdale', + province: 'Newfoundland and Labrador', + latitude: 49.4974, + longitude: -56.0727, + }, + { + city: 'Fort Macleod', + province: 'Alberta', + latitude: 49.7256, + longitude: -113.3975, + }, + { + city: 'Athabasca', + province: 'Alberta', + latitude: 54.7197, + longitude: -113.2856, + }, + { + city: 'Enderby', + province: 'British Columbia', + latitude: 50.5508, + longitude: -119.1397, + }, + { + city: 'Saint-Ferréol-les-Neiges', + province: 'Quebec', + latitude: 47.1167, + longitude: -70.85, + }, + { + city: 'Laurentian Hills', + province: 'Ontario', + latitude: 46.1333, + longitude: -77.55, + }, + { + city: 'Grand Valley', + province: 'Ontario', + latitude: 43.95, + longitude: -80.3667, + }, + { + city: 'Senneterre', + province: 'Quebec', + latitude: 48.3833, + longitude: -77.2333, + }, + { + city: 'Sainte-Marie-Madeleine', + province: 'Quebec', + latitude: 45.6, + longitude: -73.1, + }, + { + city: 'Admaston/Bromley', + province: 'Ontario', + latitude: 45.5292, + longitude: -76.8969, + }, + { + city: 'Saint-Gabriel-de-Valcartier', + province: 'Quebec', + latitude: 46.9333, + longitude: -71.4667, + }, + { + city: 'North Algona Wilberforce', + province: 'Ontario', + latitude: 45.6167, + longitude: -77.2, + }, + { + city: 'Kingston', + province: 'New Brunswick', + latitude: 45.4663, + longitude: -66.0217, + }, + { + city: 'Wawa', + province: 'Ontario', + latitude: 47.9931, + longitude: -84.7736, + }, + { + city: "Saint-Christophe-d'Arthabaska", + province: 'Quebec', + latitude: 46.0333, + longitude: -71.8833, + }, + { + city: 'Sainte-Mélanie', + province: 'Quebec', + latitude: 46.1333, + longitude: -73.5167, + }, + { + city: 'Ascot Corner', + province: 'Quebec', + latitude: 45.45, + longitude: -71.7667, + }, + { + city: 'Horton', + province: 'Ontario', + latitude: 45.5, + longitude: -76.6667, + }, + { + city: 'Saint-Michel', + province: 'Quebec', + latitude: 45.2333, + longitude: -73.5667, + }, + { + city: 'Botwood', + province: 'Newfoundland and Labrador', + latitude: 49.15, + longitude: -55.3667, + }, + { + city: "Saint-Paul-d'Abbotsford", + province: 'Quebec', + latitude: 45.4333, + longitude: -72.8833, + }, + { + city: 'Saint-Marc-des-Carrières', + province: 'Quebec', + latitude: 46.6833, + longitude: -72.05, + }, + { + city: 'Stanstead', + province: 'Quebec', + latitude: 45.0167, + longitude: -72.1, + }, + { + city: 'Sainte-Anne-de-Beaupré', + province: 'Quebec', + latitude: 47.0167, + longitude: -70.9333, + }, + { + city: 'Sainte-Luce', + province: 'Quebec', + latitude: 48.55, + longitude: -68.38, + }, + { + city: 'Saint-Gabriel', + province: 'Quebec', + latitude: 46.3, + longitude: -73.3833, + }, + { + city: 'Rankin Inlet', + province: 'Nunavut', + latitude: 62.83, + longitude: -92.1321, + }, + { + city: 'Vanscoy No. 345', + province: 'Saskatchewan', + latitude: 52.0073, + longitude: -107.0552, + }, + { + city: 'Cedar', + province: 'British Columbia', + latitude: 49.0853, + longitude: -123.8259, + }, + { + city: 'Princeton', + province: 'British Columbia', + latitude: 49.4589, + longitude: -120.506, + }, + { + city: 'La Loche', + province: 'Saskatchewan', + latitude: 56.4833, + longitude: -109.4333, + }, + { + city: 'Kingsclear', + province: 'New Brunswick', + latitude: 45.8796, + longitude: -66.8695, + }, + { + city: 'Ferme-Neuve', + province: 'Quebec', + latitude: 46.7, + longitude: -75.45, + }, + { + city: 'Thurso', + province: 'Quebec', + latitude: 45.5969, + longitude: -75.2433, + }, + { + city: 'Adstock', + province: 'Quebec', + latitude: 46.05, + longitude: -71.08, + }, + { + city: 'Shuniah', + province: 'Ontario', + latitude: 48.5833, + longitude: -88.8333, + }, + { + city: 'Enniskillen', + province: 'Ontario', + latitude: 42.8167, + longitude: -82.125, + }, + { + city: 'Yamachiche', + province: 'Quebec', + latitude: 46.2667, + longitude: -72.8333, + }, + { + city: 'Saint-Maurice', + province: 'Quebec', + latitude: 46.4667, + longitude: -72.5333, + }, + { + city: 'Bonaventure', + province: 'Quebec', + latitude: 48.05, + longitude: -65.4833, + }, + { + city: 'Val-Morin', + province: 'Quebec', + latitude: 46, + longitude: -74.18, + }, + { + city: 'Pohénégamook', + province: 'Quebec', + latitude: 47.4667, + longitude: -69.2167, + }, + { + city: 'Wakefield', + province: 'New Brunswick', + latitude: 46.2406, + longitude: -67.6248, + }, + { + city: 'Stoke', + province: 'Quebec', + latitude: 45.5333, + longitude: -71.8, + }, + { + city: 'Sainte-Marguerite-du-Lac-Masson', + province: 'Quebec', + latitude: 46.056, + longitude: -74.0723, + }, + { + city: 'Saint-Prime', + province: 'Quebec', + latitude: 48.58, + longitude: -72.33, + }, + { + city: 'Kuujjuaq', + province: 'Quebec', + latitude: 58.1429, + longitude: -68.3742, + }, + { + city: 'Atikokan', + province: 'Ontario', + latitude: 48.75, + longitude: -91.6167, + }, + { + city: 'Grenville-sur-la-Rouge', + province: 'Quebec', + latitude: 45.65, + longitude: -74.6333, + }, + { + city: 'North Cypress-Langford', + province: 'Manitoba', + latitude: 49.9969, + longitude: -99.3982, + }, + { + city: 'Sainte-Anne-de-Sorel', + province: 'Quebec', + latitude: 46.05, + longitude: -73.0667, + }, + { + city: 'Macamic', + province: 'Quebec', + latitude: 48.75, + longitude: -79, + }, + { + city: 'Sundre', + province: 'Alberta', + latitude: 51.7972, + longitude: -114.6406, + }, + { + city: 'Rougemont', + province: 'Quebec', + latitude: 45.4333, + longitude: -73.05, + }, + { + city: 'Piedmont', + province: 'Quebec', + latitude: 45.9, + longitude: -74.13, + }, + { + city: 'Grimshaw', + province: 'Alberta', + latitude: 56.1908, + longitude: -117.6117, + }, + { + city: 'Lac-des-Écorces', + province: 'Quebec', + latitude: 46.55, + longitude: -75.35, + }, + { + city: 'Northeastern Manitoulin and the Islands', + province: 'Ontario', + latitude: 45.9667, + longitude: -81.9333, + }, + { + city: 'Pelican Narrows', + province: 'Saskatchewan', + latitude: 55.1883, + longitude: -102.9342, + }, + { + city: 'McDougall', + province: 'Ontario', + latitude: 45.45, + longitude: -80.0167, + }, + { + city: 'Black Diamond', + province: 'Alberta', + latitude: 50.6881, + longitude: -114.2333, + }, + { + city: 'Saint-Pamphile', + province: 'Quebec', + latitude: 46.9667, + longitude: -69.7833, + }, + { + city: 'Bedford', + province: 'Quebec', + latitude: 45.1167, + longitude: -72.9833, + }, + { + city: 'Weedon-Centre', + province: 'Quebec', + latitude: 45.7, + longitude: -71.4667, + }, + { + city: 'Lacolle', + province: 'Quebec', + latitude: 45.0833, + longitude: -73.3667, + }, + { + city: 'Saint-Gabriel-de-Brandon', + province: 'Quebec', + latitude: 46.2667, + longitude: -73.3833, + }, + { + city: 'Errington', + province: 'British Columbia', + latitude: 49.2874, + longitude: -124.3433, + }, + { + city: 'Coalhurst', + province: 'Alberta', + latitude: 49.7457, + longitude: -112.9319, + }, + { + city: 'French River / Rivière des Français', + province: 'Ontario', + latitude: 46.1667, + longitude: -80.5, + }, + { + city: 'Arviat', + province: 'Nunavut', + latitude: 61.0996, + longitude: -94.1688, + }, + { + city: 'Saint-David-de-Falardeau', + province: 'Quebec', + latitude: 48.6167, + longitude: -71.1167, + }, + { + city: 'Markstay', + province: 'Ontario', + latitude: 46.4912, + longitude: -80.4717, + }, + { + city: 'Spaniards Bay', + province: 'Newfoundland and Labrador', + latitude: 47.6181, + longitude: -53.3369, + }, + { + city: 'Cocagne', + province: 'New Brunswick', + latitude: 46.3406, + longitude: -64.62, + }, + { + city: 'Saint-Bruno', + province: 'Quebec', + latitude: 48.4667, + longitude: -71.65, + }, + { + city: 'Chetwynd', + province: 'British Columbia', + latitude: 55.6972, + longitude: -121.6333, + }, + { + city: 'Laurier-Station', + province: 'Quebec', + latitude: 46.5333, + longitude: -71.6333, + }, + { + city: 'Saint-Anicet', + province: 'Quebec', + latitude: 45.12, + longitude: -74.35, + }, + { + city: 'Saint-Mathieu-de-Beloeil', + province: 'Quebec', + latitude: 45.5667, + longitude: -73.2, + }, + { + city: 'Cap-Chat', + province: 'Quebec', + latitude: 49.1, + longitude: -66.6833, + }, + { + city: 'Sexsmith', + province: 'Alberta', + latitude: 55.3508, + longitude: -118.7825, + }, + { + city: 'Notre-Dame-de-Lourdes', + province: 'Quebec', + latitude: 46.1, + longitude: -73.4333, + }, + { + city: 'Ville-Marie', + province: 'Quebec', + latitude: 47.3333, + longitude: -79.4333, + }, + { + city: 'Saint-Isidore', + province: 'Quebec', + latitude: 45.3, + longitude: -73.68, + }, + { + city: 'Shippegan', + province: 'New Brunswick', + latitude: 47.7439, + longitude: -64.7178, + }, + { + city: 'East Garafraxa', + province: 'Ontario', + latitude: 43.85, + longitude: -80.25, + }, + { + city: 'Pemberton', + province: 'British Columbia', + latitude: 50.3203, + longitude: -122.8053, + }, + { + city: 'Unity', + province: 'Saskatchewan', + latitude: 52.4333, + longitude: -109.1667, + }, + { + city: 'Rimbey', + province: 'Alberta', + latitude: 52.6333, + longitude: -114.2167, + }, + { + city: 'High Prairie', + province: 'Alberta', + latitude: 55.4325, + longitude: -116.4861, + }, + { + city: 'Turner Valley', + province: 'Alberta', + latitude: 50.6739, + longitude: -114.2786, + }, + { + city: 'Hanna', + province: 'Alberta', + latitude: 51.6383, + longitude: -111.9419, + }, + { + city: 'Fort Smith', + province: 'Northwest Territories', + latitude: 60.026, + longitude: -112.0821, + }, + { + city: 'Maria', + province: 'Quebec', + latitude: 48.1667, + longitude: -65.9833, + }, + { + city: 'Saint-Chrysostome', + province: 'Quebec', + latitude: 45.1, + longitude: -73.7667, + }, + { + city: 'Greater Madawaska', + province: 'Ontario', + latitude: 45.2722, + longitude: -76.8589, + }, + { + city: 'Berwick', + province: 'Nova Scotia', + latitude: 45.0475, + longitude: -64.736, + }, + { + city: 'Saint-Damase', + province: 'Quebec', + latitude: 45.5333, + longitude: -73, + }, + { + city: 'Lincoln', + province: 'New Brunswick', + latitude: 45.8716, + longitude: -66.5437, + }, + { + city: 'Disraeli', + province: 'Quebec', + latitude: 45.9, + longitude: -71.35, + }, + { + city: 'Sainte-Victoire-de-Sorel', + province: 'Quebec', + latitude: 45.95, + longitude: -73.0833, + }, + { + city: 'Meadow Lake No. 588', + province: 'Saskatchewan', + latitude: 54.1213, + longitude: -108.2837, + }, + { + city: 'Elkford', + province: 'British Columbia', + latitude: 50.0214, + longitude: -114.9158, + }, + { + city: 'Georgian Bay', + province: 'Ontario', + latitude: 44.9833, + longitude: -79.8167, + }, + { + city: 'Saint-Alexandre', + province: 'Quebec', + latitude: 45.2333, + longitude: -73.1167, + }, + { + city: 'Hérbertville', + province: 'Quebec', + latitude: 48.3473, + longitude: -71.6784, + }, + { + city: 'Moosomin', + province: 'Saskatchewan', + latitude: 50.142, + longitude: -101.67, + }, + { + city: 'North Kawartha', + province: 'Ontario', + latitude: 44.75, + longitude: -78.1, + }, + { + city: 'Sainte-Thècle', + province: 'Quebec', + latitude: 46.8167, + longitude: -72.5, + }, + { + city: 'Trenton', + province: 'Nova Scotia', + latitude: 45.6193, + longitude: -62.6332, + }, + { + city: 'Fermont', + province: 'Quebec', + latitude: 52.7833, + longitude: -67.0833, + }, + { + city: 'Esterhazy', + province: 'Saskatchewan', + latitude: 50.65, + longitude: -102.0667, + }, + { + city: 'Wickham', + province: 'Quebec', + latitude: 45.75, + longitude: -72.5, + }, + { + city: 'La Présentation', + province: 'Quebec', + latitude: 45.6667, + longitude: -73.05, + }, + { + city: 'Beaverlodge', + province: 'Alberta', + latitude: 55.2094, + longitude: -119.4292, + }, + { + city: 'Sainte-Catherine-de-Hatley', + province: 'Quebec', + latitude: 45.25, + longitude: -72.05, + }, + { + city: 'Saint-Basile', + province: 'Quebec', + latitude: 46.75, + longitude: -71.8167, + }, + { + city: 'Saint-Raphaël', + province: 'Quebec', + latitude: 46.8, + longitude: -70.75, + }, + { + city: 'Holyrood', + province: 'Newfoundland and Labrador', + latitude: 47.3833, + longitude: -53.1333, + }, + { + city: 'Gracefield', + province: 'Quebec', + latitude: 46.0926, + longitude: -75.9574, + }, + { + city: 'Saint-Martin', + province: 'Quebec', + latitude: 45.9667, + longitude: -70.65, + }, + { + city: 'Causapscal', + province: 'Quebec', + latitude: 48.3667, + longitude: -67.2333, + }, + { + city: 'Brigham', + province: 'Quebec', + latitude: 45.25, + longitude: -72.85, + }, + { + city: 'Perry', + province: 'Ontario', + latitude: 45.5, + longitude: -79.2833, + }, + { + city: 'Port-Daniel--Gascons', + province: 'Quebec', + latitude: 48.1833, + longitude: -64.9667, + }, + { + city: 'Rosetown', + province: 'Saskatchewan', + latitude: 51.55, + longitude: -107.9833, + }, + { + city: 'Minnedosa', + province: 'Manitoba', + latitude: 50.2453, + longitude: -99.8428, + }, + { + city: 'Labelle', + province: 'Quebec', + latitude: 46.2833, + longitude: -74.7333, + }, + { + city: 'Huntingdon', + province: 'Quebec', + latitude: 45.08, + longitude: -74.17, + }, + { + city: 'Hébertville', + province: 'Quebec', + latitude: 48.4, + longitude: -71.6833, + }, + { + city: 'Black River-Matheson', + province: 'Ontario', + latitude: 48.5333, + longitude: -80.4667, + }, + { + city: 'Saint-Michel-des-Saints', + province: 'Quebec', + latitude: 46.6833, + longitude: -73.9167, + }, + { + city: 'Dufferin', + province: 'Manitoba', + latitude: 49.5319, + longitude: -98.07, + }, + { + city: 'Saint-Victor', + province: 'Quebec', + latitude: 46.15, + longitude: -70.9, + }, + { + city: 'Sicamous', + province: 'British Columbia', + latitude: 50.8378, + longitude: -118.9703, + }, + { + city: 'Cap Pele', + province: 'New Brunswick', + latitude: 46.2172, + longitude: -64.2822, + }, + { + city: 'Kelsey', + province: 'Manitoba', + latitude: 53.7356, + longitude: -101.395, + }, + { + city: 'Killaloe, Hagarty and Richards', + province: 'Ontario', + latitude: 45.6, + longitude: -77.5, + }, + { + city: 'Alvinston', + province: 'Ontario', + latitude: 42.8489, + longitude: -81.9049, + }, + { + city: 'Dundurn No. 314', + province: 'Saskatchewan', + latitude: 51.8261, + longitude: -106.5416, + }, + { + city: 'Saint-Éphrem-de-Beauce', + province: 'Quebec', + latitude: 46.0516, + longitude: -70.9374, + }, + { + city: 'Assiniboia', + province: 'Saskatchewan', + latitude: 49.6167, + longitude: -105.9833, + }, + { + city: 'Témiscaming', + province: 'Quebec', + latitude: 46.7167, + longitude: -79.1, + }, + { + city: 'Magrath', + province: 'Alberta', + latitude: 49.4239, + longitude: -112.8683, + }, + { + city: 'Sainte-Geneviève-de-Berthier', + province: 'Quebec', + latitude: 46.0833, + longitude: -73.2167, + }, + { + city: 'Buctouche', + province: 'New Brunswick', + latitude: 46.4719, + longitude: -64.7249, + }, + { + city: 'Grand Manan', + province: 'New Brunswick', + latitude: 44.69, + longitude: -66.82, + }, + { + city: 'Sainte-Madeleine', + province: 'Quebec', + latitude: 45.6, + longitude: -73.1, + }, + { + city: 'Boissevain', + province: 'Manitoba', + latitude: 49.1779, + longitude: -100.0955, + }, + { + city: 'Scott', + province: 'Quebec', + latitude: 46.512, + longitude: -71.077, + }, + { + city: 'Sainte-Croix', + province: 'Quebec', + latitude: 46.62, + longitude: -71.73, + }, + { + city: 'Algonquin Highlands', + province: 'Ontario', + latitude: 45.4, + longitude: -78.75, + }, + { + city: 'Valcourt', + province: 'Quebec', + latitude: 45.5, + longitude: -72.3167, + }, + { + city: 'Saint George', + province: 'New Brunswick', + latitude: 45.2916, + longitude: -66.8501, + }, + { + city: 'Paquetville', + province: 'New Brunswick', + latitude: 47.6334, + longitude: -65.1803, + }, + { + city: 'Saint-Dominique', + province: 'Quebec', + latitude: 45.5667, + longitude: -72.85, + }, + { + city: 'Clearwater', + province: 'British Columbia', + latitude: 51.65, + longitude: -120.0333, + }, + { + city: 'Addington Highlands', + province: 'Ontario', + latitude: 45, + longitude: -77.25, + }, + { + city: 'Lillooet', + province: 'British Columbia', + latitude: 50.6864, + longitude: -121.9364, + }, + { + city: 'Burin', + province: 'Newfoundland and Labrador', + latitude: 47.05, + longitude: -55.18, + }, + { + city: 'Grand Bank', + province: 'Newfoundland and Labrador', + latitude: 47.1, + longitude: -55.7833, + }, + { + city: 'Léry', + province: 'Quebec', + latitude: 45.35, + longitude: -73.8, + }, + { + city: 'Minto', + province: 'New Brunswick', + latitude: 46.1497, + longitude: -66.1067, + }, + { + city: 'Rosthern No. 403', + province: 'Saskatchewan', + latitude: 52.6206, + longitude: -106.3967, + }, + { + city: 'Chase', + province: 'British Columbia', + latitude: 50.8189, + longitude: -119.6844, + }, + { + city: 'Mansfield-et-Pontefract', + province: 'Quebec', + latitude: 45.8611, + longitude: -76.7392, + }, + { + city: 'Saint-Denis', + province: 'Quebec', + latitude: 45.7833, + longitude: -73.15, + }, + { + city: 'Outlook', + province: 'Saskatchewan', + latitude: 51.5, + longitude: -107.05, + }, + { + city: 'Mitchell', + province: 'Manitoba', + latitude: 49.5363, + longitude: -96.7634, + }, + { + city: 'Saint-Gédéon-de-Beauce', + province: 'Quebec', + latitude: 45.85, + longitude: -70.6333, + }, + { + city: "Saint-Léonard-d'Aston", + province: 'Quebec', + latitude: 46.1, + longitude: -72.3667, + }, + { + city: 'Lunenburg', + province: 'Nova Scotia', + latitude: 44.3833, + longitude: -64.3167, + }, + { + city: 'Northesk', + province: 'New Brunswick', + latitude: 47.2569, + longitude: -66.2613, + }, + { + city: 'Albanel', + province: 'Quebec', + latitude: 48.8833, + longitude: -72.45, + }, + { + city: 'St. Anthony', + province: 'Newfoundland and Labrador', + latitude: 51.3725, + longitude: -55.5947, + }, + { + city: 'Pessamit', + province: 'Quebec', + latitude: 49.0485, + longitude: -68.6814, + }, + { + city: 'Maskinongé', + province: 'Quebec', + latitude: 46.2333, + longitude: -73.0167, + }, + { + city: 'Saint-Charles-de-Bellechasse', + province: 'Quebec', + latitude: 46.7667, + longitude: -70.95, + }, + { + city: 'Fogo Island', + province: 'Newfoundland and Labrador', + latitude: 49.6667, + longitude: -54.1833, + }, + { + city: 'East Broughton', + province: 'Quebec', + latitude: 46.2167, + longitude: -71.0667, + }, + { + city: 'Lantz', + province: 'Nova Scotia', + latitude: 44.9894, + longitude: -63.4736, + }, + { + city: 'Calmar', + province: 'Alberta', + latitude: 53.25, + longitude: -113.7833, + }, + { + city: 'Highlands', + province: 'British Columbia', + latitude: 48.52, + longitude: -123.5, + }, + { + city: 'Saint-Polycarpe', + province: 'Quebec', + latitude: 45.3, + longitude: -74.3, + }, + { + city: 'Logy Bay-Middle Cove-Outer Cove', + province: 'Newfoundland and Labrador', + latitude: 47.63, + longitude: -52.68, + }, + { + city: 'Deschambault', + province: 'Quebec', + latitude: 46.6436, + longitude: -72.0236, + }, + { + city: 'Canora', + province: 'Saskatchewan', + latitude: 51.6339, + longitude: -102.4369, + }, + { + city: 'Upper Miramichi', + province: 'New Brunswick', + latitude: 46.5254, + longitude: -66.2085, + }, + { + city: 'Anmore', + province: 'British Columbia', + latitude: 49.3144, + longitude: -122.8564, + }, + { + city: 'Hardwicke', + province: 'New Brunswick', + latitude: 47.0208, + longitude: -65.0302, + }, + { + city: 'Saint-Côme', + province: 'Quebec', + latitude: 46.27, + longitude: -73.78, + }, + { + city: 'Waskaganish', + province: 'Quebec', + latitude: 51.3674, + longitude: -78.7069, + }, + { + city: 'Twillingate', + province: 'Newfoundland and Labrador', + latitude: 49.6444, + longitude: -54.7436, + }, + { + city: 'Saint-Quentin', + province: 'New Brunswick', + latitude: 47.5135, + longitude: -67.3921, + }, + { + city: 'Lebel-sur-Quévillon', + province: 'Quebec', + latitude: 49.05, + longitude: -76.9833, + }, + { + city: 'Pilot Butte', + province: 'Saskatchewan', + latitude: 50.4667, + longitude: -104.4167, + }, + { + city: 'Nanton', + province: 'Alberta', + latitude: 50.3494, + longitude: -113.7717, + }, + { + city: 'Pierreville', + province: 'Quebec', + latitude: 46.0667, + longitude: -72.8167, + }, + { + city: 'New-Wes-Valley', + province: 'Newfoundland and Labrador', + latitude: 49.15, + longitude: -53.5833, + }, + { + city: 'Pennfield Ridge', + province: 'New Brunswick', + latitude: 45.1924, + longitude: -66.6858, + }, + { + city: 'West Interlake', + province: 'Manitoba', + latitude: 50.9837, + longitude: -98.3572, + }, + { + city: 'Biggar', + province: 'Saskatchewan', + latitude: 52.059, + longitude: -107.979, + }, + { + city: 'Britannia No. 502', + province: 'Saskatchewan', + latitude: 53.4236, + longitude: -109.7772, + }, + { + city: 'Kent', + province: 'New Brunswick', + latitude: 46.6221, + longitude: -67.2953, + }, + { + city: 'Wabana', + province: 'Newfoundland and Labrador', + latitude: 47.65, + longitude: -52.9333, + }, + { + city: 'Saint-Gilles', + province: 'Quebec', + latitude: 46.5167, + longitude: -71.3667, + }, + { + city: 'Wendake', + province: 'Quebec', + latitude: 46.8693, + longitude: -71.3628, + }, + { + city: 'Saint-Bernard', + province: 'Quebec', + latitude: 46.5, + longitude: -71.1333, + }, + { + city: 'Sainte-Cécile-de-Milton', + province: 'Quebec', + latitude: 45.4833, + longitude: -72.75, + }, + { + city: 'Saint-Roch-de-Richelieu', + province: 'Quebec', + latitude: 45.8833, + longitude: -73.1667, + }, + { + city: 'Saint-Nazaire', + province: 'Quebec', + latitude: 48.5833, + longitude: -71.5333, + }, + { + city: 'Saint-Elzéar', + province: 'Quebec', + latitude: 46.4, + longitude: -71.0667, + }, + { + city: 'Hinchinbrooke', + province: 'Quebec', + latitude: 45.05, + longitude: -74.1, + }, + { + city: 'Saint-François-Xavier-de-Brompton', + province: 'Quebec', + latitude: 45.5333, + longitude: -72.05, + }, + { + city: 'Papineauville', + province: 'Quebec', + latitude: 45.6167, + longitude: -75.0167, + }, + { + city: 'Prairie View', + province: 'Manitoba', + latitude: 50.3304, + longitude: -100.9803, + }, + { + city: 'Cowichan Bay', + province: 'British Columbia', + latitude: 48.7666, + longitude: -123.6743, + }, + { + city: 'Saint-Ignace-de-Loyola', + province: 'Quebec', + latitude: 46.0667, + longitude: -73.1333, + }, + { + city: 'Central Manitoulin', + province: 'Ontario', + latitude: 45.7167, + longitude: -82.2, + }, + { + city: 'Maple Creek', + province: 'Saskatchewan', + latitude: 49.9167, + longitude: -109.4667, + }, + { + city: 'Glovertown', + province: 'Newfoundland and Labrador', + latitude: 48.6667, + longitude: -54.05, + }, + { + city: 'Tofield', + province: 'Alberta', + latitude: 53.3703, + longitude: -112.6667, + }, + { + city: 'Madoc', + province: 'Ontario', + latitude: 44.5833, + longitude: -77.5167, + }, + { + city: 'Upton', + province: 'Quebec', + latitude: 45.65, + longitude: -72.6833, + }, + { + city: 'Sainte-Anne-de-Sabrevois', + province: 'Quebec', + latitude: 45.2, + longitude: -73.2167, + }, + { + city: 'Logan Lake', + province: 'British Columbia', + latitude: 50.4911, + longitude: -120.8153, + }, + { + city: 'Sainte-Anne-de-la-Pérade', + province: 'Quebec', + latitude: 46.5833, + longitude: -72.2, + }, + { + city: 'Saint-Damien-de-Buckland', + province: 'Quebec', + latitude: 46.6333, + longitude: -70.6667, + }, + { + city: 'Baker Lake', + province: 'Nunavut', + latitude: 64.3287, + longitude: -96.0308, + }, + { + city: 'Saltair', + province: 'British Columbia', + latitude: 48.9504, + longitude: -123.7637, + }, + { + city: 'Pouch Cove', + province: 'Newfoundland and Labrador', + latitude: 47.767, + longitude: -52.767, + }, + { + city: 'Saint-Ferdinand', + province: 'Quebec', + latitude: 46.1, + longitude: -71.5667, + }, + { + city: 'Port McNeill', + province: 'British Columbia', + latitude: 50.5903, + longitude: -127.0847, + }, + { + city: 'Digby', + province: 'Nova Scotia', + latitude: 44.6222, + longitude: -65.7606, + }, + { + city: 'Manouane', + province: 'Quebec', + latitude: 47.2091, + longitude: -74.3833, + }, + { + city: 'Saint-Gervais', + province: 'Quebec', + latitude: 46.7167, + longitude: -70.8833, + }, + { + city: 'Neebing', + province: 'Ontario', + latitude: 48.1833, + longitude: -89.4667, + }, + { + city: 'Redwater', + province: 'Alberta', + latitude: 53.9489, + longitude: -113.1067, + }, + { + city: 'Saint-Alexandre-de-Kamouraska', + province: 'Quebec', + latitude: 47.6817, + longitude: -69.625, + }, + { + city: 'Saint-Marc-sur-Richelieu', + province: 'Quebec', + latitude: 45.6833, + longitude: -73.2, + }, + { + city: 'Mandeville', + province: 'Quebec', + latitude: 46.3667, + longitude: -73.35, + }, + { + city: 'Caplan', + province: 'Quebec', + latitude: 48.1, + longitude: -65.6833, + }, + { + city: 'Point Edward', + province: 'Ontario', + latitude: 42.9931, + longitude: -82.4083, + }, + { + city: 'Allardville', + province: 'New Brunswick', + latitude: 47.4321, + longitude: -65.4383, + }, + { + city: 'Waterville', + province: 'Quebec', + latitude: 45.2667, + longitude: -71.9, + }, + { + city: 'Saint-Damien', + province: 'Quebec', + latitude: 46.33, + longitude: -73.48, + }, + { + city: 'Lac-Nominingue', + province: 'Quebec', + latitude: 46.4, + longitude: -75.0333, + }, + { + city: 'Obedjiwan', + province: 'Quebec', + latitude: 48.6686, + longitude: -74.9289, + }, + { + city: 'Rama', + province: 'Saskatchewan', + latitude: 51.7578, + longitude: -103.0008, + }, + { + city: 'McCreary', + province: 'Manitoba', + latitude: 50.7494, + longitude: -99.485, + }, + { + city: 'Deloraine-Winchester', + province: 'Manitoba', + latitude: 49.1775, + longitude: -100.4322, + }, + { + city: 'Oakland-Wawanesa', + province: 'Manitoba', + latitude: 49.6208, + longitude: -99.8481, + }, + { + city: 'Brenda-Waskada', + province: 'Manitoba', + latitude: 49.1775, + longitude: -100.7019, + }, + { + city: 'Russell-Binscarth', + province: 'Manitoba', + latitude: 50.7272, + longitude: -101.3689, + }, + { + city: 'Ellice-Archie', + province: 'Manitoba', + latitude: 50.3239, + longitude: -101.2729, + }, + { + city: 'Souris-Glenwood', + province: 'Manitoba', + latitude: 49.6208, + longitude: -100.2581, + }, + { + city: 'Riverdale', + province: 'Manitoba', + latitude: 49.975, + longitude: -100.2789, + }, + { + city: 'Pembina', + province: 'Manitoba', + latitude: 49.1775, + longitude: -98.5408, + }, + { + city: 'Wallace-Woodworth', + province: 'Manitoba', + latitude: 49.9156, + longitude: -100.9389, + }, + { + city: 'Lorne', + province: 'Manitoba', + latitude: 49.4436, + longitude: -98.7494, + }, + { + city: 'Ethelbert', + province: 'Manitoba', + latitude: 51.5364, + longitude: -100.4981, + }, + { + city: 'Yellowhead', + province: 'Manitoba', + latitude: 50.4847, + longitude: -100.4828, + }, + { + city: 'Swan Valley West', + province: 'Manitoba', + latitude: 51.9978, + longitude: -101.3944, + }, + { + city: 'Grey', + province: 'Manitoba', + latitude: 49.7094, + longitude: -98.0736, + }, + { + city: 'Gilbert Plains', + province: 'Manitoba', + latitude: 51.1547, + longitude: -100.4381, + }, + { + city: 'Norfolk-Treherne', + province: 'Manitoba', + latitude: 49.6653, + longitude: -98.5967, + }, + { + city: 'Hamiota', + province: 'Manitoba', + latitude: 50.1964, + longitude: -100.6342, + }, + { + city: 'Emerson-Franklin', + province: 'Manitoba', + latitude: 49.1333, + longitude: -97.0331, + }, + { + city: 'Sifton', + province: 'Manitoba', + latitude: 49.6653, + longitude: -100.6678, + }, + { + city: 'Rossburn', + province: 'Manitoba', + latitude: 50.7272, + longitude: -100.7408, + }, + { + city: 'Grand View', + province: 'Manitoba', + latitude: 51.155, + longitude: -100.7892, + }, + { + city: 'Grassland', + province: 'Manitoba', + latitude: 49.4306, + longitude: -100.3103, + }, + { + city: 'Louise', + province: 'Manitoba', + latitude: 49.1772, + longitude: -98.8794, + }, + { + city: 'Ste. Rose', + province: 'Manitoba', + latitude: 51.0222, + longitude: -99.4306, + }, + { + city: 'Cartwright-Roblin', + province: 'Manitoba', + latitude: 49.1331, + longitude: -99.2797, + }, + { + city: 'Mossey River', + province: 'Manitoba', + latitude: 51.755, + longitude: -99.9664, + }, + { + city: 'Lakeshore', + province: 'Manitoba', + latitude: 51.244, + longitude: -99.6562, + }, + { + city: 'Riding Mountain West', + province: 'Manitoba', + latitude: 50.8347, + longitude: -101.0961, + }, + { + city: 'Clanwilliam-Erickson', + province: 'Manitoba', + latitude: 50.5061, + longitude: -99.8156, + }, + { + city: 'Glenboro-South Cypress', + province: 'Manitoba', + latitude: 49.665, + longitude: -99.3708, + }, + { + city: 'North Norfolk', + province: 'Manitoba', + latitude: 49.9308, + longitude: -98.8356, + }, + { + city: 'Reinland', + province: 'Manitoba', + latitude: 49.1331, + longitude: -97.5942, + }, + { + city: 'Minitonas-Bowsman', + province: 'Manitoba', + latitude: 52.1433, + longitude: -100.9772, + }, + { + city: 'Kippens', + province: 'Newfoundland and Labrador', + latitude: 48.5492, + longitude: -58.6236, + }, + { + city: 'Blucher', + province: 'Saskatchewan', + latitude: 52.0134, + longitude: -106.2176, + }, + { + city: 'Hatley', + province: 'Quebec', + latitude: 45.27, + longitude: -71.95, + }, + { + city: 'Saint-Gédéon', + province: 'Quebec', + latitude: 48.5, + longitude: -71.7667, + }, + { + city: 'Kingsey Falls', + province: 'Quebec', + latitude: 45.85, + longitude: -72.0667, + }, + { + city: 'Provost', + province: 'Alberta', + latitude: 52.3539, + longitude: -110.2686, + }, + { + city: 'Saint-Charles', + province: 'New Brunswick', + latitude: 46.6692, + longitude: -65.0184, + }, + { + city: 'Mattawa', + province: 'Ontario', + latitude: 46.3167, + longitude: -78.7, + }, + { + city: 'Tumbler Ridge', + province: 'British Columbia', + latitude: 55.1333, + longitude: -121, + }, + { + city: 'Terrasse-Vaudreuil', + province: 'Quebec', + latitude: 45.4, + longitude: -73.9833, + }, + { + city: "L'Ascension-de-Notre-Seigneur", + province: 'Quebec', + latitude: 48.7, + longitude: -71.6833, + }, + { + city: 'Bow Island', + province: 'Alberta', + latitude: 49.8667, + longitude: -111.3667, + }, + { + city: 'Barraute', + province: 'Quebec', + latitude: 48.4333, + longitude: -77.6333, + }, + { + city: 'One Hundred Mile House', + province: 'British Columbia', + latitude: 51.6413, + longitude: -121.3127, + }, + { + city: 'Kedgwick', + province: 'New Brunswick', + latitude: 47.6456, + longitude: -67.3431, + }, + { + city: 'Gambo', + province: 'Newfoundland and Labrador', + latitude: 48.7833, + longitude: -54.2167, + }, + { + city: 'Saint-Liguori', + province: 'Quebec', + latitude: 46.0167, + longitude: -73.5667, + }, + { + city: 'Bonfield', + province: 'Ontario', + latitude: 46.2167, + longitude: -79.1333, + }, + { + city: 'Pointe-Lebel', + province: 'Quebec', + latitude: 49.1667, + longitude: -68.2, + }, + { + city: 'Saint Mary', + province: 'New Brunswick', + latitude: 46.3987, + longitude: -64.8681, + }, + { + city: 'Saint-Patrice-de-Sherrington', + province: 'Quebec', + latitude: 45.1667, + longitude: -73.5167, + }, + { + city: 'Fox Creek', + province: 'Alberta', + latitude: 54.395, + longitude: -116.8092, + }, + { + city: 'Dawn-Euphemia', + province: 'Ontario', + latitude: 42.7, + longitude: -82.0167, + }, + { + city: 'Chapleau', + province: 'Ontario', + latitude: 47.8333, + longitude: -83.4, + }, + { + city: 'Saint-Esprit', + province: 'Quebec', + latitude: 45.9, + longitude: -73.6667, + }, + { + city: 'Westfield Beach', + province: 'New Brunswick', + latitude: 45.3432, + longitude: -66.2868, + }, + { + city: 'Montague', + province: 'Prince Edward Island', + latitude: 46.1652, + longitude: -62.65, + }, + { + city: 'Mashteuiatsh', + province: 'Quebec', + latitude: 48.569, + longitude: -72.2495, + }, + { + city: 'Saint-François-du-Lac', + province: 'Quebec', + latitude: 46.0667, + longitude: -72.8333, + }, + { + city: 'Eel River Crossing', + province: 'New Brunswick', + latitude: 48.0125, + longitude: -66.4208, + }, + { + city: 'Saint-Fulgence', + province: 'Quebec', + latitude: 48.45, + longitude: -70.9, + }, + { + city: 'Millet', + province: 'Alberta', + latitude: 53.0978, + longitude: -113.4728, + }, + { + city: 'Vallée-Jonction', + province: 'Quebec', + latitude: 46.3667, + longitude: -70.9167, + }, + { + city: 'Saint-Georges-de-Cacouna', + province: 'Quebec', + latitude: 47.9167, + longitude: -69.5, + }, + { + city: 'Lumsden No. 189', + province: 'Saskatchewan', + latitude: 50.6734, + longitude: -104.7686, + }, + { + city: 'Manitouwadge', + province: 'Ontario', + latitude: 49.1333, + longitude: -85.8333, + }, + { + city: 'Wellington', + province: 'Ontario', + latitude: 43.9579, + longitude: -77.3534, + }, + { + city: 'Swift Current No. 137', + province: 'Saskatchewan', + latitude: 50.2211, + longitude: -107.8559, + }, + { + city: 'Tofino', + province: 'British Columbia', + latitude: 49.1275, + longitude: -125.8852, + }, + { + city: 'Fort Qu’Appelle', + province: 'Saskatchewan', + latitude: 50.7667, + longitude: -103.7833, + }, + { + city: 'Vulcan', + province: 'Alberta', + latitude: 50.4, + longitude: -113.25, + }, + { + city: 'Indian Head', + province: 'Saskatchewan', + latitude: 50.5333, + longitude: -103.6667, + }, + { + city: 'Petit Rocher', + province: 'New Brunswick', + latitude: 47.7839, + longitude: -65.7159, + }, + { + city: 'Wabush', + province: 'Newfoundland and Labrador', + latitude: 52.9081, + longitude: -66.869, + }, + { + city: 'Saint-Fabien', + province: 'Quebec', + latitude: 48.3, + longitude: -68.87, + }, + { + city: 'Watrous', + province: 'Saskatchewan', + latitude: 51.6841, + longitude: -105.4661, + }, + { + city: 'North Frontenac', + province: 'Ontario', + latitude: 44.95, + longitude: -76.9, + }, + { + city: 'Lac-Supérieur', + province: 'Quebec', + latitude: 46.2, + longitude: -74.4667, + }, + { + city: 'Les Escoumins', + province: 'Quebec', + latitude: 48.35, + longitude: -69.4, + }, + { + city: 'Richibucto', + province: 'New Brunswick', + latitude: 46.6189, + longitude: -64.8385, + }, + { + city: 'Rivière-Beaudette', + province: 'Quebec', + latitude: 45.2333, + longitude: -74.3333, + }, + { + city: 'Saint-Barthélemy', + province: 'Quebec', + latitude: 46.1833, + longitude: -73.1333, + }, + { + city: "Nisga'a", + province: 'British Columbia', + latitude: 55.1078, + longitude: -129.4293, + }, + { + city: 'Austin', + province: 'Quebec', + latitude: 45.1833, + longitude: -72.2833, + }, + { + city: 'Saint-Mathieu', + province: 'Quebec', + latitude: 45.3167, + longitude: -73.5164, + }, + { + city: "Saint-Paul-de-l'Île-aux-Noix", + province: 'Quebec', + latitude: 45.1333, + longitude: -73.2833, + }, + { + city: 'Orkney No. 244', + province: 'Saskatchewan', + latitude: 51.2557, + longitude: -102.6469, + }, + { + city: 'Behchokò', + province: 'Northwest Territories', + latitude: 62.8184, + longitude: -115.9933, + }, + { + city: 'Saint-Joseph-de-Coleraine', + province: 'Quebec', + latitude: 45.97, + longitude: -71.37, + }, + { + city: 'Saint-Cyprien-de-Napierville', + province: 'Quebec', + latitude: 45.1833, + longitude: -73.4167, + }, + { + city: 'Sayabec', + province: 'Quebec', + latitude: 48.5667, + longitude: -67.6833, + }, + { + city: 'Valleyview', + province: 'Alberta', + latitude: 55.0686, + longitude: -117.2683, + }, + { + city: 'Déléage', + province: 'Quebec', + latitude: 46.3833, + longitude: -75.9167, + }, + { + city: 'Potton', + province: 'Quebec', + latitude: 45.0833, + longitude: -72.3667, + }, + { + city: 'Sainte-Béatrix', + province: 'Quebec', + latitude: 46.2, + longitude: -73.6167, + }, + { + city: 'Sainte-Justine', + province: 'Quebec', + latitude: 46.4, + longitude: -70.35, + }, + { + city: 'Eastman', + province: 'Quebec', + latitude: 45.3341, + longitude: -72.3041, + }, + { + city: 'Saint-Valérien-de-Milton', + province: 'Quebec', + latitude: 45.5667, + longitude: -72.7167, + }, + { + city: 'Saint-Cuthbert', + province: 'Quebec', + latitude: 46.15, + longitude: -73.2333, + }, + { + city: 'Saint-Blaise-sur-Richelieu', + province: 'Quebec', + latitude: 45.2167, + longitude: -73.2833, + }, + { + city: 'Middleton', + province: 'Nova Scotia', + latitude: 44.9418, + longitude: -65.0686, + }, + { + city: 'Maugerville', + province: 'New Brunswick', + latitude: 46.1301, + longitude: -66.2859, + }, + { + city: 'Dalmeny', + province: 'Saskatchewan', + latitude: 52.3411, + longitude: -106.7733, + }, + { + city: 'Kamsack', + province: 'Saskatchewan', + latitude: 51.565, + longitude: -101.8947, + }, + { + city: 'Lumsden', + province: 'Saskatchewan', + latitude: 50.6463, + longitude: -104.8676, + }, + { + city: 'Trinity Bay North', + province: 'Newfoundland and Labrador', + latitude: 48.4978, + longitude: -53.086, + }, + { + city: 'Saint-Michel-de-Bellechasse', + province: 'Quebec', + latitude: 46.8667, + longitude: -70.9167, + }, + { + city: 'Sainte-Angèle-de-Monnoir', + province: 'Quebec', + latitude: 45.3833, + longitude: -73.1, + }, + { + city: 'Picture Butte', + province: 'Alberta', + latitude: 49.8731, + longitude: -112.78, + }, + { + city: 'Sacré-Coeur-Saguenay', + province: 'Quebec', + latitude: 48.2479, + longitude: -69.854, + }, + { + city: 'Saint-Louis', + province: 'New Brunswick', + latitude: 46.7048, + longitude: -65.1046, + }, + { + city: 'Victoria', + province: 'Newfoundland and Labrador', + latitude: 47.7675, + longitude: -53.2411, + }, + { + city: 'Saint-Robert', + province: 'Quebec', + latitude: 45.9667, + longitude: -73, + }, + { + city: 'Armstrong', + province: 'Manitoba', + latitude: 50.64, + longitude: -97.495, + }, + { + city: "Saint-Pierre-de-l'Île-d'Orléans", + province: 'Quebec', + latitude: 46.8833, + longitude: -71.0667, + }, + { + city: 'La Guadeloupe', + province: 'Quebec', + latitude: 45.95, + longitude: -70.93, + }, + { + city: 'Saint Andrews', + province: 'New Brunswick', + latitude: 45.074, + longitude: -67.0521, + }, + { + city: 'Burns Lake', + province: 'British Columbia', + latitude: 54.2292, + longitude: -125.7625, + }, + { + city: 'Povungnituk', + province: 'Quebec', + latitude: 60.0477, + longitude: -77.2751, + }, + { + city: 'Manners Sutton', + province: 'New Brunswick', + latitude: 45.6417, + longitude: -67.0609, + }, + { + city: 'Gore', + province: 'Quebec', + latitude: 45.77, + longitude: -74.25, + }, + { + city: 'Deseronto', + province: 'Ontario', + latitude: 44.2, + longitude: -77.05, + }, + { + city: 'Lamont', + province: 'Alberta', + latitude: 53.7603, + longitude: -112.7778, + }, + { + city: 'Chambord', + province: 'Quebec', + latitude: 48.4333, + longitude: -72.0667, + }, + { + city: 'Dudswell', + province: 'Quebec', + latitude: 45.5833, + longitude: -71.5833, + }, + { + city: 'Wynyard', + province: 'Saskatchewan', + latitude: 51.7667, + longitude: -104.1833, + }, + { + city: 'Cambridge Bay', + province: 'Nunavut', + latitude: 69.1528, + longitude: -105.1707, + }, + { + city: 'Saint-Narcisse', + province: 'Quebec', + latitude: 46.5667, + longitude: -72.4667, + }, + { + city: 'Frontenac Islands', + province: 'Ontario', + latitude: 44.2, + longitude: -76.3833, + }, + { + city: 'Waswanipi', + province: 'Quebec', + latitude: 49.7883, + longitude: -75.9544, + }, + { + city: 'Inukjuak', + province: 'Quebec', + latitude: 58.4824, + longitude: -78.1309, + }, + { + city: 'Piney', + province: 'Manitoba', + latitude: 49.2069, + longitude: -95.8333, + }, + { + city: 'Komoka', + province: 'Ontario', + latitude: 42.958, + longitude: -81.4001, + }, + { + city: 'Saint-Zacharie', + province: 'Quebec', + latitude: 46.1333, + longitude: -70.3667, + }, + { + city: 'Hemmingford', + province: 'Quebec', + latitude: 45.0833, + longitude: -73.5833, + }, + { + city: 'Shelburne', + province: 'Nova Scotia', + latitude: 43.7633, + longitude: -65.3236, + }, + { + city: 'Saint-Clet', + province: 'Quebec', + latitude: 45.35, + longitude: -74.22, + }, + { + city: 'Carberry', + province: 'Manitoba', + latitude: 49.8689, + longitude: -99.3594, + }, + { + city: 'Brighton', + province: 'New Brunswick', + latitude: 46.3316, + longitude: -67.3585, + }, + { + city: 'Saint-Antoine', + province: 'New Brunswick', + latitude: 46.3629, + longitude: -64.753, + }, + { + city: 'Warfield', + province: 'British Columbia', + latitude: 49.0953, + longitude: -117.7344, + }, + { + city: 'Northampton', + province: 'New Brunswick', + latitude: 46.1313, + longitude: -67.4713, + }, + { + city: 'Saint-Ours', + province: 'Quebec', + latitude: 45.8833, + longitude: -73.15, + }, + { + city: 'Stephenville Crossing', + province: 'Newfoundland and Labrador', + latitude: 48.5167, + longitude: -58.4167, + }, + { + city: 'Sainte-Anne-de-la-Pocatière', + province: 'Quebec', + latitude: 47.35, + longitude: -70, + }, + { + city: 'Ucluelet', + province: 'British Columbia', + latitude: 48.9358, + longitude: -125.5433, + }, + { + city: 'Saint-Placide', + province: 'Quebec', + latitude: 45.5333, + longitude: -74.2, + }, + { + city: 'Barrière', + province: 'British Columbia', + latitude: 51.1803, + longitude: -120.1261, + }, + { + city: 'Fisher', + province: 'Manitoba', + latitude: 51.0825, + longitude: -97.6611, + }, + { + city: 'Nipissing', + province: 'Ontario', + latitude: 46.05, + longitude: -79.55, + }, + { + city: 'Sainte-Clotilde', + province: 'Quebec', + latitude: 45.15, + longitude: -73.6833, + }, + { + city: 'Shaunavon', + province: 'Saskatchewan', + latitude: 49.651, + longitude: -108.412, + }, + { + city: 'Wicklow', + province: 'New Brunswick', + latitude: 46.5017, + longitude: -67.7067, + }, + { + city: 'Southesk', + province: 'New Brunswick', + latitude: 46.9901, + longitude: -66.4336, + }, + { + city: 'Nouvelle', + province: 'Quebec', + latitude: 48.1333, + longitude: -66.3167, + }, + { + city: 'Rosthern', + province: 'Saskatchewan', + latitude: 52.65, + longitude: -106.3333, + }, + { + city: 'Yamaska', + province: 'Quebec', + latitude: 46.0236, + longitude: -72.9391, + }, + { + city: 'Neguac', + province: 'New Brunswick', + latitude: 47.2333, + longitude: -65.05, + }, + { + city: 'Flat Rock', + province: 'Newfoundland and Labrador', + latitude: 47.7086, + longitude: -52.7144, + }, + { + city: 'Igloolik', + province: 'Nunavut', + latitude: 69.3817, + longitude: -81.6811, + }, + { + city: 'Grunthal', + province: 'Manitoba', + latitude: 49.4065, + longitude: -96.8603, + }, + { + city: 'Naramata', + province: 'British Columbia', + latitude: 49.5886, + longitude: -119.5838, + }, + { + city: 'Saint-Élie-de-Caxton', + province: 'Quebec', + latitude: 46.4833, + longitude: -72.9667, + }, + { + city: 'Blumenort', + province: 'Manitoba', + latitude: 49.6033, + longitude: -96.7006, + }, + { + city: 'Balmoral', + province: 'New Brunswick', + latitude: 47.9667, + longitude: -66.45, + }, + { + city: 'Price', + province: 'Quebec', + latitude: 48.6017, + longitude: -68.1227, + }, + { + city: 'Rosedale', + province: 'Manitoba', + latitude: 50.4397, + longitude: -99.5389, + }, + { + city: 'Saint-Jacques-le-Mineur', + province: 'Quebec', + latitude: 45.2833, + longitude: -73.4167, + }, + { + city: 'Huron Shores', + province: 'Ontario', + latitude: 46.2833, + longitude: -83.2, + }, + { + city: 'Champlain', + province: 'Quebec', + latitude: 46.45, + longitude: -72.35, + }, + { + city: 'Whitehead', + province: 'Manitoba', + latitude: 49.7981, + longitude: -100.2575, + }, + { + city: 'Saint-Antoine-sur-Richelieu', + province: 'Quebec', + latitude: 45.7833, + longitude: -73.1833, + }, + { + city: 'Saint-Pacôme', + province: 'Quebec', + latitude: 47.4, + longitude: -69.95, + }, + { + city: 'Saint-Stanislas-de-Kostka', + province: 'Quebec', + latitude: 45.18, + longitude: -74.13, + }, + { + city: 'Frontenac', + province: 'Quebec', + latitude: 45.58, + longitude: -70.83, + }, + { + city: 'Stuartburn', + province: 'Manitoba', + latitude: 49.1331, + longitude: -96.5158, + }, + { + city: 'Yamaska-Est', + province: 'Quebec', + latitude: 46, + longitude: -72.92, + }, + { + city: "Sainte-Émélie-de-l'Énergie", + province: 'Quebec', + latitude: 46.3167, + longitude: -73.65, + }, + { + city: 'Saint-Charles-sur-Richelieu', + province: 'Quebec', + latitude: 45.6833, + longitude: -73.1833, + }, + { + city: 'Saint-Joseph-de-Sorel', + province: 'Quebec', + latitude: 46.0446, + longitude: -73.1308, + }, + { + city: 'Nipigon', + province: 'Ontario', + latitude: 49.0153, + longitude: -88.2683, + }, + { + city: 'Rivière-Blanche', + province: 'Quebec', + latitude: 48.7833, + longitude: -67.7, + }, + { + city: 'Sainte-Hélène-de-Bagot', + province: 'Quebec', + latitude: 45.7333, + longitude: -72.7333, + }, + { + city: 'Franklin Centre', + province: 'Quebec', + latitude: 45.0467, + longitude: -73.9005, + }, + { + city: 'Harbour Breton', + province: 'Newfoundland and Labrador', + latitude: 47.4833, + longitude: -55.8333, + }, + { + city: 'Massey Drive', + province: 'Newfoundland and Labrador', + latitude: 48.9372, + longitude: -57.9, + }, + { + city: 'Mille-Isles', + province: 'Quebec', + latitude: 45.82, + longitude: -74.22, + }, + { + city: 'Wilton No. 472', + province: 'Saskatchewan', + latitude: 53.124, + longitude: -109.7885, + }, + { + city: 'Lyster', + province: 'Quebec', + latitude: 46.3667, + longitude: -71.6167, + }, + { + city: 'Oakview', + province: 'Manitoba', + latitude: 50.1964, + longitude: -100.2167, + }, + { + city: 'Balgonie', + province: 'Saskatchewan', + latitude: 50.488, + longitude: -104.269, + }, + { + city: 'Harrison Park', + province: 'Manitoba', + latitude: 50.5563, + longitude: -100.1674, + }, + { + city: 'Kensington', + province: 'Prince Edward Island', + latitude: 46.4333, + longitude: -63.65, + }, + { + city: 'Witless Bay', + province: 'Newfoundland and Labrador', + latitude: 47.28, + longitude: -52.83, + }, + { + city: 'Pond Inlet', + province: 'Nunavut', + latitude: 72.6808, + longitude: -77.7503, + }, + { + city: 'Royston', + province: 'British Columbia', + latitude: 49.6405, + longitude: -124.9406, + }, + { + city: 'Sainte-Clotilde-de-Horton', + province: 'Quebec', + latitude: 45.9833, + longitude: -72.2333, + }, + { + city: 'Burford', + province: 'Ontario', + latitude: 43.1036, + longitude: -80.424, + }, + { + city: 'Fossambault-sur-le-Lac', + province: 'Quebec', + latitude: 46.8667, + longitude: -71.6167, + }, + { + city: 'Saint-Benoît-Labre', + province: 'Quebec', + latitude: 46.0667, + longitude: -70.8, + }, + { + city: 'Coombs', + province: 'British Columbia', + latitude: 49.3008, + longitude: -124.4049, + }, + { + city: 'Terrace Bay', + province: 'Ontario', + latitude: 48.8, + longitude: -87.1, + }, + { + city: 'Chapais', + province: 'Quebec', + latitude: 49.7819, + longitude: -74.8544, + }, + { + city: 'Saint-Honoré-de-Shenley', + province: 'Quebec', + latitude: 45.9667, + longitude: -70.8333, + }, + { + city: 'Cleveland', + province: 'Quebec', + latitude: 45.67, + longitude: -72.08, + }, + { + city: 'Macdonald, Meredith and Aberdeen Additional', + province: 'Ontario', + latitude: 46.4833, + longitude: -84.0667, + }, + { + city: 'Messines', + province: 'Quebec', + latitude: 46.2333, + longitude: -76.0167, + }, + { + city: 'Saint-Jean-de-Dieu', + province: 'Quebec', + latitude: 48, + longitude: -69.05, + }, + { + city: 'Nakusp', + province: 'British Columbia', + latitude: 50.2434, + longitude: -117.8002, + }, + { + city: 'Florenceville', + province: 'New Brunswick', + latitude: 46.4435, + longitude: -67.6152, + }, + { + city: 'Saint-Antoine-de-Tilly', + province: 'Quebec', + latitude: 46.6667, + longitude: -71.5833, + }, + { + city: 'Lakeview', + province: 'British Columbia', + latitude: 49.9026, + longitude: -119.5699, + }, + { + city: 'Humbermouth', + province: 'Newfoundland and Labrador', + latitude: 49.0156, + longitude: -58.1678, + }, + { + city: 'Fort St. James', + province: 'British Columbia', + latitude: 54.4431, + longitude: -124.2542, + }, + { + city: 'Saint-François-de-la-Rivière-du-Sud', + province: 'Quebec', + latitude: 46.8833, + longitude: -70.7167, + }, + { + city: 'Saint-Jacques', + province: 'New Brunswick', + latitude: 47.5634, + longitude: -68.3693, + }, + { + city: 'Uashat', + province: 'Quebec', + latitude: 50.233, + longitude: -66.3947, + }, + { + city: 'Perth', + province: 'New Brunswick', + latitude: 46.7393, + longitude: -67.6984, + }, + { + city: 'Eeyou Istchee Baie-James', + province: 'Quebec', + latitude: 52.3382, + longitude: -75.1977, + }, + { + city: 'Shellbrook No. 493', + province: 'Saskatchewan', + latitude: 53.3545, + longitude: -106.2553, + }, + { + city: 'Shawville', + province: 'Quebec', + latitude: 45.6, + longitude: -76.4833, + }, + { + city: 'Saint-Lucien', + province: 'Quebec', + latitude: 45.8667, + longitude: -72.2667, + }, + { + city: 'Lambton', + province: 'Quebec', + latitude: 45.83, + longitude: -71.08, + }, + { + city: "Saint-Laurent-de-l'Île-d'Orléans", + province: 'Quebec', + latitude: 46.8667, + longitude: -71.0167, + }, + { + city: 'Saint-Flavien', + province: 'Quebec', + latitude: 46.5167, + longitude: -71.6, + }, + { + city: 'Grenville', + province: 'Quebec', + latitude: 45.6333, + longitude: -74.6, + }, + { + city: 'Chute-aux-Outardes', + province: 'Quebec', + latitude: 49.1167, + longitude: -68.4, + }, + { + city: 'Sainte-Marcelline-de-Kildare', + province: 'Quebec', + latitude: 46.1167, + longitude: -73.6, + }, + { + city: 'Saint-Félix-de-Kingsey', + province: 'Quebec', + latitude: 45.8, + longitude: -72.1833, + }, + { + city: 'Upper Island Cove', + province: 'Newfoundland and Labrador', + latitude: 47.6472, + longitude: -53.2233, + }, + { + city: 'Glenelg', + province: 'New Brunswick', + latitude: 46.9455, + longitude: -65.2893, + }, + { + city: 'Sainte-Élisabeth', + province: 'Quebec', + latitude: 46.0833, + longitude: -73.35, + }, + { + city: 'Ashcroft', + province: 'British Columbia', + latitude: 50.7256, + longitude: -121.2806, + }, + { + city: 'Clarkes Beach', + province: 'Newfoundland and Labrador', + latitude: 47.5447, + longitude: -53.2824, + }, + { + city: 'Saint-Bernard-de-Lacolle', + province: 'Quebec', + latitude: 45.0833, + longitude: -73.4167, + }, + { + city: 'Belledune', + province: 'New Brunswick', + latitude: 47.9, + longitude: -65.8167, + }, + { + city: 'Saint-Guillaume', + province: 'Quebec', + latitude: 45.8833, + longitude: -72.7667, + }, + { + city: 'Venise-en-Québec', + province: 'Quebec', + latitude: 45.0833, + longitude: -73.1333, + }, + { + city: 'Maliotenam', + province: 'Quebec', + latitude: 50.2114, + longitude: -66.1911, + }, + { + city: 'Ripon', + province: 'Quebec', + latitude: 45.7833, + longitude: -75.1, + }, + { + city: 'Hilliers', + province: 'British Columbia', + latitude: 49.3022, + longitude: -124.4727, + }, + { + city: 'Saint-Joseph', + province: 'New Brunswick', + latitude: 47.558, + longitude: -68.3082, + }, + { + city: 'Saint-Paulin', + province: 'Quebec', + latitude: 46.4167, + longitude: -73.0333, + }, + { + city: 'Bon Accord', + province: 'Alberta', + latitude: 53.8328, + longitude: -113.4189, + }, + { + city: 'Saint David', + province: 'New Brunswick', + latitude: 45.2918, + longitude: -67.1983, + }, + { + city: 'Saint-Albert', + province: 'Quebec', + latitude: 46, + longitude: -72.0833, + }, + { + city: 'Matagami', + province: 'Quebec', + latitude: 49.75, + longitude: -77.6333, + }, + { + city: 'Springfield', + province: 'New Brunswick', + latitude: 45.7005, + longitude: -65.8079, + }, + { + city: 'Amherst', + province: 'Quebec', + latitude: 46.05, + longitude: -74.7667, + }, + { + city: 'Notre-Dame-du-Laus', + province: 'Quebec', + latitude: 46.0833, + longitude: -75.6167, + }, + { + city: 'St. George', + province: 'New Brunswick', + latitude: 45.1333, + longitude: -66.8167, + }, + { + city: 'Wembley', + province: 'Alberta', + latitude: 55.1572, + longitude: -119.1392, + }, + { + city: 'Victoria', + province: 'Manitoba', + latitude: 49.6644, + longitude: -98.9153, + }, + { + city: 'Springbrook', + province: 'Alberta', + latitude: 52.1796, + longitude: -113.885, + }, + { + city: 'Saint-Tite-des-Caps', + province: 'Quebec', + latitude: 47.1333, + longitude: -70.7667, + }, + { + city: 'Hudson Bay', + province: 'Saskatchewan', + latitude: 52.851, + longitude: -102.392, + }, + { + city: 'Pinawa', + province: 'Manitoba', + latitude: 50.1707, + longitude: -95.9547, + }, + { + city: 'Brudenell, Lyndoch and Raglan', + province: 'Ontario', + latitude: 45.3167, + longitude: -77.4, + }, + { + city: 'Carlyle', + province: 'Saskatchewan', + latitude: 49.6333, + longitude: -102.2667, + }, + { + city: 'Keremeos', + province: 'British Columbia', + latitude: 49.2025, + longitude: -119.8294, + }, + { + city: 'Val-Joli', + province: 'Quebec', + latitude: 45.6, + longitude: -71.97, + }, + { + city: 'Gold River', + province: 'British Columbia', + latitude: 49.7769, + longitude: -126.0514, + }, + { + city: 'Saint-Casimir', + province: 'Quebec', + latitude: 46.65, + longitude: -72.1333, + }, + { + city: 'Bay Bulls', + province: 'Newfoundland and Labrador', + latitude: 47.3158, + longitude: -52.8103, + }, + { + city: 'Langham', + province: 'Saskatchewan', + latitude: 52.3667, + longitude: -106.9667, + }, + { + city: 'Frenchman Butte', + province: 'Saskatchewan', + latitude: 53.6052, + longitude: -109.4298, + }, + { + city: 'Gordon', + province: 'New Brunswick', + latitude: 46.8363, + longitude: -67.1913, + }, + { + city: 'Kugluktuk', + province: 'Nunavut', + latitude: 67.8055, + longitude: -115.3223, + }, + { + city: 'Saint-Malachie', + province: 'Quebec', + latitude: 46.5333, + longitude: -70.7667, + }, + { + city: 'Southampton', + province: 'New Brunswick', + latitude: 46.0789, + longitude: -67.3124, + }, + { + city: 'Salluit', + province: 'Quebec', + latitude: 62.2013, + longitude: -75.6337, + }, + { + city: 'Pangnirtung', + province: 'Nunavut', + latitude: 66.1436, + longitude: -65.6829, + }, + { + city: 'Saint-Louis-de-Gonzague', + province: 'Quebec', + latitude: 45.2, + longitude: -73.98, + }, + { + city: 'Moosonee', + province: 'Ontario', + latitude: 51.2722, + longitude: -80.6431, + }, + { + city: 'Englehart', + province: 'Ontario', + latitude: 47.8167, + longitude: -79.8667, + }, + { + city: 'Saint-Urbain', + province: 'Quebec', + latitude: 47.55, + longitude: -70.5333, + }, + { + city: 'Tring-Jonction', + province: 'Quebec', + latitude: 46.2667, + longitude: -70.9833, + }, + { + city: 'Nauwigewauk', + province: 'New Brunswick', + latitude: 45.4812, + longitude: -65.8738, + }, + { + city: 'Pointe-à-la-Croix', + province: 'Quebec', + latitude: 48.0167, + longitude: -66.6833, + }, + { + city: 'Denmark', + province: 'New Brunswick', + latitude: 47.1155, + longitude: -67.4771, + }, + { + city: 'Saint-Joachim', + province: 'Quebec', + latitude: 47.05, + longitude: -70.85, + }, + { + city: 'Torch River No. 488', + province: 'Saskatchewan', + latitude: 53.5445, + longitude: -104.4619, + }, + { + city: "Saint-Théodore-d'Acton", + province: 'Quebec', + latitude: 45.6833, + longitude: -72.5833, + }, + { + city: 'Grindrod', + province: 'British Columbia', + latitude: 50.63, + longitude: -119.1314, + }, + { + city: 'L’ Îsle-Verte', + province: 'Quebec', + latitude: 48.0167, + longitude: -69.3333, + }, + { + city: 'Harrison Hot Springs', + province: 'British Columbia', + latitude: 49.3, + longitude: -121.7819, + }, + { + city: 'Palmarolle', + province: 'Quebec', + latitude: 48.6667, + longitude: -79.2, + }, + { + city: 'Henryville', + province: 'Quebec', + latitude: 45.1333, + longitude: -73.1833, + }, + { + city: 'Sussex Corner', + province: 'New Brunswick', + latitude: 45.7122, + longitude: -65.4719, + }, + { + city: 'Saint-Odilon-de-Cranbourne', + province: 'Quebec', + latitude: 46.3667, + longitude: -70.6833, + }, + { + city: 'Pipestone', + province: 'Manitoba', + latitude: 49.6653, + longitude: -101.1444, + }, + { + city: 'Laurierville', + province: 'Quebec', + latitude: 46.3, + longitude: -71.65, + }, + { + city: 'La Doré', + province: 'Quebec', + latitude: 48.72, + longitude: -72.65, + }, + { + city: 'Lac-au-Saumon', + province: 'Quebec', + latitude: 48.4167, + longitude: -67.35, + }, + { + city: 'Wotton', + province: 'Quebec', + latitude: 45.7333, + longitude: -71.8, + }, + { + city: 'Prairie Lakes', + province: 'Manitoba', + latitude: 49.4034, + longitude: -99.6298, + }, + { + city: 'Elk Point', + province: 'Alberta', + latitude: 53.8967, + longitude: -110.8972, + }, + { + city: 'Shellbrook', + province: 'Saskatchewan', + latitude: 53.2167, + longitude: -106.4, + }, + { + city: 'Wemindji', + province: 'Quebec', + latitude: 53.044, + longitude: -78.7384, + }, + { + city: 'Cape Dorset', + province: 'Nunavut', + latitude: 64.2237, + longitude: -76.5405, + }, + { + city: 'Strong', + province: 'Ontario', + latitude: 45.75, + longitude: -79.4, + }, + { + city: 'Lappe', + province: 'Ontario', + latitude: 48.5693, + longitude: -89.3573, + }, + { + city: 'Rivière-Héva', + province: 'Quebec', + latitude: 48.2333, + longitude: -78.2167, + }, + { + city: 'Fort-Coulonge', + province: 'Quebec', + latitude: 45.85, + longitude: -76.7333, + }, + { + city: 'Irishtown-Summerside', + province: 'Newfoundland and Labrador', + latitude: 48.9833, + longitude: -57.95, + }, + { + city: 'Godmanchester', + province: 'Quebec', + latitude: 45.08, + longitude: -74.25, + }, + { + city: 'Macklin', + province: 'Saskatchewan', + latitude: 52.33, + longitude: -109.94, + }, + { + city: 'Armour', + province: 'Ontario', + latitude: 45.6289, + longitude: -79.3436, + }, + { + city: 'Saint-Simon', + province: 'Quebec', + latitude: 45.719, + longitude: -72.8463, + }, + { + city: 'St. François Xavier', + province: 'Manitoba', + latitude: 49.9903, + longitude: -97.6722, + }, + { + city: 'Tingwick', + province: 'Quebec', + latitude: 45.8873, + longitude: -71.9244, + }, + { + city: 'Saint-Aubert', + province: 'Quebec', + latitude: 47.1833, + longitude: -70.2167, + }, + { + city: 'Saint-Mathieu-du-Parc', + province: 'Quebec', + latitude: 46.5667, + longitude: -72.9167, + }, + { + city: 'Wabasca', + province: 'Alberta', + latitude: 55.9855, + longitude: -113.8566, + }, + { + city: 'Ragueneau', + province: 'Quebec', + latitude: 49.0667, + longitude: -68.5333, + }, + { + city: 'Notre-Dame-du-Bon-Conseil', + province: 'Quebec', + latitude: 46, + longitude: -72.35, + }, + { + city: 'Wasagamack', + province: 'Manitoba', + latitude: 53.9056, + longitude: -94.9412, + }, + { + city: 'Saint-Ubalde', + province: 'Quebec', + latitude: 46.75, + longitude: -72.2667, + }, + { + city: 'Creighton', + province: 'Saskatchewan', + latitude: 54.7561, + longitude: -101.8973, + }, + { + city: 'Fortune', + province: 'Newfoundland and Labrador', + latitude: 47.0733, + longitude: -55.8217, + }, + { + city: 'Faraday', + province: 'Ontario', + latitude: 45, + longitude: -77.9167, + }, + { + city: 'Berthier-sur-Mer', + province: 'Quebec', + latitude: 46.9167, + longitude: -70.7333, + }, + { + city: 'Frampton', + province: 'Quebec', + latitude: 46.4667, + longitude: -70.8, + }, + { + city: 'Magnetawan', + province: 'Ontario', + latitude: 45.6667, + longitude: -79.6333, + }, + { + city: 'New Carlisle', + province: 'Quebec', + latitude: 48.0167, + longitude: -65.3333, + }, + { + city: 'Laird No. 404', + province: 'Saskatchewan', + latitude: 52.5696, + longitude: -106.7312, + }, + { + city: 'Petitcodiac', + province: 'New Brunswick', + latitude: 45.9333, + longitude: -65.1667, + }, + { + city: 'Popkum', + province: 'British Columbia', + latitude: 49.1911, + longitude: -121.7553, + }, + { + city: 'Norton', + province: 'New Brunswick', + latitude: 45.6387, + longitude: -65.6955, + }, + { + city: 'Canwood No. 494', + province: 'Saskatchewan', + latitude: 53.4574, + longitude: -106.7768, + }, + { + city: 'Wentworth-Nord', + province: 'Quebec', + latitude: 45.85, + longitude: -74.45, + }, + { + city: 'Bas Caraquet', + province: 'New Brunswick', + latitude: 47.8, + longitude: -64.8333, + }, + { + city: 'Sainte-Ursule', + province: 'Quebec', + latitude: 46.2833, + longitude: -73.0333, + }, + { + city: 'Dawson', + province: 'Yukon', + latitude: 64.0464, + longitude: -139.3893, + }, + { + city: 'Nantes', + province: 'Quebec', + latitude: 45.6333, + longitude: -71.0333, + }, + { + city: 'Lac-aux-Sables', + province: 'Quebec', + latitude: 46.8667, + longitude: -72.4, + }, + { + city: 'Stewiacke', + province: 'Nova Scotia', + latitude: 45.1422, + longitude: -63.3483, + }, + { + city: 'Taylor', + province: 'British Columbia', + latitude: 56.159, + longitude: -120.6878, + }, + { + city: 'Rosser', + province: 'Manitoba', + latitude: 49.99, + longitude: -97.4592, + }, + { + city: 'Estevan No. 5', + province: 'Saskatchewan', + latitude: 49.1308, + longitude: -103.0126, + }, + { + city: 'Falmouth', + province: 'Nova Scotia', + latitude: 44.9967, + longitude: -64.1634, + }, + { + city: 'Vaudreuil-sur-le-Lac', + province: 'Quebec', + latitude: 45.4, + longitude: -74.0333, + }, + { + city: 'Grahamdale', + province: 'Manitoba', + latitude: 51.42, + longitude: -98.3733, + }, + { + city: 'Cardwell', + province: 'New Brunswick', + latitude: 45.7848, + longitude: -65.3037, + }, + { + city: 'Two Hills', + province: 'Alberta', + latitude: 53.715, + longitude: -111.7461, + }, + { + city: 'Spiritwood No. 496', + province: 'Saskatchewan', + latitude: 53.4435, + longitude: -107.4495, + }, + { + city: 'Legal', + province: 'Alberta', + latitude: 53.9492, + longitude: -113.595, + }, + { + city: 'Amulet', + province: 'Quebec', + latitude: 48.2938, + longitude: -79.0274, + }, + { + city: 'Hérouxville', + province: 'Quebec', + latitude: 46.6667, + longitude: -72.6167, + }, + { + city: 'Pointe-des-Cascades', + province: 'Quebec', + latitude: 45.3333, + longitude: -73.9667, + }, + { + city: 'Weldford', + province: 'New Brunswick', + latitude: 46.5221, + longitude: -65.1114, + }, + { + city: 'Reynolds', + province: 'Manitoba', + latitude: 49.7678, + longitude: -95.8842, + }, + { + city: 'St. Laurent', + province: 'Manitoba', + latitude: 50.43, + longitude: -97.7933, + }, + { + city: 'Lions Bay', + province: 'British Columbia', + latitude: 49.4581, + longitude: -123.2369, + }, + { + city: "L'Isle-aux-Allumettes", + province: 'Quebec', + latitude: 45.8667, + longitude: -77.0667, + }, + { + city: 'Emo', + province: 'Ontario', + latitude: 48.6333, + longitude: -93.8333, + }, + { + city: "Sainte-Brigide-d'Iberville", + province: 'Quebec', + latitude: 45.3167, + longitude: -73.0667, + }, + { + city: 'Les Éboulements', + province: 'Quebec', + latitude: 47.4833, + longitude: -70.3167, + }, + { + city: 'Dunsmuir', + province: 'British Columbia', + latitude: 49.3696, + longitude: -124.5772, + }, + { + city: 'Pointe-aux-Outardes', + province: 'Quebec', + latitude: 49.05, + longitude: -68.4333, + }, + { + city: 'Smooth Rock Falls', + province: 'Ontario', + latitude: 49.2833, + longitude: -81.6333, + }, + { + city: 'Oxbow', + province: 'Saskatchewan', + latitude: 49.2333, + longitude: -102.1667, + }, + { + city: 'Telkwa', + province: 'British Columbia', + latitude: 54.6972, + longitude: -127.05, + }, + { + city: 'Gjoa Haven', + province: 'Nunavut', + latitude: 68.6448, + longitude: -95.8912, + }, + { + city: 'Sainte-Barbe', + province: 'Quebec', + latitude: 45.1667, + longitude: -74.2, + }, + { + city: 'Mayerthorpe', + province: 'Alberta', + latitude: 53.9503, + longitude: -115.1336, + }, + { + city: 'Saint-Louis-du-Ha! Ha!', + province: 'Quebec', + latitude: 47.67, + longitude: -68.98, + }, + { + city: 'Powerview-Pine Falls', + province: 'Manitoba', + latitude: 50.5661, + longitude: -96.1981, + }, + { + city: 'Baie Verte', + province: 'Newfoundland and Labrador', + latitude: 49.9167, + longitude: -56.1833, + }, + { + city: 'Saint-Édouard', + province: 'Quebec', + latitude: 45.2333, + longitude: -73.5167, + }, + { + city: 'Charlo', + province: 'New Brunswick', + latitude: 48, + longitude: -66.32, + }, + { + city: 'Hillsborough', + province: 'New Brunswick', + latitude: 45.9052, + longitude: -64.7652, + }, + { + city: 'Bruederheim', + province: 'Alberta', + latitude: 53.8042, + longitude: -112.9278, + }, + { + city: 'Burgeo', + province: 'Newfoundland and Labrador', + latitude: 47.6, + longitude: -57.6333, + }, + { + city: 'Wadena', + province: 'Saskatchewan', + latitude: 51.9458, + longitude: -103.8014, + }, + { + city: 'Richmond', + province: 'New Brunswick', + latitude: 46.0776, + longitude: -67.7248, + }, + { + city: 'Swan Hills', + province: 'Alberta', + latitude: 54.7106, + longitude: -115.4133, + }, + { + city: 'Wilkie', + province: 'Saskatchewan', + latitude: 52.4167, + longitude: -108.7, + }, + { + city: 'Saint-Léonard', + province: 'New Brunswick', + latitude: 47.1625, + longitude: -67.925, + }, + { + city: 'Rivière-Bleue', + province: 'Quebec', + latitude: 47.4333, + longitude: -69.05, + }, + { + city: 'Noyan', + province: 'Quebec', + latitude: 45.0667, + longitude: -73.3, + }, + { + city: 'Ile-à-la-Crosse', + province: 'Saskatchewan', + latitude: 55.45, + longitude: -107.8833, + }, + { + city: 'Landmark', + province: 'Manitoba', + latitude: 49.6711, + longitude: -96.8179, + }, + { + city: 'Saint-Hugues', + province: 'Quebec', + latitude: 45.8, + longitude: -72.8667, + }, + { + city: 'Chisholm', + province: 'Ontario', + latitude: 46.1, + longitude: -79.2333, + }, + { + city: 'Sainte-Anne-du-Sault', + province: 'Quebec', + latitude: 46.1733, + longitude: -72.1415, + }, + { + city: 'La Conception', + province: 'Quebec', + latitude: 46.15, + longitude: -74.7, + }, + { + city: 'Saint-Valère', + province: 'Quebec', + latitude: 46.0667, + longitude: -72.1, + }, + { + city: 'Sorrento', + province: 'British Columbia', + latitude: 50.8832, + longitude: -119.4782, + }, + { + city: 'Lamèque', + province: 'New Brunswick', + latitude: 47.7925, + longitude: -64.6532, + }, + { + city: 'Thessalon', + province: 'Ontario', + latitude: 46.25, + longitude: -83.55, + }, + { + city: "L'Isle-aux-Coudres", + province: 'Quebec', + latitude: 47.4, + longitude: -70.3833, + }, + { + city: 'Nobleford', + province: 'Alberta', + latitude: 49.8822, + longitude: -113.0531, + }, + { + city: 'Larouche', + province: 'Quebec', + latitude: 48.45, + longitude: -71.5167, + }, + { + city: "South Qu'Appelle No. 157", + province: 'Saskatchewan', + latitude: 50.5389, + longitude: -104.0141, + }, + { + city: 'Elton', + province: 'Manitoba', + latitude: 49.975, + longitude: -99.8658, + }, + { + city: 'Lorrainville', + province: 'Quebec', + latitude: 47.3613, + longitude: -79.3382, + }, + { + city: 'Conestogo', + province: 'Ontario', + latitude: 43.5441, + longitude: -80.4997, + }, + { + city: 'Upham', + province: 'New Brunswick', + latitude: 45.5083, + longitude: -65.6618, + }, + { + city: 'St.-Charles', + province: 'Ontario', + latitude: 46.3422, + longitude: -80.4497, + }, + { + city: 'Sainte-Lucie-des-Laurentides', + province: 'Quebec', + latitude: 46.13, + longitude: -74.18, + }, + { + city: 'Saint-Alexis', + province: 'Quebec', + latitude: 45.9333, + longitude: -73.6167, + }, + { + city: 'Gillam', + province: 'Manitoba', + latitude: 56.3472, + longitude: -94.7078, + }, + { + city: 'Roxton Falls', + province: 'Quebec', + latitude: 45.5667, + longitude: -72.5167, + }, + { + city: 'Montcalm', + province: 'Manitoba', + latitude: 49.1775, + longitude: -97.3247, + }, + { + city: 'Clarendon', + province: 'Quebec', + latitude: 45.65, + longitude: -76.5167, + }, + { + city: 'Mervin No. 499', + province: 'Saskatchewan', + latitude: 53.5455, + longitude: -108.8762, + }, + { + city: 'Saint-Ludger', + province: 'Quebec', + latitude: 45.75, + longitude: -70.7, + }, + { + city: 'Coldwell', + province: 'Manitoba', + latitude: 50.6389, + longitude: -98.0417, + }, + { + city: 'Saint-Arsène', + province: 'Quebec', + latitude: 47.9167, + longitude: -69.4333, + }, + { + city: 'Racine', + province: 'Quebec', + latitude: 45.5, + longitude: -72.25, + }, + { + city: 'Saint-Majorique-de-Grantham', + province: 'Quebec', + latitude: 45.9333, + longitude: -72.5833, + }, + { + city: 'Saint-Zénon', + province: 'Quebec', + latitude: 46.55, + longitude: -73.8167, + }, + { + city: 'Saint-Armand', + province: 'Quebec', + latitude: 45.0333, + longitude: -73.05, + }, + { + city: 'Saint-Édouard-de-Lotbinière', + province: 'Quebec', + latitude: 46.5667, + longitude: -71.8333, + }, + { + city: 'Alonsa', + province: 'Manitoba', + latitude: 50.9794, + longitude: -99.0796, + }, + { + city: 'Listuguj', + province: 'Quebec', + latitude: 48.0609, + longitude: -66.7491, + }, + { + city: 'Bowden', + province: 'Alberta', + latitude: 51.9306, + longitude: -114.0256, + }, + { + city: 'St. Joseph', + province: 'Ontario', + latitude: 46.2667, + longitude: -84, + }, + { + city: 'Osler', + province: 'Saskatchewan', + latitude: 52.37, + longitude: -106.54, + }, + { + city: 'Saint-Hubert-de-Rivière-du-Loup', + province: 'Quebec', + latitude: 47.8167, + longitude: -69.15, + }, + { + city: 'Saint-Jude', + province: 'Quebec', + latitude: 45.7667, + longitude: -72.9833, + }, + { + city: 'Dildo', + province: 'Newfoundland and Labrador', + latitude: 47.5685, + longitude: -53.5471, + }, + { + city: 'La Minerve', + province: 'Quebec', + latitude: 46.25, + longitude: -74.9333, + }, + { + city: 'Lanigan', + province: 'Saskatchewan', + latitude: 51.85, + longitude: -105.0333, + }, + { + city: 'Lajord No. 128', + province: 'Saskatchewan', + latitude: 50.1965, + longitude: -104.2507, + }, + { + city: 'Moonbeam', + province: 'Ontario', + latitude: 49.35, + longitude: -82.15, + }, + { + city: 'Notre-Dame-des-Pins', + province: 'Quebec', + latitude: 46.1833, + longitude: -70.7167, + }, + { + city: 'Saint-Alban', + province: 'Quebec', + latitude: 46.7167, + longitude: -72.0833, + }, + { + city: 'Saint-Pierre-les-Becquets', + province: 'Quebec', + latitude: 46.5, + longitude: -72.2, + }, + { + city: 'Arborg', + province: 'Manitoba', + latitude: 50.9075, + longitude: -97.2182, + }, + { + city: 'Vauxhall', + province: 'Alberta', + latitude: 50.0689, + longitude: -112.0975, + }, + { + city: 'Bayfield', + province: 'Ontario', + latitude: 43.5615, + longitude: -81.6983, + }, + { + city: 'Beaver River', + province: 'Saskatchewan', + latitude: 54.3531, + longitude: -109.5575, + }, + { + city: 'Irricana', + province: 'Alberta', + latitude: 51.3189, + longitude: -113.6106, + }, + { + city: 'Labrecque', + province: 'Quebec', + latitude: 48.6667, + longitude: -71.5333, + }, + { + city: 'New Bandon', + province: 'New Brunswick', + latitude: 47.6912, + longitude: -65.29, + }, + { + city: 'Wemotaci', + province: 'Quebec', + latitude: 47.9219, + longitude: -73.7872, + }, + { + city: 'Sainte-Hénédine', + province: 'Quebec', + latitude: 46.55, + longitude: -70.9833, + }, + { + city: "L'Anse-Saint-Jean", + province: 'Quebec', + latitude: 48.2333, + longitude: -70.2, + }, + { + city: 'Bassano', + province: 'Alberta', + latitude: 50.7833, + longitude: -112.4667, + }, + { + city: 'Parrsboro', + province: 'Nova Scotia', + latitude: 45.3998, + longitude: -64.3312, + }, + { + city: 'Kaleden', + province: 'British Columbia', + latitude: 49.3926, + longitude: -119.5955, + }, + { + city: "St. George's", + province: 'Newfoundland and Labrador', + latitude: 48.4275, + longitude: -58.4778, + }, + { + city: 'Fort Simpson', + province: 'Northwest Territories', + latitude: 61.8082, + longitude: -121.3199, + }, + { + city: 'Akwesasne', + province: 'Quebec', + latitude: 45.0155, + longitude: -74.5769, + }, + { + city: 'L’Avenir', + province: 'Quebec', + latitude: 45.7667, + longitude: -72.3, + }, + { + city: 'Ignace', + province: 'Ontario', + latitude: 49.4167, + longitude: -91.6667, + }, + { + city: 'Claremont', + province: 'Ontario', + latitude: 43.9741, + longitude: -79.1316, + }, + { + city: 'Teulon', + province: 'Manitoba', + latitude: 50.3858, + longitude: -97.2611, + }, + { + city: 'Peel', + province: 'New Brunswick', + latitude: 46.4058, + longitude: -67.5278, + }, + { + city: 'Musquash', + province: 'New Brunswick', + latitude: 45.1836, + longitude: -66.3514, + }, + { + city: 'Notre-Dame-du-Portage', + province: 'Quebec', + latitude: 47.7667, + longitude: -69.6167, + }, + { + city: 'St. Lawrence', + province: 'Newfoundland and Labrador', + latitude: 46.9244, + longitude: -55.3928, + }, + { + city: 'Oxford', + province: 'Nova Scotia', + latitude: 45.7306, + longitude: -63.8733, + }, + { + city: 'Minto-Odanah', + province: 'Manitoba', + latitude: 50.2406, + longitude: -99.8056, + }, + { + city: "St. Alban's", + province: 'Newfoundland and Labrador', + latitude: 47.8753, + longitude: -55.8414, + }, + { + city: 'Saint James', + province: 'New Brunswick', + latitude: 45.3822, + longitude: -67.3427, + }, + { + city: "Saint-Norbert-d'Arthabaska", + province: 'Quebec', + latitude: 46.1, + longitude: -71.8167, + }, + { + city: 'Manning', + province: 'Alberta', + latitude: 56.9142, + longitude: -117.6272, + }, + { + city: 'Glenella-Lansdowne', + province: 'Manitoba', + latitude: 50.4163, + longitude: -99.2097, + }, + { + city: 'Saint-Hilarion', + province: 'Quebec', + latitude: 47.5667, + longitude: -70.4, + }, + { + city: 'Saint-Siméon', + province: 'Quebec', + latitude: 48.0667, + longitude: -65.5667, + }, + { + city: 'Saint-Barnabé', + province: 'Quebec', + latitude: 46.4, + longitude: -72.8833, + }, + { + city: 'Sainte-Félicité', + province: 'Quebec', + latitude: 48.9, + longitude: -67.3333, + }, + { + city: 'Two Borders', + province: 'Manitoba', + latitude: 49.2668, + longitude: -101.1124, + }, + { + city: 'Queensbury', + province: 'New Brunswick', + latitude: 45.9918, + longitude: -67.0632, + }, + { + city: 'Bury', + province: 'Quebec', + latitude: 45.4667, + longitude: -71.5, + }, + { + city: 'Lac-Bouchette', + province: 'Quebec', + latitude: 48.25, + longitude: -72.18, + }, + { + city: 'Saint-Lazare-de-Bellechasse', + province: 'Quebec', + latitude: 46.65, + longitude: -70.8, + }, + { + city: 'Saint-Michel-du-Squatec', + province: 'Quebec', + latitude: 47.88, + longitude: -68.72, + }, + { + city: 'Saint-Joachim-de-Shefford', + province: 'Quebec', + latitude: 45.45, + longitude: -72.5333, + }, + { + city: 'St-Pierre-Jolys', + province: 'Manitoba', + latitude: 49.4403, + longitude: -96.9844, + }, + { + city: 'Grand-Remous', + province: 'Quebec', + latitude: 46.6167, + longitude: -75.9, + }, + { + city: 'Saint-Gabriel-de-Rimouski', + province: 'Quebec', + latitude: 48.4209, + longitude: -68.1791, + }, + { + city: 'Armstrong', + province: 'Ontario', + latitude: 47.7083, + longitude: -79.825, + }, + { + city: 'Rogersville', + province: 'New Brunswick', + latitude: 46.7167, + longitude: -65.4167, + }, + { + city: 'Langenburg', + province: 'Saskatchewan', + latitude: 50.8333, + longitude: -101.7, + }, + { + city: 'Sainte-Marie-Salomé', + province: 'Quebec', + latitude: 45.9333, + longitude: -73.5, + }, + { + city: 'Moose Jaw No. 161', + province: 'Saskatchewan', + latitude: 50.4433, + longitude: -105.5091, + }, + { + city: 'Saint-Cyprien', + province: 'Quebec', + latitude: 47.9, + longitude: -69.0167, + }, + { + city: 'Maidstone', + province: 'Saskatchewan', + latitude: 53.092, + longitude: -109.294, + }, + { + city: 'Très-Saint-Sacrement', + province: 'Quebec', + latitude: 45.1833, + longitude: -73.85, + }, + { + city: 'Battle River No. 438', + province: 'Saskatchewan', + latitude: 52.7343, + longitude: -108.4452, + }, + { + city: 'Miltonvale Park', + province: 'Prince Edward Island', + latitude: 46.318, + longitude: -63.237, + }, + { + city: 'McAdam', + province: 'New Brunswick', + latitude: 45.5944, + longitude: -67.3258, + }, + { + city: 'Saints-Anges', + province: 'Quebec', + latitude: 46.4167, + longitude: -70.8833, + }, + { + city: 'Saint-Urbain-Premier', + province: 'Quebec', + latitude: 45.22, + longitude: -73.73, + }, + { + city: 'Centreville-Wareham-Trinity', + province: 'Newfoundland and Labrador', + latitude: 48.9879, + longitude: -53.9069, + }, + { + city: 'Alberton', + province: 'Prince Edward Island', + latitude: 46.8167, + longitude: -64.0667, + }, + { + city: 'Winnipeg Beach', + province: 'Manitoba', + latitude: 50.5058, + longitude: -96.9742, + }, + { + city: 'Sainte-Agathe-de-Lotbinière', + province: 'Quebec', + latitude: 46.3833, + longitude: -71.4167, + }, + { + city: 'Salmo', + province: 'British Columbia', + latitude: 49.1942, + longitude: -117.2778, + }, + { + city: 'Kipling', + province: 'Saskatchewan', + latitude: 50.1015, + longitude: -102.6324, + }, + { + city: 'Sagamok', + province: 'Ontario', + latitude: 46.1529, + longitude: -82.2072, + }, + { + city: 'Trécesson', + province: 'Quebec', + latitude: 48.65, + longitude: -78.3167, + }, + { + city: 'Tara', + province: 'Ontario', + latitude: 44.4793, + longitude: -81.1445, + }, + { + city: 'Grande-Vallée', + province: 'Quebec', + latitude: 49.2167, + longitude: -65.1333, + }, + { + city: 'Bertrand', + province: 'New Brunswick', + latitude: 47.7622, + longitude: -65.0686, + }, + { + city: 'Newcastle', + province: 'New Brunswick', + latitude: 47.1725, + longitude: -65.5551, + }, + { + city: 'Mont-Carmel', + province: 'Quebec', + latitude: 47.4397, + longitude: -69.8586, + }, + { + city: 'Saint Martins', + province: 'New Brunswick', + latitude: 45.4563, + longitude: -65.4395, + }, + { + city: 'Saint-Eugène', + province: 'Quebec', + latitude: 45.8, + longitude: -72.7, + }, + { + city: 'Notre-Dame-des-Neiges', + province: 'Quebec', + latitude: 48.1167, + longitude: -69.1667, + }, + { + city: 'Saint-André', + province: 'New Brunswick', + latitude: 47.1392, + longitude: -67.7444, + }, + { + city: 'Centreville', + province: 'Nova Scotia', + latitude: 45.13, + longitude: -64.5224, + }, + { + city: 'Roland', + province: 'Manitoba', + latitude: 49.3547, + longitude: -97.8997, + }, + { + city: 'Saint-Léon-de-Standon', + province: 'Quebec', + latitude: 46.4833, + longitude: -70.6167, + }, + { + city: 'Saint-Modeste', + province: 'Quebec', + latitude: 47.8333, + longitude: -69.4, + }, + { + city: 'Carnduff', + province: 'Saskatchewan', + latitude: 49.167, + longitude: -101.783, + }, + { + city: 'Carling', + province: 'Ontario', + latitude: 45.4333, + longitude: -80.2167, + }, + { + city: 'Eckville', + province: 'Alberta', + latitude: 52.3622, + longitude: -114.3614, + }, + { + city: 'Nain', + province: 'Newfoundland and Labrador', + latitude: 56.5422, + longitude: -61.6928, + }, + { + city: 'Hillsburgh', + province: 'Ontario', + latitude: 43.7914, + longitude: -80.1354, + }, + { + city: 'Foam Lake', + province: 'Saskatchewan', + latitude: 51.65, + longitude: -103.5333, + }, + { + city: 'Sainte-Sabine', + province: 'Quebec', + latitude: 45.2333, + longitude: -73.0167, + }, + { + city: 'Saint-Maxime-du-Mont-Louis', + province: 'Quebec', + latitude: 49.2333, + longitude: -65.7333, + }, + { + city: 'Blanc-Sablon', + province: 'Quebec', + latitude: 51.4167, + longitude: -57.1333, + }, + { + city: 'Cobalt', + province: 'Ontario', + latitude: 47.4, + longitude: -79.6833, + }, + { + city: 'Gravelbourg', + province: 'Saskatchewan', + latitude: 49.874, + longitude: -106.555, + }, + { + city: 'South River', + province: 'Ontario', + latitude: 45.8417, + longitude: -79.375, + }, + { + city: 'Hudson Bay No. 394', + province: 'Saskatchewan', + latitude: 53.0295, + longitude: -102.3122, + }, + { + city: 'McKellar', + province: 'Ontario', + latitude: 45.4833, + longitude: -79.85, + }, + { + city: 'Frelighsburg', + province: 'Quebec', + latitude: 45.0461, + longitude: -72.8106, + }, + { + city: 'Buffalo Narrows', + province: 'Saskatchewan', + latitude: 55.8769, + longitude: -108.5244, + }, + { + city: 'Ayer’s Cliff', + province: 'Quebec', + latitude: 45.1667, + longitude: -72.05, + }, + { + city: 'Les Méchins', + province: 'Quebec', + latitude: 49, + longitude: -66.9833, + }, + { + city: 'Sainte-Marguerite', + province: 'Quebec', + latitude: 46.5167, + longitude: -70.9333, + }, + { + city: 'Saint-Claude', + province: 'Quebec', + latitude: 45.6667, + longitude: -71.9833, + }, + { + city: 'Air Ronge', + province: 'Saskatchewan', + latitude: 55.0872, + longitude: -105.3318, + }, + { + city: 'Chipman', + province: 'New Brunswick', + latitude: 46.171, + longitude: -65.884, + }, + { + city: 'Girardville', + province: 'Quebec', + latitude: 49, + longitude: -72.55, + }, + { + city: 'Saint-Bruno-de-Guigues', + province: 'Quebec', + latitude: 47.4667, + longitude: -79.4333, + }, + { + city: 'Grenfell', + province: 'Saskatchewan', + latitude: 50.4167, + longitude: -102.9167, + }, + { + city: 'Dorchester', + province: 'New Brunswick', + latitude: 45.9016, + longitude: -64.5161, + }, + { + city: 'South Algonquin', + province: 'Ontario', + latitude: 45.4967, + longitude: -78.0239, + }, + { + city: 'Windermere', + province: 'British Columbia', + latitude: 50.4856, + longitude: -115.9948, + }, + { + city: 'Saint-Narcisse-de-Beaurivage', + province: 'Quebec', + latitude: 46.4833, + longitude: -71.2333, + }, + { + city: 'Saint-René-de-Matane', + province: 'Quebec', + latitude: 48.7, + longitude: -67.3833, + }, + { + city: "Sainte-Jeanne-d'Arc", + province: 'Quebec', + latitude: 48.8575, + longitude: -72.0939, + }, + { + city: 'Plaisance', + province: 'Quebec', + latitude: 45.6167, + longitude: -75.1167, + }, + { + city: 'Roxton-Sud', + province: 'Quebec', + latitude: 45.5521, + longitude: -72.5265, + }, + { + city: 'St. Louis No. 431', + province: 'Saskatchewan', + latitude: 52.8277, + longitude: -105.7873, + }, + { + city: 'Youbou', + province: 'British Columbia', + latitude: 48.8562, + longitude: -124.1731, + }, + { + city: 'Duchess', + province: 'Alberta', + latitude: 50.7333, + longitude: -111.9, + }, + { + city: 'Saint-Frédéric', + province: 'Quebec', + latitude: 46.3, + longitude: -70.9667, + }, + { + city: 'Viking', + province: 'Alberta', + latitude: 53.0953, + longitude: -111.7769, + }, + { + city: 'Sioux Narrows-Nestor Falls', + province: 'Ontario', + latitude: 49.4, + longitude: -94.08, + }, + { + city: 'Whitecourt', + province: 'Alberta', + latitude: 54.1417, + longitude: -115.6833, + }, + { + city: 'Repulse Bay', + province: 'Nunavut', + latitude: 66.5628, + longitude: -86.3186, + }, + { + city: 'Montréal-Est', + province: 'Quebec', + latitude: 45.63, + longitude: -73.52, + }, + { + city: 'King', + province: 'Ontario', + latitude: 44.0463, + longitude: -79.6044, + }, + { + city: 'Regina Beach', + province: 'Saskatchewan', + latitude: 50.79, + longitude: -104.99, + }, + { + city: 'Saint-Patrice-de-Beaurivage', + province: 'Quebec', + latitude: 46.4167, + longitude: -71.2333, + }, + { + city: 'Ootischenia', + province: 'British Columbia', + latitude: 49.2916, + longitude: -117.6323, + }, + { + city: 'Hensall', + province: 'Ontario', + latitude: 43.4345, + longitude: -81.504, + }, + { + city: 'Bentley', + province: 'Alberta', + latitude: 52.4667, + longitude: -114.05, + }, + { + city: 'Durham', + province: 'New Brunswick', + latitude: 47.7631, + longitude: -66.0849, + }, + { + city: 'Sainte-Marthe', + province: 'Quebec', + latitude: 45.4, + longitude: -74.3, + }, + { + city: 'Notre-Dame-du-Nord', + province: 'Quebec', + latitude: 47.6, + longitude: -79.4833, + }, + { + city: 'Pinehouse', + province: 'Saskatchewan', + latitude: 55.5136, + longitude: -106.5986, + }, + { + city: 'Saint-Aimé-des-Lacs', + province: 'Quebec', + latitude: 47.6833, + longitude: -70.3, + }, + { + city: 'Lac-Drolet', + province: 'Quebec', + latitude: 45.72, + longitude: -70.85, + }, + { + city: 'Preeceville', + province: 'Saskatchewan', + latitude: 51.958, + longitude: -102.6673, + }, + { + city: 'Maple Creek No. 111', + province: 'Saskatchewan', + latitude: 49.8044, + longitude: -109.6508, + }, + { + city: "Harbour Main-Chapel's Cove-Lakeview", + province: 'Newfoundland and Labrador', + latitude: 47.4337, + longitude: -53.1458, + }, + { + city: 'Saint-Wenceslas', + province: 'Quebec', + latitude: 46.1667, + longitude: -72.3333, + }, + { + city: 'Weyburn No. 67', + province: 'Saskatchewan', + latitude: 49.6535, + longitude: -103.8348, + }, + { + city: 'Birch Hills', + province: 'Saskatchewan', + latitude: 52.9833, + longitude: -105.4333, + }, + { + city: 'Wedgeport', + province: 'Nova Scotia', + latitude: 43.7323, + longitude: -65.9797, + }, + { + city: 'Kerrobert', + province: 'Saskatchewan', + latitude: 51.92, + longitude: -109.1272, + }, + { + city: 'Havelock', + province: 'New Brunswick', + latitude: 45.9523, + longitude: -65.3885, + }, + { + city: 'Eston', + province: 'Saskatchewan', + latitude: 51.15, + longitude: -108.75, + }, + { + city: 'Sainte-Geneviève-de-Batiscan', + province: 'Quebec', + latitude: 46.5333, + longitude: -72.3333, + }, + { + city: 'Saint-Justin', + province: 'Quebec', + latitude: 46.25, + longitude: -73.0833, + }, + { + city: 'Saint-Norbert', + province: 'Quebec', + latitude: 46.1667, + longitude: -73.3167, + }, + { + city: 'Schreiber', + province: 'Ontario', + latitude: 48.8167, + longitude: -87.2667, + }, + { + city: 'Trochu', + province: 'Alberta', + latitude: 51.8236, + longitude: -113.2328, + }, + { + city: 'Botsford', + province: 'New Brunswick', + latitude: 46.1145, + longitude: -63.9804, + }, + { + city: 'Riviere-Ouelle', + province: 'Quebec', + latitude: 47.4333, + longitude: -70.0167, + }, + { + city: 'Greenwich', + province: 'New Brunswick', + latitude: 45.5112, + longitude: -66.1229, + }, + { + city: 'Stukely-Sud', + province: 'Quebec', + latitude: 45.3167, + longitude: -72.4167, + }, + { + city: 'Saint-Georges-de-Clarenceville', + province: 'Quebec', + latitude: 45.0667, + longitude: -73.25, + }, + { + city: 'Sainte-Thérèse-de-Gaspé', + province: 'Quebec', + latitude: 48.4167, + longitude: -64.4167, + }, + { + city: 'Beachburg', + province: 'Ontario', + latitude: 45.7303, + longitude: -76.8559, + }, + { + city: 'Desbiens', + province: 'Quebec', + latitude: 48.4167, + longitude: -71.95, + }, + { + city: 'Clyde River', + province: 'Nunavut', + latitude: 70.4632, + longitude: -68.4822, + }, + { + city: 'La Macaza', + province: 'Quebec', + latitude: 46.3667, + longitude: -74.7667, + }, + { + city: 'Souris', + province: 'Prince Edward Island', + latitude: 46.3554, + longitude: -62.2542, + }, + { + city: 'Kindersley No. 290', + province: 'Saskatchewan', + latitude: 51.4894, + longitude: -109.0979, + }, + { + city: 'Laird', + province: 'Ontario', + latitude: 46.3833, + longitude: -84.0667, + }, + { + city: 'Falher', + province: 'Alberta', + latitude: 55.7372, + longitude: -117.2014, + }, + { + city: 'Saint-Vallier', + province: 'Quebec', + latitude: 46.8833, + longitude: -70.8167, + }, + { + city: 'Coleraine', + province: 'Quebec', + latitude: 45.9649, + longitude: -71.3734, + }, + { + city: 'Melita', + province: 'Manitoba', + latitude: 49.2681, + longitude: -100.9958, + }, + { + city: 'Noonan', + province: 'New Brunswick', + latitude: 45.9544, + longitude: -66.4868, + }, + { + city: 'Sainte-Pétronille', + province: 'Quebec', + latitude: 46.85, + longitude: -71.1333, + }, + { + city: 'Delisle', + province: 'Saskatchewan', + latitude: 51.9254, + longitude: -107.1333, + }, + { + city: 'Bristol', + province: 'Quebec', + latitude: 45.5333, + longitude: -76.4667, + }, + { + city: 'Mahone Bay', + province: 'Nova Scotia', + latitude: 44.4489, + longitude: -64.3819, + }, + { + city: 'Waldheim', + province: 'Saskatchewan', + latitude: 52.65, + longitude: -106.6167, + }, + { + city: 'Saint-Sylvestre', + province: 'Quebec', + latitude: 46.3667, + longitude: -71.2333, + }, + { + city: 'Taloyoak', + province: 'Nunavut', + latitude: 69.5554, + longitude: -93.4972, + }, + { + city: 'Onoway', + province: 'Alberta', + latitude: 53.7011, + longitude: -114.1981, + }, + { + city: 'Saint-Stanislas', + province: 'Quebec', + latitude: 46.6167, + longitude: -72.4, + }, + { + city: 'Malpeque', + province: 'Prince Edward Island', + latitude: 46.5, + longitude: -63.6667, + }, + { + city: 'Plantagenet', + province: 'Ontario', + latitude: 45.5321, + longitude: -74.9956, + }, + { + city: 'Longue-Rive', + province: 'Quebec', + latitude: 48.55, + longitude: -69.25, + }, + { + city: 'Argyle', + province: 'Manitoba', + latitude: 49.3697, + longitude: -99.1506, + }, + { + city: 'Davidson', + province: 'Saskatchewan', + latitude: 51.2667, + longitude: -105.9667, + }, + { + city: 'Plaster Rock', + province: 'New Brunswick', + latitude: 46.8833, + longitude: -67.3833, + }, + { + city: 'Wilmot', + province: 'New Brunswick', + latitude: 46.3463, + longitude: -67.7099, + }, + { + city: 'Valemount', + province: 'British Columbia', + latitude: 52.8284, + longitude: -119.2659, + }, + { + city: 'Saint-Léonard-de-Portneuf', + province: 'Quebec', + latitude: 46.8833, + longitude: -71.9167, + }, + { + city: 'Alberta Beach', + province: 'Alberta', + latitude: 53.6767, + longitude: -114.35, + }, + { + city: 'Saint-Narcisse-de-Rimouski', + province: 'Quebec', + latitude: 48.28, + longitude: -68.43, + }, + { + city: 'Saint-Bonaventure', + province: 'Quebec', + latitude: 45.9667, + longitude: -72.6833, + }, + { + city: 'Longlaketon No. 219', + province: 'Saskatchewan', + latitude: 50.9386, + longitude: -104.6913, + }, + { + city: 'Papineau-Cameron', + province: 'Ontario', + latitude: 46.3, + longitude: -78.7333, + }, + { + city: 'Assiginack', + province: 'Ontario', + latitude: 45.7333, + longitude: -81.8, + }, + { + city: 'Brébeuf', + province: 'Quebec', + latitude: 46.0667, + longitude: -74.6667, + }, + { + city: 'Hudson Hope', + province: 'British Columbia', + latitude: 56.0316, + longitude: -121.9057, + }, + { + city: 'Prince', + province: 'Ontario', + latitude: 46.5333, + longitude: -84.5, + }, + { + city: 'Baie-du-Febvre', + province: 'Quebec', + latitude: 46.13, + longitude: -72.72, + }, + { + city: 'Durham-Sud', + province: 'Quebec', + latitude: 45.6667, + longitude: -72.3333, + }, + { + city: 'Melbourne', + province: 'Quebec', + latitude: 45.58, + longitude: -72.17, + }, + { + city: 'Nipawin No. 487', + province: 'Saskatchewan', + latitude: 53.2881, + longitude: -104.0544, + }, + { + city: 'Duck Lake No. 463', + province: 'Saskatchewan', + latitude: 52.9596, + longitude: -106.2089, + }, + { + city: 'Oyen', + province: 'Alberta', + latitude: 51.3522, + longitude: -110.4739, + }, +]; diff --git a/src/reducers/accountPageReducer.ts b/src/reducers/accountPageReducer.ts new file mode 100644 index 0000000..6a7607a --- /dev/null +++ b/src/reducers/accountPageReducer.ts @@ -0,0 +1,52 @@ +export interface AccountPageState { + accountInfoOpen: boolean; + securityOpen: boolean; + deleteAccountOpen: boolean; +} + +export type AccountPageAction = + | { type: 'TOGGLE_ACCOUNT_INFO_VISIBILITY' } + | { type: 'TOGGLE_SECURITY_VISIBILITY' } + | { type: 'TOGGLE_DELETE_ACCOUNT_VISIBILITY' } + | { type: 'CLOSE_ALL' }; + +const accountPageReducer = ( + state: AccountPageState, + action: AccountPageAction, +): AccountPageState => { + switch (action.type) { + case 'TOGGLE_ACCOUNT_INFO_VISIBILITY': { + return { + accountInfoOpen: !state.accountInfoOpen, + securityOpen: false, + deleteAccountOpen: false, + }; + } + case 'TOGGLE_DELETE_ACCOUNT_VISIBILITY': { + return { + accountInfoOpen: false, + securityOpen: false, + deleteAccountOpen: !state.deleteAccountOpen, + }; + } + case 'TOGGLE_SECURITY_VISIBILITY': { + return { + accountInfoOpen: false, + securityOpen: !state.securityOpen, + deleteAccountOpen: false, + }; + } + case 'CLOSE_ALL': { + return { + accountInfoOpen: false, + securityOpen: false, + deleteAccountOpen: false, + }; + } + default: { + throw new Error('Invalid action type.'); + } + } +}; + +export default accountPageReducer; diff --git a/src/services/User/sendConfirmationEmail.ts b/src/services/User/sendConfirmationEmail.ts index 8abcfed..4cf6e19 100644 --- a/src/services/User/sendConfirmationEmail.ts +++ b/src/services/User/sendConfirmationEmail.ts @@ -5,6 +5,7 @@ import Welcome from '@/emails/Welcome'; import { render } from '@react-email/render'; import { z } from 'zod'; import { BASE_URL } from '@/config/env'; +import { ReactElement } from 'react'; import GetUserSchema from './schema/GetUserSchema'; type UserSchema = z.infer; @@ -17,8 +18,10 @@ const sendConfirmationEmail = async ({ id, username, email }: UserSchema) => { const url = `${BASE_URL}/users/confirm?token=${confirmationToken}`; const address = email; - const html = render(Welcome({ name, url, subject })!); - const text = render(Welcome({ name, url, subject })!, { plainText: true }); + const component = Welcome({ name, url, subject })! as ReactElement; + + const html = render(component); + const text = render(component, { plainText: true }); await sendEmail({ address, subject, text, html }); }; diff --git a/vercel.json b/vercel.json index 05bb8c2..d1002a2 100644 --- a/vercel.json +++ b/vercel.json @@ -1,3 +1,4 @@ { - "buildCommand": "npx prisma generate && npx prisma migrate deploy && next build" + "buildCommand": "npx prisma generate && npx prisma migrate deploy && next build", + "installCommand": "npm install --legacy-peer-deps" }