Skip to content

Merge pull request #1265 from ssvlabs/pre-stage #5552

Merge pull request #1265 from ssvlabs/pre-stage

Merge pull request #1265 from ssvlabs/pre-stage #5552

Workflow file for this run

name: Build & deploy
on:
push:
branches:
- "**"
pull_request:
branches:
- "**"
workflow_dispatch:
jobs:
lint:
permissions:
contents: write
issues: write
pull-requests: write
runs-on: ubuntu-latest
env:
STAGE_SSV_NETWORKS: >
[
{
\"networkId\": 17000,
\"apiVersion\": \"v4\",
\"apiNetwork\": \"holesky\",
\"api\": \"https://api.stage.ops.ssvlabsinternal.com/api\",
\"explorerUrl\": \"https://holesky-explorer.stage.ssv.network\",
\"insufficientBalanceUrl\": \"https://faucet.stage.ssv.network\",
\"googleTagSecret\": \"${{ secrets.STAGE_GOOGLE_TAG_SECRET }}\",
\"tokenAddress\": \"0x68A8DDD7a59A900E0657e9f8bbE02B70c947f25F\",
\"setterContractAddress\": \"${{ secrets.STAGE_HOLESKY_NETWORK_SETTER_CONTRACT_ADDRESS_V4 }}\",
\"getterContractAddress\": \"${{ secrets.STAGE_HOLESKY_NETWORK_GETTER_CONTRACT_ADDRESS_V4 }}\"
}
]
PROD_SSV_NETWORKS: >
[
{
\"networkId\": 1,
\"apiVersion\": \"v4\",
\"apiNetwork\": \"mainnet\",
\"api\": \"https://api.ssv.network/api\",
\"explorerUrl\": \"https://explorer.ssv.network\",
\"insufficientBalanceUrl\": \"https://coinmarketcap.com/currencies/ssv-network/#Markets\",
\"googleTagSecret\": \"${{ secrets.PROD_GOOGLE_TAG_SECRET }}\",
\"distributionContract\": \"${{ secrets.PROD_DISTRIBUTION_CONTRACT_ADDRESS_MAINNET }}\",
\"tokenAddress\": \"0x9D65fF81a3c488d585bBfb0Bfe3c7707c7917f54\",
\"setterContractAddress\": \"${{ secrets.PROD_NETWORK_SETTER_CONTRACT_ADDRESS_V4_MAINNET }}\",
\"getterContractAddress\": \"${{ secrets.PROD_NETWORK_GETTER_CONTRACT_ADDRESS_V4_MAINNET }}\"
},
{
\"networkId\": 17000,
\"apiVersion\": \"v4\",
\"apiNetwork\": \"holesky\",
\"api\": \"https://api.ssv.network/api\",
\"explorerUrl\": \"https://holesky.explorer.ssv.network\",
\"insufficientBalanceUrl\": \"https://faucet.ssv.network\",
\"googleTagSecret\": \"${{ secrets.PROD_GOOGLE_TAG_SECRET }}\",
\"tokenAddress\": \"0xad45A78180961079BFaeEe349704F411dfF947C6\",
\"setterContractAddress\": \"${{ secrets.PROD_HOLESKY_NETWORK_SETTER_CONTRACT_ADDRESS_V4 }}\",
\"getterContractAddress\": \"${{ secrets.PROD_HOLESKY_NETWORK_GETTER_CONTRACT_ADDRESS_V4 }}\"
}
]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 20.12.2
- uses: pnpm/action-setup@v2
with:
version: 9.0.6
- uses: actions/cache@v3
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run lint
run: pnpm lint
- name: Run semantic-release
if: github.event_name == 'push' && (github.ref == 'refs/heads/stage' || github.ref == 'refs/heads/pre-stage' || github.ref == 'refs/heads/prod-test' || github.ref == 'refs/heads/main')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
# <app.stage.ssv.network>
- name: Run stage webapp build
if: github.ref == 'refs/heads/stage'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy stage webapp
if: github.ref == 'refs/heads/stage'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.STAGE_AWS_S3_BUCKET_V4 }}
AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </app.stage.ssv.network>
# <app-pre.stage.ssv.network> pre-stage
- name: Run stage webapp build
if: github.ref == 'refs/heads/pre-stage'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy stage webapp
if: github.ref == 'refs/heads/pre-stage'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.STAGE_AWS_S3_BUCKET_PRE_STAGE }}
AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </app-pre.stage.ssv.network>
# <ilya-app.stage.ssv.network>
- name: Run ilya-dev webapp build
if: github.ref == 'refs/heads/ilya-dev'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy ilya-dev webapp
if: github.ref == 'refs/heads/ilya-dev'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.STAGE_AWS_S3_BUCKET_ILYA }}
AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </ilya-app.stage.ssv.network>
# <chris-app.stage.ssv.network>
- name: Run chris-dev webapp build
if: github.ref == 'refs/heads/chris-dev'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy chris-dev webapp
if: github.ref == 'refs/heads/chris-dev'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.STAGE_AWS_S3_BUCKET_CHRIS }}
AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </chris-app.stage.ssv.network>
# <dima-app.stage.ssv.network>
- name: Run dima-dev webapp build
if: github.ref == 'refs/heads/dima-dev'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy dima-dev webapp
if: github.ref == 'refs/heads/dima-dev'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.STAGE_AWS_S3_BUCKET_DIMA }}
AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </dima-app.stage.ssv.network>
# <sumbat-app.stage.ssv.network>
- name: Run sumbat-dev webapp build
if: github.ref == 'refs/heads/sumbat-dev'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.PROD_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy sumbat-dev webapp
if: github.ref == 'refs/heads/sumbat-dev'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.STAGE_AWS_S3_BUCKET_SUMBAT }}
AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </sumbat-app.stage.ssv.network>
# <beta.app.ssv.network>
- name: Run prod-test webapp build
if: github.ref == 'refs/heads/prod-test'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.PROD_SSV_NETWORKS }}"
MIXPANEL_TOKEN_STAGE="${{ secrets.MIXPANEL_TOKEN_STAGE }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_STAGE }}
- name: Deploy prod-test webapp
if: github.ref == 'refs/heads/prod-test'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.PROD_AWS_S3_BUCKET_TEST }}
AWS_ACCESS_KEY_ID: ${{ secrets.PROD_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }}
# </beta.app.ssv.network>
# <beta.app.ssv.network>
- name: Run prod webapp build
if: github.ref == 'refs/heads/main'
run: >
GAS_PRICE="${{ env.GAS_PRICE }}"
GAS_LIMIT="${{ env.GAS_LIMIT }}"
SSV_NETWORKS="${{ env.PROD_SSV_NETWORKS }}"
MIXPANEL_TOKEN_PROD="${{ secrets.MIXPANEL_TOKEN_PROD }}"
BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
LINK_SSV_DEV_DOCS="$LINK_SSV_DEV_DOCS"
SENTRY_AUTH_TOKEN="${{ secrets.SENTRY_AUTH_TOKEN }}"
pnpm build
env:
GAS_PRICE: ${{ secrets.GAS_PRICE }}
GAS_LIMIT: ${{ secrets.GAS_LIMIT }}
BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN_PROD }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
- name: Deploy prod webapp
if: github.ref == 'refs/heads/main'
uses: jakejarvis/[email protected]
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "build/"
AWS_REGION: "us-west-2"
AWS_S3_BUCKET: ${{ secrets.PROD_AWS_S3_BUCKET_V4 }}
AWS_ACCESS_KEY_ID: ${{ secrets.PROD_AWS_SECRET_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }}
# </beta.app.ssv.network>
# <faucet.stage.ssv.network>
# - name: Run stage faucet build
# if: github.ref == 'refs/heads/stage'
# run: >
# SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
# GOOGLE_TAG_SECRET="$GOOGLE_TAG_SECRET"
# EXPLORER_URL="$EXPLORER_URL" BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY" pnpm build
# env:
# VITE_FAUCET_PAGE: "true"
# SSV_NETWORKS: ${{ env.STAGE_SSV_NETWORKS }}
# BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
# EXPLORER_URL: "https://explorer.ssv.network/"
# LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
# VITE_CAPTCHA_KEY: ${{ secrets.CAPTCHA_KEY_STAGE }}
# - name: Deploy stage faucet
# if: github.ref == 'refs/heads/stage'
# uses: jakejarvis/[email protected]
# with:
# args: --acl public-read --follow-symlinks --delete
# env:
# SOURCE_DIR: 'build/'
# AWS_REGION: 'us-west-2'
# AWS_S3_BUCKET: ${{ secrets.STAGE_FAUCET_AWS_S3_BUCKET }}
# AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </faucet.stage.ssv.network>
# <claim.stage.ssv.network>
# - name: Run stage build claim
# if: github.ref == 'refs/heads/stage'
# run: >
# SSV_NETWORKS="${{ env.STAGE_SSV_NETWORKS }}"
# BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY" PROD_CLAIM_PAGE="$PROD_CLAIM_PAGE" pnpm build
# env:
# PROD_CLAIM_PAGE: "true"
# BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
# LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
# SSV_NETWORKS: ${{ env.STAGE_SSV_NETWORKS }}
#
# - name: Deploy stage claim
# if: github.ref == 'refs/heads/stage'
# uses: jakejarvis/[email protected]
# with:
# args: --acl public-read --follow-symlinks --delete
# env:
# SOURCE_DIR: 'build/'
# AWS_REGION: 'us-west-2'
# AWS_S3_BUCKET: ${{ secrets.STAGE_V2_AWS_S3_BUCKET_CLAIM }}
# AWS_ACCESS_KEY_ID: ${{ secrets.STAGE_AWS_SECRET_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGE_AWS_SECRET_ACCESS_KEY }}
# </claim.stage.ssv.network>
# <faucet.ssv.network>
# - name: Run prod faucet build
# if: github.ref == 'refs/heads/main'
# run: >
# SSV_NETWORKS="${{ env.PROD_SSV_NETWORKS }}"
# GOOGLE_TAG_SECRET="$GOOGLE_TAG_SECRET"
# EXPLORER_URL="$EXPLORER_URL"
# BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY"
# MIXPANEL_TOKEN_PROD="${{ secrets.MIXPANEL_TOKEN_PROD }}"
# pnpm build
# env:
# VITE_FAUCET_PAGE: "true"
# SSV_NETWORKS: ${{ env.PROD_SSV_NETWORKS }}
# BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
# EXPLORER_URL: "https://explorer.ssv.network/"
# LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
# VITE_CAPTCHA_KEY: ${{ secrets.CAPTCHA_KEY_STAGE }}
# MIXPANEL_TOKEN_PROD: ${{ secrets.MIXPANEL_TOKEN_PROD }}
# - name: Deploy prod faucet
# if: github.ref == 'refs/heads/main'
# uses: jakejarvis/[email protected]
# with:
# args: --acl public-read --follow-symlinks --delete
# env:
# SOURCE_DIR: 'build/'
# AWS_REGION: 'us-west-2'
# AWS_S3_BUCKET: ${{ secrets.PROD_FAUCET_AWS_S3_BUCKET }}
# AWS_ACCESS_KEY_ID: ${{ secrets.PROD_AWS_SECRET_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }}
# </faucet.ssv.network>
# <claim.ssv.network>
# - name: Run prod build claim
# if: github.ref == 'refs/heads/main'
# run: >
# SSV_NETWORKS="${{ env.PROD_SSV_NETWORKS }}"
# BLOCKNATIVE_KEY="$BLOCKNATIVE_KEY" PROD_CLAIM_PAGE="$PROD_CLAIM_PAGE" pnpm build
# env:
# PROD_CLAIM_PAGE: "true"
# BLOCKNATIVE_KEY: ${{ secrets.BLOCKNATIVE_KEY }}
# LINK_SSV_DEV_DOCS: ${{ secrets.LINK_SSV_DEV_DOCS }}
# SSV_NETWORKS: ${{ env.PROD_SSV_NETWORKS }}
#
# - name: Deploy prod claim
# if: github.ref == 'refs/heads/main'
# uses: jakejarvis/[email protected]
# with:
# args: --acl public-read --follow-symlinks --delete
# env:
# SOURCE_DIR: 'build/'
# AWS_REGION: 'us-west-2'
# AWS_S3_BUCKET: ${{ secrets.PROD_AWS_S3_BUCKET_CLAIM }}
# AWS_ACCESS_KEY_ID: ${{ secrets.PROD_AWS_SECRET_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_AWS_SECRET_ACCESS_KEY }}
# </claim.ssv.network>