From 69068c3a0fb327b1ea61b480c79329daebd7001a Mon Sep 17 00:00:00 2001 From: Maxime Beauchamp <15185355+baktun14@users.noreply.github.com> Date: Tue, 19 Sep 2023 16:59:58 -0400 Subject: [PATCH] refactor/provider-endpoint-attributes (#20) * fix timeout to stop refreshing * added uptime tracker task + add new endpoint for provider list + mapping * filter duplicate providers with host uri * fix markdown code highlight missing language * improve provider list * improve provider list styling * added link to provider from deployment list * gpu list improvements * added gpu sorting * added sorting with query param * temp fix for typing * pr fix * improve network capacity title * small bugfix dom utils * remove unused vars * link to docs for provider * fix sql query for network capacity graph * fixes --- api/package-lock.json | 14 +- api/package.json | 2 +- api/src/db/blocksProvider.ts | 2 +- api/src/db/dbConnection.ts | 2 +- api/src/db/deploymentProvider.ts | 2 +- api/src/db/networkRevenueProvider.ts | 4 +- api/src/db/statsProvider.ts | 19 +- api/src/db/templateProvider.ts | 2 +- api/src/db/transactionsProvider.ts | 2 +- api/src/index.ts | 7 +- api/src/middlewares/privateMiddleware.ts | 2 +- api/src/middlewares/userMiddleware.ts | 2 +- api/src/providers/apiNodeProvider.ts | 9 +- api/src/providers/githubProvider.ts | 25 +- .../providers/providerAttributesProvider.ts | 13 - api/src/providers/providerStatusProvider.ts | 79 +++-- api/src/providers/stripeProvider.ts | 2 +- api/src/providers/templateReposProvider.ts | 4 +- api/src/routers/apiRouter.ts | 23 +- api/src/routers/userRouter.ts | 2 +- api/src/scheduler.ts | 2 +- api/src/types/provider.ts | 130 ++++++++ api/src/{shared => }/utils/addresses.ts | 0 api/src/{shared => }/utils/coin.ts | 0 api/src/{shared => utils}/constants.ts | 2 +- api/src/{shared => }/utils/date.ts | 0 api/src/{shared => }/utils/delay.ts | 0 api/src/{shared => }/utils/env.ts | 0 api/src/{shared => }/utils/files.ts | 0 api/src/utils/map/provider.ts | 131 ++++++++ api/src/{shared => }/utils/math.ts | 0 api/src/{shared => }/utils/pricing.ts | 2 +- api/src/{shared => }/utils/protobuf.ts | 6 +- api/src/{shared => }/utils/query.ts | 0 api/src/{shared => }/utils/urls.ts | 0 deploy-web/public/sw.js | 2 +- deploy-web/public/sw.js.map | 2 +- .../src/components/deployment/LeaseChip.tsx | 38 ++- .../deploymentDetail/ManifestUpdate.tsx | 15 +- .../components/newDeploymentWizard/BidRow.tsx | 11 +- .../components/providers/AuditorButton.tsx | 14 +- .../components/providers/AuditorsModal.tsx | 157 +++++---- .../src/components/providers/CapacityIcon.tsx | 21 +- .../src/components/providers/ProviderList.tsx | 31 +- .../components/providers/ProviderListRow.tsx | 299 ++++++++++-------- .../src/components/providers/ProviderMap.tsx | 6 +- deploy-web/src/components/shared/Markdown.tsx | 3 +- deploy-web/src/components/shared/Popup.tsx | 4 +- .../AkashProvider/AkashProviderContext.tsx | 4 +- .../src/pages/providers/[owner]/raw.tsx | 10 +- deploy-web/src/pages/providers/index.tsx | 67 ++-- .../src/pages/settings/authorizations.tsx | 2 +- .../src/pages/templates/[templateId].tsx | 8 +- deploy-web/src/pages/templates/index.tsx | 56 ++-- deploy-web/src/queries/queryKeys.ts | 1 + deploy-web/src/queries/useProvidersQuery.ts | 32 +- deploy-web/src/types/provider.ts | 96 ++++++ deploy-web/src/utils/apiUtils.ts | 3 + deploy-web/src/utils/domUtils.ts | 5 + deploy-web/src/utils/urlUtils.ts | 2 +- indexer/src/index.ts | 2 + indexer/src/indexers/akashStatsIndexer.ts | 7 +- .../src/providers/providerStatusProvider.ts | 88 +----- indexer/src/tasks/providerUptimeTracker.ts | 51 +++ shared/dbSchemas/akash/provider.ts | 4 + 65 files changed, 1004 insertions(+), 527 deletions(-) delete mode 100644 api/src/providers/providerAttributesProvider.ts create mode 100644 api/src/types/provider.ts rename api/src/{shared => }/utils/addresses.ts (100%) rename api/src/{shared => }/utils/coin.ts (100%) rename api/src/{shared => utils}/constants.ts (90%) rename api/src/{shared => }/utils/date.ts (100%) rename api/src/{shared => }/utils/delay.ts (100%) rename api/src/{shared => }/utils/env.ts (100%) rename api/src/{shared => }/utils/files.ts (100%) create mode 100644 api/src/utils/map/provider.ts rename api/src/{shared => }/utils/math.ts (100%) rename api/src/{shared => }/utils/pricing.ts (97%) rename api/src/{shared => }/utils/protobuf.ts (89%) rename api/src/{shared => }/utils/query.ts (100%) rename api/src/{shared => }/utils/urls.ts (100%) create mode 100644 deploy-web/src/utils/domUtils.ts create mode 100644 indexer/src/tasks/providerUptimeTracker.ts diff --git a/api/package-lock.json b/api/package-lock.json index ddeefef8c..7470cdb21 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -48,7 +48,7 @@ "@types/node": "^16.6.0", "@types/node-fetch": "^2.6.2", "@types/pg": "^8.6.5", - "@types/semver": "^7.5.1", + "@types/semver": "^7.5.2", "@types/uuid": "^8.3.1", "alias-hq": "^5.1.6", "nodemon": "^2.0.7", @@ -4990,9 +4990,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", "dev": true }, "node_modules/@types/serve-static": { @@ -20574,9 +20574,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", "dev": true }, "@types/serve-static": { diff --git a/api/package.json b/api/package.json index ee6639713..7a061f8cd 100644 --- a/api/package.json +++ b/api/package.json @@ -54,7 +54,7 @@ "@types/node": "^16.6.0", "@types/node-fetch": "^2.6.2", "@types/pg": "^8.6.5", - "@types/semver": "^7.5.1", + "@types/semver": "^7.5.2", "@types/uuid": "^8.3.1", "alias-hq": "^5.1.6", "nodemon": "^2.0.7", diff --git a/api/src/db/blocksProvider.ts b/api/src/db/blocksProvider.ts index 909023b77..0775bfed8 100644 --- a/api/src/db/blocksProvider.ts +++ b/api/src/db/blocksProvider.ts @@ -1,6 +1,6 @@ import { AkashBlock as Block, AkashMessage as Message } from "@shared/dbSchemas/akash"; import { Transaction, Validator } from "@shared/dbSchemas/base"; -import { averageBlockTime } from "@src/shared/constants"; +import { averageBlockTime } from "@src/utils/constants"; import { add } from "date-fns"; export async function getBlocks(limit: number) { diff --git a/api/src/db/dbConnection.ts b/api/src/db/dbConnection.ts index 21bdc5192..4f7f93fab 100644 --- a/api/src/db/dbConnection.ts +++ b/api/src/db/dbConnection.ts @@ -1,5 +1,5 @@ import { defaults as pgDefaults } from "pg"; -import { env } from "@src/shared/utils/env"; +import { env } from "@src/utils/env"; import { Transaction as DbTransaction } from "sequelize"; import { Sequelize } from "sequelize-typescript"; import { chainModels, getChainModels, userModels } from "@shared/dbSchemas"; diff --git a/api/src/db/deploymentProvider.ts b/api/src/db/deploymentProvider.ts index caf2221f6..19e2f7884 100644 --- a/api/src/db/deploymentProvider.ts +++ b/api/src/db/deploymentProvider.ts @@ -1,6 +1,6 @@ import * as v1 from "@src/proto/akash/v1beta1"; import * as v2 from "@src/proto/akash/v1beta2"; -import { decodeMsg } from "@src/shared/utils/protobuf"; +import { decodeMsg } from "@src/utils/protobuf"; import { Transaction } from "@shared/dbSchemas/base"; import { Deployment } from "@shared/dbSchemas/akash"; import { Op } from "sequelize"; diff --git a/api/src/db/networkRevenueProvider.ts b/api/src/db/networkRevenueProvider.ts index 44bd56736..ba657ad07 100644 --- a/api/src/db/networkRevenueProvider.ts +++ b/api/src/db/networkRevenueProvider.ts @@ -2,8 +2,8 @@ import { Op } from "sequelize"; import { Day } from "@shared/dbSchemas/base"; import { AkashBlock as Block } from "@shared/dbSchemas/akash"; import { add } from "date-fns"; -import { getTodayUTC } from "@src/shared/utils/date"; -import { round, uaktToAKT, udenomToDenom } from "@src/shared/utils/math"; +import { getTodayUTC } from "@src/utils/date"; +import { round, uaktToAKT, udenomToDenom } from "@src/utils/math"; export const getWeb3IndexRevenue = async (debug?: boolean) => { const dailyNetworkRevenues = await getDailyRevenue(); diff --git a/api/src/db/statsProvider.ts b/api/src/db/statsProvider.ts index c7c3c0ca9..47f39ee7b 100644 --- a/api/src/db/statsProvider.ts +++ b/api/src/db/statsProvider.ts @@ -160,15 +160,16 @@ export const getProviderGraphData = async (dataName: ProviderStatsKey) => { async () => { return (await chainDb.query( `SELECT d."date", (SUM("activeCPU") + SUM("pendingCPU") + SUM("availableCPU")) AS "cpu", (SUM("activeGPU") + SUM("pendingGPU") + SUM("availableGPU")) AS "gpu", (SUM("activeMemory") + SUM("pendingMemory") + SUM("availableMemory")) AS memory, (SUM("activeStorage") + SUM("pendingStorage") + SUM("availableStorage")) as storage, COUNT(*) as count - FROM "day" d - INNER JOIN ( - SELECT DISTINCT ON("owner",DATE("checkDate")) DATE("checkDate") AS date, "activeCPU", "pendingCPU", "availableCPU", "activeGPU", "pendingGPU", "availableGPU", "activeMemory", "pendingMemory", "availableMemory", "activeStorage", "pendingStorage", "availableStorage", "isOnline" - FROM "providerSnapshot" - ORDER BY "owner",DATE("checkDate"),"checkDate" DESC - ) "dailyProviderStats" - ON d."date"="dailyProviderStats"."date" AND "isOnline" IS TRUE - GROUP BY d."date" - ORDER BY d."date" ASC`, + FROM "day" d + INNER JOIN ( + SELECT DISTINCT ON("hostUri",DATE("checkDate")) DATE("checkDate") AS date, ps."activeCPU", ps."pendingCPU", ps."availableCPU", ps."activeGPU", ps."pendingGPU", ps."availableGPU", ps."activeMemory", ps."pendingMemory", ps."availableMemory", ps."activeStorage", ps."pendingStorage", ps."availableStorage", ps."isOnline" + FROM "providerSnapshot" ps + INNER JOIN "provider" ON "provider"."owner"=ps."owner" + ORDER BY "hostUri",DATE("checkDate"),"checkDate" DESC + ) "dailyProviderStats" + ON d."date"="dailyProviderStats"."date" AND "isOnline" IS TRUE + GROUP BY d."date" + ORDER BY d."date" ASC`, { type: QueryTypes.SELECT } diff --git a/api/src/db/templateProvider.ts b/api/src/db/templateProvider.ts index d6d49c0b4..b05e5f752 100644 --- a/api/src/db/templateProvider.ts +++ b/api/src/db/templateProvider.ts @@ -1,7 +1,7 @@ import { Template, TemplateFavorite, UserSetting } from "@shared/dbSchemas/user"; import * as uuid from "uuid"; import { Op } from "sequelize"; -import { toUTC } from "@src/shared/utils/date"; +import { toUTC } from "@src/utils/date"; export async function getTemplateById(id: string, userId: string = "") { const template = await Template.findOne({ diff --git a/api/src/db/transactionsProvider.ts b/api/src/db/transactionsProvider.ts index 27a0bb611..9dd1208f5 100644 --- a/api/src/db/transactionsProvider.ts +++ b/api/src/db/transactionsProvider.ts @@ -1,6 +1,6 @@ import { Transaction, AddressReference } from "@shared/dbSchemas/base"; import { AkashBlock as Block, AkashMessage as Message } from "@shared/dbSchemas/akash"; -import { msgToJSON } from "@src/shared/utils/protobuf"; +import { msgToJSON } from "@src/utils/protobuf"; import { QueryTypes } from "sequelize"; import { chainDb } from "./dbConnection"; diff --git a/api/src/index.ts b/api/src/index.ts index 618915aab..ef7ba8911 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -1,15 +1,14 @@ import express from "express"; import cors from "cors"; import packageJson from "../package.json"; -import { isProd } from "./shared/constants"; +import { isProd } from "./utils/constants"; import * as Sentry from "@sentry/node"; -import * as marketDataProvider from "./providers/marketDataProvider"; import { Scheduler } from "./scheduler"; import { apiRouter } from "./routers/apiRouter"; import { userRouter } from "./routers/userRouter"; import { web3IndexRouter } from "./routers/web3indexRouter"; -import { bytesToHumanReadableSize } from "./shared/utils/files"; -import { env } from "./shared/utils/env"; +import { bytesToHumanReadableSize } from "./utils/files"; +import { env } from "./utils/env"; import { chainDb, syncUserSchema, userDb } from "./db/dbConnection"; import { dashboardRouter } from "./routers/dashboardRouter"; diff --git a/api/src/middlewares/privateMiddleware.ts b/api/src/middlewares/privateMiddleware.ts index 1d6c513bb..874718d75 100644 --- a/api/src/middlewares/privateMiddleware.ts +++ b/api/src/middlewares/privateMiddleware.ts @@ -1,4 +1,4 @@ -import { env } from "@src/shared/utils/env"; +import { env } from "@src/utils/env"; export function privateMiddleware(req, res, next) { if (!env.SecretToken) { diff --git a/api/src/middlewares/userMiddleware.ts b/api/src/middlewares/userMiddleware.ts index 0862811b5..b61fb2fb3 100644 --- a/api/src/middlewares/userMiddleware.ts +++ b/api/src/middlewares/userMiddleware.ts @@ -1,4 +1,4 @@ -import { env } from "@src/shared/utils/env"; +import { env } from "@src/utils/env"; import { expressjwt as jwt, GetVerificationKey, Request as JWTRequest } from "express-jwt"; import { expressJwtSecret } from "jwks-rsa"; diff --git a/api/src/providers/apiNodeProvider.ts b/api/src/providers/apiNodeProvider.ts index 8341bde7a..f2a8389dd 100644 --- a/api/src/providers/apiNodeProvider.ts +++ b/api/src/providers/apiNodeProvider.ts @@ -1,15 +1,14 @@ import fetch from "node-fetch"; import { getDeploymentRelatedMessages } from "../db/deploymentProvider"; -import { averageBlockCountInAMonth } from "@src/shared/constants"; -import { getMarketData } from "./marketDataProvider"; -import { coinToAsset } from "@src/shared/utils/coin"; +import { averageBlockCountInAMonth } from "@src/utils/constants"; +import { coinToAsset } from "@src/utils/coin"; import { getTransactionByAddress } from "@src/db/transactionsProvider"; import axios from "axios"; import { Validator } from "@shared/dbSchemas/base"; import { Op } from "sequelize"; import { Provider, ProviderAttribute } from "@shared/dbSchemas/akash"; import { cacheKeys, cacheResponse } from "@src/caching/helpers"; -import { env } from "@src/shared/utils/env"; +import { env } from "@src/utils/env"; import { RestDeploymentInfoResponse, RestLeaseListResponse } from "@src/types/rest"; const defaultNodeUrlMapping = { @@ -349,8 +348,6 @@ export async function getDeployment(owner: string, dseq: string) { }, include: [{ model: ProviderAttribute }] }); - - const marketData = await cacheResponse(60 * 5, cacheKeys.getMarketData, getMarketData); const deploymentDenom = deploymentData.escrow_account.balance.denom; const leases = leasesData.leases.map((x) => { diff --git a/api/src/providers/githubProvider.ts b/api/src/providers/githubProvider.ts index 289aa0148..25645c669 100644 --- a/api/src/providers/githubProvider.ts +++ b/api/src/providers/githubProvider.ts @@ -1,5 +1,8 @@ import { Octokit } from "@octokit/rest"; -import { env } from "@src/shared/utils/env"; +import { cacheKeys, cacheResponse } from "@src/caching/helpers"; +import { ProviderAttributesSchema } from "@src/types/provider"; +import { env } from "@src/utils/env"; +import axios from "axios"; export function getOctokit() { const githubPAT = env.AkashlyticsGithubPAT; @@ -14,3 +17,23 @@ export function getOctokit() { baseUrl: "https://api.github.com" }); } + +export const getProviderAttributesSchema = async (): Promise => { + // Fetching provider attributes schema + const response = await cacheResponse( + 30, + cacheKeys.getProviderAttributesSchema, + async () => await axios.get("https://raw.githubusercontent.com/akash-network/cloudmos/main/config/provider-attributes.json") + ); + + return response.data; +}; + +export async function getAuditors() { + const response = await cacheResponse(60 * 5, cacheKeys.getAuditors, async () => { + const res = await axios.get("https://raw.githubusercontent.com/akash-network/cloudmos/main/config/auditors.json"); + return res.data; + }); + + return response; +} diff --git a/api/src/providers/providerAttributesProvider.ts b/api/src/providers/providerAttributesProvider.ts deleted file mode 100644 index 2bb5240d9..000000000 --- a/api/src/providers/providerAttributesProvider.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { cacheKeys, cacheResponse } from "@src/caching/helpers"; -import axios from "axios"; - -export const getProviderAttributesSchema = async () => { - // Fetching provider attributes schema - const response = await cacheResponse( - 30, - cacheKeys.getProviderAttributesSchema, - async () => await axios.get("https://raw.githubusercontent.com/akash-network/cloudmos/main/config/provider-attributes.json") - ); - - return response.data; -}; diff --git a/api/src/providers/providerStatusProvider.ts b/api/src/providers/providerStatusProvider.ts index 9b1894e5b..d00ea4bc3 100644 --- a/api/src/providers/providerStatusProvider.ts +++ b/api/src/providers/providerStatusProvider.ts @@ -1,9 +1,11 @@ import { Provider, ProviderAttribute, ProviderAttributeSignature } from "@shared/dbSchemas/akash"; import { ProviderSnapshot } from "@shared/dbSchemas/akash/providerSnapshot"; -import { toUTC } from "@src/shared/utils/date"; +import { toUTC } from "@src/utils/date"; import { add } from "date-fns"; import { Op } from "sequelize"; import semver from "semver"; +import { mapProviderToList } from "@src/utils/map/provider"; +import { getAuditors, getProviderAttributesSchema } from "./githubProvider"; export async function getNetworkCapacity() { const providers = await Provider.findAll({ @@ -12,21 +14,22 @@ export async function getNetworkCapacity() { deletedHeight: null } }); + const filteredProviders = providers.filter((value, index, self) => self.map((x) => x.hostUri).indexOf(value.hostUri) === index); const stats = { - activeProviderCount: providers.length, - activeCPU: providers.map((x) => x.activeCPU).reduce((a, b) => a + b, 0), - activeGPU: providers.map((x) => x.activeGPU).reduce((a, b) => a + b, 0), - activeMemory: providers.map((x) => x.activeMemory).reduce((a, b) => a + b, 0), - activeStorage: providers.map((x) => x.activeStorage).reduce((a, b) => a + b, 0), - pendingCPU: providers.map((x) => x.pendingCPU).reduce((a, b) => a + b, 0), - pendingGPU: providers.map((x) => x.pendingGPU).reduce((a, b) => a + b, 0), - pendingMemory: providers.map((x) => x.pendingMemory).reduce((a, b) => a + b, 0), - pendingStorage: providers.map((x) => x.pendingStorage).reduce((a, b) => a + b, 0), - availableCPU: providers.map((x) => x.availableCPU).reduce((a, b) => a + b, 0), - availableGPU: providers.map((x) => x.availableGPU).reduce((a, b) => a + b, 0), - availableMemory: providers.map((x) => x.availableMemory).reduce((a, b) => a + b, 0), - availableStorage: providers.map((x) => x.availableStorage).reduce((a, b) => a + b, 0) + activeProviderCount: filteredProviders.length, + activeCPU: filteredProviders.map((x) => x.activeCPU).reduce((a, b) => a + b, 0), + activeGPU: filteredProviders.map((x) => x.activeGPU).reduce((a, b) => a + b, 0), + activeMemory: filteredProviders.map((x) => x.activeMemory).reduce((a, b) => a + b, 0), + activeStorage: filteredProviders.map((x) => x.activeStorage).reduce((a, b) => a + b, 0), + pendingCPU: filteredProviders.map((x) => x.pendingCPU).reduce((a, b) => a + b, 0), + pendingGPU: filteredProviders.map((x) => x.pendingGPU).reduce((a, b) => a + b, 0), + pendingMemory: filteredProviders.map((x) => x.pendingMemory).reduce((a, b) => a + b, 0), + pendingStorage: filteredProviders.map((x) => x.pendingStorage).reduce((a, b) => a + b, 0), + availableCPU: filteredProviders.map((x) => x.availableCPU).reduce((a, b) => a + b, 0), + availableGPU: filteredProviders.map((x) => x.availableGPU).reduce((a, b) => a + b, 0), + availableMemory: filteredProviders.map((x) => x.availableMemory).reduce((a, b) => a + b, 0), + availableStorage: filteredProviders.map((x) => x.availableStorage).reduce((a, b) => a + b, 0) }; return { @@ -60,17 +63,17 @@ export async function getProviders() { separate: true, where: { checkDate: { - [Op.gte]: add(nowUtc, { days: -7 }) + [Op.gte]: add(nowUtc, { days: -1 }) } } } ] }); + const filteredProviders = providers.filter((value, index, self) => self.map((x) => x.hostUri).indexOf(value.hostUri) === index); - return providers.map((x) => { + return filteredProviders.map((x) => { const isValidVersion = x.cosmosSdkVersion ? semver.gte(x.cosmosSdkVersion, "v0.45.9") : false; - const name = new URL(x.hostUri).hostname; - const uptime7d = x.providerSnapshots.some((ps) => ps.isOnline) ? x.providerSnapshots.filter((ps) => ps.isOnline).length / x.providerSnapshots.length : 0; + const name = x.isOnline ? new URL(x.hostUri).hostname : null; return { owner: x.owner, @@ -113,15 +116,37 @@ export async function getProviders() { memory: isValidVersion ? x.availableMemory : 0, storage: isValidVersion ? x.availableStorage : 0 }, - uptime7d: uptime7d, - uptime: x.providerSnapshots - .filter((ps) => ps.checkDate > add(nowUtc, { days: -1 })) - .map((ps) => ({ - id: ps.id, - isOnline: ps.isOnline, - checkDate: ps.checkDate - })), - isValidVersion + uptime7d: x.uptime7d, + uptime: x.providerSnapshots.map((ps) => ({ + id: ps.id, + isOnline: ps.isOnline, + checkDate: ps.checkDate + })), + isValidVersion, + isOnline: x.isOnline }; }); } + +export const getProviderList = async () => { + const providers = await Provider.findAll({ + where: { + deletedHeight: null + }, + include: [ + { + model: ProviderAttribute + }, + { + model: ProviderAttributeSignature + } + ] + }); + const filteredProviders = providers.filter((value, index, self) => self.map((x) => x.hostUri).indexOf(value.hostUri) === index); + const providerAttributeSchemaQuery = getProviderAttributesSchema(); + const auditorsQuery = getAuditors(); + + const [auditors, providerAttributeSchema] = await Promise.all([auditorsQuery, providerAttributeSchemaQuery]); + + return filteredProviders.map((x) => mapProviderToList(x, providerAttributeSchema, auditors)); +}; diff --git a/api/src/providers/stripeProvider.ts b/api/src/providers/stripeProvider.ts index bd3324340..537e60a8c 100644 --- a/api/src/providers/stripeProvider.ts +++ b/api/src/providers/stripeProvider.ts @@ -1,6 +1,6 @@ import { UserSetting } from "@shared/dbSchemas/user"; import { PlanCode } from "@shared/plans"; -import { env } from "@src/shared/utils/env"; +import { env } from "@src/utils/env"; import Stripe from "stripe"; diff --git a/api/src/providers/templateReposProvider.ts b/api/src/providers/templateReposProvider.ts index 9141dbb48..a040da17b 100644 --- a/api/src/providers/templateReposProvider.ts +++ b/api/src/providers/templateReposProvider.ts @@ -2,11 +2,11 @@ import fetch from "node-fetch"; import { markdownToTxt } from "markdown-to-txt"; import path from "path"; import { getOctokit } from "./githubProvider"; -import { isUrlAbsolute } from "@src/shared/utils/urls"; +import { isUrlAbsolute } from "@src/utils/urls"; import * as fs from "fs"; import { Octokit } from "@octokit/rest"; import { getLogoFromPath } from "./templateReposLogos"; -import { dataFolderPath } from "@src/shared/constants"; +import { dataFolderPath } from "@src/utils/constants"; import { GithubChainRegistryAssetListResponse } from "@src/types"; import { GithubDirectoryItem } from "@src/types/github"; diff --git a/api/src/routers/apiRouter.ts b/api/src/routers/apiRouter.ts index e10de9bcc..68286b556 100644 --- a/api/src/routers/apiRouter.ts +++ b/api/src/routers/apiRouter.ts @@ -12,17 +12,17 @@ import { getValidator, getValidators } from "@src/providers/apiNodeProvider"; -import { getNetworkCapacity, getProviders } from "@src/providers/providerStatusProvider"; +import { getNetworkCapacity, getProviderList, getProviders } from "@src/providers/providerStatusProvider"; import { getDashboardData, getGraphData, getProviderActiveLeasesGraphData, getProviderGraphData } from "@src/db/statsProvider"; -import { round } from "@src/shared/utils/math"; -import { isValidBech32Address } from "@src/shared/utils/addresses"; -import { getAkashPricing, getAWSPricing, getAzurePricing, getGCPPricing } from "@src/shared/utils/pricing"; +import { round } from "@src/utils/math"; +import { isValidBech32Address } from "@src/utils/addresses"; +import { getAkashPricing, getAWSPricing, getAzurePricing, getGCPPricing } from "@src/utils/pricing"; import asyncHandler from "express-async-handler"; import { ProviderStatsKey } from "@src/types/graph"; -import { getProviderAttributesSchema } from "@src/providers/providerAttributesProvider"; import { cacheKeys, cacheResponse } from "@src/caching/helpers"; import axios from "axios"; import { getMarketData } from "@src/providers/marketDataProvider"; +import { getAuditors, getProviderAttributesSchema } from "@src/providers/githubProvider"; export const apiRouter = express.Router(); @@ -233,6 +233,14 @@ apiRouter.get( }) ); +apiRouter.get( + "/providerList", + asyncHandler(async (req, res) => { + const providers = await getProviderList(); + res.send(providers); + }) +); + apiRouter.get("/marketData", async (req, res) => { const response = await cacheResponse(60 * 5, cacheKeys.getMarketData, getMarketData); res.send(response); @@ -371,10 +379,7 @@ apiRouter.get( apiRouter.get( "/getAuditors", asyncHandler(async (req, res) => { - const response = await cacheResponse(60 * 5, cacheKeys.getAuditors, async () => { - const res = await axios.get("https://raw.githubusercontent.com/akash-network/cloudmos/main/config/auditors.json"); - return res.data; - }); + const response = await getAuditors(); res.send(response); }) ); diff --git a/api/src/routers/userRouter.ts b/api/src/routers/userRouter.ts index b62805e1e..f787f89d9 100644 --- a/api/src/routers/userRouter.ts +++ b/api/src/routers/userRouter.ts @@ -10,7 +10,7 @@ import { checkUsernameAvailable, subscribeToNewsletter } from "@src/providers/userDataProvider"; -import { isValidBech32Address } from "@src/shared/utils/addresses"; +import { isValidBech32Address } from "@src/utils/addresses"; import * as uuid from "uuid"; import { deleteTemplate, diff --git a/api/src/scheduler.ts b/api/src/scheduler.ts index e8bc6c204..0f6ae2a4b 100644 --- a/api/src/scheduler.ts +++ b/api/src/scheduler.ts @@ -1,5 +1,5 @@ import humanInterval from "human-interval"; -import { getPrettyTime } from "./shared/utils/date"; +import { getPrettyTime } from "./utils/date"; import fetch from "node-fetch"; class TaskDef { diff --git a/api/src/types/provider.ts b/api/src/types/provider.ts new file mode 100644 index 000000000..aebf1a2f0 --- /dev/null +++ b/api/src/types/provider.ts @@ -0,0 +1,130 @@ +export interface ProviderList { + owner: string; + name: string; + hostUri: string; + createdHeight: number; + email: string; + website: string; + lastCheckDate: Date; + deploymentCount: number; + leaseCount: number; + cosmosSdkVersion: string; + akashVersion: string; + ipRegion: string; + ipRegionCode: string; + ipCountry: string; + ipCountryCode: string; + ipLat: string; + ipLon: string; + uptime1d: number; + uptime7d: number; + uptime30d: number; + isValidVersion: boolean; + isOnline: boolean; + isAudited: boolean; + activeStats: { + cpu: number; + gpu: number; + memory: number; + storage: number; + }; + pendingStats: { + cpu: number; + gpu: number; + memory: number; + storage: number; + }; + availableStats: { + cpu: number; + gpu: number; + memory: number; + storage: number; + }; + attributes: Array<{ + key: string; + value: string; + auditedBy: string[]; + }>; + + // Attributes schema + host: string; + organization: string; + statusPage: string; + locationRegion: string; + country: string; + city: string; + timezone: string; + locationType: string; + hostingProvider: string; + hardwareCpu: string; + hardwareCpuArch: string; + hardwareGpuVendor: string; + hardwareGpuModels: string[]; + hardwareDisk: string[]; + featPersistentStorage: boolean; + featPersistentStorageType: string[]; + hardwareMemory: string; + networkProvider: string; + networkSpeedDown: number; + networkSpeedUp: number; + tier: string; + featEndpointCustomDomain: boolean; + workloadSupportChia: boolean; + workloadSupportChiaCapabilities: string[]; + featEndpointIp: boolean; +} + +export interface ProviderDetail extends ProviderList { + uptime: Array<{ + id: string; + isOnline: boolean; + checkDate: Date; + }>; +} + +export type ProviderAttributesSchema = { + host: ProviderAttributeSchemaDetail; + email: ProviderAttributeSchemaDetail; + organization: ProviderAttributeSchemaDetail; + website: ProviderAttributeSchemaDetail; + tier: ProviderAttributeSchemaDetail; + "status-page": ProviderAttributeSchemaDetail; + "location-region": ProviderAttributeSchemaDetail; + country: ProviderAttributeSchemaDetail; + city: ProviderAttributeSchemaDetail; + timezone: ProviderAttributeSchemaDetail; + "location-type": ProviderAttributeSchemaDetail; + "hosting-provider": ProviderAttributeSchemaDetail; + "hardware-cpu": ProviderAttributeSchemaDetail; + "hardware-cpu-arch": ProviderAttributeSchemaDetail; + "hardware-gpu": ProviderAttributeSchemaDetail; + "hardware-gpu-model": ProviderAttributeSchemaDetail; + "hardware-disk": ProviderAttributeSchemaDetail; + "hardware-memory": ProviderAttributeSchemaDetail; + "network-provider": ProviderAttributeSchemaDetail; + "network-speed-up": ProviderAttributeSchemaDetail; + "network-speed-down": ProviderAttributeSchemaDetail; + "feat-persistent-storage": ProviderAttributeSchemaDetail; + "feat-persistent-storage-type": ProviderAttributeSchemaDetail; + "workload-support-chia": ProviderAttributeSchemaDetail; + "workload-support-chia-capabilities": ProviderAttributeSchemaDetail; + "feat-endpoint-ip": ProviderAttributeSchemaDetail; + "feat-endpoint-custom-domain": ProviderAttributeSchemaDetail; +}; + +export type ProviderAttributeSchemaDetail = { + key: string; + type: "string" | "number" | "boolean" | "option" | "multiple-option"; + required: boolean; + description: string; + values?: Array; +}; + +export type ProviderAttributeSchemaDetailValue = { key: "string"; description: string; value?: any }; + +export type Auditor = { + id: string; + name: string; + address: string; + website: string; +}; diff --git a/api/src/shared/utils/addresses.ts b/api/src/utils/addresses.ts similarity index 100% rename from api/src/shared/utils/addresses.ts rename to api/src/utils/addresses.ts diff --git a/api/src/shared/utils/coin.ts b/api/src/utils/coin.ts similarity index 100% rename from api/src/shared/utils/coin.ts rename to api/src/utils/coin.ts diff --git a/api/src/shared/constants.ts b/api/src/utils/constants.ts similarity index 90% rename from api/src/shared/constants.ts rename to api/src/utils/constants.ts index f153d1033..8af5d313f 100644 --- a/api/src/shared/constants.ts +++ b/api/src/utils/constants.ts @@ -1,4 +1,4 @@ -import { env } from "./utils/env"; +import { env } from "./env"; export const averageBlockTime = 6.174; export const averageDaysInMonth = 30.437; diff --git a/api/src/shared/utils/date.ts b/api/src/utils/date.ts similarity index 100% rename from api/src/shared/utils/date.ts rename to api/src/utils/date.ts diff --git a/api/src/shared/utils/delay.ts b/api/src/utils/delay.ts similarity index 100% rename from api/src/shared/utils/delay.ts rename to api/src/utils/delay.ts diff --git a/api/src/shared/utils/env.ts b/api/src/utils/env.ts similarity index 100% rename from api/src/shared/utils/env.ts rename to api/src/utils/env.ts diff --git a/api/src/shared/utils/files.ts b/api/src/utils/files.ts similarity index 100% rename from api/src/shared/utils/files.ts rename to api/src/utils/files.ts diff --git a/api/src/utils/map/provider.ts b/api/src/utils/map/provider.ts new file mode 100644 index 000000000..637c1f7a2 --- /dev/null +++ b/api/src/utils/map/provider.ts @@ -0,0 +1,131 @@ +import { Provider } from "@shared/dbSchemas/akash"; +import { Auditor, ProviderAttributesSchema, ProviderList } from "@src/types/provider"; +import semver from "semver"; + +export const mapProviderToList = (provider: Provider, providerAttributeSchema: ProviderAttributesSchema, auditors: Array): ProviderList => { + const isValidVersion = provider.cosmosSdkVersion ? semver.gte(provider.cosmosSdkVersion, "v0.45.9") : false; + const name = provider.isOnline ? new URL(provider.hostUri).hostname : null; + + return { + owner: provider.owner, + name: name, + hostUri: provider.hostUri, + createdHeight: provider.createdHeight, + email: provider.email, + website: provider.website, + lastCheckDate: provider.lastCheckDate, + deploymentCount: provider.deploymentCount, + leaseCount: provider.leaseCount, + cosmosSdkVersion: provider.cosmosSdkVersion, + akashVersion: provider.akashVersion, + ipRegion: provider.ipRegion, + ipRegionCode: provider.ipRegionCode, + ipCountry: provider.ipCountry, + ipCountryCode: provider.ipCountryCode, + ipLat: provider.ipLat, + ipLon: provider.ipLon, + activeStats: { + cpu: provider.activeCPU, + gpu: provider.activeGPU, + memory: provider.activeMemory, + storage: provider.activeStorage + }, + pendingStats: { + cpu: isValidVersion ? provider.pendingCPU : 0, + gpu: isValidVersion ? provider.pendingGPU : 0, + memory: isValidVersion ? provider.pendingMemory : 0, + storage: isValidVersion ? provider.pendingStorage : 0 + }, + availableStats: { + cpu: isValidVersion ? provider.availableCPU : 0, + gpu: isValidVersion ? provider.availableGPU : 0, + memory: isValidVersion ? provider.availableMemory : 0, + storage: isValidVersion ? provider.availableStorage : 0 + }, + uptime1d: provider.uptime1d, + uptime7d: provider.uptime7d, + uptime30d: provider.uptime30d, + isValidVersion, + isOnline: provider.isOnline, + isAudited: provider.providerAttributeSignatures.some((a) => auditors.some((y) => y.address === a.auditor)), + attributes: provider.providerAttributes.map((attr) => ({ + key: attr.key, + value: attr.value, + auditedBy: provider.providerAttributeSignatures.filter((pas) => pas.key === attr.key && pas.value === attr.value).map((pas) => pas.auditor) + })), + + // Attributes schema + host: getProviderAttributeValue("host", provider, providerAttributeSchema), + organization: getProviderAttributeValue("organization", provider, providerAttributeSchema), + statusPage: getProviderAttributeValue("status-page", provider, providerAttributeSchema), + locationRegion: getProviderAttributeValue("location-region", provider, providerAttributeSchema), + country: getProviderAttributeValue("country", provider, providerAttributeSchema), + city: getProviderAttributeValue("city", provider, providerAttributeSchema), + timezone: getProviderAttributeValue("timezone", provider, providerAttributeSchema), + locationType: getProviderAttributeValue("location-type", provider, providerAttributeSchema), + hostingProvider: getProviderAttributeValue("hosting-provider", provider, providerAttributeSchema), + hardwareCpu: getProviderAttributeValue("hardware-cpu", provider, providerAttributeSchema), + hardwareCpuArch: getProviderAttributeValue("hardware-cpu-arch", provider, providerAttributeSchema), + hardwareGpuVendor: getProviderAttributeValue("hardware-gpu", provider, providerAttributeSchema), + hardwareGpuModels: getProviderAttributeValue("hardware-gpu-model", provider, providerAttributeSchema), + hardwareDisk: getProviderAttributeValue("hardware-disk", provider, providerAttributeSchema), + featPersistentStorage: getProviderAttributeValue("feat-persistent-storage", provider, providerAttributeSchema), + featPersistentStorageType: getProviderAttributeValue("feat-persistent-storage-type", provider, providerAttributeSchema), + hardwareMemory: getProviderAttributeValue("hardware-memory", provider, providerAttributeSchema), + networkProvider: getProviderAttributeValue("network-provider", provider, providerAttributeSchema), + networkSpeedDown: getProviderAttributeValue("network-speed-down", provider, providerAttributeSchema), + networkSpeedUp: getProviderAttributeValue("network-speed-up", provider, providerAttributeSchema), + tier: getProviderAttributeValue("tier", provider, providerAttributeSchema), + featEndpointCustomDomain: getProviderAttributeValue("feat-endpoint-custom-domain", provider, providerAttributeSchema), + workloadSupportChia: getProviderAttributeValue("workload-support-chia", provider, providerAttributeSchema), + workloadSupportChiaCapabilities: getProviderAttributeValue("workload-support-chia-capabilities", provider, providerAttributeSchema), + featEndpointIp: getProviderAttributeValue("feat-endpoint-ip", provider, providerAttributeSchema) + } as ProviderList; +}; + +export const getProviderAttributeValue = ( + key: keyof ProviderAttributesSchema, + provider: Provider, + providerAttributeSchema: ProviderAttributesSchema +): string | string[] | boolean | number | null => { + const _key = providerAttributeSchema[key].key; + const possibleValues = providerAttributeSchema[key].values; + let values = null; + + switch (providerAttributeSchema[key].type) { + case "string": + values = + provider.providerAttributes + .filter((x) => x.key === _key) + .map((x) => x.value) + .join(",") || null; + return values; + case "number": + values = + provider.providerAttributes + .filter((x) => x.key === _key) + .map((x) => x.value) + .join(",") || 0; + return parseFloat(values); + case "boolean": + values = + provider.providerAttributes + .filter((x) => x.key === _key) + .map((x) => x.value) + .join(",") || null; + return values ? values === "true" : false; + case "option": + return provider.providerAttributes + .filter((x) => x.key === _key) + .map((x) => possibleValues?.find((v) => v.key === x.value)?.description) + .filter((x) => x); + case "multiple-option": + return possibleValues + .filter((x) => provider.providerAttributes.some((at) => at.key === x.key)) + .map((x) => x.description) + .filter((x) => x); + default: + console.error(`Unknown attribute type: ${providerAttributeSchema[key].type}`); + return null; + } +}; diff --git a/api/src/shared/utils/math.ts b/api/src/utils/math.ts similarity index 100% rename from api/src/shared/utils/math.ts rename to api/src/utils/math.ts diff --git a/api/src/shared/utils/pricing.ts b/api/src/utils/pricing.ts similarity index 97% rename from api/src/shared/utils/pricing.ts rename to api/src/utils/pricing.ts index 23891c1c5..272024a77 100644 --- a/api/src/shared/utils/pricing.ts +++ b/api/src/utils/pricing.ts @@ -1,4 +1,4 @@ -import { averageHoursInAMonth } from "../constants"; +import { averageHoursInAMonth } from "./constants"; export function getAkashPricing(cpu: number, memory: number, storage: number) { diff --git a/api/src/shared/utils/protobuf.ts b/api/src/utils/protobuf.ts similarity index 89% rename from api/src/shared/utils/protobuf.ts rename to api/src/utils/protobuf.ts index e2dd9f81c..425c1cbdc 100644 --- a/api/src/shared/utils/protobuf.ts +++ b/api/src/utils/protobuf.ts @@ -2,9 +2,9 @@ import { Registry, isTsProtoGeneratedType, GeneratedType } from "@cosmjs/proto-s import { defaultRegistryTypes } from "@cosmjs/stargate"; import { MsgUnjail } from "cosmjs-types/cosmos/slashing/v1beta1/tx"; -import * as v1beta1 from "../../proto/akash/v1beta1"; -import * as v1beta2 from "../../proto/akash/v1beta2"; -import * as v1beta3 from "../../proto/akash/v1beta3"; +import * as v1beta1 from "../proto/akash/v1beta1"; +import * as v1beta2 from "../proto/akash/v1beta2"; +import * as v1beta3 from "../proto/akash/v1beta3"; const akashTypes: ReadonlyArray<[string, GeneratedType]> = [...Object.values(v1beta1), ...Object.values(v1beta2), ...Object.values(v1beta3)].map((x) => [ "/" + x.$type, diff --git a/api/src/shared/utils/query.ts b/api/src/utils/query.ts similarity index 100% rename from api/src/shared/utils/query.ts rename to api/src/utils/query.ts diff --git a/api/src/shared/utils/urls.ts b/api/src/utils/urls.ts similarity index 100% rename from api/src/shared/utils/urls.ts rename to api/src/utils/urls.ts diff --git a/deploy-web/public/sw.js b/deploy-web/public/sw.js index 2bc232f98..34ba46496 100644 --- a/deploy-web/public/sw.js +++ b/deploy-web/public/sw.js @@ -1,2 +1,2 @@ -if(!self.define){let e,s={};const a=(a,c)=>(a=new URL(a+".js",c).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(c,i)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(s[n])return;let t={};const d=e=>a(e,n),f={module:{uri:n},exports:t,require:d};s[n]=Promise.all(c.map((e=>f[e]||d(e)))).then((e=>(i(...e),t)))}}define(["./workbox-19663cdd"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/static/AE06PcoGOxQV9S0WgNi81/_buildManifest.js",revision:"713a651b593d229def8b02a88aeead55"},{url:"/_next/static/AE06PcoGOxQV9S0WgNi81/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/1237-94fba928e45858a5.js",revision:"94fba928e45858a5"},{url:"/_next/static/chunks/1237-94fba928e45858a5.js.map",revision:"fcc2d681aeefe339bc6f6f723e748fdc"},{url:"/_next/static/chunks/1320-0c2c7bcaf26f530d.js",revision:"0c2c7bcaf26f530d"},{url:"/_next/static/chunks/1320-0c2c7bcaf26f530d.js.map",revision:"4da969c9a42f09606bf002a480907cde"},{url:"/_next/static/chunks/1350-fd95e26091170c5c.js",revision:"fd95e26091170c5c"},{url:"/_next/static/chunks/1350-fd95e26091170c5c.js.map",revision:"3041b7f5ff16360015cef66b955acebb"},{url:"/_next/static/chunks/1443-87635b907e9c5c73.js",revision:"87635b907e9c5c73"},{url:"/_next/static/chunks/1443-87635b907e9c5c73.js.map",revision:"2b6050a26f297ef0c2ee3dd9b1c30aac"},{url:"/_next/static/chunks/1553-12eb680bdea2228a.js",revision:"12eb680bdea2228a"},{url:"/_next/static/chunks/1553-12eb680bdea2228a.js.map",revision:"41da182bf84257dfdd024601c69dc67a"},{url:"/_next/static/chunks/2018-250958b39c3ee4c5.js",revision:"250958b39c3ee4c5"},{url:"/_next/static/chunks/2018-250958b39c3ee4c5.js.map",revision:"172c1e5300429bc2caca2388e0186a26"},{url:"/_next/static/chunks/298-5420018da3881c27.js",revision:"5420018da3881c27"},{url:"/_next/static/chunks/298-5420018da3881c27.js.map",revision:"f4a289ab69856842bcff1e6ca3d7128a"},{url:"/_next/static/chunks/3516.f97be46f96fdc138.js",revision:"f97be46f96fdc138"},{url:"/_next/static/chunks/3516.f97be46f96fdc138.js.map",revision:"538cae156a1a5935348fa2a04f90cbbc"},{url:"/_next/static/chunks/4362-b4866f955d0162c0.js",revision:"b4866f955d0162c0"},{url:"/_next/static/chunks/4362-b4866f955d0162c0.js.map",revision:"a332dd97807580406af4d0c69d81bdeb"},{url:"/_next/static/chunks/4848-4edfc02dac9f5a49.js",revision:"4edfc02dac9f5a49"},{url:"/_next/static/chunks/4848-4edfc02dac9f5a49.js.map",revision:"7ade277f7ea5e5967d8cf41fe10d96dd"},{url:"/_next/static/chunks/4991.edc01234419bef79.js",revision:"edc01234419bef79"},{url:"/_next/static/chunks/4991.edc01234419bef79.js.map",revision:"b7220bae96bca1d54de4892df64ff381"},{url:"/_next/static/chunks/5054-15599051e71e0136.js",revision:"15599051e71e0136"},{url:"/_next/static/chunks/5054-15599051e71e0136.js.map",revision:"6c531d9fe06acd7ba1b089f380d6ef03"},{url:"/_next/static/chunks/5109-d70ea173073bb803.js",revision:"d70ea173073bb803"},{url:"/_next/static/chunks/5109-d70ea173073bb803.js.map",revision:"e1100a370787d19203c12e5412632ca4"},{url:"/_next/static/chunks/527-69cc6439768d0440.js",revision:"69cc6439768d0440"},{url:"/_next/static/chunks/527-69cc6439768d0440.js.map",revision:"973bfe4a1c9eb9755f58c035538642fd"},{url:"/_next/static/chunks/5644-185d67438f95c29f.js",revision:"185d67438f95c29f"},{url:"/_next/static/chunks/5644-185d67438f95c29f.js.map",revision:"4f5599944f008020b3eddaec6dec98c8"},{url:"/_next/static/chunks/5749.72214791cd774f3b.js",revision:"72214791cd774f3b"},{url:"/_next/static/chunks/5749.72214791cd774f3b.js.map",revision:"0226e6044fc1b2cdf87e472126042648"},{url:"/_next/static/chunks/609-d89f52daee913dd3.js",revision:"d89f52daee913dd3"},{url:"/_next/static/chunks/609-d89f52daee913dd3.js.map",revision:"0e37d45287103871eb8bd0dd8b78a29b"},{url:"/_next/static/chunks/6160.a09e349a57a24ff2.js",revision:"a09e349a57a24ff2"},{url:"/_next/static/chunks/6160.a09e349a57a24ff2.js.map",revision:"3fc7bed3f38a21c3a218051ff91e3aa8"},{url:"/_next/static/chunks/6183-21baeac90c1ecfaa.js",revision:"21baeac90c1ecfaa"},{url:"/_next/static/chunks/6183-21baeac90c1ecfaa.js.map",revision:"8ea07d6d9dbfebabb23b9d37384c2e85"},{url:"/_next/static/chunks/659-6599520b4e88c97d.js",revision:"6599520b4e88c97d"},{url:"/_next/static/chunks/659-6599520b4e88c97d.js.map",revision:"1bb6e2a0709b3b97502f4a5ea632186d"},{url:"/_next/static/chunks/6677-d0ada41b99fbdf6f.js",revision:"d0ada41b99fbdf6f"},{url:"/_next/static/chunks/6677-d0ada41b99fbdf6f.js.map",revision:"1082a4a38bcd7c9db688dcfd0336eb0e"},{url:"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js",revision:"4f4c9cc9bfbaacb8"},{url:"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js.map",revision:"a6c5c41cde5f3368ca31c17aa4512326"},{url:"/_next/static/chunks/678-7692cbe0fa348f10.js",revision:"7692cbe0fa348f10"},{url:"/_next/static/chunks/678-7692cbe0fa348f10.js.map",revision:"9bb011077a878efda396eab7e26355c0"},{url:"/_next/static/chunks/6782.998bc97f2cac4661.js",revision:"998bc97f2cac4661"},{url:"/_next/static/chunks/6782.998bc97f2cac4661.js.map",revision:"bc43d2a492f1276152bcf74509af1ce6"},{url:"/_next/static/chunks/6886-43c474d3a3be9ccb.js",revision:"43c474d3a3be9ccb"},{url:"/_next/static/chunks/6886-43c474d3a3be9ccb.js.map",revision:"2ecf22de338fa5da280c413e543b009b"},{url:"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js",revision:"3ba305c9d969092f"},{url:"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js.map",revision:"b649699557acd02cc0112b32e8517bc8"},{url:"/_next/static/chunks/7047-8ff6885c4286324f.js",revision:"8ff6885c4286324f"},{url:"/_next/static/chunks/7047-8ff6885c4286324f.js.map",revision:"17275b4388937e3382285f1f02fcfc76"},{url:"/_next/static/chunks/7449-ca696f52ef3e1ce2.js",revision:"ca696f52ef3e1ce2"},{url:"/_next/static/chunks/7449-ca696f52ef3e1ce2.js.map",revision:"44dc9a12a6a793612365252043fe2e52"},{url:"/_next/static/chunks/8228-aa1a031b87ea85ab.js",revision:"aa1a031b87ea85ab"},{url:"/_next/static/chunks/8228-aa1a031b87ea85ab.js.map",revision:"361f6e51eadb3642a60658e6e194847b"},{url:"/_next/static/chunks/8233-03f273a178519980.js",revision:"03f273a178519980"},{url:"/_next/static/chunks/8233-03f273a178519980.js.map",revision:"2ad0317e2a9ec897a072fa49a015154e"},{url:"/_next/static/chunks/8329.cd9bbb442cc3639a.js",revision:"cd9bbb442cc3639a"},{url:"/_next/static/chunks/8329.cd9bbb442cc3639a.js.map",revision:"219194df7b3db0d3954fe768527cd16f"},{url:"/_next/static/chunks/8364-8945f344eec70f0a.js",revision:"8945f344eec70f0a"},{url:"/_next/static/chunks/8364-8945f344eec70f0a.js.map",revision:"3490d16c98f239a5458eb58f58112bcf"},{url:"/_next/static/chunks/8446-4892663fdb75b8e1.js",revision:"4892663fdb75b8e1"},{url:"/_next/static/chunks/8446-4892663fdb75b8e1.js.map",revision:"664560b0556cfb789fd1bd20fa97144a"},{url:"/_next/static/chunks/8606-d8b87c9c7c625494.js",revision:"d8b87c9c7c625494"},{url:"/_next/static/chunks/8606-d8b87c9c7c625494.js.map",revision:"bda2e28e372a0590b19e9f847096cc9c"},{url:"/_next/static/chunks/9130-7b6fca6592947cda.js",revision:"7b6fca6592947cda"},{url:"/_next/static/chunks/9130-7b6fca6592947cda.js.map",revision:"ed0d054a0046d7b1aba303e12183ab91"},{url:"/_next/static/chunks/9266-190a469a227c4093.js",revision:"190a469a227c4093"},{url:"/_next/static/chunks/9266-190a469a227c4093.js.map",revision:"3e55f3c1e71a8356ec34b7aaaffafe2e"},{url:"/_next/static/chunks/942-bef0607ef1052ca8.js",revision:"bef0607ef1052ca8"},{url:"/_next/static/chunks/942-bef0607ef1052ca8.js.map",revision:"291ec0e7f963e13be8fb882fc9261e9c"},{url:"/_next/static/chunks/9604-5b0ae6bfc21d762e.js",revision:"5b0ae6bfc21d762e"},{url:"/_next/static/chunks/9604-5b0ae6bfc21d762e.js.map",revision:"db6a10553ec40489ec731ce98c8f7537"},{url:"/_next/static/chunks/9912-49517439276decf2.js",revision:"49517439276decf2"},{url:"/_next/static/chunks/9912-49517439276decf2.js.map",revision:"5014b77e603fedf8178d7259980aa704"},{url:"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js",revision:"e2cba51f15a3f480"},{url:"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js.map",revision:"9c75b94497f1b36b05f625b47b3a6c8a"},{url:"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js",revision:"8cda0b3104d2c27b"},{url:"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js.map",revision:"34dfefc984e90e074737205d8653ca66"},{url:"/_next/static/chunks/framework-2645a99191cfc5e9.js",revision:"2645a99191cfc5e9"},{url:"/_next/static/chunks/framework-2645a99191cfc5e9.js.map",revision:"6faa44d3d98d9d70c102a9ef855cc984"},{url:"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js",revision:"8cb3ef9b2f8bb78d"},{url:"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js.map",revision:"9b09d22952231cd9dc660b6948a11b42"},{url:"/_next/static/chunks/pages/404-143cb8046985eb3d.js",revision:"143cb8046985eb3d"},{url:"/_next/static/chunks/pages/404-143cb8046985eb3d.js.map",revision:"ab17ec86199914f0304c45252158b24f"},{url:"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js",revision:"ee38b3e054b6e91d"},{url:"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js.map",revision:"3b12567b76adb11815991913b9edc5c7"},{url:"/_next/static/chunks/pages/_error-47c8d196fdda703f.js",revision:"47c8d196fdda703f"},{url:"/_next/static/chunks/pages/_error-47c8d196fdda703f.js.map",revision:"5493fd4cf8917ebc60f784332cd86b05"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js",revision:"6ad42391cb832421"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js.map",revision:"9d9405f51da544ab5ffbe0c7be836290"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js",revision:"e4d0dbd2961c193d"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js.map",revision:"a77b440b554aff4f7523cadef129ef49"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js",revision:"3e90aaa0b2fc8484"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js.map",revision:"81da8aec99f7aa6fe8119a1f2118c44c"},{url:"/_next/static/chunks/pages/analytics-f47c95efb853faf6.js",revision:"f47c95efb853faf6"},{url:"/_next/static/chunks/pages/analytics-f47c95efb853faf6.js.map",revision:"976dd7877308f86c912411394d17a5be"},{url:"/_next/static/chunks/pages/blocks-48097254130d38fe.js",revision:"48097254130d38fe"},{url:"/_next/static/chunks/pages/blocks-48097254130d38fe.js.map",revision:"135a220e0a13509cf5642494a6f87832"},{url:"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js",revision:"9a8046c0f7778613"},{url:"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js.map",revision:"9ea64156f07e33c85cab424e407d2fe3"},{url:"/_next/static/chunks/pages/contact-10c336b955a10cb1.js",revision:"10c336b955a10cb1"},{url:"/_next/static/chunks/pages/contact-10c336b955a10cb1.js.map",revision:"9225d9d64bc2ffe7216f337240b2c260"},{url:"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js",revision:"673fa0fe065d52c2"},{url:"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js.map",revision:"2f9c10d2a561b222f7429928ad419b2e"},{url:"/_next/static/chunks/pages/deployments-83d9e70f8b230800.js",revision:"83d9e70f8b230800"},{url:"/_next/static/chunks/pages/deployments-83d9e70f8b230800.js.map",revision:"15a6bf8490c7ceda5abd912be6fdfd0f"},{url:"/_next/static/chunks/pages/deployments/%5Bdseq%5D-9b3c4d9e09d36870.js",revision:"9b3c4d9e09d36870"},{url:"/_next/static/chunks/pages/deployments/%5Bdseq%5D-9b3c4d9e09d36870.js.map",revision:"06ffc11bd152d18291f9c89886c010d9"},{url:"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js",revision:"f0fddc92f9978ff2"},{url:"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js.map",revision:"7976c1ca5d291e2b46a45b88072fd094"},{url:"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js",revision:"1674f060816a4d38"},{url:"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js.map",revision:"ab9fc6875e4b2b194fe4f67f001cd22e"},{url:"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-86fadca318f11e2f.js",revision:"86fadca318f11e2f"},{url:"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-86fadca318f11e2f.js.map",revision:"61c096e10f078ec016518c280e33f8a8"},{url:"/_next/static/chunks/pages/index-8dadf084f1682814.js",revision:"8dadf084f1682814"},{url:"/_next/static/chunks/pages/index-8dadf084f1682814.js.map",revision:"5f40ddec7f825ce5a24c4d44c8df2ce3"},{url:"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js",revision:"b9b8cb2f20e80567"},{url:"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js.map",revision:"75d86d2c3e5780bab65d2e56828202e2"},{url:"/_next/static/chunks/pages/new-deployment-bfd2f0cfc5901e93.js",revision:"bfd2f0cfc5901e93"},{url:"/_next/static/chunks/pages/new-deployment-bfd2f0cfc5901e93.js.map",revision:"4c3349ff2069d1f96d6d630a4bb3e2d0"},{url:"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js",revision:"4ef9f9805153d053"},{url:"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js.map",revision:"e144121981ab97f84d15671f42a9439b"},{url:"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js",revision:"e625752c54753d1f"},{url:"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js.map",revision:"9719fb76717635311260a40cea17dff5"},{url:"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js",revision:"543af2a9ba1a1915"},{url:"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js.map",revision:"dc027a45de09f0f2d0996ef38863c7e7"},{url:"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-485d968bebad4203.js",revision:"485d968bebad4203"},{url:"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-485d968bebad4203.js.map",revision:"6c88ecfa2cc41551bab6f279895bd1d0"},{url:"/_next/static/chunks/pages/providers-b3815de86870dc6e.js",revision:"b3815de86870dc6e"},{url:"/_next/static/chunks/pages/providers-b3815de86870dc6e.js.map",revision:"8a0d0e1d13d4145646b496ac456b5c03"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D-fa3bf54772542ed6.js",revision:"fa3bf54772542ed6"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D-fa3bf54772542ed6.js.map",revision:"dc4284f7f1054d6aaac673c5a8f68a89"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js",revision:"f7d779a8ff6c1d80"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js.map",revision:"e6d861f4bdcb2211b2390d0558de17de"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-748f6c23ae85893c.js",revision:"748f6c23ae85893c"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-748f6c23ae85893c.js.map",revision:"dfa0edcdb06d4d06d170a0dcf3c31ec1"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-87c1539d62726c01.js",revision:"87c1539d62726c01"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-87c1539d62726c01.js.map",revision:"2fcab858b2665b30b51405601eba5f9e"},{url:"/_next/static/chunks/pages/sdl-builder-1a3d7ef5745891c9.js",revision:"1a3d7ef5745891c9"},{url:"/_next/static/chunks/pages/sdl-builder-1a3d7ef5745891c9.js.map",revision:"b85e97eae70c78fccb33c1f4a61b1bea"},{url:"/_next/static/chunks/pages/settings-96f79e0b7b495835.js",revision:"96f79e0b7b495835"},{url:"/_next/static/chunks/pages/settings-96f79e0b7b495835.js.map",revision:"488141e8b0a5c9e29a4bba5220dfa63d"},{url:"/_next/static/chunks/pages/settings/authorizations-5c1065b4cfc41a6f.js",revision:"5c1065b4cfc41a6f"},{url:"/_next/static/chunks/pages/settings/authorizations-5c1065b4cfc41a6f.js.map",revision:"9f78c917b7d39e454d4754352b07e4e4"},{url:"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js",revision:"33d357c4b38aedf5"},{url:"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js.map",revision:"c43c961f9a648bbaf1ea13d871e9d13b"},{url:"/_next/static/chunks/pages/templates-a8f5506a17c25c89.js",revision:"a8f5506a17c25c89"},{url:"/_next/static/chunks/pages/templates-a8f5506a17c25c89.js.map",revision:"6b3fc329a034f5536b9cf1bf67ab7ccd"},{url:"/_next/static/chunks/pages/templates/%5BtemplateId%5D-2066fe63ddd703cc.js",revision:"2066fe63ddd703cc"},{url:"/_next/static/chunks/pages/templates/%5BtemplateId%5D-2066fe63ddd703cc.js.map",revision:"6788e35183cca1d11bd379990595b08b"},{url:"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js",revision:"3cc59c714fc033f3"},{url:"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js.map",revision:"0353660dfa596f89a1cfd502c49756b1"},{url:"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js",revision:"cd4428d78f5c9635"},{url:"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js.map",revision:"5c35919eedf54428d0a02449f477fc96"},{url:"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js",revision:"2f825a9b9c644205"},{url:"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js.map",revision:"55607c700d5a6918d4df7b1bb0a2d1e8"},{url:"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js",revision:"3aa5061833464ec1"},{url:"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js.map",revision:"b18e2db627cc994ab1f43df9724a3e40"},{url:"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js",revision:"787620a1ccc48282"},{url:"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js.map",revision:"546ea7ffbf6b9b5461facfc096d2cda4"},{url:"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js",revision:"6d9bbbb26aa9d9b4"},{url:"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js.map",revision:"7d4a54b6eef7f5606ef2394189cd03cf"},{url:"/_next/static/chunks/pages/validators-789933a6891c24de.js",revision:"789933a6891c24de"},{url:"/_next/static/chunks/pages/validators-789933a6891c24de.js.map",revision:"94c09f7fde164a1cc33862352bb702bd"},{url:"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js",revision:"df23a5f30792d1e2"},{url:"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js.map",revision:"969a27632e159d6e3670cf8b86f067e6"},{url:"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js",revision:"79330112775102f91e1010318bae2bd3"},{url:"/_next/static/chunks/webpack-561db70e7b94916f.js",revision:"561db70e7b94916f"},{url:"/_next/static/chunks/webpack-561db70e7b94916f.js.map",revision:"41617d86a61f917f0a9c9fa325831fbf"},{url:"/_next/static/css/60da0364ed65e94f.css",revision:"60da0364ed65e94f"},{url:"/_next/static/css/60da0364ed65e94f.css.map",revision:"cb19ae85aa968d5f6d3933a56327e540"},{url:"/_next/static/css/6bfa921e6cb2b44b.css",revision:"6bfa921e6cb2b44b"},{url:"/_next/static/css/6bfa921e6cb2b44b.css.map",revision:"d0734ef454db6824adde1381c60f7b65"},{url:"/_next/static/css/92e074b97232c763.css",revision:"92e074b97232c763"},{url:"/_next/static/css/92e074b97232c763.css.map",revision:"c88aeff2520ee169e777811f6afcda35"},{url:"/android-chrome-192x192.png",revision:"67aea0e4bc700134b81b51e635a95144"},{url:"/android-chrome-256x256.png",revision:"b0dc3017fadbf0f4c323636535f582b7"},{url:"/apple-touch-icon.png",revision:"97f107fd40c94f768de409ffb68e2e73"},{url:"/browserconfig.xml",revision:"e41ebb6b49206a59d8eafce8220ebeac"},{url:"/cloudmos-cover.png",revision:"14ba76ff06f2bf8186aef52eb53e4ccc"},{url:"/favicon-16x16.png",revision:"5b31d0a554060dec7c59e86af2c3b47d"},{url:"/favicon-32x32.png",revision:"794696d75ba46e490df7a68d1309cb20"},{url:"/favicon.ico",revision:"c6fc431554c8de94be347a8180e562aa"},{url:"/images/akash-logo-dark.png",revision:"b1623e407dad710a4c0c73461bbb8bb3"},{url:"/images/akash-logo-flat-dark.png",revision:"50b4ad6438e791047d97da0af65b96f5"},{url:"/images/akash-logo-flat-light.png",revision:"2befec2d17a2b6a32b1a0517ca1baf01"},{url:"/images/akash-logo-light.png",revision:"0ea30905c72eda674ad74c65d0c062bf"},{url:"/images/akash-logo.svg",revision:"4a5f3eaf31bf0f88ff3baec6281c8de3"},{url:"/images/chains/akash.png",revision:"d0b3f8ccaa3b0d18ef4039f86edf4436"},{url:"/images/chains/atom.png",revision:"6e4d88ad2c295e811fee29cc89edfcb1"},{url:"/images/chains/evmos.png",revision:"487a456e9091dec9ddf18892531401f8"},{url:"/images/chains/huahua.png",revision:"f0ba8427522833bba44962e87e982412"},{url:"/images/chains/juno.png",revision:"933b7d992dc67fd2f0d0f35e182b3361"},{url:"/images/chains/kuji.png",revision:"9c31e679007e5ae16fc28e067d907f79"},{url:"/images/chains/osmo.png",revision:"6940c69c28e5d85d99ba498fc7e95a26"},{url:"/images/chains/scrt.png",revision:"0dd98be17447cf7c47d27153f534ca60"},{url:"/images/chains/stars.png",revision:"56d0bd40e52f010c7267eb78c53138f2"},{url:"/images/chains/strd.png",revision:"eebdfb53ba0bc9bba88b0bede7a44f6d"},{url:"/images/cloudmos-logo-light.png",revision:"a7423327e4280225e176da92c6176c28"},{url:"/images/cloudmos-logo-small.jpg",revision:"4b339b83e7dc396894537b83d794726d"},{url:"/images/cloudmos-logo.png",revision:"56d87e0230a0ad5dd745efd486a33a58"},{url:"/images/docker.png",revision:"fde0ed6a2add0ffabfbc5a7749fdfff2"},{url:"/images/keplr-logo.png",revision:"50397e4902a33a6045c0f23dfe5cb1bd"},{url:"/images/powered-by-akash-dark.svg",revision:"3ea920f030ede7926a02c2dc17e332c4"},{url:"/images/powered-by-akash.svg",revision:"24b2566094fafded6c325246fe84c2a9"},{url:"/images/ubuntu.png",revision:"c631b8fae270a618c1fe1c9d43097189"},{url:"/images/wallet-connect-logo.png",revision:"8379e4d4e7267b47a0b5b89807a4d8f8"},{url:"/manifest.json",revision:"c2dfab0494ea8373287634bcf6da2233"},{url:"/mstile-150x150.png",revision:"4639e24da644e14af4e4daba3dd7af08"},{url:"/robots.txt",revision:"c2bb774b8071c957d2b835beaa28a58b"},{url:"/safari-pinned-tab.svg",revision:"a0fde4130c84e0d723dde3ece4a14fa8"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:c})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"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 s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.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")})); +if(!self.define){let e,s={};const a=(a,c)=>(a=new URL(a+".js",c).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(c,i)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(s[n])return;let t={};const d=e=>a(e,n),r={module:{uri:n},exports:t,require:d};s[n]=Promise.all(c.map((e=>r[e]||d(e)))).then((e=>(i(...e),t)))}}define(["./workbox-19663cdd"],(function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/static/BmbQL0Bb4mKKJk6cE75I9/_buildManifest.js",revision:"a7192c9f1c80ac1c28146d79d811f2d8"},{url:"/_next/static/BmbQL0Bb4mKKJk6cE75I9/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/1237-ab51938214660fce.js",revision:"ab51938214660fce"},{url:"/_next/static/chunks/1237-ab51938214660fce.js.map",revision:"e8012c95bc756051ac9b22852d393089"},{url:"/_next/static/chunks/1320-bc68ca81ae5cb66d.js",revision:"bc68ca81ae5cb66d"},{url:"/_next/static/chunks/1320-bc68ca81ae5cb66d.js.map",revision:"66fa0f35afaed747e06329f6e54da4a8"},{url:"/_next/static/chunks/1350-fd95e26091170c5c.js",revision:"fd95e26091170c5c"},{url:"/_next/static/chunks/1350-fd95e26091170c5c.js.map",revision:"3041b7f5ff16360015cef66b955acebb"},{url:"/_next/static/chunks/1443-87635b907e9c5c73.js",revision:"87635b907e9c5c73"},{url:"/_next/static/chunks/1443-87635b907e9c5c73.js.map",revision:"2b6050a26f297ef0c2ee3dd9b1c30aac"},{url:"/_next/static/chunks/1553-12eb680bdea2228a.js",revision:"12eb680bdea2228a"},{url:"/_next/static/chunks/1553-12eb680bdea2228a.js.map",revision:"41da182bf84257dfdd024601c69dc67a"},{url:"/_next/static/chunks/2018-250958b39c3ee4c5.js",revision:"250958b39c3ee4c5"},{url:"/_next/static/chunks/2018-250958b39c3ee4c5.js.map",revision:"172c1e5300429bc2caca2388e0186a26"},{url:"/_next/static/chunks/298-299f7b083e77f86a.js",revision:"299f7b083e77f86a"},{url:"/_next/static/chunks/298-299f7b083e77f86a.js.map",revision:"276afd1201ee63df6007d241a5eb6a31"},{url:"/_next/static/chunks/3516.2e4b6b2b098e6078.js",revision:"2e4b6b2b098e6078"},{url:"/_next/static/chunks/3516.2e4b6b2b098e6078.js.map",revision:"bd1c39ccabe0c16dc9bdad92d0a75383"},{url:"/_next/static/chunks/4362-b4866f955d0162c0.js",revision:"b4866f955d0162c0"},{url:"/_next/static/chunks/4362-b4866f955d0162c0.js.map",revision:"a332dd97807580406af4d0c69d81bdeb"},{url:"/_next/static/chunks/4848-4edfc02dac9f5a49.js",revision:"4edfc02dac9f5a49"},{url:"/_next/static/chunks/4848-4edfc02dac9f5a49.js.map",revision:"7ade277f7ea5e5967d8cf41fe10d96dd"},{url:"/_next/static/chunks/4991.edc01234419bef79.js",revision:"edc01234419bef79"},{url:"/_next/static/chunks/4991.edc01234419bef79.js.map",revision:"b7220bae96bca1d54de4892df64ff381"},{url:"/_next/static/chunks/5054-15599051e71e0136.js",revision:"15599051e71e0136"},{url:"/_next/static/chunks/5054-15599051e71e0136.js.map",revision:"6c531d9fe06acd7ba1b089f380d6ef03"},{url:"/_next/static/chunks/5109-d70ea173073bb803.js",revision:"d70ea173073bb803"},{url:"/_next/static/chunks/5109-d70ea173073bb803.js.map",revision:"e1100a370787d19203c12e5412632ca4"},{url:"/_next/static/chunks/527-69cc6439768d0440.js",revision:"69cc6439768d0440"},{url:"/_next/static/chunks/527-69cc6439768d0440.js.map",revision:"973bfe4a1c9eb9755f58c035538642fd"},{url:"/_next/static/chunks/5644-185d67438f95c29f.js",revision:"185d67438f95c29f"},{url:"/_next/static/chunks/5644-185d67438f95c29f.js.map",revision:"4f5599944f008020b3eddaec6dec98c8"},{url:"/_next/static/chunks/5749.72214791cd774f3b.js",revision:"72214791cd774f3b"},{url:"/_next/static/chunks/5749.72214791cd774f3b.js.map",revision:"0226e6044fc1b2cdf87e472126042648"},{url:"/_next/static/chunks/609-d89f52daee913dd3.js",revision:"d89f52daee913dd3"},{url:"/_next/static/chunks/609-d89f52daee913dd3.js.map",revision:"0e37d45287103871eb8bd0dd8b78a29b"},{url:"/_next/static/chunks/6160.4c66abe24c5ba598.js",revision:"4c66abe24c5ba598"},{url:"/_next/static/chunks/6160.4c66abe24c5ba598.js.map",revision:"1b74b30b006ec68a607b540bd467953e"},{url:"/_next/static/chunks/6183-f507f19988e46241.js",revision:"f507f19988e46241"},{url:"/_next/static/chunks/6183-f507f19988e46241.js.map",revision:"2793ef521e58d071726813ffc865511f"},{url:"/_next/static/chunks/659-6599520b4e88c97d.js",revision:"6599520b4e88c97d"},{url:"/_next/static/chunks/659-6599520b4e88c97d.js.map",revision:"1bb6e2a0709b3b97502f4a5ea632186d"},{url:"/_next/static/chunks/6677-d0ada41b99fbdf6f.js",revision:"d0ada41b99fbdf6f"},{url:"/_next/static/chunks/6677-d0ada41b99fbdf6f.js.map",revision:"1082a4a38bcd7c9db688dcfd0336eb0e"},{url:"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js",revision:"4f4c9cc9bfbaacb8"},{url:"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js.map",revision:"a6c5c41cde5f3368ca31c17aa4512326"},{url:"/_next/static/chunks/678-7692cbe0fa348f10.js",revision:"7692cbe0fa348f10"},{url:"/_next/static/chunks/678-7692cbe0fa348f10.js.map",revision:"9bb011077a878efda396eab7e26355c0"},{url:"/_next/static/chunks/6782.998bc97f2cac4661.js",revision:"998bc97f2cac4661"},{url:"/_next/static/chunks/6782.998bc97f2cac4661.js.map",revision:"bc43d2a492f1276152bcf74509af1ce6"},{url:"/_next/static/chunks/6886-43c474d3a3be9ccb.js",revision:"43c474d3a3be9ccb"},{url:"/_next/static/chunks/6886-43c474d3a3be9ccb.js.map",revision:"2ecf22de338fa5da280c413e543b009b"},{url:"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js",revision:"3ba305c9d969092f"},{url:"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js.map",revision:"b649699557acd02cc0112b32e8517bc8"},{url:"/_next/static/chunks/7047-8ff6885c4286324f.js",revision:"8ff6885c4286324f"},{url:"/_next/static/chunks/7047-8ff6885c4286324f.js.map",revision:"17275b4388937e3382285f1f02fcfc76"},{url:"/_next/static/chunks/7449-ca696f52ef3e1ce2.js",revision:"ca696f52ef3e1ce2"},{url:"/_next/static/chunks/7449-ca696f52ef3e1ce2.js.map",revision:"44dc9a12a6a793612365252043fe2e52"},{url:"/_next/static/chunks/8228-aa1a031b87ea85ab.js",revision:"aa1a031b87ea85ab"},{url:"/_next/static/chunks/8228-aa1a031b87ea85ab.js.map",revision:"361f6e51eadb3642a60658e6e194847b"},{url:"/_next/static/chunks/8233-acb3497faa2c3ce6.js",revision:"acb3497faa2c3ce6"},{url:"/_next/static/chunks/8233-acb3497faa2c3ce6.js.map",revision:"de9d80081776dc56ae52fb6c897ff638"},{url:"/_next/static/chunks/8329.cd9bbb442cc3639a.js",revision:"cd9bbb442cc3639a"},{url:"/_next/static/chunks/8329.cd9bbb442cc3639a.js.map",revision:"219194df7b3db0d3954fe768527cd16f"},{url:"/_next/static/chunks/8364-8945f344eec70f0a.js",revision:"8945f344eec70f0a"},{url:"/_next/static/chunks/8364-8945f344eec70f0a.js.map",revision:"3490d16c98f239a5458eb58f58112bcf"},{url:"/_next/static/chunks/8446-4892663fdb75b8e1.js",revision:"4892663fdb75b8e1"},{url:"/_next/static/chunks/8446-4892663fdb75b8e1.js.map",revision:"664560b0556cfb789fd1bd20fa97144a"},{url:"/_next/static/chunks/8606-d8b87c9c7c625494.js",revision:"d8b87c9c7c625494"},{url:"/_next/static/chunks/8606-d8b87c9c7c625494.js.map",revision:"bda2e28e372a0590b19e9f847096cc9c"},{url:"/_next/static/chunks/9130-7b6fca6592947cda.js",revision:"7b6fca6592947cda"},{url:"/_next/static/chunks/9130-7b6fca6592947cda.js.map",revision:"ed0d054a0046d7b1aba303e12183ab91"},{url:"/_next/static/chunks/9266-190a469a227c4093.js",revision:"190a469a227c4093"},{url:"/_next/static/chunks/9266-190a469a227c4093.js.map",revision:"3e55f3c1e71a8356ec34b7aaaffafe2e"},{url:"/_next/static/chunks/942-bef0607ef1052ca8.js",revision:"bef0607ef1052ca8"},{url:"/_next/static/chunks/942-bef0607ef1052ca8.js.map",revision:"291ec0e7f963e13be8fb882fc9261e9c"},{url:"/_next/static/chunks/9604-5b0ae6bfc21d762e.js",revision:"5b0ae6bfc21d762e"},{url:"/_next/static/chunks/9604-5b0ae6bfc21d762e.js.map",revision:"db6a10553ec40489ec731ce98c8f7537"},{url:"/_next/static/chunks/9912-49517439276decf2.js",revision:"49517439276decf2"},{url:"/_next/static/chunks/9912-49517439276decf2.js.map",revision:"5014b77e603fedf8178d7259980aa704"},{url:"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js",revision:"e2cba51f15a3f480"},{url:"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js.map",revision:"9c75b94497f1b36b05f625b47b3a6c8a"},{url:"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js",revision:"8cda0b3104d2c27b"},{url:"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js.map",revision:"34dfefc984e90e074737205d8653ca66"},{url:"/_next/static/chunks/framework-2645a99191cfc5e9.js",revision:"2645a99191cfc5e9"},{url:"/_next/static/chunks/framework-2645a99191cfc5e9.js.map",revision:"6faa44d3d98d9d70c102a9ef855cc984"},{url:"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js",revision:"8cb3ef9b2f8bb78d"},{url:"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js.map",revision:"9b09d22952231cd9dc660b6948a11b42"},{url:"/_next/static/chunks/pages/404-143cb8046985eb3d.js",revision:"143cb8046985eb3d"},{url:"/_next/static/chunks/pages/404-143cb8046985eb3d.js.map",revision:"ab17ec86199914f0304c45252158b24f"},{url:"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js",revision:"ee38b3e054b6e91d"},{url:"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js.map",revision:"3b12567b76adb11815991913b9edc5c7"},{url:"/_next/static/chunks/pages/_error-47c8d196fdda703f.js",revision:"47c8d196fdda703f"},{url:"/_next/static/chunks/pages/_error-47c8d196fdda703f.js.map",revision:"5493fd4cf8917ebc60f784332cd86b05"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js",revision:"6ad42391cb832421"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js.map",revision:"9d9405f51da544ab5ffbe0c7be836290"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js",revision:"e4d0dbd2961c193d"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js.map",revision:"a77b440b554aff4f7523cadef129ef49"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js",revision:"3e90aaa0b2fc8484"},{url:"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js.map",revision:"81da8aec99f7aa6fe8119a1f2118c44c"},{url:"/_next/static/chunks/pages/analytics-f8cabaad72c9f6a4.js",revision:"f8cabaad72c9f6a4"},{url:"/_next/static/chunks/pages/analytics-f8cabaad72c9f6a4.js.map",revision:"88ef4f87ad36afec866cea3a76e76adc"},{url:"/_next/static/chunks/pages/blocks-48097254130d38fe.js",revision:"48097254130d38fe"},{url:"/_next/static/chunks/pages/blocks-48097254130d38fe.js.map",revision:"135a220e0a13509cf5642494a6f87832"},{url:"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js",revision:"9a8046c0f7778613"},{url:"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js.map",revision:"9ea64156f07e33c85cab424e407d2fe3"},{url:"/_next/static/chunks/pages/contact-10c336b955a10cb1.js",revision:"10c336b955a10cb1"},{url:"/_next/static/chunks/pages/contact-10c336b955a10cb1.js.map",revision:"9225d9d64bc2ffe7216f337240b2c260"},{url:"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js",revision:"673fa0fe065d52c2"},{url:"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js.map",revision:"2f9c10d2a561b222f7429928ad419b2e"},{url:"/_next/static/chunks/pages/deployments-972a9990589dac4d.js",revision:"972a9990589dac4d"},{url:"/_next/static/chunks/pages/deployments-972a9990589dac4d.js.map",revision:"676ff945a913e75f7d51b6c3f691091c"},{url:"/_next/static/chunks/pages/deployments/%5Bdseq%5D-b407c3af950ee887.js",revision:"b407c3af950ee887"},{url:"/_next/static/chunks/pages/deployments/%5Bdseq%5D-b407c3af950ee887.js.map",revision:"0a8a953fa81dc247fac5500f02306ec0"},{url:"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js",revision:"f0fddc92f9978ff2"},{url:"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js.map",revision:"7976c1ca5d291e2b46a45b88072fd094"},{url:"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js",revision:"1674f060816a4d38"},{url:"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js.map",revision:"ab9fc6875e4b2b194fe4f67f001cd22e"},{url:"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-d7af548d57880c3b.js",revision:"d7af548d57880c3b"},{url:"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-d7af548d57880c3b.js.map",revision:"33f970caf9712bd16ea9e0a3b0f818fa"},{url:"/_next/static/chunks/pages/index-5bf06dbd34b3102a.js",revision:"5bf06dbd34b3102a"},{url:"/_next/static/chunks/pages/index-5bf06dbd34b3102a.js.map",revision:"2395055374e3d90a272447066cad8a37"},{url:"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js",revision:"b9b8cb2f20e80567"},{url:"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js.map",revision:"75d86d2c3e5780bab65d2e56828202e2"},{url:"/_next/static/chunks/pages/new-deployment-9b38d14676bd5d2e.js",revision:"9b38d14676bd5d2e"},{url:"/_next/static/chunks/pages/new-deployment-9b38d14676bd5d2e.js.map",revision:"6a077cee995486e439e1802dacd846f2"},{url:"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js",revision:"4ef9f9805153d053"},{url:"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js.map",revision:"e144121981ab97f84d15671f42a9439b"},{url:"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js",revision:"e625752c54753d1f"},{url:"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js.map",revision:"9719fb76717635311260a40cea17dff5"},{url:"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js",revision:"543af2a9ba1a1915"},{url:"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js.map",revision:"dc027a45de09f0f2d0996ef38863c7e7"},{url:"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-f006b705a238add7.js",revision:"f006b705a238add7"},{url:"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-f006b705a238add7.js.map",revision:"da0c488735a602453ecaee7b4e599665"},{url:"/_next/static/chunks/pages/providers-e075b7687019de0f.js",revision:"e075b7687019de0f"},{url:"/_next/static/chunks/pages/providers-e075b7687019de0f.js.map",revision:"78eda95eae906bab08982846fa286d88"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D-7ed97074381c2064.js",revision:"7ed97074381c2064"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D-7ed97074381c2064.js.map",revision:"ca2e2fa6a832d1e2a5b2b2ed81f999e7"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js",revision:"f7d779a8ff6c1d80"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js.map",revision:"e6d861f4bdcb2211b2390d0558de17de"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-9ded4537c4a55cc2.js",revision:"9ded4537c4a55cc2"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-9ded4537c4a55cc2.js.map",revision:"206c5376ac67fbef23362c9388324978"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-822ab86f995cf0af.js",revision:"822ab86f995cf0af"},{url:"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-822ab86f995cf0af.js.map",revision:"becd33dcd84edd72158377c168a8f6ac"},{url:"/_next/static/chunks/pages/sdl-builder-d802467afd1242aa.js",revision:"d802467afd1242aa"},{url:"/_next/static/chunks/pages/sdl-builder-d802467afd1242aa.js.map",revision:"ee18f89ded9f107254a8d0880e6d83e3"},{url:"/_next/static/chunks/pages/settings-96f79e0b7b495835.js",revision:"96f79e0b7b495835"},{url:"/_next/static/chunks/pages/settings-96f79e0b7b495835.js.map",revision:"488141e8b0a5c9e29a4bba5220dfa63d"},{url:"/_next/static/chunks/pages/settings/authorizations-291e16c9e6c8f5fa.js",revision:"291e16c9e6c8f5fa"},{url:"/_next/static/chunks/pages/settings/authorizations-291e16c9e6c8f5fa.js.map",revision:"3cb7b94c891e8716ab6613c2abd89097"},{url:"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js",revision:"33d357c4b38aedf5"},{url:"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js.map",revision:"c43c961f9a648bbaf1ea13d871e9d13b"},{url:"/_next/static/chunks/pages/templates-3df4e596dcc9310a.js",revision:"3df4e596dcc9310a"},{url:"/_next/static/chunks/pages/templates-3df4e596dcc9310a.js.map",revision:"086cb3e72a8b1e9f6d84bf8a8b035bec"},{url:"/_next/static/chunks/pages/templates/%5BtemplateId%5D-1083ac35502cb7a5.js",revision:"1083ac35502cb7a5"},{url:"/_next/static/chunks/pages/templates/%5BtemplateId%5D-1083ac35502cb7a5.js.map",revision:"d346ae71bcd8c75850d8245e599ebf76"},{url:"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js",revision:"3cc59c714fc033f3"},{url:"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js.map",revision:"0353660dfa596f89a1cfd502c49756b1"},{url:"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js",revision:"cd4428d78f5c9635"},{url:"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js.map",revision:"5c35919eedf54428d0a02449f477fc96"},{url:"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js",revision:"2f825a9b9c644205"},{url:"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js.map",revision:"55607c700d5a6918d4df7b1bb0a2d1e8"},{url:"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js",revision:"3aa5061833464ec1"},{url:"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js.map",revision:"b18e2db627cc994ab1f43df9724a3e40"},{url:"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js",revision:"787620a1ccc48282"},{url:"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js.map",revision:"546ea7ffbf6b9b5461facfc096d2cda4"},{url:"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js",revision:"6d9bbbb26aa9d9b4"},{url:"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js.map",revision:"7d4a54b6eef7f5606ef2394189cd03cf"},{url:"/_next/static/chunks/pages/validators-789933a6891c24de.js",revision:"789933a6891c24de"},{url:"/_next/static/chunks/pages/validators-789933a6891c24de.js.map",revision:"94c09f7fde164a1cc33862352bb702bd"},{url:"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js",revision:"df23a5f30792d1e2"},{url:"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js.map",revision:"969a27632e159d6e3670cf8b86f067e6"},{url:"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js",revision:"79330112775102f91e1010318bae2bd3"},{url:"/_next/static/chunks/webpack-556f5fa962b50456.js",revision:"556f5fa962b50456"},{url:"/_next/static/chunks/webpack-556f5fa962b50456.js.map",revision:"13851a8631fd2c00d6eaf8799e336e72"},{url:"/_next/static/css/60da0364ed65e94f.css",revision:"60da0364ed65e94f"},{url:"/_next/static/css/60da0364ed65e94f.css.map",revision:"cb19ae85aa968d5f6d3933a56327e540"},{url:"/_next/static/css/6bfa921e6cb2b44b.css",revision:"6bfa921e6cb2b44b"},{url:"/_next/static/css/6bfa921e6cb2b44b.css.map",revision:"d0734ef454db6824adde1381c60f7b65"},{url:"/_next/static/css/92e074b97232c763.css",revision:"92e074b97232c763"},{url:"/_next/static/css/92e074b97232c763.css.map",revision:"c88aeff2520ee169e777811f6afcda35"},{url:"/android-chrome-192x192.png",revision:"67aea0e4bc700134b81b51e635a95144"},{url:"/android-chrome-256x256.png",revision:"b0dc3017fadbf0f4c323636535f582b7"},{url:"/apple-touch-icon.png",revision:"97f107fd40c94f768de409ffb68e2e73"},{url:"/browserconfig.xml",revision:"e41ebb6b49206a59d8eafce8220ebeac"},{url:"/cloudmos-cover.png",revision:"14ba76ff06f2bf8186aef52eb53e4ccc"},{url:"/favicon-16x16.png",revision:"5b31d0a554060dec7c59e86af2c3b47d"},{url:"/favicon-32x32.png",revision:"794696d75ba46e490df7a68d1309cb20"},{url:"/favicon.ico",revision:"c6fc431554c8de94be347a8180e562aa"},{url:"/images/akash-logo-dark.png",revision:"b1623e407dad710a4c0c73461bbb8bb3"},{url:"/images/akash-logo-flat-dark.png",revision:"50b4ad6438e791047d97da0af65b96f5"},{url:"/images/akash-logo-flat-light.png",revision:"2befec2d17a2b6a32b1a0517ca1baf01"},{url:"/images/akash-logo-light.png",revision:"0ea30905c72eda674ad74c65d0c062bf"},{url:"/images/akash-logo.svg",revision:"4a5f3eaf31bf0f88ff3baec6281c8de3"},{url:"/images/chains/akash.png",revision:"d0b3f8ccaa3b0d18ef4039f86edf4436"},{url:"/images/chains/atom.png",revision:"6e4d88ad2c295e811fee29cc89edfcb1"},{url:"/images/chains/evmos.png",revision:"487a456e9091dec9ddf18892531401f8"},{url:"/images/chains/huahua.png",revision:"f0ba8427522833bba44962e87e982412"},{url:"/images/chains/juno.png",revision:"933b7d992dc67fd2f0d0f35e182b3361"},{url:"/images/chains/kuji.png",revision:"9c31e679007e5ae16fc28e067d907f79"},{url:"/images/chains/osmo.png",revision:"6940c69c28e5d85d99ba498fc7e95a26"},{url:"/images/chains/scrt.png",revision:"0dd98be17447cf7c47d27153f534ca60"},{url:"/images/chains/stars.png",revision:"56d0bd40e52f010c7267eb78c53138f2"},{url:"/images/chains/strd.png",revision:"eebdfb53ba0bc9bba88b0bede7a44f6d"},{url:"/images/cloudmos-logo-light.png",revision:"a7423327e4280225e176da92c6176c28"},{url:"/images/cloudmos-logo-small.jpg",revision:"4b339b83e7dc396894537b83d794726d"},{url:"/images/cloudmos-logo.png",revision:"56d87e0230a0ad5dd745efd486a33a58"},{url:"/images/docker.png",revision:"fde0ed6a2add0ffabfbc5a7749fdfff2"},{url:"/images/keplr-logo.png",revision:"50397e4902a33a6045c0f23dfe5cb1bd"},{url:"/images/powered-by-akash-dark.svg",revision:"3ea920f030ede7926a02c2dc17e332c4"},{url:"/images/powered-by-akash.svg",revision:"24b2566094fafded6c325246fe84c2a9"},{url:"/images/ubuntu.png",revision:"c631b8fae270a618c1fe1c9d43097189"},{url:"/images/wallet-connect-logo.png",revision:"8379e4d4e7267b47a0b5b89807a4d8f8"},{url:"/manifest.json",revision:"c2dfab0494ea8373287634bcf6da2233"},{url:"/mstile-150x150.png",revision:"4639e24da644e14af4e4daba3dd7af08"},{url:"/robots.txt",revision:"c2bb774b8071c957d2b835beaa28a58b"},{url:"/safari-pinned-tab.svg",revision:"a0fde4130c84e0d723dde3ece4a14fa8"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:c})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s}]}),"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 s=e.pathname;return!s.startsWith("/api/auth/")&&!!s.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")})); //# sourceMappingURL=sw.js.map diff --git a/deploy-web/public/sw.js.map b/deploy-web/public/sw.js.map index 80ef9cc41..23dbc82b0 100644 --- a/deploy-web/public/sw.js.map +++ b/deploy-web/public/sw.js.map @@ -1 +1 @@ -{"version":3,"file":"sw.js","sources":["../../../../Users/maxim/AppData/Local/Temp/785e4065829f285774a7515c5a0a9094/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {StaleWhileRevalidate as workbox_strategies_StaleWhileRevalidate} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-strategies/StaleWhileRevalidate.mjs';\nimport {RangeRequestsPlugin as workbox_range_requests_RangeRequestsPlugin} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-range-requests/RangeRequestsPlugin.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/_next/static/AE06PcoGOxQV9S0WgNi81/_buildManifest.js\",\n \"revision\": \"713a651b593d229def8b02a88aeead55\"\n },\n {\n \"url\": \"/_next/static/AE06PcoGOxQV9S0WgNi81/_ssgManifest.js\",\n \"revision\": \"b6652df95db52feb4daf4eca35380933\"\n },\n {\n \"url\": \"/_next/static/chunks/1237-94fba928e45858a5.js\",\n \"revision\": \"94fba928e45858a5\"\n },\n {\n \"url\": \"/_next/static/chunks/1237-94fba928e45858a5.js.map\",\n \"revision\": \"fcc2d681aeefe339bc6f6f723e748fdc\"\n },\n {\n \"url\": \"/_next/static/chunks/1320-0c2c7bcaf26f530d.js\",\n \"revision\": \"0c2c7bcaf26f530d\"\n },\n {\n \"url\": \"/_next/static/chunks/1320-0c2c7bcaf26f530d.js.map\",\n \"revision\": \"4da969c9a42f09606bf002a480907cde\"\n },\n {\n \"url\": \"/_next/static/chunks/1350-fd95e26091170c5c.js\",\n \"revision\": \"fd95e26091170c5c\"\n },\n {\n \"url\": \"/_next/static/chunks/1350-fd95e26091170c5c.js.map\",\n \"revision\": \"3041b7f5ff16360015cef66b955acebb\"\n },\n {\n \"url\": \"/_next/static/chunks/1443-87635b907e9c5c73.js\",\n \"revision\": \"87635b907e9c5c73\"\n },\n {\n \"url\": \"/_next/static/chunks/1443-87635b907e9c5c73.js.map\",\n \"revision\": \"2b6050a26f297ef0c2ee3dd9b1c30aac\"\n },\n {\n \"url\": \"/_next/static/chunks/1553-12eb680bdea2228a.js\",\n \"revision\": \"12eb680bdea2228a\"\n },\n {\n \"url\": \"/_next/static/chunks/1553-12eb680bdea2228a.js.map\",\n \"revision\": \"41da182bf84257dfdd024601c69dc67a\"\n },\n {\n \"url\": \"/_next/static/chunks/2018-250958b39c3ee4c5.js\",\n \"revision\": \"250958b39c3ee4c5\"\n },\n {\n \"url\": \"/_next/static/chunks/2018-250958b39c3ee4c5.js.map\",\n \"revision\": \"172c1e5300429bc2caca2388e0186a26\"\n },\n {\n \"url\": \"/_next/static/chunks/298-5420018da3881c27.js\",\n \"revision\": \"5420018da3881c27\"\n },\n {\n \"url\": \"/_next/static/chunks/298-5420018da3881c27.js.map\",\n \"revision\": \"f4a289ab69856842bcff1e6ca3d7128a\"\n },\n {\n \"url\": \"/_next/static/chunks/3516.f97be46f96fdc138.js\",\n \"revision\": \"f97be46f96fdc138\"\n },\n {\n \"url\": \"/_next/static/chunks/3516.f97be46f96fdc138.js.map\",\n \"revision\": \"538cae156a1a5935348fa2a04f90cbbc\"\n },\n {\n \"url\": \"/_next/static/chunks/4362-b4866f955d0162c0.js\",\n \"revision\": \"b4866f955d0162c0\"\n },\n {\n \"url\": \"/_next/static/chunks/4362-b4866f955d0162c0.js.map\",\n \"revision\": \"a332dd97807580406af4d0c69d81bdeb\"\n },\n {\n \"url\": \"/_next/static/chunks/4848-4edfc02dac9f5a49.js\",\n \"revision\": \"4edfc02dac9f5a49\"\n },\n {\n \"url\": \"/_next/static/chunks/4848-4edfc02dac9f5a49.js.map\",\n \"revision\": \"7ade277f7ea5e5967d8cf41fe10d96dd\"\n },\n {\n \"url\": \"/_next/static/chunks/4991.edc01234419bef79.js\",\n \"revision\": \"edc01234419bef79\"\n },\n {\n \"url\": \"/_next/static/chunks/4991.edc01234419bef79.js.map\",\n \"revision\": \"b7220bae96bca1d54de4892df64ff381\"\n },\n {\n \"url\": \"/_next/static/chunks/5054-15599051e71e0136.js\",\n \"revision\": \"15599051e71e0136\"\n },\n {\n \"url\": \"/_next/static/chunks/5054-15599051e71e0136.js.map\",\n \"revision\": \"6c531d9fe06acd7ba1b089f380d6ef03\"\n },\n {\n \"url\": \"/_next/static/chunks/5109-d70ea173073bb803.js\",\n \"revision\": \"d70ea173073bb803\"\n },\n {\n \"url\": \"/_next/static/chunks/5109-d70ea173073bb803.js.map\",\n \"revision\": \"e1100a370787d19203c12e5412632ca4\"\n },\n {\n \"url\": \"/_next/static/chunks/527-69cc6439768d0440.js\",\n \"revision\": \"69cc6439768d0440\"\n },\n {\n \"url\": \"/_next/static/chunks/527-69cc6439768d0440.js.map\",\n \"revision\": \"973bfe4a1c9eb9755f58c035538642fd\"\n },\n {\n \"url\": \"/_next/static/chunks/5644-185d67438f95c29f.js\",\n \"revision\": \"185d67438f95c29f\"\n },\n {\n \"url\": \"/_next/static/chunks/5644-185d67438f95c29f.js.map\",\n \"revision\": \"4f5599944f008020b3eddaec6dec98c8\"\n },\n {\n \"url\": \"/_next/static/chunks/5749.72214791cd774f3b.js\",\n \"revision\": \"72214791cd774f3b\"\n },\n {\n \"url\": \"/_next/static/chunks/5749.72214791cd774f3b.js.map\",\n \"revision\": \"0226e6044fc1b2cdf87e472126042648\"\n },\n {\n \"url\": \"/_next/static/chunks/609-d89f52daee913dd3.js\",\n \"revision\": \"d89f52daee913dd3\"\n },\n {\n \"url\": \"/_next/static/chunks/609-d89f52daee913dd3.js.map\",\n \"revision\": \"0e37d45287103871eb8bd0dd8b78a29b\"\n },\n {\n \"url\": \"/_next/static/chunks/6160.a09e349a57a24ff2.js\",\n \"revision\": \"a09e349a57a24ff2\"\n },\n {\n \"url\": \"/_next/static/chunks/6160.a09e349a57a24ff2.js.map\",\n \"revision\": \"3fc7bed3f38a21c3a218051ff91e3aa8\"\n },\n {\n \"url\": \"/_next/static/chunks/6183-21baeac90c1ecfaa.js\",\n \"revision\": \"21baeac90c1ecfaa\"\n },\n {\n \"url\": \"/_next/static/chunks/6183-21baeac90c1ecfaa.js.map\",\n \"revision\": \"8ea07d6d9dbfebabb23b9d37384c2e85\"\n },\n {\n \"url\": \"/_next/static/chunks/659-6599520b4e88c97d.js\",\n \"revision\": \"6599520b4e88c97d\"\n },\n {\n \"url\": \"/_next/static/chunks/659-6599520b4e88c97d.js.map\",\n \"revision\": \"1bb6e2a0709b3b97502f4a5ea632186d\"\n },\n {\n \"url\": \"/_next/static/chunks/6677-d0ada41b99fbdf6f.js\",\n \"revision\": \"d0ada41b99fbdf6f\"\n },\n {\n \"url\": \"/_next/static/chunks/6677-d0ada41b99fbdf6f.js.map\",\n \"revision\": \"1082a4a38bcd7c9db688dcfd0336eb0e\"\n },\n {\n \"url\": \"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js\",\n \"revision\": \"4f4c9cc9bfbaacb8\"\n },\n {\n \"url\": \"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js.map\",\n \"revision\": \"a6c5c41cde5f3368ca31c17aa4512326\"\n },\n {\n \"url\": \"/_next/static/chunks/678-7692cbe0fa348f10.js\",\n \"revision\": \"7692cbe0fa348f10\"\n },\n {\n \"url\": \"/_next/static/chunks/678-7692cbe0fa348f10.js.map\",\n \"revision\": \"9bb011077a878efda396eab7e26355c0\"\n },\n {\n \"url\": \"/_next/static/chunks/6782.998bc97f2cac4661.js\",\n \"revision\": \"998bc97f2cac4661\"\n },\n {\n \"url\": \"/_next/static/chunks/6782.998bc97f2cac4661.js.map\",\n \"revision\": \"bc43d2a492f1276152bcf74509af1ce6\"\n },\n {\n \"url\": \"/_next/static/chunks/6886-43c474d3a3be9ccb.js\",\n \"revision\": \"43c474d3a3be9ccb\"\n },\n {\n \"url\": \"/_next/static/chunks/6886-43c474d3a3be9ccb.js.map\",\n \"revision\": \"2ecf22de338fa5da280c413e543b009b\"\n },\n {\n \"url\": \"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js\",\n \"revision\": \"3ba305c9d969092f\"\n },\n {\n \"url\": \"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js.map\",\n \"revision\": \"b649699557acd02cc0112b32e8517bc8\"\n },\n {\n \"url\": \"/_next/static/chunks/7047-8ff6885c4286324f.js\",\n \"revision\": \"8ff6885c4286324f\"\n },\n {\n \"url\": \"/_next/static/chunks/7047-8ff6885c4286324f.js.map\",\n \"revision\": \"17275b4388937e3382285f1f02fcfc76\"\n },\n {\n \"url\": \"/_next/static/chunks/7449-ca696f52ef3e1ce2.js\",\n \"revision\": \"ca696f52ef3e1ce2\"\n },\n {\n \"url\": \"/_next/static/chunks/7449-ca696f52ef3e1ce2.js.map\",\n \"revision\": \"44dc9a12a6a793612365252043fe2e52\"\n },\n {\n \"url\": \"/_next/static/chunks/8228-aa1a031b87ea85ab.js\",\n \"revision\": \"aa1a031b87ea85ab\"\n },\n {\n \"url\": \"/_next/static/chunks/8228-aa1a031b87ea85ab.js.map\",\n \"revision\": \"361f6e51eadb3642a60658e6e194847b\"\n },\n {\n \"url\": \"/_next/static/chunks/8233-03f273a178519980.js\",\n \"revision\": \"03f273a178519980\"\n },\n {\n \"url\": \"/_next/static/chunks/8233-03f273a178519980.js.map\",\n \"revision\": \"2ad0317e2a9ec897a072fa49a015154e\"\n },\n {\n \"url\": \"/_next/static/chunks/8329.cd9bbb442cc3639a.js\",\n \"revision\": \"cd9bbb442cc3639a\"\n },\n {\n \"url\": \"/_next/static/chunks/8329.cd9bbb442cc3639a.js.map\",\n \"revision\": \"219194df7b3db0d3954fe768527cd16f\"\n },\n {\n \"url\": \"/_next/static/chunks/8364-8945f344eec70f0a.js\",\n \"revision\": \"8945f344eec70f0a\"\n },\n {\n \"url\": \"/_next/static/chunks/8364-8945f344eec70f0a.js.map\",\n \"revision\": \"3490d16c98f239a5458eb58f58112bcf\"\n },\n {\n \"url\": \"/_next/static/chunks/8446-4892663fdb75b8e1.js\",\n \"revision\": \"4892663fdb75b8e1\"\n },\n {\n \"url\": \"/_next/static/chunks/8446-4892663fdb75b8e1.js.map\",\n \"revision\": \"664560b0556cfb789fd1bd20fa97144a\"\n },\n {\n \"url\": \"/_next/static/chunks/8606-d8b87c9c7c625494.js\",\n \"revision\": \"d8b87c9c7c625494\"\n },\n {\n \"url\": \"/_next/static/chunks/8606-d8b87c9c7c625494.js.map\",\n \"revision\": \"bda2e28e372a0590b19e9f847096cc9c\"\n },\n {\n \"url\": \"/_next/static/chunks/9130-7b6fca6592947cda.js\",\n \"revision\": \"7b6fca6592947cda\"\n },\n {\n \"url\": \"/_next/static/chunks/9130-7b6fca6592947cda.js.map\",\n \"revision\": \"ed0d054a0046d7b1aba303e12183ab91\"\n },\n {\n \"url\": \"/_next/static/chunks/9266-190a469a227c4093.js\",\n \"revision\": \"190a469a227c4093\"\n },\n {\n \"url\": \"/_next/static/chunks/9266-190a469a227c4093.js.map\",\n \"revision\": \"3e55f3c1e71a8356ec34b7aaaffafe2e\"\n },\n {\n \"url\": \"/_next/static/chunks/942-bef0607ef1052ca8.js\",\n \"revision\": \"bef0607ef1052ca8\"\n },\n {\n \"url\": \"/_next/static/chunks/942-bef0607ef1052ca8.js.map\",\n \"revision\": \"291ec0e7f963e13be8fb882fc9261e9c\"\n },\n {\n \"url\": \"/_next/static/chunks/9604-5b0ae6bfc21d762e.js\",\n \"revision\": \"5b0ae6bfc21d762e\"\n },\n {\n \"url\": \"/_next/static/chunks/9604-5b0ae6bfc21d762e.js.map\",\n \"revision\": \"db6a10553ec40489ec731ce98c8f7537\"\n },\n {\n \"url\": \"/_next/static/chunks/9912-49517439276decf2.js\",\n \"revision\": \"49517439276decf2\"\n },\n {\n \"url\": \"/_next/static/chunks/9912-49517439276decf2.js.map\",\n \"revision\": \"5014b77e603fedf8178d7259980aa704\"\n },\n {\n \"url\": \"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js\",\n \"revision\": \"e2cba51f15a3f480\"\n },\n {\n \"url\": \"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js.map\",\n \"revision\": \"9c75b94497f1b36b05f625b47b3a6c8a\"\n },\n {\n \"url\": \"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js\",\n \"revision\": \"8cda0b3104d2c27b\"\n },\n {\n \"url\": \"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js.map\",\n \"revision\": \"34dfefc984e90e074737205d8653ca66\"\n },\n {\n \"url\": \"/_next/static/chunks/framework-2645a99191cfc5e9.js\",\n \"revision\": \"2645a99191cfc5e9\"\n },\n {\n \"url\": \"/_next/static/chunks/framework-2645a99191cfc5e9.js.map\",\n \"revision\": \"6faa44d3d98d9d70c102a9ef855cc984\"\n },\n {\n \"url\": \"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js\",\n \"revision\": \"8cb3ef9b2f8bb78d\"\n },\n {\n \"url\": \"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js.map\",\n \"revision\": \"9b09d22952231cd9dc660b6948a11b42\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/404-143cb8046985eb3d.js\",\n \"revision\": \"143cb8046985eb3d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/404-143cb8046985eb3d.js.map\",\n \"revision\": \"ab17ec86199914f0304c45252158b24f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js\",\n \"revision\": \"ee38b3e054b6e91d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js.map\",\n \"revision\": \"3b12567b76adb11815991913b9edc5c7\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_error-47c8d196fdda703f.js\",\n \"revision\": \"47c8d196fdda703f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_error-47c8d196fdda703f.js.map\",\n \"revision\": \"5493fd4cf8917ebc60f784332cd86b05\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js\",\n \"revision\": \"6ad42391cb832421\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js.map\",\n \"revision\": \"9d9405f51da544ab5ffbe0c7be836290\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js\",\n \"revision\": \"e4d0dbd2961c193d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js.map\",\n \"revision\": \"a77b440b554aff4f7523cadef129ef49\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js\",\n \"revision\": \"3e90aaa0b2fc8484\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js.map\",\n \"revision\": \"81da8aec99f7aa6fe8119a1f2118c44c\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/analytics-f47c95efb853faf6.js\",\n \"revision\": \"f47c95efb853faf6\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/analytics-f47c95efb853faf6.js.map\",\n \"revision\": \"976dd7877308f86c912411394d17a5be\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks-48097254130d38fe.js\",\n \"revision\": \"48097254130d38fe\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks-48097254130d38fe.js.map\",\n \"revision\": \"135a220e0a13509cf5642494a6f87832\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js\",\n \"revision\": \"9a8046c0f7778613\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js.map\",\n \"revision\": \"9ea64156f07e33c85cab424e407d2fe3\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/contact-10c336b955a10cb1.js\",\n \"revision\": \"10c336b955a10cb1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/contact-10c336b955a10cb1.js.map\",\n \"revision\": \"9225d9d64bc2ffe7216f337240b2c260\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js\",\n \"revision\": \"673fa0fe065d52c2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js.map\",\n \"revision\": \"2f9c10d2a561b222f7429928ad419b2e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments-83d9e70f8b230800.js\",\n \"revision\": \"83d9e70f8b230800\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments-83d9e70f8b230800.js.map\",\n \"revision\": \"15a6bf8490c7ceda5abd912be6fdfd0f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments/%5Bdseq%5D-9b3c4d9e09d36870.js\",\n \"revision\": \"9b3c4d9e09d36870\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments/%5Bdseq%5D-9b3c4d9e09d36870.js.map\",\n \"revision\": \"06ffc11bd152d18291f9c89886c010d9\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js\",\n \"revision\": \"f0fddc92f9978ff2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js.map\",\n \"revision\": \"7976c1ca5d291e2b46a45b88072fd094\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js\",\n \"revision\": \"1674f060816a4d38\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js.map\",\n \"revision\": \"ab9fc6875e4b2b194fe4f67f001cd22e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-86fadca318f11e2f.js\",\n \"revision\": \"86fadca318f11e2f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-86fadca318f11e2f.js.map\",\n \"revision\": \"61c096e10f078ec016518c280e33f8a8\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/index-8dadf084f1682814.js\",\n \"revision\": \"8dadf084f1682814\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/index-8dadf084f1682814.js.map\",\n \"revision\": \"5f40ddec7f825ce5a24c4d44c8df2ce3\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js\",\n \"revision\": \"b9b8cb2f20e80567\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js.map\",\n \"revision\": \"75d86d2c3e5780bab65d2e56828202e2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/new-deployment-bfd2f0cfc5901e93.js\",\n \"revision\": \"bfd2f0cfc5901e93\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/new-deployment-bfd2f0cfc5901e93.js.map\",\n \"revision\": \"4c3349ff2069d1f96d6d630a4bb3e2d0\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js\",\n \"revision\": \"4ef9f9805153d053\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js.map\",\n \"revision\": \"e144121981ab97f84d15671f42a9439b\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js\",\n \"revision\": \"e625752c54753d1f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js.map\",\n \"revision\": \"9719fb76717635311260a40cea17dff5\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js\",\n \"revision\": \"543af2a9ba1a1915\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js.map\",\n \"revision\": \"dc027a45de09f0f2d0996ef38863c7e7\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-485d968bebad4203.js\",\n \"revision\": \"485d968bebad4203\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-485d968bebad4203.js.map\",\n \"revision\": \"6c88ecfa2cc41551bab6f279895bd1d0\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers-b3815de86870dc6e.js\",\n \"revision\": \"b3815de86870dc6e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers-b3815de86870dc6e.js.map\",\n \"revision\": \"8a0d0e1d13d4145646b496ac456b5c03\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D-fa3bf54772542ed6.js\",\n \"revision\": \"fa3bf54772542ed6\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D-fa3bf54772542ed6.js.map\",\n \"revision\": \"dc4284f7f1054d6aaac673c5a8f68a89\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js\",\n \"revision\": \"f7d779a8ff6c1d80\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js.map\",\n \"revision\": \"e6d861f4bdcb2211b2390d0558de17de\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-748f6c23ae85893c.js\",\n \"revision\": \"748f6c23ae85893c\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-748f6c23ae85893c.js.map\",\n \"revision\": \"dfa0edcdb06d4d06d170a0dcf3c31ec1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-87c1539d62726c01.js\",\n \"revision\": \"87c1539d62726c01\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-87c1539d62726c01.js.map\",\n \"revision\": \"2fcab858b2665b30b51405601eba5f9e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/sdl-builder-1a3d7ef5745891c9.js\",\n \"revision\": \"1a3d7ef5745891c9\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/sdl-builder-1a3d7ef5745891c9.js.map\",\n \"revision\": \"b85e97eae70c78fccb33c1f4a61b1bea\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings-96f79e0b7b495835.js\",\n \"revision\": \"96f79e0b7b495835\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings-96f79e0b7b495835.js.map\",\n \"revision\": \"488141e8b0a5c9e29a4bba5220dfa63d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings/authorizations-5c1065b4cfc41a6f.js\",\n \"revision\": \"5c1065b4cfc41a6f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings/authorizations-5c1065b4cfc41a6f.js.map\",\n \"revision\": \"9f78c917b7d39e454d4754352b07e4e4\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js\",\n \"revision\": \"33d357c4b38aedf5\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js.map\",\n \"revision\": \"c43c961f9a648bbaf1ea13d871e9d13b\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates-a8f5506a17c25c89.js\",\n \"revision\": \"a8f5506a17c25c89\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates-a8f5506a17c25c89.js.map\",\n \"revision\": \"6b3fc329a034f5536b9cf1bf67ab7ccd\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates/%5BtemplateId%5D-2066fe63ddd703cc.js\",\n \"revision\": \"2066fe63ddd703cc\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates/%5BtemplateId%5D-2066fe63ddd703cc.js.map\",\n \"revision\": \"6788e35183cca1d11bd379990595b08b\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js\",\n \"revision\": \"3cc59c714fc033f3\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js.map\",\n \"revision\": \"0353660dfa596f89a1cfd502c49756b1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js\",\n \"revision\": \"cd4428d78f5c9635\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js.map\",\n \"revision\": \"5c35919eedf54428d0a02449f477fc96\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js\",\n \"revision\": \"2f825a9b9c644205\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js.map\",\n \"revision\": \"55607c700d5a6918d4df7b1bb0a2d1e8\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js\",\n \"revision\": \"3aa5061833464ec1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js.map\",\n \"revision\": \"b18e2db627cc994ab1f43df9724a3e40\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js\",\n \"revision\": \"787620a1ccc48282\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js.map\",\n \"revision\": \"546ea7ffbf6b9b5461facfc096d2cda4\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js\",\n \"revision\": \"6d9bbbb26aa9d9b4\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js.map\",\n \"revision\": \"7d4a54b6eef7f5606ef2394189cd03cf\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators-789933a6891c24de.js\",\n \"revision\": \"789933a6891c24de\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators-789933a6891c24de.js.map\",\n \"revision\": \"94c09f7fde164a1cc33862352bb702bd\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js\",\n \"revision\": \"df23a5f30792d1e2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js.map\",\n \"revision\": \"969a27632e159d6e3670cf8b86f067e6\"\n },\n {\n \"url\": \"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js\",\n \"revision\": \"79330112775102f91e1010318bae2bd3\"\n },\n {\n \"url\": \"/_next/static/chunks/webpack-561db70e7b94916f.js\",\n \"revision\": \"561db70e7b94916f\"\n },\n {\n \"url\": \"/_next/static/chunks/webpack-561db70e7b94916f.js.map\",\n \"revision\": \"41617d86a61f917f0a9c9fa325831fbf\"\n },\n {\n \"url\": \"/_next/static/css/60da0364ed65e94f.css\",\n \"revision\": \"60da0364ed65e94f\"\n },\n {\n \"url\": \"/_next/static/css/60da0364ed65e94f.css.map\",\n \"revision\": \"cb19ae85aa968d5f6d3933a56327e540\"\n },\n {\n \"url\": \"/_next/static/css/6bfa921e6cb2b44b.css\",\n \"revision\": \"6bfa921e6cb2b44b\"\n },\n {\n \"url\": \"/_next/static/css/6bfa921e6cb2b44b.css.map\",\n \"revision\": \"d0734ef454db6824adde1381c60f7b65\"\n },\n {\n \"url\": \"/_next/static/css/92e074b97232c763.css\",\n \"revision\": \"92e074b97232c763\"\n },\n {\n \"url\": \"/_next/static/css/92e074b97232c763.css.map\",\n \"revision\": \"c88aeff2520ee169e777811f6afcda35\"\n },\n {\n \"url\": \"/android-chrome-192x192.png\",\n \"revision\": \"67aea0e4bc700134b81b51e635a95144\"\n },\n {\n \"url\": \"/android-chrome-256x256.png\",\n \"revision\": \"b0dc3017fadbf0f4c323636535f582b7\"\n },\n {\n \"url\": \"/apple-touch-icon.png\",\n \"revision\": \"97f107fd40c94f768de409ffb68e2e73\"\n },\n {\n \"url\": \"/browserconfig.xml\",\n \"revision\": \"e41ebb6b49206a59d8eafce8220ebeac\"\n },\n {\n \"url\": \"/cloudmos-cover.png\",\n \"revision\": \"14ba76ff06f2bf8186aef52eb53e4ccc\"\n },\n {\n \"url\": \"/favicon-16x16.png\",\n \"revision\": \"5b31d0a554060dec7c59e86af2c3b47d\"\n },\n {\n \"url\": \"/favicon-32x32.png\",\n \"revision\": \"794696d75ba46e490df7a68d1309cb20\"\n },\n {\n \"url\": \"/favicon.ico\",\n \"revision\": \"c6fc431554c8de94be347a8180e562aa\"\n },\n {\n \"url\": \"/images/akash-logo-dark.png\",\n \"revision\": \"b1623e407dad710a4c0c73461bbb8bb3\"\n },\n {\n \"url\": \"/images/akash-logo-flat-dark.png\",\n \"revision\": \"50b4ad6438e791047d97da0af65b96f5\"\n },\n {\n \"url\": \"/images/akash-logo-flat-light.png\",\n \"revision\": \"2befec2d17a2b6a32b1a0517ca1baf01\"\n },\n {\n \"url\": \"/images/akash-logo-light.png\",\n \"revision\": \"0ea30905c72eda674ad74c65d0c062bf\"\n },\n {\n \"url\": \"/images/akash-logo.svg\",\n \"revision\": \"4a5f3eaf31bf0f88ff3baec6281c8de3\"\n },\n {\n \"url\": \"/images/chains/akash.png\",\n \"revision\": \"d0b3f8ccaa3b0d18ef4039f86edf4436\"\n },\n {\n \"url\": \"/images/chains/atom.png\",\n \"revision\": \"6e4d88ad2c295e811fee29cc89edfcb1\"\n },\n {\n \"url\": \"/images/chains/evmos.png\",\n \"revision\": \"487a456e9091dec9ddf18892531401f8\"\n },\n {\n \"url\": \"/images/chains/huahua.png\",\n \"revision\": \"f0ba8427522833bba44962e87e982412\"\n },\n {\n \"url\": \"/images/chains/juno.png\",\n \"revision\": \"933b7d992dc67fd2f0d0f35e182b3361\"\n },\n {\n \"url\": \"/images/chains/kuji.png\",\n \"revision\": \"9c31e679007e5ae16fc28e067d907f79\"\n },\n {\n \"url\": \"/images/chains/osmo.png\",\n \"revision\": \"6940c69c28e5d85d99ba498fc7e95a26\"\n },\n {\n \"url\": \"/images/chains/scrt.png\",\n \"revision\": \"0dd98be17447cf7c47d27153f534ca60\"\n },\n {\n \"url\": \"/images/chains/stars.png\",\n \"revision\": \"56d0bd40e52f010c7267eb78c53138f2\"\n },\n {\n \"url\": \"/images/chains/strd.png\",\n \"revision\": \"eebdfb53ba0bc9bba88b0bede7a44f6d\"\n },\n {\n \"url\": \"/images/cloudmos-logo-light.png\",\n \"revision\": \"a7423327e4280225e176da92c6176c28\"\n },\n {\n \"url\": \"/images/cloudmos-logo-small.jpg\",\n \"revision\": \"4b339b83e7dc396894537b83d794726d\"\n },\n {\n \"url\": \"/images/cloudmos-logo.png\",\n \"revision\": \"56d87e0230a0ad5dd745efd486a33a58\"\n },\n {\n \"url\": \"/images/docker.png\",\n \"revision\": \"fde0ed6a2add0ffabfbc5a7749fdfff2\"\n },\n {\n \"url\": \"/images/keplr-logo.png\",\n \"revision\": \"50397e4902a33a6045c0f23dfe5cb1bd\"\n },\n {\n \"url\": \"/images/powered-by-akash-dark.svg\",\n \"revision\": \"3ea920f030ede7926a02c2dc17e332c4\"\n },\n {\n \"url\": \"/images/powered-by-akash.svg\",\n \"revision\": \"24b2566094fafded6c325246fe84c2a9\"\n },\n {\n \"url\": \"/images/ubuntu.png\",\n \"revision\": \"c631b8fae270a618c1fe1c9d43097189\"\n },\n {\n \"url\": \"/images/wallet-connect-logo.png\",\n \"revision\": \"8379e4d4e7267b47a0b5b89807a4d8f8\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c2dfab0494ea8373287634bcf6da2233\"\n },\n {\n \"url\": \"/mstile-150x150.png\",\n \"revision\": \"4639e24da644e14af4e4daba3dd7af08\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"c2bb774b8071c957d2b835beaa28a58b\"\n },\n {\n \"url\": \"/safari-pinned-tab.svg\",\n \"revision\": \"a0fde4130c84e0d723dde3ece4a14fa8\"\n }\n], {\n \"ignoreURLParametersMatching\": []\n});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({ request, response, event, state }) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers }) } return response } }] }), 'GET');\nworkbox_routing_registerRoute(/^https:\\/\\/fonts\\.(?:gstatic)\\.com\\/.*/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"google-fonts-webfonts\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 31536000 })] }), 'GET');\nworkbox_routing_registerRoute(/^https:\\/\\/fonts\\.(?:googleapis)\\.com\\/.*/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"google-fonts-stylesheets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-font-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-image-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\/_next\\/image\\?url=.+$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"next-image\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:mp3|wav|ogg)$/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"static-audio-assets\", plugins: [new workbox_range_requests_RangeRequestsPlugin(), new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:mp4)$/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"static-video-assets\", plugins: [new workbox_range_requests_RangeRequestsPlugin(), new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:js)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-js-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:css|less)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-style-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\/_next\\/data\\/.+\\/.+\\.json$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"next-data\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:json|xml|csv)$/i, new workbox_strategies_NetworkFirst({ \"cacheName\":\"static-data-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n if (!isSameOrigin) return false\n const pathname = url.pathname\n // Exclude /api/auth/callback/* to fix OAuth workflow in Safari without impact other environment\n // Above route is default for next-auth, you may need to change it if your OAuth workflow has a different callback route\n // Issue: https://github.com/shadowwalker/next-pwa/issues/131#issuecomment-821894809\n if (pathname.startsWith('/api/auth/')) return false\n if (pathname.startsWith('/api/')) return true\n return false\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"apis\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 16, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n if (!isSameOrigin) return false\n const pathname = url.pathname\n if (pathname.startsWith('/api/')) return false\n return true\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"others\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n return !isSameOrigin\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"cross-origin\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 3600 })] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","cacheName","plugins","cacheWillUpdate","async","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_CacheFirst","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_strategies_StaleWhileRevalidate","workbox_range_requests_RangeRequestsPlugin","origin","pathname","startsWith","networkTimeoutSeconds"],"mappings":"0nBAqBAA,gBAUAC,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oBAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,qFACPC,SAAY,oBAEd,CACED,IAAO,yFACPC,SAAY,oCAEd,CACED,IAAO,sFACPC,SAAY,oBAEd,CACED,IAAO,0FACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oBAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oBAEd,CACED,IAAO,yEACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oBAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,mFACPC,SAAY,oBAEd,CACED,IAAO,uFACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oBAEd,CACED,IAAO,4EACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oBAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,oBAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oBAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oBAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oBAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oBAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oBAEd,CACED,IAAO,4EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oBAEd,CACED,IAAO,mFACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oBAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,4EACPC,SAAY,oBAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,8EACPC,SAAY,oBAEd,CACED,IAAO,kFACPC,SAAY,oCAEd,CACED,IAAO,2EACPC,SAAY,oBAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,oBAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oBAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,4EACPC,SAAY,oBAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oBAEd,CACED,IAAO,sEACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oBAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oBAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,4EACPC,SAAY,oBAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oBAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,oBAEd,CACED,IAAO,8EACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oBAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,qCAEb,CACDC,4BAA+B,KAEjCC,EAAAA,wBAIAC,EAAAA,cAA8B,IAAK,IAAIC,eAAgC,CAAEC,UAAY,YAAaC,QAAS,CAAC,CAAEC,gBAAiBC,OAASC,UAASC,WAAUC,QAAOC,WAAkBF,GAA8B,mBAAlBA,EAASG,KAAoC,IAAIC,SAASJ,EAASK,KAAM,CAAEC,OAAQ,IAAKC,WAAY,KAAMC,QAASR,EAASQ,UAAoBR,MAAkB,OAClWP,EAAAA,cAA8B,0CAA2C,IAAIgB,aAA8B,CAAEd,UAAY,wBAAyBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,EAAGC,cAAe,aAAiB,OACrPnB,EAAAA,cAA8B,6CAA8C,IAAIoB,uBAAwC,CAAElB,UAAY,2BAA4BC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,EAAGC,cAAe,YAAe,OACnQnB,EAAAA,cAA8B,8CAA+C,IAAIoB,uBAAwC,CAAElB,UAAY,qBAAsBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,EAAGC,cAAe,YAAe,OAC9PnB,EAAAA,cAA8B,wCAAyC,IAAIoB,uBAAwC,CAAElB,UAAY,sBAAuBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACzPnB,EAAAA,cAA8B,2BAA4B,IAAIoB,uBAAwC,CAAElB,UAAY,aAAcC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACnOnB,EAAAA,cAA8B,sBAAuB,IAAIgB,aAA8B,CAAEd,UAAY,sBAAuBC,QAAS,CAAC,IAAIkB,sBAA8C,IAAIJ,EAAAA,iBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC/QnB,EAAAA,cAA8B,cAAe,IAAIgB,aAA8B,CAAEd,UAAY,sBAAuBC,QAAS,CAAC,IAAIkB,sBAA8C,IAAIJ,EAAAA,iBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACvQnB,EAAAA,cAA8B,aAAc,IAAIoB,uBAAwC,CAAElB,UAAY,mBAAoBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC3NnB,EAAAA,cAA8B,mBAAoB,IAAIoB,uBAAwC,CAAElB,UAAY,sBAAuBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACpOnB,EAAAA,cAA8B,gCAAiC,IAAIoB,uBAAwC,CAAElB,UAAY,YAAaC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACvOnB,EAAAA,cAA8B,uBAAwB,IAAIC,eAAgC,CAAEC,UAAY,qBAAsBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC/NnB,EAAAA,eAA8B,EAAGJ,UAE3B,KADqBJ,KAAK8B,SAAW1B,EAAI0B,QACtB,OAAO,EAC1B,MAAMC,EAAW3B,EAAI2B,SAIrB,OAAIA,EAASC,WAAW,iBACpBD,EAASC,WAAW,QACxB,GACC,IAAIvB,EAAAA,aAAgC,CAAEC,UAAY,OAAOuB,sBAAwB,GAAItB,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC7LnB,EAAAA,eAA8B,EAAGJ,UAE3B,KADqBJ,KAAK8B,SAAW1B,EAAI0B,QACtB,OAAO,EAE1B,OADiB1B,EAAI2B,SACRC,WAAW,QACxB,GACC,IAAIvB,EAAAA,aAAgC,CAAEC,UAAY,SAASuB,sBAAwB,GAAItB,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC/LnB,EAAAA,eAA8B,EAAGJ,WACNJ,KAAK8B,SAAW1B,EAAI0B,SAExC,IAAIrB,EAAAA,aAAgC,CAAEC,UAAY,eAAeuB,sBAAwB,GAAItB,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,UAAa"} \ No newline at end of file +{"version":3,"file":"sw.js","sources":["../../../../Users/maxim/AppData/Local/Temp/5ee2931e534d56aeabf708bb0365903c/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-routing/registerRoute.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {StaleWhileRevalidate as workbox_strategies_StaleWhileRevalidate} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-strategies/StaleWhileRevalidate.mjs';\nimport {RangeRequestsPlugin as workbox_range_requests_RangeRequestsPlugin} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-range-requests/RangeRequestsPlugin.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from 'C:/repos/ovrclk-org/cloudmos/deploy-web/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\nimportScripts(\n \n);\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/_next/static/BmbQL0Bb4mKKJk6cE75I9/_buildManifest.js\",\n \"revision\": \"a7192c9f1c80ac1c28146d79d811f2d8\"\n },\n {\n \"url\": \"/_next/static/BmbQL0Bb4mKKJk6cE75I9/_ssgManifest.js\",\n \"revision\": \"b6652df95db52feb4daf4eca35380933\"\n },\n {\n \"url\": \"/_next/static/chunks/1237-ab51938214660fce.js\",\n \"revision\": \"ab51938214660fce\"\n },\n {\n \"url\": \"/_next/static/chunks/1237-ab51938214660fce.js.map\",\n \"revision\": \"e8012c95bc756051ac9b22852d393089\"\n },\n {\n \"url\": \"/_next/static/chunks/1320-bc68ca81ae5cb66d.js\",\n \"revision\": \"bc68ca81ae5cb66d\"\n },\n {\n \"url\": \"/_next/static/chunks/1320-bc68ca81ae5cb66d.js.map\",\n \"revision\": \"66fa0f35afaed747e06329f6e54da4a8\"\n },\n {\n \"url\": \"/_next/static/chunks/1350-fd95e26091170c5c.js\",\n \"revision\": \"fd95e26091170c5c\"\n },\n {\n \"url\": \"/_next/static/chunks/1350-fd95e26091170c5c.js.map\",\n \"revision\": \"3041b7f5ff16360015cef66b955acebb\"\n },\n {\n \"url\": \"/_next/static/chunks/1443-87635b907e9c5c73.js\",\n \"revision\": \"87635b907e9c5c73\"\n },\n {\n \"url\": \"/_next/static/chunks/1443-87635b907e9c5c73.js.map\",\n \"revision\": \"2b6050a26f297ef0c2ee3dd9b1c30aac\"\n },\n {\n \"url\": \"/_next/static/chunks/1553-12eb680bdea2228a.js\",\n \"revision\": \"12eb680bdea2228a\"\n },\n {\n \"url\": \"/_next/static/chunks/1553-12eb680bdea2228a.js.map\",\n \"revision\": \"41da182bf84257dfdd024601c69dc67a\"\n },\n {\n \"url\": \"/_next/static/chunks/2018-250958b39c3ee4c5.js\",\n \"revision\": \"250958b39c3ee4c5\"\n },\n {\n \"url\": \"/_next/static/chunks/2018-250958b39c3ee4c5.js.map\",\n \"revision\": \"172c1e5300429bc2caca2388e0186a26\"\n },\n {\n \"url\": \"/_next/static/chunks/298-299f7b083e77f86a.js\",\n \"revision\": \"299f7b083e77f86a\"\n },\n {\n \"url\": \"/_next/static/chunks/298-299f7b083e77f86a.js.map\",\n \"revision\": \"276afd1201ee63df6007d241a5eb6a31\"\n },\n {\n \"url\": \"/_next/static/chunks/3516.2e4b6b2b098e6078.js\",\n \"revision\": \"2e4b6b2b098e6078\"\n },\n {\n \"url\": \"/_next/static/chunks/3516.2e4b6b2b098e6078.js.map\",\n \"revision\": \"bd1c39ccabe0c16dc9bdad92d0a75383\"\n },\n {\n \"url\": \"/_next/static/chunks/4362-b4866f955d0162c0.js\",\n \"revision\": \"b4866f955d0162c0\"\n },\n {\n \"url\": \"/_next/static/chunks/4362-b4866f955d0162c0.js.map\",\n \"revision\": \"a332dd97807580406af4d0c69d81bdeb\"\n },\n {\n \"url\": \"/_next/static/chunks/4848-4edfc02dac9f5a49.js\",\n \"revision\": \"4edfc02dac9f5a49\"\n },\n {\n \"url\": \"/_next/static/chunks/4848-4edfc02dac9f5a49.js.map\",\n \"revision\": \"7ade277f7ea5e5967d8cf41fe10d96dd\"\n },\n {\n \"url\": \"/_next/static/chunks/4991.edc01234419bef79.js\",\n \"revision\": \"edc01234419bef79\"\n },\n {\n \"url\": \"/_next/static/chunks/4991.edc01234419bef79.js.map\",\n \"revision\": \"b7220bae96bca1d54de4892df64ff381\"\n },\n {\n \"url\": \"/_next/static/chunks/5054-15599051e71e0136.js\",\n \"revision\": \"15599051e71e0136\"\n },\n {\n \"url\": \"/_next/static/chunks/5054-15599051e71e0136.js.map\",\n \"revision\": \"6c531d9fe06acd7ba1b089f380d6ef03\"\n },\n {\n \"url\": \"/_next/static/chunks/5109-d70ea173073bb803.js\",\n \"revision\": \"d70ea173073bb803\"\n },\n {\n \"url\": \"/_next/static/chunks/5109-d70ea173073bb803.js.map\",\n \"revision\": \"e1100a370787d19203c12e5412632ca4\"\n },\n {\n \"url\": \"/_next/static/chunks/527-69cc6439768d0440.js\",\n \"revision\": \"69cc6439768d0440\"\n },\n {\n \"url\": \"/_next/static/chunks/527-69cc6439768d0440.js.map\",\n \"revision\": \"973bfe4a1c9eb9755f58c035538642fd\"\n },\n {\n \"url\": \"/_next/static/chunks/5644-185d67438f95c29f.js\",\n \"revision\": \"185d67438f95c29f\"\n },\n {\n \"url\": \"/_next/static/chunks/5644-185d67438f95c29f.js.map\",\n \"revision\": \"4f5599944f008020b3eddaec6dec98c8\"\n },\n {\n \"url\": \"/_next/static/chunks/5749.72214791cd774f3b.js\",\n \"revision\": \"72214791cd774f3b\"\n },\n {\n \"url\": \"/_next/static/chunks/5749.72214791cd774f3b.js.map\",\n \"revision\": \"0226e6044fc1b2cdf87e472126042648\"\n },\n {\n \"url\": \"/_next/static/chunks/609-d89f52daee913dd3.js\",\n \"revision\": \"d89f52daee913dd3\"\n },\n {\n \"url\": \"/_next/static/chunks/609-d89f52daee913dd3.js.map\",\n \"revision\": \"0e37d45287103871eb8bd0dd8b78a29b\"\n },\n {\n \"url\": \"/_next/static/chunks/6160.4c66abe24c5ba598.js\",\n \"revision\": \"4c66abe24c5ba598\"\n },\n {\n \"url\": \"/_next/static/chunks/6160.4c66abe24c5ba598.js.map\",\n \"revision\": \"1b74b30b006ec68a607b540bd467953e\"\n },\n {\n \"url\": \"/_next/static/chunks/6183-f507f19988e46241.js\",\n \"revision\": \"f507f19988e46241\"\n },\n {\n \"url\": \"/_next/static/chunks/6183-f507f19988e46241.js.map\",\n \"revision\": \"2793ef521e58d071726813ffc865511f\"\n },\n {\n \"url\": \"/_next/static/chunks/659-6599520b4e88c97d.js\",\n \"revision\": \"6599520b4e88c97d\"\n },\n {\n \"url\": \"/_next/static/chunks/659-6599520b4e88c97d.js.map\",\n \"revision\": \"1bb6e2a0709b3b97502f4a5ea632186d\"\n },\n {\n \"url\": \"/_next/static/chunks/6677-d0ada41b99fbdf6f.js\",\n \"revision\": \"d0ada41b99fbdf6f\"\n },\n {\n \"url\": \"/_next/static/chunks/6677-d0ada41b99fbdf6f.js.map\",\n \"revision\": \"1082a4a38bcd7c9db688dcfd0336eb0e\"\n },\n {\n \"url\": \"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js\",\n \"revision\": \"4f4c9cc9bfbaacb8\"\n },\n {\n \"url\": \"/_next/static/chunks/6698-4f4c9cc9bfbaacb8.js.map\",\n \"revision\": \"a6c5c41cde5f3368ca31c17aa4512326\"\n },\n {\n \"url\": \"/_next/static/chunks/678-7692cbe0fa348f10.js\",\n \"revision\": \"7692cbe0fa348f10\"\n },\n {\n \"url\": \"/_next/static/chunks/678-7692cbe0fa348f10.js.map\",\n \"revision\": \"9bb011077a878efda396eab7e26355c0\"\n },\n {\n \"url\": \"/_next/static/chunks/6782.998bc97f2cac4661.js\",\n \"revision\": \"998bc97f2cac4661\"\n },\n {\n \"url\": \"/_next/static/chunks/6782.998bc97f2cac4661.js.map\",\n \"revision\": \"bc43d2a492f1276152bcf74509af1ce6\"\n },\n {\n \"url\": \"/_next/static/chunks/6886-43c474d3a3be9ccb.js\",\n \"revision\": \"43c474d3a3be9ccb\"\n },\n {\n \"url\": \"/_next/static/chunks/6886-43c474d3a3be9ccb.js.map\",\n \"revision\": \"2ecf22de338fa5da280c413e543b009b\"\n },\n {\n \"url\": \"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js\",\n \"revision\": \"3ba305c9d969092f\"\n },\n {\n \"url\": \"/_next/static/chunks/69fc0a3a-3ba305c9d969092f.js.map\",\n \"revision\": \"b649699557acd02cc0112b32e8517bc8\"\n },\n {\n \"url\": \"/_next/static/chunks/7047-8ff6885c4286324f.js\",\n \"revision\": \"8ff6885c4286324f\"\n },\n {\n \"url\": \"/_next/static/chunks/7047-8ff6885c4286324f.js.map\",\n \"revision\": \"17275b4388937e3382285f1f02fcfc76\"\n },\n {\n \"url\": \"/_next/static/chunks/7449-ca696f52ef3e1ce2.js\",\n \"revision\": \"ca696f52ef3e1ce2\"\n },\n {\n \"url\": \"/_next/static/chunks/7449-ca696f52ef3e1ce2.js.map\",\n \"revision\": \"44dc9a12a6a793612365252043fe2e52\"\n },\n {\n \"url\": \"/_next/static/chunks/8228-aa1a031b87ea85ab.js\",\n \"revision\": \"aa1a031b87ea85ab\"\n },\n {\n \"url\": \"/_next/static/chunks/8228-aa1a031b87ea85ab.js.map\",\n \"revision\": \"361f6e51eadb3642a60658e6e194847b\"\n },\n {\n \"url\": \"/_next/static/chunks/8233-acb3497faa2c3ce6.js\",\n \"revision\": \"acb3497faa2c3ce6\"\n },\n {\n \"url\": \"/_next/static/chunks/8233-acb3497faa2c3ce6.js.map\",\n \"revision\": \"de9d80081776dc56ae52fb6c897ff638\"\n },\n {\n \"url\": \"/_next/static/chunks/8329.cd9bbb442cc3639a.js\",\n \"revision\": \"cd9bbb442cc3639a\"\n },\n {\n \"url\": \"/_next/static/chunks/8329.cd9bbb442cc3639a.js.map\",\n \"revision\": \"219194df7b3db0d3954fe768527cd16f\"\n },\n {\n \"url\": \"/_next/static/chunks/8364-8945f344eec70f0a.js\",\n \"revision\": \"8945f344eec70f0a\"\n },\n {\n \"url\": \"/_next/static/chunks/8364-8945f344eec70f0a.js.map\",\n \"revision\": \"3490d16c98f239a5458eb58f58112bcf\"\n },\n {\n \"url\": \"/_next/static/chunks/8446-4892663fdb75b8e1.js\",\n \"revision\": \"4892663fdb75b8e1\"\n },\n {\n \"url\": \"/_next/static/chunks/8446-4892663fdb75b8e1.js.map\",\n \"revision\": \"664560b0556cfb789fd1bd20fa97144a\"\n },\n {\n \"url\": \"/_next/static/chunks/8606-d8b87c9c7c625494.js\",\n \"revision\": \"d8b87c9c7c625494\"\n },\n {\n \"url\": \"/_next/static/chunks/8606-d8b87c9c7c625494.js.map\",\n \"revision\": \"bda2e28e372a0590b19e9f847096cc9c\"\n },\n {\n \"url\": \"/_next/static/chunks/9130-7b6fca6592947cda.js\",\n \"revision\": \"7b6fca6592947cda\"\n },\n {\n \"url\": \"/_next/static/chunks/9130-7b6fca6592947cda.js.map\",\n \"revision\": \"ed0d054a0046d7b1aba303e12183ab91\"\n },\n {\n \"url\": \"/_next/static/chunks/9266-190a469a227c4093.js\",\n \"revision\": \"190a469a227c4093\"\n },\n {\n \"url\": \"/_next/static/chunks/9266-190a469a227c4093.js.map\",\n \"revision\": \"3e55f3c1e71a8356ec34b7aaaffafe2e\"\n },\n {\n \"url\": \"/_next/static/chunks/942-bef0607ef1052ca8.js\",\n \"revision\": \"bef0607ef1052ca8\"\n },\n {\n \"url\": \"/_next/static/chunks/942-bef0607ef1052ca8.js.map\",\n \"revision\": \"291ec0e7f963e13be8fb882fc9261e9c\"\n },\n {\n \"url\": \"/_next/static/chunks/9604-5b0ae6bfc21d762e.js\",\n \"revision\": \"5b0ae6bfc21d762e\"\n },\n {\n \"url\": \"/_next/static/chunks/9604-5b0ae6bfc21d762e.js.map\",\n \"revision\": \"db6a10553ec40489ec731ce98c8f7537\"\n },\n {\n \"url\": \"/_next/static/chunks/9912-49517439276decf2.js\",\n \"revision\": \"49517439276decf2\"\n },\n {\n \"url\": \"/_next/static/chunks/9912-49517439276decf2.js.map\",\n \"revision\": \"5014b77e603fedf8178d7259980aa704\"\n },\n {\n \"url\": \"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js\",\n \"revision\": \"e2cba51f15a3f480\"\n },\n {\n \"url\": \"/_next/static/chunks/9f96d65d-e2cba51f15a3f480.js.map\",\n \"revision\": \"9c75b94497f1b36b05f625b47b3a6c8a\"\n },\n {\n \"url\": \"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js\",\n \"revision\": \"8cda0b3104d2c27b\"\n },\n {\n \"url\": \"/_next/static/chunks/ed150ef9.8cda0b3104d2c27b.js.map\",\n \"revision\": \"34dfefc984e90e074737205d8653ca66\"\n },\n {\n \"url\": \"/_next/static/chunks/framework-2645a99191cfc5e9.js\",\n \"revision\": \"2645a99191cfc5e9\"\n },\n {\n \"url\": \"/_next/static/chunks/framework-2645a99191cfc5e9.js.map\",\n \"revision\": \"6faa44d3d98d9d70c102a9ef855cc984\"\n },\n {\n \"url\": \"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js\",\n \"revision\": \"8cb3ef9b2f8bb78d\"\n },\n {\n \"url\": \"/_next/static/chunks/main-8cb3ef9b2f8bb78d.js.map\",\n \"revision\": \"9b09d22952231cd9dc660b6948a11b42\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/404-143cb8046985eb3d.js\",\n \"revision\": \"143cb8046985eb3d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/404-143cb8046985eb3d.js.map\",\n \"revision\": \"ab17ec86199914f0304c45252158b24f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js\",\n \"revision\": \"ee38b3e054b6e91d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/500-ee38b3e054b6e91d.js.map\",\n \"revision\": \"3b12567b76adb11815991913b9edc5c7\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_error-47c8d196fdda703f.js\",\n \"revision\": \"47c8d196fdda703f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/_error-47c8d196fdda703f.js.map\",\n \"revision\": \"5493fd4cf8917ebc60f784332cd86b05\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js\",\n \"revision\": \"6ad42391cb832421\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D-6ad42391cb832421.js.map\",\n \"revision\": \"9d9405f51da544ab5ffbe0c7be836290\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js\",\n \"revision\": \"e4d0dbd2961c193d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/deployments-e4d0dbd2961c193d.js.map\",\n \"revision\": \"a77b440b554aff4f7523cadef129ef49\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js\",\n \"revision\": \"3e90aaa0b2fc8484\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/addresses/%5Baddress%5D/transactions-3e90aaa0b2fc8484.js.map\",\n \"revision\": \"81da8aec99f7aa6fe8119a1f2118c44c\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/analytics-f8cabaad72c9f6a4.js\",\n \"revision\": \"f8cabaad72c9f6a4\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/analytics-f8cabaad72c9f6a4.js.map\",\n \"revision\": \"88ef4f87ad36afec866cea3a76e76adc\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks-48097254130d38fe.js\",\n \"revision\": \"48097254130d38fe\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks-48097254130d38fe.js.map\",\n \"revision\": \"135a220e0a13509cf5642494a6f87832\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js\",\n \"revision\": \"9a8046c0f7778613\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/blocks/%5Bheight%5D-9a8046c0f7778613.js.map\",\n \"revision\": \"9ea64156f07e33c85cab424e407d2fe3\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/contact-10c336b955a10cb1.js\",\n \"revision\": \"10c336b955a10cb1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/contact-10c336b955a10cb1.js.map\",\n \"revision\": \"9225d9d64bc2ffe7216f337240b2c260\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js\",\n \"revision\": \"673fa0fe065d52c2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployment/%5Bowner%5D/%5Bdseq%5D-673fa0fe065d52c2.js.map\",\n \"revision\": \"2f9c10d2a561b222f7429928ad419b2e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments-972a9990589dac4d.js\",\n \"revision\": \"972a9990589dac4d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments-972a9990589dac4d.js.map\",\n \"revision\": \"676ff945a913e75f7d51b6c3f691091c\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments/%5Bdseq%5D-b407c3af950ee887.js\",\n \"revision\": \"b407c3af950ee887\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/deployments/%5Bdseq%5D-b407c3af950ee887.js.map\",\n \"revision\": \"0a8a953fa81dc247fac5500f02306ec0\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js\",\n \"revision\": \"f0fddc92f9978ff2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started-f0fddc92f9978ff2.js.map\",\n \"revision\": \"7976c1ca5d291e2b46a45b88072fd094\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js\",\n \"revision\": \"1674f060816a4d38\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/get-started/wallet-1674f060816a4d38.js.map\",\n \"revision\": \"ab9fc6875e4b2b194fe4f67f001cd22e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-d7af548d57880c3b.js\",\n \"revision\": \"d7af548d57880c3b\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/graph/%5Bsnapshot%5D-d7af548d57880c3b.js.map\",\n \"revision\": \"33f970caf9712bd16ea9e0a3b0f818fa\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/index-5bf06dbd34b3102a.js\",\n \"revision\": \"5bf06dbd34b3102a\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/index-5bf06dbd34b3102a.js.map\",\n \"revision\": \"2395055374e3d90a272447066cad8a37\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js\",\n \"revision\": \"b9b8cb2f20e80567\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/maintenance-b9b8cb2f20e80567.js.map\",\n \"revision\": \"75d86d2c3e5780bab65d2e56828202e2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/new-deployment-9b38d14676bd5d2e.js\",\n \"revision\": \"9b38d14676bd5d2e\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/new-deployment-9b38d14676bd5d2e.js.map\",\n \"revision\": \"6a077cee995486e439e1802dacd846f2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js\",\n \"revision\": \"4ef9f9805153d053\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/price-compare-4ef9f9805153d053.js.map\",\n \"revision\": \"e144121981ab97f84d15671f42a9439b\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js\",\n \"revision\": \"e625752c54753d1f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/privacy-policy-e625752c54753d1f.js.map\",\n \"revision\": \"9719fb76717635311260a40cea17dff5\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js\",\n \"revision\": \"543af2a9ba1a1915\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/profile/%5Busername%5D-543af2a9ba1a1915.js.map\",\n \"revision\": \"dc027a45de09f0f2d0996ef38863c7e7\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-f006b705a238add7.js\",\n \"revision\": \"f006b705a238add7\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/provider-graph/%5Bsnapshot%5D-f006b705a238add7.js.map\",\n \"revision\": \"da0c488735a602453ecaee7b4e599665\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers-e075b7687019de0f.js\",\n \"revision\": \"e075b7687019de0f\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers-e075b7687019de0f.js.map\",\n \"revision\": \"78eda95eae906bab08982846fa286d88\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D-7ed97074381c2064.js\",\n \"revision\": \"7ed97074381c2064\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D-7ed97074381c2064.js.map\",\n \"revision\": \"ca2e2fa6a832d1e2a5b2b2ed81f999e7\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js\",\n \"revision\": \"f7d779a8ff6c1d80\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/edit-f7d779a8ff6c1d80.js.map\",\n \"revision\": \"e6d861f4bdcb2211b2390d0558de17de\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-9ded4537c4a55cc2.js\",\n \"revision\": \"9ded4537c4a55cc2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/leases-9ded4537c4a55cc2.js.map\",\n \"revision\": \"206c5376ac67fbef23362c9388324978\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-822ab86f995cf0af.js\",\n \"revision\": \"822ab86f995cf0af\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/providers/%5Bowner%5D/raw-822ab86f995cf0af.js.map\",\n \"revision\": \"becd33dcd84edd72158377c168a8f6ac\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/sdl-builder-d802467afd1242aa.js\",\n \"revision\": \"d802467afd1242aa\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/sdl-builder-d802467afd1242aa.js.map\",\n \"revision\": \"ee18f89ded9f107254a8d0880e6d83e3\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings-96f79e0b7b495835.js\",\n \"revision\": \"96f79e0b7b495835\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings-96f79e0b7b495835.js.map\",\n \"revision\": \"488141e8b0a5c9e29a4bba5220dfa63d\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings/authorizations-291e16c9e6c8f5fa.js\",\n \"revision\": \"291e16c9e6c8f5fa\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/settings/authorizations-291e16c9e6c8f5fa.js.map\",\n \"revision\": \"3cb7b94c891e8716ab6613c2abd89097\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js\",\n \"revision\": \"33d357c4b38aedf5\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/template/%5Bid%5D-33d357c4b38aedf5.js.map\",\n \"revision\": \"c43c961f9a648bbaf1ea13d871e9d13b\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates-3df4e596dcc9310a.js\",\n \"revision\": \"3df4e596dcc9310a\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates-3df4e596dcc9310a.js.map\",\n \"revision\": \"086cb3e72a8b1e9f6d84bf8a8b035bec\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates/%5BtemplateId%5D-1083ac35502cb7a5.js\",\n \"revision\": \"1083ac35502cb7a5\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/templates/%5BtemplateId%5D-1083ac35502cb7a5.js.map\",\n \"revision\": \"d346ae71bcd8c75850d8245e599ebf76\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js\",\n \"revision\": \"3cc59c714fc033f3\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/terms-of-service-3cc59c714fc033f3.js.map\",\n \"revision\": \"0353660dfa596f89a1cfd502c49756b1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js\",\n \"revision\": \"cd4428d78f5c9635\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions-cd4428d78f5c9635.js.map\",\n \"revision\": \"5c35919eedf54428d0a02449f477fc96\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js\",\n \"revision\": \"2f825a9b9c644205\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/transactions/%5Bhash%5D-2f825a9b9c644205.js.map\",\n \"revision\": \"55607c700d5a6918d4df7b1bb0a2d1e8\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js\",\n \"revision\": \"3aa5061833464ec1\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings-3aa5061833464ec1.js.map\",\n \"revision\": \"b18e2db627cc994ab1f43df9724a3e40\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js\",\n \"revision\": \"787620a1ccc48282\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/address-book-787620a1ccc48282.js.map\",\n \"revision\": \"546ea7ffbf6b9b5461facfc096d2cda4\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js\",\n \"revision\": \"6d9bbbb26aa9d9b4\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/user/settings/favorites-6d9bbbb26aa9d9b4.js.map\",\n \"revision\": \"7d4a54b6eef7f5606ef2394189cd03cf\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators-789933a6891c24de.js\",\n \"revision\": \"789933a6891c24de\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators-789933a6891c24de.js.map\",\n \"revision\": \"94c09f7fde164a1cc33862352bb702bd\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js\",\n \"revision\": \"df23a5f30792d1e2\"\n },\n {\n \"url\": \"/_next/static/chunks/pages/validators/%5Baddress%5D-df23a5f30792d1e2.js.map\",\n \"revision\": \"969a27632e159d6e3670cf8b86f067e6\"\n },\n {\n \"url\": \"/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js\",\n \"revision\": \"79330112775102f91e1010318bae2bd3\"\n },\n {\n \"url\": \"/_next/static/chunks/webpack-556f5fa962b50456.js\",\n \"revision\": \"556f5fa962b50456\"\n },\n {\n \"url\": \"/_next/static/chunks/webpack-556f5fa962b50456.js.map\",\n \"revision\": \"13851a8631fd2c00d6eaf8799e336e72\"\n },\n {\n \"url\": \"/_next/static/css/60da0364ed65e94f.css\",\n \"revision\": \"60da0364ed65e94f\"\n },\n {\n \"url\": \"/_next/static/css/60da0364ed65e94f.css.map\",\n \"revision\": \"cb19ae85aa968d5f6d3933a56327e540\"\n },\n {\n \"url\": \"/_next/static/css/6bfa921e6cb2b44b.css\",\n \"revision\": \"6bfa921e6cb2b44b\"\n },\n {\n \"url\": \"/_next/static/css/6bfa921e6cb2b44b.css.map\",\n \"revision\": \"d0734ef454db6824adde1381c60f7b65\"\n },\n {\n \"url\": \"/_next/static/css/92e074b97232c763.css\",\n \"revision\": \"92e074b97232c763\"\n },\n {\n \"url\": \"/_next/static/css/92e074b97232c763.css.map\",\n \"revision\": \"c88aeff2520ee169e777811f6afcda35\"\n },\n {\n \"url\": \"/android-chrome-192x192.png\",\n \"revision\": \"67aea0e4bc700134b81b51e635a95144\"\n },\n {\n \"url\": \"/android-chrome-256x256.png\",\n \"revision\": \"b0dc3017fadbf0f4c323636535f582b7\"\n },\n {\n \"url\": \"/apple-touch-icon.png\",\n \"revision\": \"97f107fd40c94f768de409ffb68e2e73\"\n },\n {\n \"url\": \"/browserconfig.xml\",\n \"revision\": \"e41ebb6b49206a59d8eafce8220ebeac\"\n },\n {\n \"url\": \"/cloudmos-cover.png\",\n \"revision\": \"14ba76ff06f2bf8186aef52eb53e4ccc\"\n },\n {\n \"url\": \"/favicon-16x16.png\",\n \"revision\": \"5b31d0a554060dec7c59e86af2c3b47d\"\n },\n {\n \"url\": \"/favicon-32x32.png\",\n \"revision\": \"794696d75ba46e490df7a68d1309cb20\"\n },\n {\n \"url\": \"/favicon.ico\",\n \"revision\": \"c6fc431554c8de94be347a8180e562aa\"\n },\n {\n \"url\": \"/images/akash-logo-dark.png\",\n \"revision\": \"b1623e407dad710a4c0c73461bbb8bb3\"\n },\n {\n \"url\": \"/images/akash-logo-flat-dark.png\",\n \"revision\": \"50b4ad6438e791047d97da0af65b96f5\"\n },\n {\n \"url\": \"/images/akash-logo-flat-light.png\",\n \"revision\": \"2befec2d17a2b6a32b1a0517ca1baf01\"\n },\n {\n \"url\": \"/images/akash-logo-light.png\",\n \"revision\": \"0ea30905c72eda674ad74c65d0c062bf\"\n },\n {\n \"url\": \"/images/akash-logo.svg\",\n \"revision\": \"4a5f3eaf31bf0f88ff3baec6281c8de3\"\n },\n {\n \"url\": \"/images/chains/akash.png\",\n \"revision\": \"d0b3f8ccaa3b0d18ef4039f86edf4436\"\n },\n {\n \"url\": \"/images/chains/atom.png\",\n \"revision\": \"6e4d88ad2c295e811fee29cc89edfcb1\"\n },\n {\n \"url\": \"/images/chains/evmos.png\",\n \"revision\": \"487a456e9091dec9ddf18892531401f8\"\n },\n {\n \"url\": \"/images/chains/huahua.png\",\n \"revision\": \"f0ba8427522833bba44962e87e982412\"\n },\n {\n \"url\": \"/images/chains/juno.png\",\n \"revision\": \"933b7d992dc67fd2f0d0f35e182b3361\"\n },\n {\n \"url\": \"/images/chains/kuji.png\",\n \"revision\": \"9c31e679007e5ae16fc28e067d907f79\"\n },\n {\n \"url\": \"/images/chains/osmo.png\",\n \"revision\": \"6940c69c28e5d85d99ba498fc7e95a26\"\n },\n {\n \"url\": \"/images/chains/scrt.png\",\n \"revision\": \"0dd98be17447cf7c47d27153f534ca60\"\n },\n {\n \"url\": \"/images/chains/stars.png\",\n \"revision\": \"56d0bd40e52f010c7267eb78c53138f2\"\n },\n {\n \"url\": \"/images/chains/strd.png\",\n \"revision\": \"eebdfb53ba0bc9bba88b0bede7a44f6d\"\n },\n {\n \"url\": \"/images/cloudmos-logo-light.png\",\n \"revision\": \"a7423327e4280225e176da92c6176c28\"\n },\n {\n \"url\": \"/images/cloudmos-logo-small.jpg\",\n \"revision\": \"4b339b83e7dc396894537b83d794726d\"\n },\n {\n \"url\": \"/images/cloudmos-logo.png\",\n \"revision\": \"56d87e0230a0ad5dd745efd486a33a58\"\n },\n {\n \"url\": \"/images/docker.png\",\n \"revision\": \"fde0ed6a2add0ffabfbc5a7749fdfff2\"\n },\n {\n \"url\": \"/images/keplr-logo.png\",\n \"revision\": \"50397e4902a33a6045c0f23dfe5cb1bd\"\n },\n {\n \"url\": \"/images/powered-by-akash-dark.svg\",\n \"revision\": \"3ea920f030ede7926a02c2dc17e332c4\"\n },\n {\n \"url\": \"/images/powered-by-akash.svg\",\n \"revision\": \"24b2566094fafded6c325246fe84c2a9\"\n },\n {\n \"url\": \"/images/ubuntu.png\",\n \"revision\": \"c631b8fae270a618c1fe1c9d43097189\"\n },\n {\n \"url\": \"/images/wallet-connect-logo.png\",\n \"revision\": \"8379e4d4e7267b47a0b5b89807a4d8f8\"\n },\n {\n \"url\": \"/manifest.json\",\n \"revision\": \"c2dfab0494ea8373287634bcf6da2233\"\n },\n {\n \"url\": \"/mstile-150x150.png\",\n \"revision\": \"4639e24da644e14af4e4daba3dd7af08\"\n },\n {\n \"url\": \"/robots.txt\",\n \"revision\": \"c2bb774b8071c957d2b835beaa28a58b\"\n },\n {\n \"url\": \"/safari-pinned-tab.svg\",\n \"revision\": \"a0fde4130c84e0d723dde3ece4a14fa8\"\n }\n], {\n \"ignoreURLParametersMatching\": []\n});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(\"/\", new workbox_strategies_NetworkFirst({ \"cacheName\":\"start-url\", plugins: [{ cacheWillUpdate: async ({ request, response, event, state }) => { if (response && response.type === 'opaqueredirect') { return new Response(response.body, { status: 200, statusText: 'OK', headers: response.headers }) } return response } }] }), 'GET');\nworkbox_routing_registerRoute(/^https:\\/\\/fonts\\.(?:gstatic)\\.com\\/.*/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"google-fonts-webfonts\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 31536000 })] }), 'GET');\nworkbox_routing_registerRoute(/^https:\\/\\/fonts\\.(?:googleapis)\\.com\\/.*/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"google-fonts-stylesheets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-font-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-image-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\/_next\\/image\\?url=.+$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"next-image\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:mp3|wav|ogg)$/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"static-audio-assets\", plugins: [new workbox_range_requests_RangeRequestsPlugin(), new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:mp4)$/i, new workbox_strategies_CacheFirst({ \"cacheName\":\"static-video-assets\", plugins: [new workbox_range_requests_RangeRequestsPlugin(), new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:js)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-js-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:css|less)$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"static-style-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\/_next\\/data\\/.+\\/.+\\.json$/i, new workbox_strategies_StaleWhileRevalidate({ \"cacheName\":\"next-data\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:json|xml|csv)$/i, new workbox_strategies_NetworkFirst({ \"cacheName\":\"static-data-assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n if (!isSameOrigin) return false\n const pathname = url.pathname\n // Exclude /api/auth/callback/* to fix OAuth workflow in Safari without impact other environment\n // Above route is default for next-auth, you may need to change it if your OAuth workflow has a different callback route\n // Issue: https://github.com/shadowwalker/next-pwa/issues/131#issuecomment-821894809\n if (pathname.startsWith('/api/auth/')) return false\n if (pathname.startsWith('/api/')) return true\n return false\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"apis\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 16, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n if (!isSameOrigin) return false\n const pathname = url.pathname\n if (pathname.startsWith('/api/')) return false\n return true\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"others\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })] }), 'GET');\nworkbox_routing_registerRoute(({ url }) => {\n const isSameOrigin = self.origin === url.origin\n return !isSameOrigin\n }, new workbox_strategies_NetworkFirst({ \"cacheName\":\"cross-origin\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 3600 })] }), 'GET');\n\n\n\n\n"],"names":["importScripts","self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","cacheName","plugins","cacheWillUpdate","async","request","response","event","state","type","Response","body","status","statusText","headers","workbox_strategies_CacheFirst","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_strategies_StaleWhileRevalidate","workbox_range_requests_RangeRequestsPlugin","origin","pathname","startsWith","networkTimeoutSeconds"],"mappings":"0nBAqBAA,gBAUAC,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oBAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oBAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oBAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oBAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oBAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,qFACPC,SAAY,oBAEd,CACED,IAAO,yFACPC,SAAY,oCAEd,CACED,IAAO,sFACPC,SAAY,oBAEd,CACED,IAAO,0FACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oBAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oBAEd,CACED,IAAO,yEACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oBAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,mFACPC,SAAY,oBAEd,CACED,IAAO,uFACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oBAEd,CACED,IAAO,4EACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oBAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,oBAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oBAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oBAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oBAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oBAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oBAEd,CACED,IAAO,4EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oBAEd,CACED,IAAO,mFACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oBAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,4EACPC,SAAY,oBAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,8EACPC,SAAY,oBAEd,CACED,IAAO,kFACPC,SAAY,oCAEd,CACED,IAAO,2EACPC,SAAY,oBAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oBAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,oBAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oBAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oBAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,4EACPC,SAAY,oBAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oBAEd,CACED,IAAO,sEACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oBAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oBAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,4EACPC,SAAY,oBAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oBAEd,CACED,IAAO,6EACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oBAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,oBAEd,CACED,IAAO,8EACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oBAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oBAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,iBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,qCAEb,CACDC,4BAA+B,KAEjCC,EAAAA,wBAIAC,EAAAA,cAA8B,IAAK,IAAIC,eAAgC,CAAEC,UAAY,YAAaC,QAAS,CAAC,CAAEC,gBAAiBC,OAASC,UAASC,WAAUC,QAAOC,WAAkBF,GAA8B,mBAAlBA,EAASG,KAAoC,IAAIC,SAASJ,EAASK,KAAM,CAAEC,OAAQ,IAAKC,WAAY,KAAMC,QAASR,EAASQ,UAAoBR,MAAkB,OAClWP,EAAAA,cAA8B,0CAA2C,IAAIgB,aAA8B,CAAEd,UAAY,wBAAyBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,EAAGC,cAAe,aAAiB,OACrPnB,EAAAA,cAA8B,6CAA8C,IAAIoB,uBAAwC,CAAElB,UAAY,2BAA4BC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,EAAGC,cAAe,YAAe,OACnQnB,EAAAA,cAA8B,8CAA+C,IAAIoB,uBAAwC,CAAElB,UAAY,qBAAsBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,EAAGC,cAAe,YAAe,OAC9PnB,EAAAA,cAA8B,wCAAyC,IAAIoB,uBAAwC,CAAElB,UAAY,sBAAuBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACzPnB,EAAAA,cAA8B,2BAA4B,IAAIoB,uBAAwC,CAAElB,UAAY,aAAcC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACnOnB,EAAAA,cAA8B,sBAAuB,IAAIgB,aAA8B,CAAEd,UAAY,sBAAuBC,QAAS,CAAC,IAAIkB,sBAA8C,IAAIJ,EAAAA,iBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC/QnB,EAAAA,cAA8B,cAAe,IAAIgB,aAA8B,CAAEd,UAAY,sBAAuBC,QAAS,CAAC,IAAIkB,sBAA8C,IAAIJ,EAAAA,iBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACvQnB,EAAAA,cAA8B,aAAc,IAAIoB,uBAAwC,CAAElB,UAAY,mBAAoBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC3NnB,EAAAA,cAA8B,mBAAoB,IAAIoB,uBAAwC,CAAElB,UAAY,sBAAuBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACpOnB,EAAAA,cAA8B,gCAAiC,IAAIoB,uBAAwC,CAAElB,UAAY,YAAaC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OACvOnB,EAAAA,cAA8B,uBAAwB,IAAIC,eAAgC,CAAEC,UAAY,qBAAsBC,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC/NnB,EAAAA,eAA8B,EAAGJ,UAE3B,KADqBJ,KAAK8B,SAAW1B,EAAI0B,QACtB,OAAO,EAC1B,MAAMC,EAAW3B,EAAI2B,SAIrB,OAAIA,EAASC,WAAW,iBACpBD,EAASC,WAAW,QACxB,GACC,IAAIvB,EAAAA,aAAgC,CAAEC,UAAY,OAAOuB,sBAAwB,GAAItB,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC7LnB,EAAAA,eAA8B,EAAGJ,UAE3B,KADqBJ,KAAK8B,SAAW1B,EAAI0B,QACtB,OAAO,EAE1B,OADiB1B,EAAI2B,SACRC,WAAW,QACxB,GACC,IAAIvB,EAAAA,aAAgC,CAAEC,UAAY,SAASuB,sBAAwB,GAAItB,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,WAAc,OAC/LnB,EAAAA,eAA8B,EAAGJ,WACNJ,KAAK8B,SAAW1B,EAAI0B,SAExC,IAAIrB,EAAAA,aAAgC,CAAEC,UAAY,eAAeuB,sBAAwB,GAAItB,QAAS,CAAC,IAAIc,mBAAoC,CAAEC,WAAY,GAAIC,cAAe,UAAa"} \ No newline at end of file diff --git a/deploy-web/src/components/deployment/LeaseChip.tsx b/deploy-web/src/components/deployment/LeaseChip.tsx index eb66a214f..6a38f598c 100644 --- a/deploy-web/src/components/deployment/LeaseChip.tsx +++ b/deploy-web/src/components/deployment/LeaseChip.tsx @@ -2,13 +2,19 @@ import { Chip } from "@mui/material"; import { useEffect, useState } from "react"; import { makeStyles } from "tss-react/mui"; import { StatusPill } from "../shared/StatusPill"; +import Link from "next/link"; +import { UrlService } from "@src/utils/urlUtils"; +import { LeaseDto } from "@src/types/deployment"; +import { MergedProvider } from "@src/types/provider"; const useStyles = makeStyles()(theme => ({ leaseChip: { height: "auto", marginLeft: ".5rem", fontSize: ".7rem", - padding: "1px" + padding: "1px", + cursor: "inherit", + textDecoration: "inherit" }, chipLabel: { dispaly: "flex", @@ -17,7 +23,12 @@ const useStyles = makeStyles()(theme => ({ } })); -export const LeaseChip = ({ lease, providers }) => { +type Props = { + lease: LeaseDto; + providers: MergedProvider[]; +}; + +export const LeaseChip: React.FunctionComponent = ({ lease, providers }) => { const { classes } = useStyles(); const [providerName, setProviderName] = useState(null); @@ -32,13 +43,20 @@ export const LeaseChip = ({ lease, providers }) => { }, [providers]); return ( - {providerName && {providerName}}} - icon={} - /> + { + event.stopPropagation(); + }} + > + {providerName && {providerName}}} + icon={} + /> + ); }; diff --git a/deploy-web/src/components/deploymentDetail/ManifestUpdate.tsx b/deploy-web/src/components/deploymentDetail/ManifestUpdate.tsx index 0509d9af1..7ccab385a 100644 --- a/deploy-web/src/components/deploymentDetail/ManifestUpdate.tsx +++ b/deploy-web/src/components/deploymentDetail/ManifestUpdate.tsx @@ -22,6 +22,13 @@ import { AnalyticsEvents } from "@src/utils/analytics"; import { useAkashProviders } from "@src/context/AkashProvider"; import { CustomTooltip } from "../shared/CustomTooltip"; import yaml from "js-yaml"; +import { DeploymentDto, LeaseDto } from "@src/types/deployment"; + +type Props = { + deployment: DeploymentDto; + leases: LeaseDto[]; + closeManifestEditor: () => void; +}; export const useStyles = makeStyles()(theme => ({ title: { @@ -29,7 +36,7 @@ export const useStyles = makeStyles()(theme => ({ } })); -export function ManifestUpdate({ deployment, leases, closeManifestEditor }) { +export const ManifestUpdate: React.FunctionComponent = ({ deployment, leases, closeManifestEditor }) => { const [parsingError, setParsingError] = useState(null); const [deploymentVersion, setDeploymentVersion] = useState(null); const [editedManifest, setEditedManifest] = useState(""); @@ -128,10 +135,10 @@ export function ManifestUpdate({ deployment, leases, closeManifestEditor }) { const dd = await deploymentData.NewDeploymentData(settings.apiEndpoint, doc, parseInt(deployment.dseq), address); // TODO Flags const mani = deploymentData.getManifest(doc, true); - + // const sdl = getSdl(doc as any, "beta3"); // console.log("Sorted Manifest", sdl.manifestSortedJSON()); - + // If it's actual update, send a transaction, else just send the manifest if (Buffer.from(dd.version).toString("base64") !== deployment.version) { const message = TransactionMessageData.getUpdateDeploymentMsg(dd); @@ -273,4 +280,4 @@ export function ManifestUpdate({ deployment, leases, closeManifestEditor }) { )} ); -} +}; diff --git a/deploy-web/src/components/newDeploymentWizard/BidRow.tsx b/deploy-web/src/components/newDeploymentWizard/BidRow.tsx index 19b165be2..f0a1511c3 100644 --- a/deploy-web/src/components/newDeploymentWizard/BidRow.tsx +++ b/deploy-web/src/components/newDeploymentWizard/BidRow.tsx @@ -18,6 +18,7 @@ import { useProviderStatus } from "@src/queries/useProvidersQuery"; import { cx } from "@emotion/css"; import { Uptime } from "../providers/Uptime"; import { udenomToDenom } from "@src/utils/mathHelpers"; +import { hasSomeParentTheClass } from "@src/utils/domUtils"; const useStyles = makeStyles()(theme => ({ root: { @@ -106,14 +107,18 @@ export const BidRow: React.FunctionComponent = ({ bid, selectedBid, handl updateFavoriteProviders(newFavorites); }; - const onRowClick = () => { - if (bid.state === "open" && !disabled && !isSendingManifest) { + const onRowClick = (event: React.MouseEvent) => { + if (bid.state === "open" && !disabled && !isSendingManifest && hasSomeParentTheClass(event.target as HTMLElement, "bid-list-row")) { handleBidSelected(bid); } }; return ( - + diff --git a/deploy-web/src/components/providers/AuditorButton.tsx b/deploy-web/src/components/providers/AuditorButton.tsx index 191c963a1..150c6fbeb 100644 --- a/deploy-web/src/components/providers/AuditorButton.tsx +++ b/deploy-web/src/components/providers/AuditorButton.tsx @@ -1,11 +1,11 @@ -import { useState } from "react"; +import { useState, MouseEvent } from "react"; import SecurityIcon from "@mui/icons-material/Security"; import { IconButton } from "@mui/material"; import { AuditorsModal } from "./AuditorsModal"; -import { MergedProvider, ProviderDetail } from "@src/types/provider"; +import { ClientProviderList, MergedProvider, ProviderDetail } from "@src/types/provider"; type Props = { - provider: MergedProvider | Partial; + provider: MergedProvider | Partial | ClientProviderList; }; export const AuditorButton: React.FunctionComponent = ({ provider }) => { @@ -18,9 +18,9 @@ export const AuditorButton: React.FunctionComponent = ({ provider }) => { setIsViewingAuditors(true); }; - const onClose = event => { - event.preventDefault(); - event.stopPropagation(); + const onClose = (event?: MouseEvent) => { + event?.preventDefault(); + event?.stopPropagation(); setIsViewingAuditors(false); }; @@ -31,7 +31,7 @@ export const AuditorButton: React.FunctionComponent = ({ provider }) => { - {isViewingAuditors && } + {isViewingAuditors && } ); }; diff --git a/deploy-web/src/components/providers/AuditorsModal.tsx b/deploy-web/src/components/providers/AuditorsModal.tsx index 4cda4f009..fb75f650d 100644 --- a/deploy-web/src/components/providers/AuditorsModal.tsx +++ b/deploy-web/src/components/providers/AuditorsModal.tsx @@ -1,23 +1,11 @@ -import { - Button, - Dialog, - DialogContent, - DialogActions, - DialogTitle, - Table, - TableContainer, - TableBody, - TableCell, - TableRow, - TableHead, - Tooltip, - Chip -} from "@mui/material"; +import { Table, TableContainer, TableBody, TableCell, TableRow, TableHead, Chip } from "@mui/material"; import { makeStyles } from "tss-react/mui"; -import { useAkashProviders } from "../../context/AkashProvider"; import { Address } from "../shared/Address"; import { CustomTooltip } from "../shared/CustomTooltip"; import { LinkTo } from "../shared/LinkTo"; +import { Popup } from "../shared/Popup"; +import { MouseEventHandler } from "react"; +import { useAuditors } from "@src/queries/useProvidersQuery"; const useStyles = makeStyles()(theme => ({ content: { @@ -26,11 +14,6 @@ const useStyles = makeStyles()(theme => ({ tableHead: { fontWeight: "bold" }, - tooltip: { - fontSize: "1rem", - padding: ".5rem", - textAlign: "center" - }, websiteLink: { fontSize: "1rem", marginBottom: ".5rem" @@ -40,9 +23,14 @@ const useStyles = makeStyles()(theme => ({ } })); -export const AuditorsModal = ({ provider, onClose }) => { +type Props = { + attributes: Array<{ key: string; value: string; auditedBy: Array }>; + onClose: MouseEventHandler; +}; + +export const AuditorsModal: React.FunctionComponent = ({ attributes, onClose }) => { const { classes } = useStyles(); - const { auditors } = useAkashProviders(); + const { data: auditors } = useAuditors(); const onWebsiteClick = (event, website) => { event.preventDefault(); @@ -52,63 +40,72 @@ export const AuditorsModal = ({ provider, onClose }) => { }; return ( - - Audited Attributes - - - - - - Key - Value - Auditors - - + + +
+ + + Key + Value + Auditors + + - - {provider.attributes.map(a => { - return ( - - - {a.key} - - {a.value} - - {a.auditedBy - .filter(x => auditors.some(y => y.address === x)) - .map(x => { - const auditor = auditors.find(y => y.address === x); - return ( -
- - onWebsiteClick(event, auditor.website)} className={classes.websiteLink}> - {auditor.website} - -
-
- } - > - - - - ); - })} -
-
- ); - })} -
-
-
-
- - - -
+ + {attributes.map(a => { + return ( + + + {a.key} + + {a.value} + + {a.auditedBy + .filter(x => auditors.some(y => y.address === x)) + .map(x => { + const auditor = auditors.find(y => y.address === x); + return ( +
+ + onWebsiteClick(event, auditor.website)} className={classes.websiteLink}> + {auditor.website} + +
+
+ } + > + + + + ); + })} +
+
+ ); + })} +
+ + + ); }; diff --git a/deploy-web/src/components/providers/CapacityIcon.tsx b/deploy-web/src/components/providers/CapacityIcon.tsx index 5be3a1cbe..9f537c579 100644 --- a/deploy-web/src/components/providers/CapacityIcon.tsx +++ b/deploy-web/src/components/providers/CapacityIcon.tsx @@ -11,17 +11,18 @@ import BatteryUnknownIcon from "@mui/icons-material/BatteryUnknown"; type Props = { /** Between 0 and 1 */ value: number; + fontSize?: "small" | "inherit" | "medium" | "large"; }; -export const CapacityIcon: React.FunctionComponent = ({ value }) => { - if (value === 0) return ; - else if (value < 0.16) return ; - else if (value < 0.32) return ; - else if (value < 0.48) return ; - else if (value < 0.64) return ; - else if (value < 80) return ; - else if (value < 1) return ; - else if (value === 1) return ; +export const CapacityIcon: React.FunctionComponent = ({ value, fontSize = "medium" }) => { + if (value === 0) return ; + else if (value < 0.16) return ; + else if (value < 0.32) return ; + else if (value < 0.48) return ; + else if (value < 0.64) return ; + else if (value < 80) return ; + else if (value < 1) return ; + else if (value === 1) return ; - return ; + return ; }; diff --git a/deploy-web/src/components/providers/ProviderList.tsx b/deploy-web/src/components/providers/ProviderList.tsx index 8c2012b88..f10e856ed 100644 --- a/deploy-web/src/components/providers/ProviderList.tsx +++ b/deploy-web/src/components/providers/ProviderList.tsx @@ -1,45 +1,46 @@ import { Table, TableBody, TableCell, TableContainer, TableRow, useTheme } from "@mui/material"; -import { MergedProvider } from "@src/types/provider"; +import { ClientProviderList } from "@src/types/provider"; import { CustomTableHeader } from "../shared/CustomTable"; import { ProviderListRow } from "./ProviderListRow"; type Props = { - providers: Array; + providers: Array; + sortOption: string; }; -export const ProviderList: React.FunctionComponent = ({ providers }) => { +export const ProviderList: React.FunctionComponent = ({ providers, sortOption }) => { + const isSortingLeases = + sortOption === "active-leases-desc" || sortOption === "active-leases-asc" || sortOption === "my-leases-desc" || sortOption === "my-active-leases-desc"; + return ( - Name + Name Location - + Uptime (7d) - + Active Leases - - My active leases - - + CPU - + GPU - + Memory - + Disk - + Audited - + Favorite diff --git a/deploy-web/src/components/providers/ProviderListRow.tsx b/deploy-web/src/components/providers/ProviderListRow.tsx index 8422aa36d..078ba1b27 100644 --- a/deploy-web/src/components/providers/ProviderListRow.tsx +++ b/deploy-web/src/components/providers/ProviderListRow.tsx @@ -1,6 +1,6 @@ import { makeStyles } from "tss-react/mui"; -import { Box, TableCell, Typography, useTheme } from "@mui/material"; -import { MergedProvider } from "@src/types/provider"; +import { Box, Chip, TableCell, Typography, useTheme } from "@mui/material"; +import { ClientProviderList } from "@src/types/provider"; import { CustomTableRow } from "../shared/CustomTable"; import { useLocalNotes } from "@src/context/LocalNoteProvider"; import { FavoriteButton } from "../shared/FavoriteButton"; @@ -12,8 +12,12 @@ import { CustomTooltip } from "../shared/CustomTooltip"; import { getSplitText } from "@src/hooks/useShortText"; import { useRouter } from "next/router"; import { UrlService } from "@src/utils/urlUtils"; -import { FormattedNumber } from "react-intl"; import { Uptime } from "./Uptime"; +import React from "react"; +import { hasSomeParentTheClass } from "@src/utils/domUtils"; +import { cx } from "@emotion/css"; +import CheckIcon from "@mui/icons-material/Check"; +import NotInterestedIcon from "@mui/icons-material/NotInterested"; const useStyles = makeStyles()(theme => ({ root: { @@ -25,11 +29,19 @@ const useStyles = makeStyles()(theme => ({ "&:hover": { backgroundColor: theme.palette.mode === "dark" ? theme.palette.grey[800] : theme.palette.grey[300] } + }, + gpuChip: { + height: "16px", + fontSize: ".6rem", + fontWeight: "bold" + }, + gpuChipLabel: { + padding: "0 4px" } })); type Props = { - provider: MergedProvider; + provider: ClientProviderList; }; export const ProviderListRow: React.FunctionComponent = ({ provider }) => { @@ -38,18 +50,19 @@ export const ProviderListRow: React.FunctionComponent = ({ provider }) => const router = useRouter(); const { favoriteProviders, updateFavoriteProviders } = useLocalNotes(); const isFavorite = favoriteProviders.some(x => provider.owner === x); - const activeCPU = provider.isActive ? provider.activeStats.cpu / 1000 : 0; - const pendingCPU = provider.isActive ? provider.pendingStats.cpu / 1000 : 0; - const totalCPU = provider.isActive ? (provider.availableStats.cpu + provider.pendingStats.cpu + provider.activeStats.cpu) / 1000 : 0; - const activeGPU = provider.isActive && provider.activeStats.gpu; - const pendingGPU = provider.isActive && provider.pendingStats.gpu; - const totalGPU = provider.isActive && provider.availableStats.gpu + provider.pendingStats.gpu + provider.activeStats.gpu; - const _activeMemory = provider.isActive ? bytesToShrink(provider.activeStats.memory + provider.pendingStats.memory) : null; - const _totalMemory = provider.isActive ? bytesToShrink(provider.availableStats.memory + provider.pendingStats.memory + provider.activeStats.memory) : null; - const _activeStorage = provider.isActive ? bytesToShrink(provider.activeStats.storage + provider.pendingStats.storage) : null; - const _totalStorage = provider.isActive + const activeCPU = provider.isOnline ? provider.activeStats.cpu / 1000 : 0; + const pendingCPU = provider.isOnline ? provider.pendingStats.cpu / 1000 : 0; + const totalCPU = provider.isOnline ? (provider.availableStats.cpu + provider.pendingStats.cpu + provider.activeStats.cpu) / 1000 : 0; + const activeGPU = provider.isOnline && provider.activeStats.gpu; + const pendingGPU = provider.isOnline && provider.pendingStats.gpu; + const totalGPU = provider.isOnline && provider.availableStats.gpu + provider.pendingStats.gpu + provider.activeStats.gpu; + const _activeMemory = provider.isOnline ? bytesToShrink(provider.activeStats.memory + provider.pendingStats.memory) : null; + const _totalMemory = provider.isOnline ? bytesToShrink(provider.availableStats.memory + provider.pendingStats.memory + provider.activeStats.memory) : null; + const _activeStorage = provider.isOnline ? bytesToShrink(provider.activeStats.storage + provider.pendingStats.storage) : null; + const _totalStorage = provider.isOnline ? bytesToShrink(provider.availableStats.storage + provider.pendingStats.storage + provider.activeStats.storage) : null; + const gpuModels = provider.hardwareGpuModels.map(gpu => gpu.substring(gpu.lastIndexOf(" ") + 1, gpu.length)); const onStarClick = event => { event.preventDefault(); @@ -60,17 +73,19 @@ export const ProviderListRow: React.FunctionComponent = ({ provider }) => updateFavoriteProviders(newFavorites); }; - const onRowClick = () => { - router.push(UrlService.providerDetail(provider.owner)); + const onRowClick = (event: React.MouseEvent) => { + if (hasSomeParentTheClass(event.target as HTMLElement, "provider-list-row")) { + router.push(UrlService.providerDetail(provider.owner)); + } }; return ( - - {provider.isActive ? ( + + {provider.isOnline ? ( - {provider.name?.length > 25 ? ( + {provider.name?.length > 20 ? ( -
{getSplitText(provider.name, 10, 10)}
+
{getSplitText(provider.name, 4, 13)}
) : ( provider.name @@ -78,12 +93,12 @@ export const ProviderListRow: React.FunctionComponent = ({ provider }) =>
) : ( - {provider.host_uri?.length > 25 ? ( - -
{getSplitText(provider.host_uri, 10, 10)}
+ {provider.hostUri?.length > 20 ? ( + +
{getSplitText(provider.hostUri, 4, 13)}
) : ( - provider.host_uri + provider.hostUri )}
)} @@ -102,129 +117,140 @@ export const ProviderListRow: React.FunctionComponent = ({ provider }) => )} - {provider.isActive && } - {provider.leaseCount} - 0 ? theme.palette.secondary.main : "", fontWeight: provider.userActiveLeases > 0 ? "bold" : "" }} - > - {provider.userActiveLeases} - - - {provider.isActive && ( - - {Math.round(activeCPU + pendingCPU)} / {Math.round(totalCPU)} CPU - - } - > - - - - + {provider.isOnline && } + + 1 ? "s" : ""} with this provider.`}> + + {provider.leaseCount} + {provider.userActiveLeases > 0 && ( + 0 ? theme.palette.secondary.main : "", fontWeight: provider.userActiveLeases > 0 ? "bold" : "" }} + > +  ({provider.userActiveLeases}) - - + )} + + + + + {provider.isOnline && ( + + + + {Math.round(activeCPU + pendingCPU)}/{Math.round(totalCPU)} + + )} - - {provider.isActive && ( - - {Math.round(activeGPU + pendingGPU)} / {Math.round(totalGPU)} GPU - - } - > - - + + {provider.isOnline && ( + + + - + {Math.round(activeGPU + pendingGPU)}/{Math.round(totalGPU)} - - )} - + + {gpuModels.slice(0, 2).map((gpu, i) => ( + + ))} - - {provider.isActive && ( - - {`${roundDecimal(_activeMemory.value, 2)} ${_activeMemory.unit}`} / {`${roundDecimal(_totalMemory.value, 2)} ${_totalMemory.unit}`} - - } - > - - - - 2 && ( + + {gpuModels.map((gpu, i) => ( + + ))} + } - /> - + > + + + )} - + )} - - {provider.isActive && ( - - {`${roundDecimal(_activeStorage.value, 2)} ${_activeStorage.unit}`} /  - {`${roundDecimal(_totalStorage.value, 2)} ${_activeStorage.unit}`} - - } - > - - - - - - - + + + {provider.isOnline && ( + + + + + / + + + )} - - {provider.isAudited ? ( - - Yes - + + {provider.isOnline && ( + + + + + / + + - ) : ( - No )} + + + {provider.isAudited ? ( + <> + + + + ) : ( + <> + + + No + + + )} + + @@ -232,3 +258,16 @@ export const ProviderListRow: React.FunctionComponent = ({ provider }) =>
); }; + +const Unit: React.FunctionComponent<{ value: number; unit: string }> = ({ value, unit }) => { + return ( + + {value} + {value > 0 && ( + + {unit} + + )} + + ); +}; diff --git a/deploy-web/src/components/providers/ProviderMap.tsx b/deploy-web/src/components/providers/ProviderMap.tsx index 05da302c5..d71107b1d 100644 --- a/deploy-web/src/components/providers/ProviderMap.tsx +++ b/deploy-web/src/components/providers/ProviderMap.tsx @@ -1,5 +1,5 @@ import { makeStyles } from "tss-react/mui"; -import { MergedProvider } from "@src/types/provider"; +import { ApiProviderList, MergedProvider } from "@src/types/provider"; import { ComposableMap, Geographies, Geography, Marker, Point, Sphere, ZoomableGroup } from "react-simple-maps"; import { useMemo, useState } from "react"; import { Box, Button, IconButton, useTheme } from "@mui/material"; @@ -19,7 +19,7 @@ const useStyles = makeStyles()(theme => ({ type Props = { initialZoom?: number; initialCoordinates?: Point; - providers: Array; + providers: any; // TODO: Change when refactoring providers }; const minZoom = 1; @@ -29,7 +29,7 @@ export const ProviderMap: React.FunctionComponent = ({ providers, initial const { classes } = useStyles(); const [dotSize, setDotSize] = useState({ r: 5, w: 1 }); const theme = useTheme(); - const activeProviders = providers.filter(x => x.isActive); + const activeProviders = providers.filter(x => x.isActive || x.isOnline); const bgColor = theme.palette.mode === "dark" ? theme.palette.grey[800] : theme.palette.grey[400]; const [position, setPosition] = useState({ coordinates: initialCoordinates, zoom: initialZoom }); const isInitialPosition = diff --git a/deploy-web/src/components/shared/Markdown.tsx b/deploy-web/src/components/shared/Markdown.tsx index aada3301f..d1b736481 100644 --- a/deploy-web/src/components/shared/Markdown.tsx +++ b/deploy-web/src/components/shared/Markdown.tsx @@ -24,7 +24,6 @@ const useStyles = makeStyles()(theme => ({ pre: { // Your code-block styles here overflow: "auto", - backgroundColor: theme.palette.mode === "dark" ? lighten(theme.palette.primary.main, 0.1) : lighten(theme.palette.primary.main, 0.8), borderRadius: ".2rem", padding: ".5rem" }, @@ -53,7 +52,7 @@ const Markdown: React.FunctionComponent = ({ children }) => { className={cx(classes.root, theme.palette.mode === "dark" ? "markdownContainer-dark" : "markdownContainer")} linkTarget="_blank" remarkPlugins={[remarkGfm]} - rehypePlugins={[rehypeHighlight]} + rehypePlugins={[[rehypeHighlight, { ignoreMissing: true }]]} > {children as string} diff --git a/deploy-web/src/components/shared/Popup.tsx b/deploy-web/src/components/shared/Popup.tsx index 36a6098c4..dbae2fcff 100644 --- a/deploy-web/src/components/shared/Popup.tsx +++ b/deploy-web/src/components/shared/Popup.tsx @@ -120,7 +120,7 @@ export type PopupProps = (MessageProps | ConfirmProps | PromptProps | CustomProm export interface DialogTitleProps { children: React.ReactNode; - onClose?: () => void; + onClose?: (event: React.MouseEvent | React.TouchEvent) => void; } export const DialogTitle = (props: DialogTitleProps) => { @@ -167,7 +167,7 @@ export const Popup: React.FC = props => { if (props.title) { component.push( - onClose(null, "action")}> + onClose(event, "action")}> {props.title} ); diff --git a/deploy-web/src/context/AkashProvider/AkashProviderContext.tsx b/deploy-web/src/context/AkashProvider/AkashProviderContext.tsx index 631086a0c..1d1ea9361 100644 --- a/deploy-web/src/context/AkashProvider/AkashProviderContext.tsx +++ b/deploy-web/src/context/AkashProvider/AkashProviderContext.tsx @@ -4,12 +4,12 @@ import { useDataNodeProviders as useDataNodeProvidersQuery, useProviders as useProvidersQuery } from "@src/queries/useProvidersQuery"; -import { MergedProvider } from "@src/types/provider"; +import { Auditor, MergedProvider } from "@src/types/provider"; import { useSettings } from "../SettingsProvider"; type ContextType = { isLoadingAuditors: boolean; - auditors: Array<{ id: string; name: string; address: string; website: string }>; + auditors: Array; providers: Array; isLoadingProviders: boolean; getProviders: () => void; diff --git a/deploy-web/src/pages/providers/[owner]/raw.tsx b/deploy-web/src/pages/providers/[owner]/raw.tsx index 58a7ada00..2d831aba2 100644 --- a/deploy-web/src/pages/providers/[owner]/raw.tsx +++ b/deploy-web/src/pages/providers/[owner]/raw.tsx @@ -1,7 +1,5 @@ import { useState, useEffect } from "react"; import { useAkashProviders } from "../../../context/AkashProvider"; -import { makeStyles } from "tss-react/mui"; -import { useRouter } from "next/router"; import { useAllLeases } from "@src/queries/useLeaseQuery"; import Layout from "@src/components/layout/Layout"; import { useKeplr } from "@src/context/KeplrWalletProvider"; @@ -16,21 +14,15 @@ type Props = { owner: string; }; -const useStyles = makeStyles()(theme => ({})); - const ProviderRawPage: React.FunctionComponent = ({ owner }) => { - const { classes } = useStyles(); const [provider, setProvider] = useState>(null); - const [filteredLeases, setFilteredLeases] = useState(null); - const router = useRouter(); const { providers, getProviders, isLoadingProviders } = useAkashProviders(); const { address } = useKeplr(); const { data: leases, isFetching: isLoadingLeases, refetch: getLeases } = useAllLeases(address, { enabled: false }); const { data: providerStatus, isLoading: isLoadingStatus, - refetch: getProviderStatus, - isError + refetch: getProviderStatus } = useProviderStatus(provider?.host_uri, { enabled: false, retry: false, diff --git a/deploy-web/src/pages/providers/index.tsx b/deploy-web/src/pages/providers/index.tsx index 8ea4da547..25a5acb69 100644 --- a/deploy-web/src/pages/providers/index.tsx +++ b/deploy-web/src/pages/providers/index.tsx @@ -13,18 +13,18 @@ import { InputLabel, Pagination, CircularProgress, - Button + Button, + useTheme } from "@mui/material"; import RefreshIcon from "@mui/icons-material/Refresh"; import CloseIcon from "@mui/icons-material/Close"; import { makeStyles } from "tss-react/mui"; import { useSettings } from "@src/context/SettingsProvider"; import { useLocalNotes } from "@src/context/LocalNoteProvider"; -import { useAkashProviders } from "@src/context/AkashProvider"; import { useAllLeases } from "@src/queries/useLeaseQuery"; import { useKeplr } from "@src/context/KeplrWalletProvider"; import Layout from "@src/components/layout/Layout"; -import { useNetworkCapacity } from "@src/queries/useProvidersQuery"; +import { useNetworkCapacity, useProviderList } from "@src/queries/useProvidersQuery"; import PageContainer from "@src/components/shared/PageContainer"; import { ProviderMap } from "@src/components/providers/ProviderMap"; import { ProviderList } from "@src/components/providers/ProviderList"; @@ -33,6 +33,8 @@ import LaunchIcon from "@mui/icons-material/Launch"; import { CustomNextSeo } from "@src/components/shared/CustomNextSeo"; import { UrlService } from "@src/utils/urlUtils"; import { useSelectedNetwork } from "@src/hooks/useSelectedNetwork"; +import { ClientProviderList } from "@src/types/provider"; +import { useRouter } from "next/router"; const NetworkCapacity = dynamic(() => import("../../components/providers/NetworkCapacity"), { ssr: false @@ -60,10 +62,11 @@ const useStyles = makeStyles()(theme => ({ })); const sortOptions = [ - { id: 1, title: "Active Leases (desc)" }, - { id: 2, title: "Active Leases (asc)" }, - { id: 3, title: "Your Leases (desc)" }, - { id: 4, title: "Your Active Leases (desc)" } + { id: "active-leases-desc", title: "Active Leases (desc)" }, + { id: "active-leases-asc", title: "Active Leases (asc)" }, + { id: "my-leases-desc", title: "Your Leases (desc)" }, + { id: "my-active-leases-desc", title: "Your Active Leases (desc)" }, + { id: "gpu-available-desc", title: "GPUs Available (desc)" } ]; const ProvidersPage: React.FunctionComponent = ({}) => { @@ -73,14 +76,14 @@ const ProvidersPage: React.FunctionComponent = ({}) => { const [isFilteringActive, setIsFilteringActive] = useState(true); const [isFilteringFavorites, setIsFilteringFavorites] = useState(false); const [isFilteringAudited, setIsFilteringAudited] = useState(false); - const [filteredProviders, setFilteredProviders] = useState([]); + const [filteredProviders, setFilteredProviders] = useState>([]); const [rowsPerPage, setRowsPerPage] = useState(10); - const [sort, setSort] = useState(1); + const [sort, setSort] = useState("active-leases-desc"); const [search, setSearch] = useState(""); const { settings } = useSettings(); const { favoriteProviders } = useLocalNotes(); const { apiEndpoint } = settings; - const { providers, isLoadingProviders, getProviders } = useAkashProviders(); + const { data: providers, isFetching: isLoadingProviders, refetch: getProviders } = useProviderList(); const { data: leases, isFetching: isLoadingLeases, refetch: getLeases } = useAllLeases(address, { enabled: false }); const { data: networkCapacity, isFetching: isLoadingNetworkCapacity } = useNetworkCapacity(); const start = (page - 1) * rowsPerPage; @@ -88,6 +91,8 @@ const ProvidersPage: React.FunctionComponent = ({}) => { const currentPageProviders = filteredProviders.slice(start, end); const pageCount = Math.ceil(filteredProviders.length / rowsPerPage); const selectedNetwork = useSelectedNetwork(); + const router = useRouter(); + const theme = useTheme(); useEffect(() => { getLeases(); @@ -95,6 +100,15 @@ const ProvidersPage: React.FunctionComponent = ({}) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [apiEndpoint]); + useEffect(() => { + const querySort = router.query.sort as string; + + if (querySort && sortOptions.some(x => x.id === querySort)) { + setSort(querySort); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [router.query]); + useEffect(() => { if (providers) { let filteredProviders = [...providers].map(p => { @@ -114,7 +128,7 @@ const ProvidersPage: React.FunctionComponent = ({}) => { } if (isFilteringActive) { - filteredProviders = filteredProviders.filter(x => x.isActive); + filteredProviders = filteredProviders.filter(x => x.isOnline); } if (isFilteringFavorites) { @@ -126,14 +140,18 @@ const ProvidersPage: React.FunctionComponent = ({}) => { } filteredProviders = filteredProviders.sort((a, b) => { - if (sort === 1) { + if (sort === "active-leases-desc") { return b.leaseCount - a.leaseCount; - } else if (sort === 2) { + } else if (sort === "active-leases-asc") { return a.leaseCount - b.leaseCount; - } else if (sort === 3) { + } else if (sort === "my-leases-desc") { return b.userLeases - a.userLeases; - } else if (sort === 4) { + } else if (sort === "my-active-leases-desc") { return b.userActiveLeases - a.userActiveLeases; + } else if (sort === "gpu-available-desc") { + const totalGpuB = b.availableStats.gpu + b.pendingStats.gpu + b.activeStats.gpu; + const totalGpuA = a.availableStats.gpu + a.pendingStats.gpu + a.activeStats.gpu; + return totalGpuB - totalGpuA; } else { return 1; } @@ -174,7 +192,7 @@ const ProvidersPage: React.FunctionComponent = ({}) => { const handleSortChange = event => { const value = event.target.value; - setSort(value); + router.replace(UrlService.providers(value)); }; const handleRowsPerPageChange = event => { @@ -198,17 +216,20 @@ const ProvidersPage: React.FunctionComponent = ({}) => { {providers && providers.length > 0 && ( - {providers.filter(x => x.isActive).length} active providers on {selectedNetwork.title} + + {providers.filter(x => x.isOnline).length} + {" "} + active providers on {selectedNetwork.title} )} - {isLoadingProviders && ( + {!providers && isLoadingProviders && ( )} - {providers && !isLoadingProviders && ( + {providers && ( @@ -237,7 +258,7 @@ const ProvidersPage: React.FunctionComponent = ({}) => { <>