From 87451f3d191647e3e8faf2a56d4559add2a54d13 Mon Sep 17 00:00:00 2001 From: AminGhasempoor Date: Wed, 24 Dec 2025 12:04:45 +0330 Subject: [PATCH] add pwa --- next.config.ts | 19 +- package.json | 1 + pnpm-lock.yaml | 250 ++++++++ public/sw.js | 821 ++++++++++++++++++++++++++ public/workbox-24ed2e00.js | 1115 ++++++++++++++++++++++++++++++++++++ 5 files changed, 2202 insertions(+), 4 deletions(-) create mode 100644 public/sw.js create mode 100644 public/workbox-24ed2e00.js diff --git a/next.config.ts b/next.config.ts index 618f16c..a0a4988 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,18 @@ -import { NextConfig } from "next"; +import type { NextConfig } from "next"; import createNextIntlPlugin from "next-intl/plugin"; - -const nextConfig: NextConfig = {}; +import nextPWA from "next-pwa"; const withNextIntl = createNextIntlPlugin(); -export default withNextIntl(nextConfig); + +const withPWA = nextPWA({ + dest: "public", + disable: process.env.NODE_ENV === "development", + register: true, + skipWaiting: true, + navigateFallback: "/offline.html", +}); + +const nextConfig: NextConfig = {}; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore -- no type for intl +export default withPWA(withNextIntl(nextConfig)); diff --git a/package.json b/package.json index c4689a0..cebb40c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "devDependencies": { "@tailwindcss/postcss": "^4", "@types/js-cookie": "^3.0.6", + "@types/next-pwa": "^5.6.9", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d51e7b1..245c31a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,6 +104,9 @@ importers: "@types/js-cookie": specifier: ^3.0.6 version: 3.0.6 + "@types/next-pwa": + specifier: ^5.6.9 + version: 5.6.9(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) "@types/node": specifier: ^20 version: 20.19.27 @@ -1556,6 +1559,12 @@ packages: integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, } + "@next/env@13.5.11": + resolution: + { + integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==, + } + "@next/env@16.1.1": resolution: { @@ -1568,6 +1577,15 @@ packages: integrity: sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw==, } + "@next/swc-darwin-arm64@13.5.9": + resolution: + { + integrity: sha512-pVyd8/1y1l5atQRvOaLOvfbmRwefxLhqQOzYo/M7FQ5eaRwA1+wuCn7t39VwEgDd7Aw1+AIWwd+MURXUeXhwDw==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [darwin] + "@next/swc-darwin-arm64@16.1.1": resolution: { @@ -1577,6 +1595,15 @@ packages: cpu: [arm64] os: [darwin] + "@next/swc-darwin-x64@13.5.9": + resolution: + { + integrity: sha512-DwdeJqP7v8wmoyTWPbPVodTwCybBZa02xjSJ6YQFIFZFZ7dFgrieKW4Eo0GoIcOJq5+JxkQyejmI+8zwDp3pwA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [darwin] + "@next/swc-darwin-x64@16.1.1": resolution: { @@ -1586,6 +1613,15 @@ packages: cpu: [x64] os: [darwin] + "@next/swc-linux-arm64-gnu@13.5.9": + resolution: + { + integrity: sha512-wdQsKsIsGSNdFojvjW3Ozrh8Q00+GqL3wTaMjDkQxVtRbAqfFBtrLPO0IuWChVUP2UeuQcHpVeUvu0YgOP00+g==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + "@next/swc-linux-arm64-gnu@16.1.1": resolution: { @@ -1595,6 +1631,15 @@ packages: cpu: [arm64] os: [linux] + "@next/swc-linux-arm64-musl@13.5.9": + resolution: + { + integrity: sha512-6VpS+bodQqzOeCwGxoimlRoosiWlSc0C224I7SQWJZoyJuT1ChNCo+45QQH+/GtbR/s7nhaUqmiHdzZC9TXnXA==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + "@next/swc-linux-arm64-musl@16.1.1": resolution: { @@ -1604,6 +1649,15 @@ packages: cpu: [arm64] os: [linux] + "@next/swc-linux-x64-gnu@13.5.9": + resolution: + { + integrity: sha512-XxG3yj61WDd28NA8gFASIR+2viQaYZEFQagEodhI/R49gXWnYhiflTeeEmCn7Vgnxa/OfK81h1gvhUZ66lozpw==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + "@next/swc-linux-x64-gnu@16.1.1": resolution: { @@ -1613,6 +1667,15 @@ packages: cpu: [x64] os: [linux] + "@next/swc-linux-x64-musl@13.5.9": + resolution: + { + integrity: sha512-/dnscWqfO3+U8asd+Fc6dwL2l9AZDl7eKtPNKW8mKLh4Y4wOpjJiamhe8Dx+D+Oq0GYVjuW0WwjIxYWVozt2bA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + "@next/swc-linux-x64-musl@16.1.1": resolution: { @@ -1622,6 +1685,15 @@ packages: cpu: [x64] os: [linux] + "@next/swc-win32-arm64-msvc@13.5.9": + resolution: + { + integrity: sha512-T/iPnyurOK5a4HRUcxAlss8uzoEf5h9tkd+W2dSWAfzxv8WLKlUgbfk+DH43JY3Gc2xK5URLuXrxDZ2mGfk/jw==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [win32] + "@next/swc-win32-arm64-msvc@16.1.1": resolution: { @@ -1631,6 +1703,24 @@ packages: cpu: [arm64] os: [win32] + "@next/swc-win32-ia32-msvc@13.5.9": + resolution: + { + integrity: sha512-BLiPKJomaPrTAb7ykjA0LPcuuNMLDVK177Z1xe0nAem33+9FIayU4k/OWrtSn9SAJW/U60+1hoey5z+KCHdRLQ==, + } + engines: { node: ">= 10" } + cpu: [ia32] + os: [win32] + + "@next/swc-win32-x64-msvc@13.5.9": + resolution: + { + integrity: sha512-/72/dZfjXXNY/u+n8gqZDjI6rxKMpYsgBBYNZKWOQw0BpBF7WCnPflRy3ZtvQ2+IYI3ZH2bPyj7K+6a6wNk90Q==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [win32] + "@next/swc-win32-x64-msvc@16.1.1": resolution: { @@ -2474,6 +2564,12 @@ packages: integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==, } + "@swc/helpers@0.5.2": + resolution: + { + integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==, + } + "@swc/types@0.1.25": resolution: { @@ -2693,6 +2789,12 @@ packages: } deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. + "@types/next-pwa@5.6.9": + resolution: + { + integrity: sha512-KcymH+MtFYB5KVKIOH1DMqd0wUb8VLCxzHtsaRQQ7S8sGOaTH24Lo2vGZf6/0Ok9e+xWCKhqsSt6cgDJTk91Iw==, + } + "@types/node@20.19.27": resolution: { @@ -3433,6 +3535,13 @@ packages: } engines: { node: ">=6" } + busboy@1.6.0: + resolution: + { + integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, + } + engines: { node: ">=10.16.0" } + bytewise-core@1.2.3: resolution: { @@ -5484,6 +5593,24 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + next@13.5.11: + resolution: + { + integrity: sha512-WUPJ6WbAX9tdC86kGTu92qkrRdgRqVrY++nwM+shmWQwmyxt4zhZfR59moXSI4N8GDYCBY3lIAqhzjDd4rTC8Q==, + } + engines: { node: ">=16.14.0" } + hasBin: true + peerDependencies: + "@opentelemetry/api": ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + sass: + optional: true + next@16.1.1: resolution: { @@ -6409,6 +6536,13 @@ packages: } engines: { node: ">= 0.4" } + streamsearch@1.1.0: + resolution: + { + integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, + } + engines: { node: ">=10.0.0" } + string.prototype.includes@2.0.1: resolution: { @@ -6478,6 +6612,22 @@ packages: } engines: { node: ">=8" } + styled-jsx@5.1.1: + resolution: + { + integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + } + engines: { node: ">= 12.0.0" } + peerDependencies: + "@babel/core": "*" + babel-plugin-macros: "*" + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + styled-jsx@5.1.6: resolution: { @@ -6847,6 +6997,13 @@ packages: "@types/react": optional: true + watchpack@2.4.0: + resolution: + { + integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, + } + engines: { node: ">=10.13.0" } + watchpack@2.5.0: resolution: { @@ -8178,33 +8335,62 @@ snapshots: "@tybys/wasm-util": 0.10.1 optional: true + "@next/env@13.5.11": {} + "@next/env@16.1.1": {} "@next/eslint-plugin-next@16.1.1": dependencies: fast-glob: 3.3.1 + "@next/swc-darwin-arm64@13.5.9": + optional: true + "@next/swc-darwin-arm64@16.1.1": optional: true + "@next/swc-darwin-x64@13.5.9": + optional: true + "@next/swc-darwin-x64@16.1.1": optional: true + "@next/swc-linux-arm64-gnu@13.5.9": + optional: true + "@next/swc-linux-arm64-gnu@16.1.1": optional: true + "@next/swc-linux-arm64-musl@13.5.9": + optional: true + "@next/swc-linux-arm64-musl@16.1.1": optional: true + "@next/swc-linux-x64-gnu@13.5.9": + optional: true + "@next/swc-linux-x64-gnu@16.1.1": optional: true + "@next/swc-linux-x64-musl@13.5.9": + optional: true + "@next/swc-linux-x64-musl@16.1.1": optional: true + "@next/swc-win32-arm64-msvc@13.5.9": + optional: true + "@next/swc-win32-arm64-msvc@16.1.1": optional: true + "@next/swc-win32-ia32-msvc@13.5.9": + optional: true + + "@next/swc-win32-x64-msvc@13.5.9": + optional: true + "@next/swc-win32-x64-msvc@16.1.1": optional: true @@ -8748,6 +8934,10 @@ snapshots: dependencies: tslib: 2.8.1 + "@swc/helpers@0.5.2": + dependencies: + tslib: 2.8.1 + "@swc/types@0.1.25": dependencies: "@swc/counter": 0.1.3 @@ -8863,6 +9053,23 @@ snapshots: dependencies: minimatch: 9.0.5 + "@types/next-pwa@5.6.9(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)": + dependencies: + "@types/node": 20.19.27 + "@types/react": 19.2.7 + "@types/react-dom": 19.2.3(@types/react@19.2.7) + next: 13.5.11(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + workbox-build: 6.6.0 + transitivePeerDependencies: + - "@babel/core" + - "@opentelemetry/api" + - "@types/babel__core" + - babel-plugin-macros + - react + - react-dom + - sass + - supports-color + "@types/node@20.19.27": dependencies: undici-types: 6.21.0 @@ -9345,6 +9552,10 @@ snapshots: builtin-modules@3.3.0: {} + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + bytewise-core@1.2.3: dependencies: typewise-core: 1.2.0 @@ -10649,6 +10860,31 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + next@13.5.11(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + "@next/env": 13.5.11 + "@swc/helpers": 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001761 + postcss: 8.4.31 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + styled-jsx: 5.1.1(@babel/core@7.28.5)(react@19.2.3) + watchpack: 2.4.0 + optionalDependencies: + "@next/swc-darwin-arm64": 13.5.9 + "@next/swc-darwin-x64": 13.5.9 + "@next/swc-linux-arm64-gnu": 13.5.9 + "@next/swc-linux-arm64-musl": 13.5.9 + "@next/swc-linux-x64-gnu": 13.5.9 + "@next/swc-linux-x64-musl": 13.5.9 + "@next/swc-win32-arm64-msvc": 13.5.9 + "@next/swc-win32-ia32-msvc": 13.5.9 + "@next/swc-win32-x64-msvc": 13.5.9 + transitivePeerDependencies: + - "@babel/core" + - babel-plugin-macros + next@16.1.1(@babel/core@7.28.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: "@next/env": 16.1.1 @@ -11206,6 +11442,8 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + streamsearch@1.1.0: {} + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.8 @@ -11268,6 +11506,13 @@ snapshots: strip-json-comments@3.1.1: {} + styled-jsx@5.1.1(@babel/core@7.28.5)(react@19.2.3): + dependencies: + client-only: 0.0.1 + react: 19.2.3 + optionalDependencies: + "@babel/core": 7.28.5 + styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3): dependencies: client-only: 0.0.1 @@ -11516,6 +11761,11 @@ snapshots: optionalDependencies: "@types/react": 19.2.7 + watchpack@2.4.0: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + watchpack@2.5.0: dependencies: glob-to-regexp: 0.4.1 diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..bd19168 --- /dev/null +++ b/public/sw.js @@ -0,0 +1,821 @@ +if (!self.define) { + let e, + a = {}; + const i = (i, s) => ( + (i = new URL(i + ".js", s).href), + a[i] || + new Promise((a) => { + if ("document" in self) { + const e = document.createElement("script"); + (e.src = i), (e.onload = a), document.head.appendChild(e); + } else (e = i), importScripts(i), a(); + }).then(() => { + let e = a[i]; + if (!e) throw new Error(`Module ${i} didn’t register its module`); + return e; + }) + ); + self.define = (s, c) => { + const n = e || ("document" in self ? document.currentScript.src : "") || location.href; + if (a[n]) return; + let r = {}; + const o = (e) => i(e, n), + f = { module: { uri: n }, exports: r, require: o }; + a[n] = Promise.all(s.map((e) => f[e] || o(e))).then((e) => (c(...e), r)); + }; +} +define(["./workbox-24ed2e00"], function (e) { + "use strict"; + importScripts(), + self.skipWaiting(), + e.clientsClaim(), + e.precacheAndRoute( + [ + { url: "/_next/app-build-manifest.json", revision: "477b9e5cfccecd1a9977e3e78999d275" }, + { url: "/_next/static/chunks/09fd3d28.3456e1bb54b3a270.js", revision: "3456e1bb54b3a270" }, + { url: "/_next/static/chunks/1047.5207a126379b8060.js", revision: "5207a126379b8060" }, + { url: "/_next/static/chunks/1078.1f46bda73c7623c9.js", revision: "1f46bda73c7623c9" }, + { url: "/_next/static/chunks/1096.adbf51d046d506be.js", revision: "adbf51d046d506be" }, + { url: "/_next/static/chunks/1236.cb61bc317696dc3b.js", revision: "cb61bc317696dc3b" }, + { url: "/_next/static/chunks/1332-90f857f551d0109a.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/1469.2a2e870b028a1e25.js", revision: "2a2e870b028a1e25" }, + { url: "/_next/static/chunks/1653.f01066a435f142fe.js", revision: "f01066a435f142fe" }, + { url: "/_next/static/chunks/1802-066902707f92716e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/1839.0fe5beadce886280.js", revision: "0fe5beadce886280" }, + { url: "/_next/static/chunks/2077.f4a70605fcc1b140.js", revision: "f4a70605fcc1b140" }, + { url: "/_next/static/chunks/2091-fb53668a264fa381.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/2207.baa46f87c867bade.js", revision: "baa46f87c867bade" }, + { url: "/_next/static/chunks/2349.7f2b2dc8f7fa3fee.js", revision: "7f2b2dc8f7fa3fee" }, + { url: "/_next/static/chunks/2355.eca546d151399f7a.js", revision: "eca546d151399f7a" }, + { url: "/_next/static/chunks/2838.aa5078d6a4640a8e.js", revision: "aa5078d6a4640a8e" }, + { url: "/_next/static/chunks/3101.14c39354b8c18680.js", revision: "14c39354b8c18680" }, + { url: "/_next/static/chunks/3160.51845156614d0baa.js", revision: "51845156614d0baa" }, + { url: "/_next/static/chunks/331.7f5658ca3d8cec74.js", revision: "7f5658ca3d8cec74" }, + { url: "/_next/static/chunks/3383.3a974ba7ae0f190a.js", revision: "3a974ba7ae0f190a" }, + { url: "/_next/static/chunks/3409-227895a558692e84.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/3441-d7e5c5549e4b4342.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/3568-1d77c1fdd9979ef4.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/3583-3dca890eb679e8a0.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/3607.9579bf82aa5b04e5.js", revision: "9579bf82aa5b04e5" }, + { url: "/_next/static/chunks/3650.453a9f89049b631d.js", revision: "453a9f89049b631d" }, + { url: "/_next/static/chunks/3743.e010fffab8b8741b.js", revision: "e010fffab8b8741b" }, + { url: "/_next/static/chunks/3850.f6229535485b1873.js", revision: "f6229535485b1873" }, + { url: "/_next/static/chunks/3876.dca0e32e5343f879.js", revision: "dca0e32e5343f879" }, + { url: "/_next/static/chunks/3959.293aeeefe51a1bb8.js", revision: "293aeeefe51a1bb8" }, + { url: "/_next/static/chunks/4039-a68628e75cd1f894.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/4072-4a69b64a1b07c868.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/4213.80138b64396aba11.js", revision: "80138b64396aba11" }, + { url: "/_next/static/chunks/4350-30e77a9cfc3dcede.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/4364.f39124fcb73b0107.js", revision: "f39124fcb73b0107" }, + { url: "/_next/static/chunks/4382.6daa124be9895c6e.js", revision: "6daa124be9895c6e" }, + { url: "/_next/static/chunks/4647.8ce3c9806b2a163a.js", revision: "8ce3c9806b2a163a" }, + { url: "/_next/static/chunks/476912e5.eb845884ba53254a.js", revision: "eb845884ba53254a" }, + { url: "/_next/static/chunks/4794.b1af455fef4cb7c9.js", revision: "b1af455fef4cb7c9" }, + { url: "/_next/static/chunks/4844.7fc2ec4159bca963.js", revision: "7fc2ec4159bca963" }, + { url: "/_next/static/chunks/5556.52e1268e560f395e.js", revision: "52e1268e560f395e" }, + { url: "/_next/static/chunks/5625-bc191213e60fbb26.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/5716.693e42ef801352c4.js", revision: "693e42ef801352c4" }, + { url: "/_next/static/chunks/5812.2ade40e00d1c4202.js", revision: "2ade40e00d1c4202" }, + { url: "/_next/static/chunks/5820.95b1469f70c23d13.js", revision: "95b1469f70c23d13" }, + { url: "/_next/static/chunks/5989.82fbd20cf776af7d.js", revision: "82fbd20cf776af7d" }, + { url: "/_next/static/chunks/6064.7f539a39944811bd.js", revision: "7f539a39944811bd" }, + { url: "/_next/static/chunks/6071-5c7095c326ff64a2.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/6171.ddd90a937bdb7fde.js", revision: "ddd90a937bdb7fde" }, + { url: "/_next/static/chunks/6248.3375aba0de1f1592.js", revision: "3375aba0de1f1592" }, + { url: "/_next/static/chunks/6296.dbbe81ff8f36603c.js", revision: "dbbe81ff8f36603c" }, + { url: "/_next/static/chunks/6298-ccb0b17934d26d4e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/6405.e3a0f0b80c2ee4b6.js", revision: "e3a0f0b80c2ee4b6" }, + { url: "/_next/static/chunks/6500.7c2b20ea5a7dc963.js", revision: "7c2b20ea5a7dc963" }, + { url: "/_next/static/chunks/675.337f5b5c4b288e14.js", revision: "337f5b5c4b288e14" }, + { url: "/_next/static/chunks/6778.4802eb109bf5773b.js", revision: "4802eb109bf5773b" }, + { url: "/_next/static/chunks/6779.dc8182013c1b2891.js", revision: "dc8182013c1b2891" }, + { url: "/_next/static/chunks/6913.f0b4fc14e359987f.js", revision: "f0b4fc14e359987f" }, + { url: "/_next/static/chunks/702b54c3-b5420dbb0ee8c9a9.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/705-64730b1688631290.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/7192.0cf8393f23d61ae0.js", revision: "0cf8393f23d61ae0" }, + { url: "/_next/static/chunks/7207.d14b83e5a9b2d614.js", revision: "d14b83e5a9b2d614" }, + { url: "/_next/static/chunks/757.f8a69d9e94f2f188.js", revision: "f8a69d9e94f2f188" }, + { url: "/_next/static/chunks/7617.468657a1bfd0d700.js", revision: "468657a1bfd0d700" }, + { url: "/_next/static/chunks/7865.99d75de630c63940.js", revision: "99d75de630c63940" }, + { url: "/_next/static/chunks/8043.21b8e43b81804085.js", revision: "21b8e43b81804085" }, + { url: "/_next/static/chunks/8081.9c9e58fe9ec1ab33.js", revision: "9c9e58fe9ec1ab33" }, + { url: "/_next/static/chunks/8201.4c5d67ea6639f24a.js", revision: "4c5d67ea6639f24a" }, + { url: "/_next/static/chunks/8267.eee125a196488367.js", revision: "eee125a196488367" }, + { url: "/_next/static/chunks/84.30f650fb01801fe9.js", revision: "30f650fb01801fe9" }, + { url: "/_next/static/chunks/8477.089c2566cbeb4b53.js", revision: "089c2566cbeb4b53" }, + { url: "/_next/static/chunks/8498.c0b0bb1278c26c21.js", revision: "c0b0bb1278c26c21" }, + { url: "/_next/static/chunks/8607.48db89d60245a41e.js", revision: "48db89d60245a41e" }, + { url: "/_next/static/chunks/8762.c0aaf8e0c5f17ed1.js", revision: "c0aaf8e0c5f17ed1" }, + { url: "/_next/static/chunks/8786-c72cc5b15b6c2c48.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/8861-096cc7bd37679d2d.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/8873.a96ccf2b55a03c42.js", revision: "a96ccf2b55a03c42" }, + { url: "/_next/static/chunks/8895.e7b6483ca676dd42.js", revision: "e7b6483ca676dd42" }, + { url: "/_next/static/chunks/9285-64b2825f8a694e48.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/9384.dd2b68b1490b91c1.js", revision: "dd2b68b1490b91c1" }, + { url: "/_next/static/chunks/951.7cdb9b249045e6c7.js", revision: "7cdb9b249045e6c7" }, + { url: "/_next/static/chunks/9540.8bb43630703d4f41.js", revision: "8bb43630703d4f41" }, + { url: "/_next/static/chunks/9602.464abe33f8d0a9fb.js", revision: "464abe33f8d0a9fb" }, + { url: "/_next/static/chunks/9710.b1608715d2234c6d.js", revision: "b1608715d2234c6d" }, + { url: "/_next/static/chunks/985.847fb08d9cbaa059.js", revision: "847fb08d9cbaa059" }, + { url: "/_next/static/chunks/9908.0cc354107a980399.js", revision: "0cc354107a980399" }, + { + url: "/_next/static/chunks/app/(main)/(home)/layout-a78370a911639001.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(home)/page-be3e41a581938758.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/complaints/complaints-panel/page-f290763a18fbfb56.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/complaints/layout-411c855de7ff6922.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/complaints/page-5b082fe984b6a44c.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/layout-4f397a99410d9e1e.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/about-us/layout-aea79fa2aed4f730.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/about-us/page-544d0149d1b29bfb.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/application/layout-305e5e428e601731.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/application/page-bd06d29b0ed43e6d.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/layout-24b7e6746f8f1d92.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/latest-roads-state/layout-256d6c8d0a06127d.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/latest-roads-state/page-e9c45af720867c06.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/limitations/layout-06ca2092a132b80d.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/limitations/page-e0ed8e5a738cc9d8.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/obstruction-list/layout-ebf2e6c2a2ce5007.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/obstruction-list/page-7efd8fa4da642da1.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/police-traffic-restrictions/layout-de2ff4a905059f40.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/police-traffic-restrictions/page-1ea2747e8d02d83c.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/road-weather/layout-4d69ace999acf05b.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/road-weather/page-50c745b351f6c20e.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/road-works/layout-5e9de1f1fb3b293f.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/news/road-works/page-ee99ec76e366b31c.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/panel/favorites/page-80f7b648165a1374.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/panel/layout-c33f23cfb6412ac0.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/panel/profile/page-c51d6e3e396c6815.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/road-cameras/layout-8d5ae166eddf1ebb.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/(with-header)/road-cameras/page-328e977f78264ea4.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/app-complaints/layout-881c521242c15ef2.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/app-complaints/page-9ba2166c40b56b5e.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/(main)/layout-3997862d56997c1f.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { + url: "/_next/static/chunks/app/_not-found/page-a54367e75f67917a.js", + revision: "edDXeXW35O8-zP7JZFf_v", + }, + { url: "/_next/static/chunks/app/auth/layout-6137609f77d5b7ae.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/app/auth/page-9a55ae91ee906e5f.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/app/layout-34be191be03e3b7c.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/efbf5421.71081031ef141e15.js", revision: "71081031ef141e15" }, + { url: "/_next/static/chunks/f0589f39.5b64a3f82869b95a.js", revision: "5b64a3f82869b95a" }, + { url: "/_next/static/chunks/framework-c63bbcb21eacaf32.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/main-84dde0f789e760cd.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/main-app-5c8e03902df08c9f.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/pages/_app-a2e7d845f9171b9e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/chunks/pages/_error-0a33a605e04b1d2c.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { + url: "/_next/static/chunks/polyfills-42372ed130431b0a.js", + revision: "846118c33b2c0e922d7b3a7676f81f6f", + }, + { url: "/_next/static/chunks/webpack-d1f085c715a88e1e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, + { url: "/_next/static/css/9682c83a0e1692a1.css", revision: "9682c83a0e1692a1" }, + { url: "/_next/static/css/d38261e715b3739d.css", revision: "d38261e715b3739d" }, + { url: "/_next/static/css/dcf552e9809a52ba.css", revision: "dcf552e9809a52ba" }, + { url: "/_next/static/css/e9da4554e155c1be.css", revision: "e9da4554e155c1be" }, + { url: "/_next/static/css/f50ae58b45097a9e.css", revision: "f50ae58b45097a9e" }, + { url: "/_next/static/css/fab1bac4c150a020.css", revision: "fab1bac4c150a020" }, + { url: "/_next/static/css/fd84fa7e1158ad2d.css", revision: "fd84fa7e1158ad2d" }, + { + url: "/_next/static/edDXeXW35O8-zP7JZFf_v/_buildManifest.js", + revision: "00194b8dae0479d1b57e90db67f3ebba", + }, + { + url: "/_next/static/edDXeXW35O8-zP7JZFf_v/_ssgManifest.js", + revision: "b6652df95db52feb4daf4eca35380933", + }, + { url: "/_next/static/media/144px.66738aa3.png", revision: "3bcf1d5579d0af575cc1eda5ecfbb885" }, + { url: "/_next/static/media/RaviFaNum-Black.3d44dfd3.woff2", revision: "3d44dfd3" }, + { url: "/_next/static/media/RaviFaNum-Black.b77fefa7.woff", revision: "b77fefa7" }, + { url: "/_next/static/media/RaviFaNum-Bold.4f118a99.woff2", revision: "4f118a99" }, + { url: "/_next/static/media/RaviFaNum-Bold.e3b6dbcd.woff", revision: "e3b6dbcd" }, + { url: "/_next/static/media/RaviFaNum-ExtraBlack.a49d8f96.woff2", revision: "a49d8f96" }, + { url: "/_next/static/media/RaviFaNum-ExtraBlack.ee187408.woff", revision: "ee187408" }, + { url: "/_next/static/media/RaviFaNum-Light.1c4b3280.woff2", revision: "1c4b3280" }, + { url: "/_next/static/media/RaviFaNum-Light.db0b957b.woff", revision: "db0b957b" }, + { url: "/_next/static/media/RaviFaNum-Medium.5fee124a.woff2", revision: "5fee124a" }, + { url: "/_next/static/media/RaviFaNum-Medium.aef80e5d.woff", revision: "aef80e5d" }, + { url: "/_next/static/media/RaviFaNum-Regular.0685ed3d.woff", revision: "0685ed3d" }, + { url: "/_next/static/media/RaviFaNum-Regular.a8efb35f.woff2", revision: "a8efb35f" }, + { url: "/_next/static/media/RaviFaNum-SemiBold.297ae300.woff2", revision: "297ae300" }, + { url: "/_next/static/media/RaviFaNum-SemiBold.71c29afa.woff", revision: "71c29afa" }, + { url: "/_next/static/media/RaviFaNum-Thin.373aeb1b.woff", revision: "373aeb1b" }, + { url: "/_next/static/media/RaviFaNum-Thin.d9f92af5.woff2", revision: "d9f92af5" }, + { url: "/_next/static/media/auth-bg-light.4776e5e7.png", revision: "f45da66bb13cac891cea5febf76c0f8e" }, + { url: "/_next/static/media/auth-bg.b1fc52fa.webp", revision: "00d75da2d9e52aceaf39dfec0f2d7c81" }, + { url: "/_next/static/media/auth-form-bg.962cdbed.png", revision: "7db836dbd4b891818150a64f82eeb1e2" }, + { url: "/_next/static/media/base-layer.823deed6.png", revision: "7f46d655e3ec0b60cf513492592f6b99" }, + { url: "/_next/static/media/bright-layer.2ee0cf7c.png", revision: "c2f60f53f660b1e98ef1f856b2ec73fd" }, + { url: "/_next/static/media/dark-layer.86aea455.png", revision: "8acfad0d04e60a832b1b4c8181528eb4" }, + { + url: "/_next/static/media/gradient-suitcase.7bcf9e32.png", + revision: "a03310e940b3c8808d04cd6b3c614828", + }, + { + url: "/_next/static/media/gradient-truck.0aac150f.png", + revision: "27d4f586b0a7e4019cd1ff3ed1b8d31e", + }, + { + url: "/_next/static/media/gradient-warning.821aa92b.png", + revision: "81c30665797c701cdc8bc11c17608e3f", + }, + { + url: "/_next/static/media/mock-camera-preview-img.2f091456.png", + revision: "ec537f305d83707ff0bbfe49d1a8c320", + }, + { url: "/_next/static/media/neshan-logo.9e340e92.png", revision: "030c32f072089f9340a1f35447ddba7e" }, + { + url: "/_next/static/media/not-found-image.835b3806.png", + revision: "53e248b101253df08715c4bbc5f30022", + }, + { + url: "/_next/static/media/routing-location-preview.2bed60ec.png", + revision: "bd50d6d4ef50aaee30666d222ef1dd47", + }, + { url: "/fonts.css", revision: "610b801412b116073e45ef749c0cb9de" }, + { url: "/fonts/ravi/woff/RaviFaNum-Black.woff", revision: "a68b68f76c47bc8fa8cbb9939a551e4f" }, + { url: "/fonts/ravi/woff/RaviFaNum-Bold.woff", revision: "21a7685e78b01ca29e74a077b496ba77" }, + { url: "/fonts/ravi/woff/RaviFaNum-ExtraBlack.woff", revision: "2b18bcce0fab1928a970e4c14e18171a" }, + { url: "/fonts/ravi/woff/RaviFaNum-Light.woff", revision: "1b89b8881f914f6a64ab88ddf9062d93" }, + { url: "/fonts/ravi/woff/RaviFaNum-Medium.woff", revision: "17c542f3f09d2bdd1d78731a6423e565" }, + { url: "/fonts/ravi/woff/RaviFaNum-Regular.woff", revision: "273e22bd0de532ba2125a698283c1018" }, + { url: "/fonts/ravi/woff/RaviFaNum-SemiBold.woff", revision: "dbe9226f2750c458d98978040b598e3d" }, + { url: "/fonts/ravi/woff/RaviFaNum-Thin.woff", revision: "b1dbca91208166254cb056dc2c0c6deb" }, + { url: "/fonts/ravi/woff2/RaviFaNum-Black.woff2", revision: "1bd26161a92c0ce17d7efe2e2b92b711" }, + { url: "/fonts/ravi/woff2/RaviFaNum-Bold.woff2", revision: "0b8f9c1e8c43cb6b75976e6ed03b962a" }, + { url: "/fonts/ravi/woff2/RaviFaNum-ExtraBlack.woff2", revision: "b240e942626cd3cc9aad40e6b2d82b83" }, + { url: "/fonts/ravi/woff2/RaviFaNum-Light.woff2", revision: "fb63448719499a4890a597bd04d364e9" }, + { url: "/fonts/ravi/woff2/RaviFaNum-Medium.woff2", revision: "3836aef44caba770a8ab89562388edae" }, + { url: "/fonts/ravi/woff2/RaviFaNum-Regular.woff2", revision: "f3a02ae211202db6cf7e3f8e361178d1" }, + { url: "/fonts/ravi/woff2/RaviFaNum-SemiBold.woff2", revision: "b977c1a597f4ae718255fb5bf6b1664c" }, + { url: "/fonts/ravi/woff2/RaviFaNum-Thin.woff2", revision: "4816a8911769fb658a51610490972f37" }, + { url: "/icons/141-logo.svg", revision: "9f019d133602624a7bd092bbdf38f9b6" }, + { url: "/icons/add-icon.svg", revision: "58a4f32f5a4dd5cbf71a88ae57c44258" }, + { url: "/icons/alert.svg", revision: "384384920637c63565496653ecdae64a" }, + { url: "/icons/announcement.svg", revision: "788a30a198ad58e10b61551e61030563" }, + { url: "/icons/aparat.svg", revision: "1e797a397302c0b1d5aa164577fdca03" }, + { url: "/icons/application.svg", revision: "b657ac894fafdeb6f001932cffc29f34" }, + { url: "/icons/arrow-down.svg", revision: "2d358facbd91097e31c0d90d0d8bfc9e" }, + { url: "/icons/arrow-left.svg", revision: "f23ea23577408f232b1e3f5227cea25b" }, + { url: "/icons/arrow-right-left.svg", revision: "32bd0c13986aaa2a3d580ca6d48e66e3" }, + { url: "/icons/arrow-right.svg", revision: "e9059d0691489a29c6c8b9b6f5a74b62" }, + { url: "/icons/arrow-top.svg", revision: "1133540c40b30bbbb1cee25ea0390790" }, + { url: "/icons/avatar-icon.svg", revision: "6ff72d5b15d5888c01db8903807085a0" }, + { url: "/icons/back-icon.svg", revision: "d1a5156f9e0be1b928cd13d0954d7da0" }, + { url: "/icons/back-reverse-icon.svg", revision: "46df2e7d7e715e36169073670138a5b4" }, + { url: "/icons/bazzar.svg", revision: "cffa7ed4ca75524161f51605095de4d7" }, + { url: "/icons/burger-icon.svg", revision: "4a3ecb9a58ca1a585a6e8b183312045d" }, + { url: "/icons/check-icon.svg", revision: "c6cfe0d451a100ed87c54507cea3a5d6" }, + { url: "/icons/check.svg", revision: "801bf1c02ab10e641cb2521669927df5" }, + { url: "/icons/chevron-icon.svg", revision: "7a8e869d7d7fd8ec614ed9f9bf0c05a5" }, + { url: "/icons/close-hex-icon.svg", revision: "a4f0f5b2bfb53dfc0da92c2a99c2ee70" }, + { url: "/icons/close-icon.svg", revision: "ad1e681e5aa16aca145c7c3c364450a3" }, + { url: "/icons/code.svg", revision: "880705d1d0c423af68170e3f6416053e" }, + { url: "/icons/compass.svg", revision: "632e87c0e920e7eedf0073a48366fcfd" }, + { url: "/icons/complaints.svg", revision: "63bd0aee9b69afd81acf44ba0101e449" }, + { url: "/icons/complaints/dakheli.svg", revision: "08d8bbcf22d5b28800ac5e40b3bb5546" }, + { url: "/icons/complaints/driver.svg", revision: "09df5d323a599316d26d687353474cb8" }, + { url: "/icons/complaints/mosafer.svg", revision: "8c12479e18f17c5000b5e6318df52352" }, + { url: "/icons/complaints/payane_haye_marzi.svg", revision: "800c8caea2b9b72921040b0483b4cce3" }, + { url: "/icons/complaints/product_owner.svg", revision: "f015dd33091e7ba00d5348880280f267" }, + { url: "/icons/complaints/taavoni.svg", revision: "d3871cf06bc63ac81f068e18a77baca7" }, + { url: "/icons/complaints/transit.svg", revision: "30449520ad604b5f2f8c59212c4c6cd8" }, + { url: "/icons/complaints/transport.svg", revision: "d44129fcd1a7cc6fb46b3edda8cb9060" }, + { url: "/icons/copy.svg", revision: "1d3380cc9abe9778934138dc14ab07b9" }, + { url: "/icons/corridors.svg", revision: "8a96f1f1ad533e9a4797c3587413f5c0" }, + { url: "/icons/cursor-circle.svg", revision: "73a6e596f571ec898a41a544f0021030" }, + { url: "/icons/dark-mode-icon.svg", revision: "a27cd81416c40ae7d0e5377af6691209" }, + { url: "/icons/details.svg", revision: "6b8d857cc556218670b1dc414368bf97" }, + { url: "/icons/dots.svg", revision: "c96600c30e3420426183eca3852dcef8" }, + { url: "/icons/download.svg", revision: "d9d35e9dce12e47999a01e7cd9776991" }, + { url: "/icons/drive-mode.svg", revision: "8a8426222e8ab57e5017142891ca148b" }, + { url: "/icons/edit-icon.svg", revision: "2106e27585760b7f96e8abbfda1a7ce6" }, + { url: "/icons/eye-closed-icon.svg", revision: "ab939fcc62bb9e192651eed424138ae0" }, + { url: "/icons/eye-open-icon.svg", revision: "3c157c0791c0d2afbee2633936bea1bd" }, + { url: "/icons/fav-corridors.svg", revision: "919ba19ef54dd46bcde5bd21b7880932" }, + { url: "/icons/favorite-locaton/flag-mark.svg", revision: "89502336c0f25f3c3da92a0b82538915" }, + { url: "/icons/favorite-locaton/heart-mark.svg", revision: "50d89df5d8c3bfbe9c24737d8291f99c" }, + { url: "/icons/favorite-locaton/home-mark.svg", revision: "3b3c8ee376ea6d891f33f0779610df54" }, + { url: "/icons/favorite-locaton/home.svg", revision: "d95063e22de32d43b97f7f256fe09784" }, + { url: "/icons/favorite-locaton/others.svg", revision: "d7d28c4ebbdb8974463e8fc833071195" }, + { url: "/icons/favorite-locaton/star-mark.svg", revision: "32c0394546e6bcf0e8a217c2c52035c9" }, + { url: "/icons/favorite-locaton/travel.svg", revision: "75cb87057af86d3c202a11fd485de6ae" }, + { url: "/icons/favorite-locaton/work-mark.svg", revision: "46187fa2a3001b4eaf1d660671f38e9c" }, + { url: "/icons/favorite-locaton/work.svg", revision: "3ac45165337fa3b459a797117bc3971a" }, + { url: "/icons/favorite.svg", revision: "a09728378a13d428026b08e8b5ea6f06" }, + { url: "/icons/filter-icon.svg", revision: "5ff69822476db97c69e2cc5fe4723ac6" }, + { url: "/icons/fork-lift.svg", revision: "ca81a0937886349ec2aa280153dc32f8" }, + { url: "/icons/google-maps.svg", revision: "ffd379f1a749760c7861d66b84011a69" }, + { url: "/icons/google-play.svg", revision: "9e86fed964087a760afecafb39d78b4d" }, + { url: "/icons/history-icon.svg", revision: "731b455170a42058d2b5f0a18472639d" }, + { url: "/icons/instagram.svg", revision: "4fc0ed18b2b14b3a1a11a62bcca79f93" }, + { url: "/icons/iran-map-location-icon.svg", revision: "7c69e64b33f36b416e05b68373759839" }, + { url: "/icons/layers-icon.svg", revision: "f1df3674d501fcfa5d80f34cab0b6401" }, + { url: "/icons/light-mode-icon.svg", revision: "60f216ed655f621a4aafc342eeb48ab4" }, + { url: "/icons/linkedin.svg", revision: "f743df0c42d7060999a0791b560dffaf" }, + { url: "/icons/list.svg", revision: "35fdf5e1efa4552a4bf623b3b5863b15" }, + { url: "/icons/login.svg", revision: "5cb93e171336b4b5cb4c36780accfc49" }, + { url: "/icons/logout.svg", revision: "2b0d623f7f7645fb7698060d7811cbb9" }, + { url: "/icons/maneuvers/alt-road.svg", revision: "988c4969a7d2aca312670c9531fc799a" }, + { url: "/icons/maneuvers/bus.svg", revision: "d86f65dd607cebfef952d4b36e968dd3" }, + { url: "/icons/maneuvers/continue-straight.svg", revision: "ad352cf98568411942f9fa4d4298d96f" }, + { url: "/icons/maneuvers/destination-bus.svg", revision: "e0fb09e71a77921bb3b0d38909b23dbd" }, + { url: "/icons/maneuvers/destination-ferry.svg", revision: "fbb2813494e519a22d601cae76eeac36" }, + { url: "/icons/maneuvers/destination-left.svg", revision: "b977c8c08ecf45621f89cd10b8e9ccb8" }, + { url: "/icons/maneuvers/destination-right.svg", revision: "ac7786f54997a10e57fdb66225a8715d" }, + { url: "/icons/maneuvers/destination-train.svg", revision: "186efee01ebc27097652281577f5e203" }, + { url: "/icons/maneuvers/destination-walk.svg", revision: "887463d4a7a8e93e3e9856576962adfd" }, + { url: "/icons/maneuvers/destination.svg", revision: "b7f94fec17634eee4bd91c93596ee3f7" }, + { url: "/icons/maneuvers/exit-left.svg", revision: "3cd1eb2133853ea6c53ab932acc85050" }, + { url: "/icons/maneuvers/exit-right.svg", revision: "63a4869ef4295f37f822ac1e4b38af70" }, + { url: "/icons/maneuvers/ferry.svg", revision: "efa7f2d136de33860ca889ed391acfe4" }, + { url: "/icons/maneuvers/fork-left.svg", revision: "b8c5d741048a737a9e5438993a559c86" }, + { url: "/icons/maneuvers/fork-right.svg", revision: "f35ba5b21f7f653037869e2b24634607" }, + { url: "/icons/maneuvers/merge-left.svg", revision: "91861f07b0a291ad2d73d00a0cd0d105" }, + { url: "/icons/maneuvers/merge-right.svg", revision: "72a4514b7d3a9467d3f73ed7624fe4f1" }, + { url: "/icons/maneuvers/none.svg", revision: "7ee0ce4437cc978515d8dbb071fddf89" }, + { url: "/icons/maneuvers/off-ramp-left.svg", revision: "83731d9bfefacdd4e1f1aea174a43a60" }, + { url: "/icons/maneuvers/off-ramp-right.svg", revision: "24aa960398f6752b53ad8a3ee954539a" }, + { url: "/icons/maneuvers/on-ramp-left.svg", revision: "c12d001316af6a4edaad87620934ca01" }, + { url: "/icons/maneuvers/on-ramp-right.svg", revision: "cb361b0284aa9eb05d6846a294a1c5a5" }, + { url: "/icons/maneuvers/roundabout_enter.svg", revision: "8980edb4e0c07eb3b91aaa638cabbc74" }, + { url: "/icons/maneuvers/roundabout_exit.svg", revision: "3062476e964be99951da0ae39d5dd0ad" }, + { url: "/icons/maneuvers/sharp-left.svg", revision: "8cfa728568f781c2d543d1ae2cd59386" }, + { url: "/icons/maneuvers/sharp-right.svg", revision: "21d727c6095e74be47d30a8071258b53" }, + { url: "/icons/maneuvers/slight-left.svg", revision: "7f4c9c58dbc4266f36d760792e02c4af" }, + { url: "/icons/maneuvers/slight-right.svg", revision: "182ea6685fe9c0b5400ab3061a6ad1ef" }, + { url: "/icons/maneuvers/start-left.svg", revision: "2f4934fba0303d3d912ae0712bd1e823" }, + { url: "/icons/maneuvers/start-right.svg", revision: "53e97b964d4eaa266f98d451f1da5634" }, + { url: "/icons/maneuvers/start.svg", revision: "0763a90360e095a9a6d375590b6f7105" }, + { url: "/icons/maneuvers/train.svg", revision: "9dd42195c6538f2ac4240182433520ce" }, + { url: "/icons/maneuvers/turn-left-route.svg", revision: "8eb30a0b3ce7afd405f35b4dc441ec95" }, + { url: "/icons/maneuvers/turn-left.svg", revision: "70150f0632c451f0db77b35cdbb3d63f" }, + { url: "/icons/maneuvers/turn-right.svg", revision: "9cf828267c08774091d7087275b29fdd" }, + { url: "/icons/maneuvers/u-turn-left.svg", revision: "7a1f6c77bda29e195cae6205e473a1d4" }, + { url: "/icons/maneuvers/u-turn-right.svg", revision: "edd4086ffcf4e3ba246371956e1c16b5" }, + { url: "/icons/maneuvers/walk.svg", revision: "5bcbc65550dd679782efb5c73552d072" }, + { url: "/icons/map.svg", revision: "73b927ed00af1b2a32740957361e33c6" }, + { url: "/icons/minus-icon.svg", revision: "f4d7580d206aa344f434e93e9d7faa7c" }, + { url: "/icons/myket.svg", revision: "3a498eb4d6457cd2359ac32a8a48bdf6" }, + { url: "/icons/nav-icon.svg", revision: "f508de5fc68e01a005795e6b58ff5775" }, + { url: "/icons/neshan-logo.png", revision: "030c32f072089f9340a1f35447ddba7e" }, + { url: "/icons/news-icon.svg", revision: "8352c107e678057bed72b563e37fe6d8" }, + { url: "/icons/news-speaker.svg", revision: "f597c0fe7562e139f79d3ce884d81fe5" }, + { url: "/icons/news.svg", revision: "4f0024e83a415d7d5b2906c386711315" }, + { url: "/icons/panel/complaints.svg", revision: "ec4ca4cf1d0e661a5c48392ac29e67bf" }, + { url: "/icons/panel/downloads.svg", revision: "b59a48737ee21710a1d9e53ace0ade10" }, + { url: "/icons/panel/info.svg", revision: "5525a4bb50088836bc5bc0c196ae904e" }, + { url: "/icons/panel/likes.svg", revision: "7aa61676b5e21c06c004d54088e16d42" }, + { url: "/icons/panel/logout.svg", revision: "c0cb82cc28db5f601e708ffe28ac34e6" }, + { url: "/icons/pause-icon.svg", revision: "36981abcd9aa176723d077656b6a8f84" }, + { url: "/icons/phone.svg", revision: "b3d977209d2c5b289a1a80f73b6be4a0" }, + { url: "/icons/play-icon.svg", revision: "adc446870028241a1bb10e06bc27dd1f" }, + { url: "/icons/refresh-icon.svg", revision: "4606b03c270dc5fb4a335aa4c2bbcaec" }, + { url: "/icons/repeat.svg", revision: "20b51cce86df9890afd8ebf9ea621ce8" }, + { url: "/icons/reset-north.svg", revision: "10735480406cd5da186ff1f5c3a217a9" }, + { url: "/icons/rms-logo.svg", revision: "a21559b3676b0ce6871a863f1f9e606f" }, + { url: "/icons/road-cameras.svg", revision: "c781fb367851f91cf3574db370403c59" }, + { url: "/icons/road-cameras/navbar-image.svg", revision: "243abce8d7e9a8a2874ab72fe90cc0ed" }, + { url: "/icons/road-cameras/road-cameras-white.svg", revision: "b6db4df9707976236a9982c51afd097d" }, + { url: "/icons/rocket.svg", revision: "4531bfa792ef0861abc06e6c21002525" }, + { url: "/icons/route-marker/destination-icon.svg", revision: "058f4280e45768f818c6a7b9fcc602bc" }, + { url: "/icons/route-marker/marker-icon.svg", revision: "3b298e49725756bff9e04f1c7665710f" }, + { url: "/icons/route-marker/marker-preview-icon.svg", revision: "5c78d16dab440791f943e44ba1d4f757" }, + { url: "/icons/route-marker/origin-icon.svg", revision: "057323a68dda31d291372781ee1a602c" }, + { + url: "/icons/route-marker/originDestination-marker.svg", + revision: "572ca842704bac369c1e7be0504ed588", + }, + { url: "/icons/route-marker/route-car-preview.svg", revision: "091e1077bbd6ce56bbe8e2717c9f755a" }, + { + url: "/icons/route-marker/routes-split-arrows-icon.svg", + revision: "d9bf7552969f108107a55a0c736831d9", + }, + { url: "/icons/route-marker/swap-locations-icon.svg", revision: "6bc1aef1f43ec3c650cd6d797e0163a2" }, + { url: "/icons/route.svg", revision: "2ffee03802439348fb2735bdd896d688" }, + { url: "/icons/routes.svg", revision: "7e1ee8b6c597fff9c72bf9a5df9c954b" }, + { url: "/icons/save-icon.svg", revision: "f8d1a987aa080d41f16b73173dee4c46" }, + { url: "/icons/saved-icon.svg", revision: "04084a3469f91d364227ede780546058" }, + { url: "/icons/search-icon.svg", revision: "fc5a0aa6d3d6d2e941c7639e6095d92a" }, + { url: "/icons/share-icon.svg", revision: "d985439edb72a1a72b9f2373ed4a7d5f" }, + { url: "/icons/side-menu-display-icon.svg", revision: "da1070dd5d40b19608e4dee45062a4e6" }, + { url: "/icons/skip-audio.svg", revision: "1aee395771476c16dd94aa3f80406976" }, + { url: "/icons/speed-test.svg", revision: "a900e30790c1cecffbf4ac16217e8443" }, + { url: "/icons/start-routing-icon.svg", revision: "42b3af664047914c50c8ca304cc1f999" }, + { url: "/icons/support.svg", revision: "a5ab29d443c2ffbe895f5dca1dc0c24e" }, + { url: "/icons/target-location/more-icon.svg", revision: "cab084662e569360483303f732c16815" }, + { + url: "/icons/target-location/target-location-icon.svg", + revision: "8c7ff1275d8ed1918964a6b999d1a9e1", + }, + { url: "/icons/target-location/target-pin-marker.svg", revision: "321985bec9fd5fce2aa6b21316237619" }, + { url: "/icons/target-location/target-pin.svg", revision: "5c570462625e2baf53944fc9b7410858" }, + { url: "/icons/trash-icon.svg", revision: "b3459e74c8f05538358266475a745834" }, + { url: "/icons/weather/0.svg", revision: "b27e318265d63cdfae05f5b8b1de5514" }, + { url: "/icons/weather/1.svg", revision: "b27e318265d63cdfae05f5b8b1de5514" }, + { url: "/icons/weather/10.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/11.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/12.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/13.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, + { url: "/icons/weather/14.svg", revision: "e064824c7a00bf24578428afd82d0fe4" }, + { url: "/icons/weather/15.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/16.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/17.svg", revision: "31f67f1b8c07b2e19212bbfe5ba608b3" }, + { url: "/icons/weather/18.svg", revision: "a917cde2f2be55bca40015ef8800a3ee" }, + { url: "/icons/weather/19.svg", revision: "dbed19cd5c63a8d020f50d73e7389611" }, + { url: "/icons/weather/2.svg", revision: "ff7a0d3060a90ff5ca72ec566495c80f" }, + { url: "/icons/weather/20.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/21.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/22.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/23.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/24.svg", revision: "4f072f8fca28178cd37f4940e0c97634" }, + { url: "/icons/weather/25.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, + { url: "/icons/weather/26.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/27.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/28.svg", revision: "0e0f72c54c29aa2907d05b8424b59c55" }, + { url: "/icons/weather/29.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, + { url: "/icons/weather/3.svg", revision: "aec78635aefae9f99ae1086243bc8c7a" }, + { url: "/icons/weather/30.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, + { url: "/icons/weather/31.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, + { url: "/icons/weather/32.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, + { url: "/icons/weather/33.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, + { url: "/icons/weather/34.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, + { url: "/icons/weather/35.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, + { url: "/icons/weather/36.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/37.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/38.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/39.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/4.svg", revision: "59868567d022e9367817f7745083c3da" }, + { url: "/icons/weather/40.svg", revision: "656b34afba42aa13cb1a0c1adf77c292" }, + { url: "/icons/weather/41.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/42.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, + { url: "/icons/weather/43.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/44.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, + { url: "/icons/weather/45.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/46.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, + { url: "/icons/weather/47.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/48.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, + { url: "/icons/weather/49.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, + { url: "/icons/weather/5.svg", revision: "656b34afba42aa13cb1a0c1adf77c292" }, + { url: "/icons/weather/50.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/51.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/52.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/53.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/54.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, + { url: "/icons/weather/55.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/56.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/57.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, + { url: "/icons/weather/58.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/59.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, + { url: "/icons/weather/6.svg", revision: "d93f4da6356ea87b85309f97983a5ce2" }, + { url: "/icons/weather/60.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/61.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/62.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/63.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/64.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, + { url: "/icons/weather/65.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, + { url: "/icons/weather/66.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, + { url: "/icons/weather/67.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/68.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/69.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/7.svg", revision: "a917cde2f2be55bca40015ef8800a3ee" }, + { url: "/icons/weather/70.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/71.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/72.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/73.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/74.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, + { url: "/icons/weather/75.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, + { url: "/icons/weather/76.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/77.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/78.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/79.svg", revision: "4f072f8fca28178cd37f4940e0c97634" }, + { url: "/icons/weather/8.svg", revision: "d93f4da6356ea87b85309f97983a5ce2" }, + { url: "/icons/weather/80.svg", revision: "0540c2948226c18934d3a7199acc108e" }, + { url: "/icons/weather/81.svg", revision: "0540c2948226c18934d3a7199acc108e" }, + { url: "/icons/weather/82.svg", revision: "def915bf95e1a2e8a391ce389e78ff8b" }, + { url: "/icons/weather/83.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/84.svg", revision: "00de4bed58ba728b54a7af0ddfa62125" }, + { url: "/icons/weather/85.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/86.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/87.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, + { url: "/icons/weather/88.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, + { url: "/icons/weather/89.svg", revision: "a33408d45050528b1239afc69f35b135" }, + { url: "/icons/weather/9.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, + { url: "/icons/weather/90.svg", revision: "a33408d45050528b1239afc69f35b135" }, + { url: "/icons/weather/91.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, + { url: "/icons/weather/92.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, + { url: "/icons/weather/93.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, + { url: "/icons/weather/94.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, + { url: "/icons/weather/95.svg", revision: "f75344eb3522df874278bde7ef582b41" }, + { url: "/icons/weather/96.svg", revision: "4f072f8fca28178cd37f4940e0c97634" }, + { url: "/icons/weather/97.svg", revision: "5356a63464dd019547232266f17d9d0d" }, + { url: "/icons/weather/98.svg", revision: "02e450fe59d0fba8e5d9b711af5bdf0e" }, + { url: "/icons/weather/99.svg", revision: "ae08d00ce67ec757ebf42b4614f7f31d" }, + { url: "/icons/weather/unknown.svg", revision: "d728638282add95aa2e551e59fef4914" }, + { url: "/icons/web-application.svg", revision: "f010b1e081ac3614331a357ecef97df8" }, + { url: "/icons/web-services/accidents.svg", revision: "36cbe94373f06a53bb6e92ef32b9ed41" }, + { url: "/icons/web-services/cameras.svg", revision: "255ebbb49d9eaf06a310eb3a52459b35" }, + { + url: "/icons/web-services/car-technical-assistance.svg", + revision: "3a188050a64bab29ae59b789fee03908", + }, + { url: "/icons/web-services/freeway-tolls.svg", revision: "6738403521cb3c722840e891b672ad05" }, + { url: "/icons/web-services/fuel-station.svg", revision: "5147c976fdffaca17315037962b1aadc" }, + { url: "/icons/web-services/iran-khodro.svg", revision: "77c9c43291d45a59fb939d0464bd1d7d" }, + { url: "/icons/web-services/islamic-distance.svg", revision: "46a7376777a10d77f742f68a13576caa" }, + { url: "/icons/web-services/medical-centers.svg", revision: "f19dd4ba5598ac52564dbb587ed7fdab" }, + { url: "/icons/web-services/mosques.svg", revision: "d1f948574af8de9e78efee6673ffa2a9" }, + { url: "/icons/web-services/obstruction.svg", revision: "5ed7313e7d64d145f35d8c3a132868a2" }, + { url: "/icons/web-services/repair-shop.svg", revision: "73ab394accf93119d1d7079062af0edb" }, + { url: "/icons/web-services/road-workshop.svg", revision: "f44d052c43a4aefdbef40de629e89ebc" }, + { url: "/icons/web-services/saipa.svg", revision: "bbb93c984dd918d32aff5a84bcf33395" }, + { url: "/icons/web-services/toll-house.svg", revision: "e86cd683f8075cdcdd46878c6bc88068" }, + { url: "/icons/web-services/traffic-counter.svg", revision: "1bbab75b333fd5723a0b777bf4ce7eb8" }, + { url: "/icons/web-services/weather-condition.svg", revision: "474f62b8fe4820153affa42d71ba19bf" }, + { url: "/icons/web-services/weather-forecast.svg", revision: "690650193c482dddf34be44c3d3dcb34" }, + { + url: "/icons/web-services/welfare-service-complex.svg", + revision: "5810aba1ae1f5b3bc12328b28cadf884", + }, + { url: "/icons/web-services/wind.svg", revision: "790d7352ef56b646a06801128952f8b7" }, + { url: "/images/akharinvaziat.jpg", revision: "b36e281c23f3308a2f4db58ab32f5f7d" }, + { url: "/images/auth-bg-light.png", revision: "f45da66bb13cac891cea5febf76c0f8e" }, + { url: "/images/auth-bg.webp", revision: "00d75da2d9e52aceaf39dfec0f2d7c81" }, + { url: "/images/auth-form-bg.png", revision: "7db836dbd4b891818150a64f82eeb1e2" }, + { url: "/images/camera-front-1.jpg", revision: "0863b7d13604b9c8505247d56d5a75cd" }, + { url: "/images/camera-front-2.jpg", revision: "de603f9ae96e94ea8497a0e8ec103ba6" }, + { url: "/images/camera.png", revision: "44983ad17515b1b74e6694105b6d9ab0" }, + { url: "/images/complaints.jpg", revision: "5e1f74f488c2b617c23dd02355e73415" }, + { url: "/images/complaints/bari-road.svg", revision: "80c0c2c001dc56cd721b0c85f6e0ebc9" }, + { url: "/images/complaints/gradient-suitcase.png", revision: "a03310e940b3c8808d04cd6b3c614828" }, + { url: "/images/complaints/gradient-truck.png", revision: "27d4f586b0a7e4019cd1ff3ed1b8d31e" }, + { url: "/images/complaints/gradient-warning.png", revision: "81c30665797c701cdc8bc11c17608e3f" }, + { url: "/images/complaints/iran-map.svg", revision: "f3627c633ed567deb04d526e832aeeaa" }, + { url: "/images/complaints/moshkelate-rah.svg", revision: "acef3f6878c5423108bda5a51d33200c" }, + { url: "/images/corridor-front-1.jpg", revision: "f8f5df92bbaaf1864f671f7efc591fb0" }, + { url: "/images/corridor-front-2.jpg", revision: "1c0b41193d4bf7f812bfca7a882413fd" }, + { url: "/images/ensedad.jpg", revision: "040dc43a29db2dc5a405acd5c37ce953" }, + { url: "/images/hamlOnaghl.png", revision: "492a512d2f88ca6857a8257b061ad1b9" }, + { url: "/images/havashenasi.jpg", revision: "775663acd2a79baa54da2d6d46d16d69" }, + { url: "/images/kargah.jpg", revision: "9f8f0114df6cf44352a3a179c6aa3b3c" }, + { url: "/images/layerPreviews/base-layer.png", revision: "7f46d655e3ec0b60cf513492592f6b99" }, + { url: "/images/layerPreviews/bright-layer.png", revision: "c2f60f53f660b1e98ef1f856b2ec73fd" }, + { url: "/images/layerPreviews/dark-layer.png", revision: "8acfad0d04e60a832b1b4c8181528eb4" }, + { url: "/images/mahdodiat.jpg", revision: "90ff96fc73fd728449df0c9c0086605a" }, + { url: "/images/mahdodiatpolice.jpg", revision: "a09370d7fc869e995d4f49165aec2791" }, + { url: "/images/mockImages/mock-camera-preview-img.png", revision: "ec537f305d83707ff0bbfe49d1a8c320" }, + { url: "/images/news.jpg", revision: "52af0a8b9fce258b4dbab54e5cde7063" }, + { url: "/images/not-found-image.png", revision: "53e248b101253df08715c4bbc5f30022" }, + { url: "/images/routeCamera.jpg", revision: "86d70730015051e33de3921e9a1696b1" }, + { url: "/images/routing-location-preview.png", revision: "bd50d6d4ef50aaee30666d222ef1dd47" }, + { url: "/images/witel.png", revision: "7a8d428a73ff90cbc53f2f3c2f59929e" }, + { url: "/images/zoom-bg.svg", revision: "5affa927869ffbcdb9c27ac1c820d70b" }, + { url: "/logo/144px.png", revision: "3bcf1d5579d0af575cc1eda5ecfbb885" }, + { url: "/logo/152px.png", revision: "528235a9aed87d6444d66370ba3d46f5" }, + { url: "/logo/192px.png", revision: "0c4a75b022ba55e1bb5ca8455290ac83" }, + { url: "/logo/384px.png", revision: "9d33499c40a17a309f033ee8fd725af6" }, + { url: "/logo/512px.png", revision: "26e82c66b146d1aecab909f3804db780" }, + { url: "/manifest.json", revision: "263717f7faf1aee8eccdc3df0e421570" }, + { url: "/mapbox-gl-rtl-text.js", revision: "e3d225c844639a90ecf80d6fc97fdb54" }, + { url: "/offline.html", revision: "b9086e4460f494636bec42eefbc7ab31" }, + ], + { ignoreURLParametersMatching: [] } + ), + e.cleanupOutdatedCaches(), + e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/offline.html"))), + e.registerRoute( + "/", + new e.NetworkFirst({ + cacheName: "start-url", + plugins: [ + { + cacheWillUpdate: async ({ request: e, response: a, event: i, state: s }) => + a && "opaqueredirect" === a.type + ? new Response(a.body, { status: 200, statusText: "OK", headers: a.headers }) + : a, + }, + ], + }), + "GET" + ), + e.registerRoute( + /^https:\/\/fonts\.(?:gstatic)\.com\/.*/i, + new e.CacheFirst({ + cacheName: "google-fonts-webfonts", + plugins: [new e.ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 31536e3 })], + }), + "GET" + ), + e.registerRoute( + /^https:\/\/fonts\.(?:googleapis)\.com\/.*/i, + new e.StaleWhileRevalidate({ + cacheName: "google-fonts-stylesheets", + plugins: [new e.ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })], + }), + "GET" + ), + e.registerRoute( + /\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i, + new e.StaleWhileRevalidate({ + cacheName: "static-font-assets", + plugins: [new e.ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })], + }), + "GET" + ), + e.registerRoute( + /\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i, + new e.StaleWhileRevalidate({ + cacheName: "static-image-assets", + plugins: [new e.ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + /\/_next\/image\?url=.+$/i, + new e.StaleWhileRevalidate({ + cacheName: "next-image", + plugins: [new e.ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + /\.(?:mp3|wav|ogg)$/i, + new e.CacheFirst({ + cacheName: "static-audio-assets", + plugins: [ + new e.RangeRequestsPlugin(), + new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 }), + ], + }), + "GET" + ), + e.registerRoute( + /\.(?:mp4)$/i, + new e.CacheFirst({ + cacheName: "static-video-assets", + plugins: [ + new e.RangeRequestsPlugin(), + new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 }), + ], + }), + "GET" + ), + e.registerRoute( + /\.(?:js)$/i, + new e.StaleWhileRevalidate({ + cacheName: "static-js-assets", + plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + /\.(?:css|less)$/i, + new e.StaleWhileRevalidate({ + cacheName: "static-style-assets", + plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + /\/_next\/data\/.+\/.+\.json$/i, + new e.StaleWhileRevalidate({ + cacheName: "next-data", + plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + /\.(?:json|xml|csv)$/i, + new e.NetworkFirst({ + cacheName: "static-data-assets", + plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + ({ url: e }) => { + if (!(self.origin === e.origin)) return !1; + const a = e.pathname; + return !a.startsWith("/api/auth/") && !!a.startsWith("/api/"); + }, + new e.NetworkFirst({ + cacheName: "apis", + networkTimeoutSeconds: 10, + plugins: [new e.ExpirationPlugin({ maxEntries: 16, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + ({ url: e }) => { + if (!(self.origin === e.origin)) return !1; + return !e.pathname.startsWith("/api/"); + }, + new e.NetworkFirst({ + cacheName: "others", + networkTimeoutSeconds: 10, + plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], + }), + "GET" + ), + e.registerRoute( + ({ url: e }) => !(self.origin === e.origin), + new e.NetworkFirst({ + cacheName: "cross-origin", + networkTimeoutSeconds: 10, + plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 3600 })], + }), + "GET" + ); +}); diff --git a/public/workbox-24ed2e00.js b/public/workbox-24ed2e00.js new file mode 100644 index 0000000..34432df --- /dev/null +++ b/public/workbox-24ed2e00.js @@ -0,0 +1,1115 @@ +define(["exports"], function (t) { + "use strict"; + try { + self["workbox:core:6.5.4"] && _(); + } catch (t) {} + const e = (t, ...e) => { + let s = t; + return e.length > 0 && (s += ` :: ${JSON.stringify(e)}`), s; + }; + class s extends Error { + constructor(t, s) { + super(e(t, s)), (this.name = t), (this.details = s); + } + } + try { + self["workbox:routing:6.5.4"] && _(); + } catch (t) {} + const n = (t) => (t && "object" == typeof t ? t : { handle: t }); + class r { + constructor(t, e, s = "GET") { + (this.handler = n(e)), (this.match = t), (this.method = s); + } + setCatchHandler(t) { + this.catchHandler = n(t); + } + } + class i extends r { + constructor(t, e, s) { + super( + ({ url: e }) => { + const s = t.exec(e.href); + if (s && (e.origin === location.origin || 0 === s.index)) return s.slice(1); + }, + e, + s + ); + } + } + class a { + constructor() { + (this.t = new Map()), (this.i = new Map()); + } + get routes() { + return this.t; + } + addFetchListener() { + self.addEventListener("fetch", (t) => { + const { request: e } = t, + s = this.handleRequest({ request: e, event: t }); + s && t.respondWith(s); + }); + } + addCacheListener() { + self.addEventListener("message", (t) => { + if (t.data && "CACHE_URLS" === t.data.type) { + const { payload: e } = t.data, + s = Promise.all( + e.urlsToCache.map((e) => { + "string" == typeof e && (e = [e]); + const s = new Request(...e); + return this.handleRequest({ request: s, event: t }); + }) + ); + t.waitUntil(s), t.ports && t.ports[0] && s.then(() => t.ports[0].postMessage(!0)); + } + }); + } + handleRequest({ request: t, event: e }) { + const s = new URL(t.url, location.href); + if (!s.protocol.startsWith("http")) return; + const n = s.origin === location.origin, + { params: r, route: i } = this.findMatchingRoute({ event: e, request: t, sameOrigin: n, url: s }); + let a = i && i.handler; + const o = t.method; + if ((!a && this.i.has(o) && (a = this.i.get(o)), !a)) return; + let c; + try { + c = a.handle({ url: s, request: t, event: e, params: r }); + } catch (t) { + c = Promise.reject(t); + } + const h = i && i.catchHandler; + return ( + c instanceof Promise && + (this.o || h) && + (c = c.catch(async (n) => { + if (h) + try { + return await h.handle({ url: s, request: t, event: e, params: r }); + } catch (t) { + t instanceof Error && (n = t); + } + if (this.o) return this.o.handle({ url: s, request: t, event: e }); + throw n; + })), + c + ); + } + findMatchingRoute({ url: t, sameOrigin: e, request: s, event: n }) { + const r = this.t.get(s.method) || []; + for (const i of r) { + let r; + const a = i.match({ url: t, sameOrigin: e, request: s, event: n }); + if (a) + return ( + (r = a), + ((Array.isArray(r) && 0 === r.length) || + (a.constructor === Object && 0 === Object.keys(a).length) || + "boolean" == typeof a) && + (r = void 0), + { route: i, params: r } + ); + } + return {}; + } + setDefaultHandler(t, e = "GET") { + this.i.set(e, n(t)); + } + setCatchHandler(t) { + this.o = n(t); + } + registerRoute(t) { + this.t.has(t.method) || this.t.set(t.method, []), this.t.get(t.method).push(t); + } + unregisterRoute(t) { + if (!this.t.has(t.method)) throw new s("unregister-route-but-not-found-with-method", { method: t.method }); + const e = this.t.get(t.method).indexOf(t); + if (!(e > -1)) throw new s("unregister-route-route-not-registered"); + this.t.get(t.method).splice(e, 1); + } + } + let o; + const c = () => (o || ((o = new a()), o.addFetchListener(), o.addCacheListener()), o); + function h(t, e, n) { + let a; + if ("string" == typeof t) { + const s = new URL(t, location.href); + a = new r(({ url: t }) => t.href === s.href, e, n); + } else if (t instanceof RegExp) a = new i(t, e, n); + else if ("function" == typeof t) a = new r(t, e, n); + else { + if (!(t instanceof r)) + throw new s("unsupported-route-type", { + moduleName: "workbox-routing", + funcName: "registerRoute", + paramName: "capture", + }); + a = t; + } + return c().registerRoute(a), a; + } + try { + self["workbox:strategies:6.5.4"] && _(); + } catch (t) {} + const u = { cacheWillUpdate: async ({ response: t }) => (200 === t.status || 0 === t.status ? t : null) }, + l = { + googleAnalytics: "googleAnalytics", + precache: "precache-v2", + prefix: "workbox", + runtime: "runtime", + suffix: "undefined" != typeof registration ? registration.scope : "", + }, + f = (t) => [l.prefix, t, l.suffix].filter((t) => t && t.length > 0).join("-"), + w = (t) => t || f(l.precache), + d = (t) => t || f(l.runtime); + function p(t, e) { + const s = new URL(t); + for (const t of e) s.searchParams.delete(t); + return s.href; + } + class y { + constructor() { + this.promise = new Promise((t, e) => { + (this.resolve = t), (this.reject = e); + }); + } + } + const g = new Set(); + function m(t) { + return "string" == typeof t ? new Request(t) : t; + } + class v { + constructor(t, e) { + (this.h = {}), + Object.assign(this, e), + (this.event = e.event), + (this.u = t), + (this.l = new y()), + (this.p = []), + (this.m = [...t.plugins]), + (this.v = new Map()); + for (const t of this.m) this.v.set(t, {}); + this.event.waitUntil(this.l.promise); + } + async fetch(t) { + const { event: e } = this; + let n = m(t); + if ("navigate" === n.mode && e instanceof FetchEvent && e.preloadResponse) { + const t = await e.preloadResponse; + if (t) return t; + } + const r = this.hasCallback("fetchDidFail") ? n.clone() : null; + try { + for (const t of this.iterateCallbacks("requestWillFetch")) + n = await t({ request: n.clone(), event: e }); + } catch (t) { + if (t instanceof Error) + throw new s("plugin-error-request-will-fetch", { thrownErrorMessage: t.message }); + } + const i = n.clone(); + try { + let t; + t = await fetch(n, "navigate" === n.mode ? void 0 : this.u.fetchOptions); + for (const s of this.iterateCallbacks("fetchDidSucceed")) + t = await s({ event: e, request: i, response: t }); + return t; + } catch (t) { + throw ( + (r && + (await this.runCallbacks("fetchDidFail", { + error: t, + event: e, + originalRequest: r.clone(), + request: i.clone(), + })), + t) + ); + } + } + async fetchAndCachePut(t) { + const e = await this.fetch(t), + s = e.clone(); + return this.waitUntil(this.cachePut(t, s)), e; + } + async cacheMatch(t) { + const e = m(t); + let s; + const { cacheName: n, matchOptions: r } = this.u, + i = await this.getCacheKey(e, "read"), + a = Object.assign(Object.assign({}, r), { cacheName: n }); + s = await caches.match(i, a); + for (const t of this.iterateCallbacks("cachedResponseWillBeUsed")) + s = + (await t({ cacheName: n, matchOptions: r, cachedResponse: s, request: i, event: this.event })) || + void 0; + return s; + } + async cachePut(t, e) { + const n = m(t); + var r; + await ((r = 0), new Promise((t) => setTimeout(t, r))); + const i = await this.getCacheKey(n, "write"); + if (!e) + throw new s("cache-put-with-no-response", { + url: + ((a = i.url), + new URL(String(a), location.href).href.replace(new RegExp(`^${location.origin}`), "")), + }); + var a; + const o = await this.R(e); + if (!o) return !1; + const { cacheName: c, matchOptions: h } = this.u, + u = await self.caches.open(c), + l = this.hasCallback("cacheDidUpdate"), + f = l + ? await (async function (t, e, s, n) { + const r = p(e.url, s); + if (e.url === r) return t.match(e, n); + const i = Object.assign(Object.assign({}, n), { ignoreSearch: !0 }), + a = await t.keys(e, i); + for (const e of a) if (r === p(e.url, s)) return t.match(e, n); + })(u, i.clone(), ["__WB_REVISION__"], h) + : null; + try { + await u.put(i, l ? o.clone() : o); + } catch (t) { + if (t instanceof Error) + throw ( + ("QuotaExceededError" === t.name && + (await (async function () { + for (const t of g) await t(); + })()), + t) + ); + } + for (const t of this.iterateCallbacks("cacheDidUpdate")) + await t({ cacheName: c, oldResponse: f, newResponse: o.clone(), request: i, event: this.event }); + return !0; + } + async getCacheKey(t, e) { + const s = `${t.url} | ${e}`; + if (!this.h[s]) { + let n = t; + for (const t of this.iterateCallbacks("cacheKeyWillBeUsed")) + n = m(await t({ mode: e, request: n, event: this.event, params: this.params })); + this.h[s] = n; + } + return this.h[s]; + } + hasCallback(t) { + for (const e of this.u.plugins) if (t in e) return !0; + return !1; + } + async runCallbacks(t, e) { + for (const s of this.iterateCallbacks(t)) await s(e); + } + *iterateCallbacks(t) { + for (const e of this.u.plugins) + if ("function" == typeof e[t]) { + const s = this.v.get(e), + n = (n) => { + const r = Object.assign(Object.assign({}, n), { state: s }); + return e[t](r); + }; + yield n; + } + } + waitUntil(t) { + return this.p.push(t), t; + } + async doneWaiting() { + let t; + for (; (t = this.p.shift()); ) await t; + } + destroy() { + this.l.resolve(null); + } + async R(t) { + let e = t, + s = !1; + for (const t of this.iterateCallbacks("cacheWillUpdate")) + if ( + ((e = (await t({ request: this.request, response: e, event: this.event })) || void 0), (s = !0), !e) + ) + break; + return s || (e && 200 !== e.status && (e = void 0)), e; + } + } + class R { + constructor(t = {}) { + (this.cacheName = d(t.cacheName)), + (this.plugins = t.plugins || []), + (this.fetchOptions = t.fetchOptions), + (this.matchOptions = t.matchOptions); + } + handle(t) { + const [e] = this.handleAll(t); + return e; + } + handleAll(t) { + t instanceof FetchEvent && (t = { event: t, request: t.request }); + const e = t.event, + s = "string" == typeof t.request ? new Request(t.request) : t.request, + n = "params" in t ? t.params : void 0, + r = new v(this, { event: e, request: s, params: n }), + i = this.q(r, s, e); + return [i, this.D(i, r, s, e)]; + } + async q(t, e, n) { + let r; + await t.runCallbacks("handlerWillStart", { event: n, request: e }); + try { + if (((r = await this.U(e, t)), !r || "error" === r.type)) throw new s("no-response", { url: e.url }); + } catch (s) { + if (s instanceof Error) + for (const i of t.iterateCallbacks("handlerDidError")) + if (((r = await i({ error: s, event: n, request: e })), r)) break; + if (!r) throw s; + } + for (const s of t.iterateCallbacks("handlerWillRespond")) + r = await s({ event: n, request: e, response: r }); + return r; + } + async D(t, e, s, n) { + let r, i; + try { + r = await t; + } catch (i) {} + try { + await e.runCallbacks("handlerDidRespond", { event: n, request: s, response: r }), await e.doneWaiting(); + } catch (t) { + t instanceof Error && (i = t); + } + if ( + (await e.runCallbacks("handlerDidComplete", { event: n, request: s, response: r, error: i }), + e.destroy(), + i) + ) + throw i; + } + } + function b(t) { + t.then(() => {}); + } + function q() { + return ( + (q = Object.assign + ? Object.assign.bind() + : function (t) { + for (var e = 1; e < arguments.length; e++) { + var s = arguments[e]; + for (var n in s) ({}).hasOwnProperty.call(s, n) && (t[n] = s[n]); + } + return t; + }), + q.apply(null, arguments) + ); + } + let D, U; + const x = new WeakMap(), + L = new WeakMap(), + I = new WeakMap(), + C = new WeakMap(), + E = new WeakMap(); + let N = { + get(t, e, s) { + if (t instanceof IDBTransaction) { + if ("done" === e) return L.get(t); + if ("objectStoreNames" === e) return t.objectStoreNames || I.get(t); + if ("store" === e) return s.objectStoreNames[1] ? void 0 : s.objectStore(s.objectStoreNames[0]); + } + return k(t[e]); + }, + set: (t, e, s) => ((t[e] = s), !0), + has: (t, e) => (t instanceof IDBTransaction && ("done" === e || "store" === e)) || e in t, + }; + function O(t) { + return t !== IDBDatabase.prototype.transaction || "objectStoreNames" in IDBTransaction.prototype + ? ( + U || + (U = [ + IDBCursor.prototype.advance, + IDBCursor.prototype.continue, + IDBCursor.prototype.continuePrimaryKey, + ]) + ).includes(t) + ? function (...e) { + return t.apply(B(this), e), k(x.get(this)); + } + : function (...e) { + return k(t.apply(B(this), e)); + } + : function (e, ...s) { + const n = t.call(B(this), e, ...s); + return I.set(n, e.sort ? e.sort() : [e]), k(n); + }; + } + function T(t) { + return "function" == typeof t + ? O(t) + : (t instanceof IDBTransaction && + (function (t) { + if (L.has(t)) return; + const e = new Promise((e, s) => { + const n = () => { + t.removeEventListener("complete", r), + t.removeEventListener("error", i), + t.removeEventListener("abort", i); + }, + r = () => { + e(), n(); + }, + i = () => { + s(t.error || new DOMException("AbortError", "AbortError")), n(); + }; + t.addEventListener("complete", r), + t.addEventListener("error", i), + t.addEventListener("abort", i); + }); + L.set(t, e); + })(t), + (e = t), + (D || (D = [IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction])).some( + (t) => e instanceof t + ) + ? new Proxy(t, N) + : t); + var e; + } + function k(t) { + if (t instanceof IDBRequest) + return (function (t) { + const e = new Promise((e, s) => { + const n = () => { + t.removeEventListener("success", r), t.removeEventListener("error", i); + }, + r = () => { + e(k(t.result)), n(); + }, + i = () => { + s(t.error), n(); + }; + t.addEventListener("success", r), t.addEventListener("error", i); + }); + return ( + e + .then((e) => { + e instanceof IDBCursor && x.set(e, t); + }) + .catch(() => {}), + E.set(e, t), + e + ); + })(t); + if (C.has(t)) return C.get(t); + const e = T(t); + return e !== t && (C.set(t, e), E.set(e, t)), e; + } + const B = (t) => E.get(t); + const P = ["get", "getKey", "getAll", "getAllKeys", "count"], + M = ["put", "add", "delete", "clear"], + W = new Map(); + function j(t, e) { + if (!(t instanceof IDBDatabase) || e in t || "string" != typeof e) return; + if (W.get(e)) return W.get(e); + const s = e.replace(/FromIndex$/, ""), + n = e !== s, + r = M.includes(s); + if (!(s in (n ? IDBIndex : IDBObjectStore).prototype) || (!r && !P.includes(s))) return; + const i = async function (t, ...e) { + const i = this.transaction(t, r ? "readwrite" : "readonly"); + let a = i.store; + return n && (a = a.index(e.shift())), (await Promise.all([a[s](...e), r && i.done]))[0]; + }; + return W.set(e, i), i; + } + N = ((t) => q({}, t, { get: (e, s, n) => j(e, s) || t.get(e, s, n), has: (e, s) => !!j(e, s) || t.has(e, s) }))(N); + try { + self["workbox:expiration:6.5.4"] && _(); + } catch (t) {} + const S = "cache-entries", + K = (t) => { + const e = new URL(t, location.href); + return (e.hash = ""), e.href; + }; + class A { + constructor(t) { + (this._ = null), (this.L = t); + } + I(t) { + const e = t.createObjectStore(S, { keyPath: "id" }); + e.createIndex("cacheName", "cacheName", { unique: !1 }), + e.createIndex("timestamp", "timestamp", { unique: !1 }); + } + C(t) { + this.I(t), + this.L && + (function (t, { blocked: e } = {}) { + const s = indexedDB.deleteDatabase(t); + e && s.addEventListener("blocked", (t) => e(t.oldVersion, t)), k(s).then(() => {}); + })(this.L); + } + async setTimestamp(t, e) { + const s = { url: (t = K(t)), timestamp: e, cacheName: this.L, id: this.N(t) }, + n = (await this.getDb()).transaction(S, "readwrite", { durability: "relaxed" }); + await n.store.put(s), await n.done; + } + async getTimestamp(t) { + const e = await this.getDb(), + s = await e.get(S, this.N(t)); + return null == s ? void 0 : s.timestamp; + } + async expireEntries(t, e) { + const s = await this.getDb(); + let n = await s.transaction(S).store.index("timestamp").openCursor(null, "prev"); + const r = []; + let i = 0; + for (; n; ) { + const s = n.value; + s.cacheName === this.L && ((t && s.timestamp < t) || (e && i >= e) ? r.push(n.value) : i++), + (n = await n.continue()); + } + const a = []; + for (const t of r) await s.delete(S, t.id), a.push(t.url); + return a; + } + N(t) { + return this.L + "|" + K(t); + } + async getDb() { + return ( + this._ || + (this._ = await (function (t, e, { blocked: s, upgrade: n, blocking: r, terminated: i } = {}) { + const a = indexedDB.open(t, e), + o = k(a); + return ( + n && + a.addEventListener("upgradeneeded", (t) => { + n(k(a.result), t.oldVersion, t.newVersion, k(a.transaction), t); + }), + s && a.addEventListener("blocked", (t) => s(t.oldVersion, t.newVersion, t)), + o + .then((t) => { + i && t.addEventListener("close", () => i()), + r && + t.addEventListener("versionchange", (t) => + r(t.oldVersion, t.newVersion, t) + ); + }) + .catch(() => {}), + o + ); + })("workbox-expiration", 1, { upgrade: this.C.bind(this) })), + this._ + ); + } + } + class F { + constructor(t, e = {}) { + (this.O = !1), + (this.T = !1), + (this.k = e.maxEntries), + (this.B = e.maxAgeSeconds), + (this.P = e.matchOptions), + (this.L = t), + (this.M = new A(t)); + } + async expireEntries() { + if (this.O) return void (this.T = !0); + this.O = !0; + const t = this.B ? Date.now() - 1e3 * this.B : 0, + e = await this.M.expireEntries(t, this.k), + s = await self.caches.open(this.L); + for (const t of e) await s.delete(t, this.P); + (this.O = !1), this.T && ((this.T = !1), b(this.expireEntries())); + } + async updateTimestamp(t) { + await this.M.setTimestamp(t, Date.now()); + } + async isURLExpired(t) { + if (this.B) { + const e = await this.M.getTimestamp(t), + s = Date.now() - 1e3 * this.B; + return void 0 === e || e < s; + } + return !1; + } + async delete() { + (this.T = !1), await this.M.expireEntries(1 / 0); + } + } + try { + self["workbox:range-requests:6.5.4"] && _(); + } catch (t) {} + async function H(t, e) { + try { + if (206 === e.status) return e; + const n = t.headers.get("range"); + if (!n) throw new s("no-range-header"); + const r = (function (t) { + const e = t.trim().toLowerCase(); + if (!e.startsWith("bytes=")) throw new s("unit-must-be-bytes", { normalizedRangeHeader: e }); + if (e.includes(",")) throw new s("single-range-only", { normalizedRangeHeader: e }); + const n = /(\d*)-(\d*)/.exec(e); + if (!n || (!n[1] && !n[2])) throw new s("invalid-range-values", { normalizedRangeHeader: e }); + return { start: "" === n[1] ? void 0 : Number(n[1]), end: "" === n[2] ? void 0 : Number(n[2]) }; + })(n), + i = await e.blob(), + a = (function (t, e, n) { + const r = t.size; + if ((n && n > r) || (e && e < 0)) + throw new s("range-not-satisfiable", { size: r, end: n, start: e }); + let i, a; + return ( + void 0 !== e && void 0 !== n + ? ((i = e), (a = n + 1)) + : void 0 !== e && void 0 === n + ? ((i = e), (a = r)) + : void 0 !== n && void 0 === e && ((i = r - n), (a = r)), + { start: i, end: a } + ); + })(i, r.start, r.end), + o = i.slice(a.start, a.end), + c = o.size, + h = new Response(o, { status: 206, statusText: "Partial Content", headers: e.headers }); + return ( + h.headers.set("Content-Length", String(c)), + h.headers.set("Content-Range", `bytes ${a.start}-${a.end - 1}/${i.size}`), + h + ); + } catch (t) { + return new Response("", { status: 416, statusText: "Range Not Satisfiable" }); + } + } + function $(t, e) { + const s = e(); + return t.waitUntil(s), s; + } + try { + self["workbox:precaching:6.5.4"] && _(); + } catch (t) {} + function z(t) { + if (!t) throw new s("add-to-cache-list-unexpected-type", { entry: t }); + if ("string" == typeof t) { + const e = new URL(t, location.href); + return { cacheKey: e.href, url: e.href }; + } + const { revision: e, url: n } = t; + if (!n) throw new s("add-to-cache-list-unexpected-type", { entry: t }); + if (!e) { + const t = new URL(n, location.href); + return { cacheKey: t.href, url: t.href }; + } + const r = new URL(n, location.href), + i = new URL(n, location.href); + return r.searchParams.set("__WB_REVISION__", e), { cacheKey: r.href, url: i.href }; + } + class G { + constructor() { + (this.updatedURLs = []), + (this.notUpdatedURLs = []), + (this.handlerWillStart = async ({ request: t, state: e }) => { + e && (e.originalRequest = t); + }), + (this.cachedResponseWillBeUsed = async ({ event: t, state: e, cachedResponse: s }) => { + if ("install" === t.type && e && e.originalRequest && e.originalRequest instanceof Request) { + const t = e.originalRequest.url; + s ? this.notUpdatedURLs.push(t) : this.updatedURLs.push(t); + } + return s; + }); + } + } + class V { + constructor({ precacheController: t }) { + (this.cacheKeyWillBeUsed = async ({ request: t, params: e }) => { + const s = (null == e ? void 0 : e.cacheKey) || this.W.getCacheKeyForURL(t.url); + return s ? new Request(s, { headers: t.headers }) : t; + }), + (this.W = t); + } + } + let J, Q; + async function X(t, e) { + let n = null; + if (t.url) { + n = new URL(t.url).origin; + } + if (n !== self.location.origin) throw new s("cross-origin-copy-response", { origin: n }); + const r = t.clone(), + i = { headers: new Headers(r.headers), status: r.status, statusText: r.statusText }, + a = e ? e(i) : i, + o = (function () { + if (void 0 === J) { + const t = new Response(""); + if ("body" in t) + try { + new Response(t.body), (J = !0); + } catch (t) { + J = !1; + } + J = !1; + } + return J; + })() + ? r.body + : await r.blob(); + return new Response(o, a); + } + class Y extends R { + constructor(t = {}) { + (t.cacheName = w(t.cacheName)), + super(t), + (this.j = !1 !== t.fallbackToNetwork), + this.plugins.push(Y.copyRedirectedCacheableResponsesPlugin); + } + async U(t, e) { + const s = await e.cacheMatch(t); + return s || (e.event && "install" === e.event.type ? await this.S(t, e) : await this.K(t, e)); + } + async K(t, e) { + let n; + const r = e.params || {}; + if (!this.j) throw new s("missing-precache-entry", { cacheName: this.cacheName, url: t.url }); + { + const s = r.integrity, + i = t.integrity, + a = !i || i === s; + (n = await e.fetch(new Request(t, { integrity: "no-cors" !== t.mode ? i || s : void 0 }))), + s && a && "no-cors" !== t.mode && (this.A(), await e.cachePut(t, n.clone())); + } + return n; + } + async S(t, e) { + this.A(); + const n = await e.fetch(t); + if (!(await e.cachePut(t, n.clone()))) + throw new s("bad-precaching-response", { url: t.url, status: n.status }); + return n; + } + A() { + let t = null, + e = 0; + for (const [s, n] of this.plugins.entries()) + n !== Y.copyRedirectedCacheableResponsesPlugin && + (n === Y.defaultPrecacheCacheabilityPlugin && (t = s), n.cacheWillUpdate && e++); + 0 === e + ? this.plugins.push(Y.defaultPrecacheCacheabilityPlugin) + : e > 1 && null !== t && this.plugins.splice(t, 1); + } + } + (Y.defaultPrecacheCacheabilityPlugin = { + cacheWillUpdate: async ({ response: t }) => (!t || t.status >= 400 ? null : t), + }), + (Y.copyRedirectedCacheableResponsesPlugin = { + cacheWillUpdate: async ({ response: t }) => (t.redirected ? await X(t) : t), + }); + class Z { + constructor({ cacheName: t, plugins: e = [], fallbackToNetwork: s = !0 } = {}) { + (this.F = new Map()), + (this.H = new Map()), + (this.$ = new Map()), + (this.u = new Y({ + cacheName: w(t), + plugins: [...e, new V({ precacheController: this })], + fallbackToNetwork: s, + })), + (this.install = this.install.bind(this)), + (this.activate = this.activate.bind(this)); + } + get strategy() { + return this.u; + } + precache(t) { + this.addToCacheList(t), + this.G || + (self.addEventListener("install", this.install), + self.addEventListener("activate", this.activate), + (this.G = !0)); + } + addToCacheList(t) { + const e = []; + for (const n of t) { + "string" == typeof n ? e.push(n) : n && void 0 === n.revision && e.push(n.url); + const { cacheKey: t, url: r } = z(n), + i = "string" != typeof n && n.revision ? "reload" : "default"; + if (this.F.has(r) && this.F.get(r) !== t) + throw new s("add-to-cache-list-conflicting-entries", { firstEntry: this.F.get(r), secondEntry: t }); + if ("string" != typeof n && n.integrity) { + if (this.$.has(t) && this.$.get(t) !== n.integrity) + throw new s("add-to-cache-list-conflicting-integrities", { url: r }); + this.$.set(t, n.integrity); + } + if ((this.F.set(r, t), this.H.set(r, i), e.length > 0)) { + const t = `Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`; + console.warn(t); + } + } + } + install(t) { + return $(t, async () => { + const e = new G(); + this.strategy.plugins.push(e); + for (const [e, s] of this.F) { + const n = this.$.get(s), + r = this.H.get(e), + i = new Request(e, { integrity: n, cache: r, credentials: "same-origin" }); + await Promise.all(this.strategy.handleAll({ params: { cacheKey: s }, request: i, event: t })); + } + const { updatedURLs: s, notUpdatedURLs: n } = e; + return { updatedURLs: s, notUpdatedURLs: n }; + }); + } + activate(t) { + return $(t, async () => { + const t = await self.caches.open(this.strategy.cacheName), + e = await t.keys(), + s = new Set(this.F.values()), + n = []; + for (const r of e) s.has(r.url) || (await t.delete(r), n.push(r.url)); + return { deletedURLs: n }; + }); + } + getURLsToCacheKeys() { + return this.F; + } + getCachedURLs() { + return [...this.F.keys()]; + } + getCacheKeyForURL(t) { + const e = new URL(t, location.href); + return this.F.get(e.href); + } + getIntegrityForCacheKey(t) { + return this.$.get(t); + } + async matchPrecache(t) { + const e = t instanceof Request ? t.url : t, + s = this.getCacheKeyForURL(e); + if (s) { + return (await self.caches.open(this.strategy.cacheName)).match(s); + } + } + createHandlerBoundToURL(t) { + const e = this.getCacheKeyForURL(t); + if (!e) throw new s("non-precached-url", { url: t }); + return (s) => ( + (s.request = new Request(t)), + (s.params = Object.assign({ cacheKey: e }, s.params)), + this.strategy.handle(s) + ); + } + } + const tt = () => (Q || (Q = new Z()), Q); + class et extends r { + constructor(t, e) { + super(({ request: s }) => { + const n = t.getURLsToCacheKeys(); + for (const r of (function* ( + t, + { + ignoreURLParametersMatching: e = [/^utm_/, /^fbclid$/], + directoryIndex: s = "index.html", + cleanURLs: n = !0, + urlManipulation: r, + } = {} + ) { + const i = new URL(t, location.href); + (i.hash = ""), yield i.href; + const a = (function (t, e = []) { + for (const s of [...t.searchParams.keys()]) + e.some((t) => t.test(s)) && t.searchParams.delete(s); + return t; + })(i, e); + if ((yield a.href, s && a.pathname.endsWith("/"))) { + const t = new URL(a.href); + (t.pathname += s), yield t.href; + } + if (n) { + const t = new URL(a.href); + (t.pathname += ".html"), yield t.href; + } + if (r) { + const t = r({ url: i }); + for (const e of t) yield e.href; + } + })(s.url, e)) { + const e = n.get(r); + if (e) { + return { cacheKey: e, integrity: t.getIntegrityForCacheKey(e) }; + } + } + }, t.strategy); + } + } + (t.CacheFirst = class extends R { + async U(t, e) { + let n, + r = await e.cacheMatch(t); + if (!r) + try { + r = await e.fetchAndCachePut(t); + } catch (t) { + t instanceof Error && (n = t); + } + if (!r) throw new s("no-response", { url: t.url, error: n }); + return r; + } + }), + (t.ExpirationPlugin = class { + constructor(t = {}) { + (this.cachedResponseWillBeUsed = async ({ event: t, request: e, cacheName: s, cachedResponse: n }) => { + if (!n) return null; + const r = this.V(n), + i = this.J(s); + b(i.expireEntries()); + const a = i.updateTimestamp(e.url); + if (t) + try { + t.waitUntil(a); + } catch (t) {} + return r ? n : null; + }), + (this.cacheDidUpdate = async ({ cacheName: t, request: e }) => { + const s = this.J(t); + await s.updateTimestamp(e.url), await s.expireEntries(); + }), + (this.X = t), + (this.B = t.maxAgeSeconds), + (this.Y = new Map()), + t.purgeOnQuotaError && + (function (t) { + g.add(t); + })(() => this.deleteCacheAndMetadata()); + } + J(t) { + if (t === d()) throw new s("expire-custom-caches-only"); + let e = this.Y.get(t); + return e || ((e = new F(t, this.X)), this.Y.set(t, e)), e; + } + V(t) { + if (!this.B) return !0; + const e = this.Z(t); + if (null === e) return !0; + return e >= Date.now() - 1e3 * this.B; + } + Z(t) { + if (!t.headers.has("date")) return null; + const e = t.headers.get("date"), + s = new Date(e).getTime(); + return isNaN(s) ? null : s; + } + async deleteCacheAndMetadata() { + for (const [t, e] of this.Y) await self.caches.delete(t), await e.delete(); + this.Y = new Map(); + } + }), + (t.NavigationRoute = class extends r { + constructor(t, { allowlist: e = [/./], denylist: s = [] } = {}) { + super((t) => this.tt(t), t), (this.et = e), (this.st = s); + } + tt({ url: t, request: e }) { + if (e && "navigate" !== e.mode) return !1; + const s = t.pathname + t.search; + for (const t of this.st) if (t.test(s)) return !1; + return !!this.et.some((t) => t.test(s)); + } + }), + (t.NetworkFirst = class extends R { + constructor(t = {}) { + super(t), + this.plugins.some((t) => "cacheWillUpdate" in t) || this.plugins.unshift(u), + (this.nt = t.networkTimeoutSeconds || 0); + } + async U(t, e) { + const n = [], + r = []; + let i; + if (this.nt) { + const { id: s, promise: a } = this.rt({ request: t, logs: n, handler: e }); + (i = s), r.push(a); + } + const a = this.it({ timeoutId: i, request: t, logs: n, handler: e }); + r.push(a); + const o = await e.waitUntil((async () => (await e.waitUntil(Promise.race(r))) || (await a))()); + if (!o) throw new s("no-response", { url: t.url }); + return o; + } + rt({ request: t, logs: e, handler: s }) { + let n; + return { + promise: new Promise((e) => { + n = setTimeout(async () => { + e(await s.cacheMatch(t)); + }, 1e3 * this.nt); + }), + id: n, + }; + } + async it({ timeoutId: t, request: e, logs: s, handler: n }) { + let r, i; + try { + i = await n.fetchAndCachePut(e); + } catch (t) { + t instanceof Error && (r = t); + } + return t && clearTimeout(t), (!r && i) || (i = await n.cacheMatch(e)), i; + } + }), + (t.RangeRequestsPlugin = class { + constructor() { + this.cachedResponseWillBeUsed = async ({ request: t, cachedResponse: e }) => + e && t.headers.has("range") ? await H(t, e) : e; + } + }), + (t.StaleWhileRevalidate = class extends R { + constructor(t = {}) { + super(t), this.plugins.some((t) => "cacheWillUpdate" in t) || this.plugins.unshift(u); + } + async U(t, e) { + const n = e.fetchAndCachePut(t).catch(() => {}); + e.waitUntil(n); + let r, + i = await e.cacheMatch(t); + if (i); + else + try { + i = await n; + } catch (t) { + t instanceof Error && (r = t); + } + if (!i) throw new s("no-response", { url: t.url, error: r }); + return i; + } + }), + (t.cleanupOutdatedCaches = function () { + self.addEventListener("activate", (t) => { + const e = w(); + t.waitUntil( + (async (t, e = "-precache-") => { + const s = (await self.caches.keys()).filter( + (s) => s.includes(e) && s.includes(self.registration.scope) && s !== t + ); + return await Promise.all(s.map((t) => self.caches.delete(t))), s; + })(e).then((t) => {}) + ); + }); + }), + (t.clientsClaim = function () { + self.addEventListener("activate", () => self.clients.claim()); + }), + (t.createHandlerBoundToURL = function (t) { + return tt().createHandlerBoundToURL(t); + }), + (t.precacheAndRoute = function (t, e) { + !(function (t) { + tt().precache(t); + })(t), + (function (t) { + const e = tt(); + h(new et(e, t)); + })(e); + }), + (t.registerRoute = h); +});