Преглед изворни кода

Merge remote-tracking branch 'origin/main'

Shawn Lu пре 1 година
родитељ
комит
e468151488

+ 1 - 0
package.json

@@ -70,6 +70,7 @@
     "node-cron": "^3.0.3",
     "polly-js": "^1.8.3",
     "prisma": "^5.14.0",
+    "random-words": "^2.0.1",
     "shawnlu96-altcha-lib": "0.3.6",
     "tslib": "~2.6.2",
     "useless-helpers": "^0.0.7",

+ 10 - 8
src/BaseClient.ts

@@ -18,7 +18,6 @@ import { HttpsProxyAgent } from 'https-proxy-agent'
 
 const rpcUrl = [
   'https://lcd.initiation-1.initia.xyz/',
-  'https://api-initia-testnet.whispernode.com/',
   'https://initia-testnet-lcd.orbitalcommand.io/',
   'https://testnet-initia-api.lavenderfive.com/',
   'https://api.initiation.test.pfc.zone/',
@@ -206,7 +205,7 @@ export abstract class BaseClient {
       useProxy ? blackWingsMoveRequester : null,
     )
     const initAiRequester = new APIRequester(
-      'https://maze-rest-617bacff-7d34-4eb8-87f4-ee16fb4e0ac7.ue1-prod.newmetric.xyz',
+      'https://maze-rest-617bacff-7d34-4eb8-87f4-ee16fb4e0ac7.ue1-prod.newmetric.xyz/',
       {
         httpsAgent: proxyAgent,
         headers: {
@@ -216,8 +215,6 @@ export abstract class BaseClient {
             '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
           'Sec-Ch-Ua-Mobile': '?0',
           'Sec-Ch-Ua-Platform': '"Windows"',
-          // Origin: 'https://faucet.testnet.initia.xyz/',
-          // Referer: 'https://faucet.testnet.initia.xyz/',
           'Sec-Fetch-Dest': 'empty',
           'Sec-Fetch-Mode': 'cors',
           'Sec-Fetch-Site': 'same-site',
@@ -225,7 +222,7 @@ export abstract class BaseClient {
       },
     )
     this.initAi = new LCDClient(
-      'https://maze-rest-617bacff-7d34-4eb8-87f4-ee16fb4e0ac7.ue1-prod.newmetric.xyz',
+      'https://maze-rest-617bacff-7d34-4eb8-87f4-ee16fb4e0ac7.ue1-prod.newmetric.xyz/',
       {
         chainId: 'init-ai-1',
       },
@@ -677,7 +674,7 @@ export abstract class BaseClient {
     return await this.broadcast(msg)
   }
   async newBridge2Ai() {
-    const random = this.randomAmount(1500000, 2000000)
+    const random = this.randomAmount(1800000, 2500000)
 
     const msg = new MsgInitiateTokenDeposit(
       this.key.accAddress,
@@ -688,13 +685,18 @@ export abstract class BaseClient {
     return await this.broadcast(msg)
   }
   async newBridge2Civi() {
-    const random = this.randomAmount(1000000, 2000000)
+    const uint = await this.lcd.bank.balanceByDenom(
+      this.key.accAddress,
+      'uinit',
+    )
+
+    const amount = Math.floor(Number(uint.amount) / 4)
 
     const msg = new MsgInitiateTokenDeposit(
       this.key.accAddress,
       24,
       this.key.accAddress,
-      new Coin('uinit', random),
+      new Coin('uinit', amount),
     )
     return await this.broadcast(msg)
   }

+ 254 - 1
src/InitiaClient.ts

@@ -1,5 +1,6 @@
 import { InitiaTask } from './InitiaTask'
 import {
+  APIRequester,
   bcs,
   Coin,
   Coins,
@@ -12,6 +13,9 @@ import {
 import polly from 'polly-js'
 import { LunchClient } from './LunchClient'
 import { sleep } from 'useless-helpers'
+import { generateRandomString, getAxiosClient } from './utils'
+import { generate } from 'random-words'
+import { HttpsProxyAgent } from 'https-proxy-agent'
 
 export class InitiaClient extends InitiaTask {
   constructor(mnemonic: string, useProxy: boolean = false) {
@@ -206,6 +210,7 @@ export class InitiaClient extends InitiaTask {
 
     // const res = await this.newBridge2BlackWings()
   }
+
   async week5Task2() {
     const l2InitBalance = await polly()
       .waitAndRetry(5)
@@ -332,6 +337,7 @@ export class InitiaClient extends InitiaTask {
 
     // const res = await this.newBridge2BlackWings()
   }
+
   async week5Task5() {
     const l2InitBalance = await polly()
       .waitAndRetry(5)
@@ -455,6 +461,7 @@ export class InitiaClient extends InitiaTask {
 
     // const res = await this.newBridge2BlackWings()
   }
+
   async week5Task3() {
     const l2UsdcBalance = await polly()
       .waitAndRetry(3)
@@ -621,6 +628,7 @@ export class InitiaClient extends InitiaTask {
 
     // const res = await this.newBridge2BlackWings()
   }
+
   async week5Task4() {
     // const balance = await this.miniMove.bank.balance(this.key.accAddress)
     //
@@ -782,6 +790,7 @@ export class InitiaClient extends InitiaTask {
 
     // const res = await this.newBridge2BlackWings()
   }
+
   async week5Task6() {
     const l2UsdcBalance = await polly()
       .waitAndRetry(3)
@@ -986,6 +995,7 @@ export class InitiaClient extends InitiaTask {
     await lunch.claimEgg(txhash)
     return `worked`
   }
+
   async week6task2() {
     const tucBalance = await this.tucana.bank.balanceByDenom(
       this.key.accAddress,
@@ -1004,7 +1014,7 @@ export class InitiaClient extends InitiaTask {
       [
         bcs
           .u64()
-          .serialize(Number(tucBalance.amount) / 10)
+          .serialize(Math.floor(Number(tucBalance.amount) / 10))
           .toBase64(),
         '64WvP6wAJgs/gCqhuEQ9pXGrKKgjuk08mCVTuXJ2Jd8=',
         bcs.address().serialize(this.wallet.key.accAddress).toBase64(),
@@ -1083,4 +1093,247 @@ export class InitiaClient extends InitiaTask {
       return `error`
     }
   }
+
+  async week7task1() {
+    const uinit = await this.civi.bank.balanceByDenom(
+      this.key.accAddress,
+      'l2/afaa3f4e1717c75712f8e8073e41f051a4e516cd25daa82d948c4729388edefd',
+    )
+    if (Number(uinit.amount) < 2000000) {
+      await this.newBridge2Civi()
+      return `civi`
+    }
+
+    const civiWallet = new Wallet(this.civi, this.wallet.key)
+
+    const msg = new MsgExecute(
+      this.key.accAddress,
+      'init1nyfj6va42hx32ew9nnhpurj075hmclahrjs2qe',
+      'civitia',
+      'claim_all_rents',
+      [],
+      [],
+    )
+    const simulate2 = await this.civi.tx.estimateFee(
+      [{ sequenceNumber: await civiWallet.sequence() }],
+      {
+        msgs: [msg],
+        feeDenoms: [
+          'l2/afaa3f4e1717c75712f8e8073e41f051a4e516cd25daa82d948c4729388edefd',
+        ],
+      },
+    )
+    const signed2 = await civiWallet.createAndSignTx({
+      msgs: [msg],
+      fee: new Fee(
+        simulate2.gas_limit,
+        new Coins([
+          new Coin(
+            'l2/afaa3f4e1717c75712f8e8073e41f051a4e516cd25daa82d948c4729388edefd',
+            simulate2.amount.toArray()[0].amount,
+          ),
+        ]),
+      ),
+    })
+    try {
+      await this.civi.tx.broadcastAsync(signed2)
+      return `done`
+    } catch (e) {
+      return `error`
+    }
+    // ["gIQeAAAAAAA=","64WvP6wAJgs/gCqhuEQ9pXGrKKgjuk08mCVTuXJ2Jd8=","AAAAAAAAAAAAAAAAfwBn58DHXySh7OLySf/MheBSfzg=","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="]
+    //["AAk9AAAAAAA=","64WvP6wAJgs/gCqhuEQ9pXGrKKgjuk08mCVTuXJ2Jd8=","AAAAAAAAAAAAAAAAfwBn58DHXySh7OLySf/MheBSfzg=","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="]
+  }
+
+  async week7task2() {
+    // const axios = getAxiosClient(true)
+    // const res = await axios.get(
+    //   `https://xp-api.initiation-1.initia.xyz/xp/weekly/${this.key.accAddress}/7`,
+    // )
+    // if (res.data.finished_tasks !== 0) {
+    //   return `noData`
+    // }
+
+    const msg = new MsgExecute(
+      this.key.accAddress,
+      '0x8609f642a8ab1c13d661c14d733cab227bba15635a730af2057051b3f2ada3f6',
+      'router',
+      'swap',
+      [],
+      [
+        'FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=',
+        'AA==',
+        'AQ==',
+        'QEIPAAAAAAA=',
+        'FRoMAAAAAAA=',
+        'rzMbqDJ/uzWxxP7/AAAAAA==',
+      ],
+    )
+    try {
+      await this.broadcast(msg)
+      return `done`
+    } catch (e) {
+      console.log(e)
+      return `error`
+    }
+    // ["FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=","AA==","AQ==","QEIPAAAAAAA=","5SAPAAAAAAA=","rzMbqDJ/uzWxxP7/AAAAAA=="]
+    // ["FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=","AA==","AQ==","QEIPAAAAAAA=","pCAPAAAAAAA=","rzMbqDJ/uzWxxP7/AAAAAA=="]
+    // ["FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=","AA==","AQ==","QEIPAAAAAAA=","oyAPAAAAAAA=","rzMbqDJ/uzWxxP7/AAAAAA=="]
+  }
+
+  async week7task3() {
+    const aiWallt = new Wallet(this.initAi, this.wallet.key)
+
+    const balanceChecker = await polly()
+      .waitAndRetry(5)
+      .executeForPromise(async () => {
+        const balanceCheck = await this.initAi.bank.balanceByDenom(
+          this.key.accAddress,
+          'l2/aadf1a9da6a38b7e7e11839364ee42002260eff1657f403b9ce608337bcb986b',
+        )
+
+        if (Number(balanceCheck.amount) < 1400000) {
+          await this.newBridge2Ai()
+          return true
+        } else {
+          return false
+        }
+      })
+    if (balanceChecker) {
+      return `ai`
+    }
+
+    const collect = await polly()
+      .waitAndRetry(5)
+      .executeForPromise(async () => {
+        const axios = getAxiosClient(true)
+        return await axios.get(
+          `https://ai-nft-api.init-ai-1.initia.xyz/v1/collections?owner=${this.key.accAddress}`,
+        )
+      })
+    if (collect.data.data.length === 0) {
+      const res = await polly()
+        .waitAndRetry(5)
+        .executeForPromise(async () => {
+          const axios = getAxiosClient(true)
+          return await axios.get(
+            'https://ai-nft-api.init-ai-1.initia.xyz/v1/collections?page=1',
+          )
+        })
+      const random = Math.floor(Math.random() * res.data.data.length)
+      const collectionAddress = res.data.data[random].collectionAddress
+      const prompt = generate({ min: 2, max: 5, join: ' ' })
+      const msg = new MsgExecute(
+        this.key.accAddress,
+        '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a',
+        'ai_generate_nft',
+        'request_mint',
+        [],
+        [
+          bcs.object().serialize(collectionAddress).toBase64(),
+          bcs.string().serialize(prompt).toBase64(),
+          'AQ==',
+        ],
+      )
+      const estimate = await polly()
+        .waitAndRetry(5)
+        .executeForPromise(async () => {
+          const pass = `test1234_session-${generateRandomString(
+            8,
+          )}_lifetime-20m`
+          const proxyAgent = new HttpsProxyAgent(
+            `http://tuxla:${pass}@geo.iproyal.com:12321`,
+          )
+
+          this.initAi.apiRequester = new APIRequester(
+            'https://maze-rest-617bacff-7d34-4eb8-87f4-ee16fb4e0ac7.ue1-prod.newmetric.xyz/',
+            {
+              httpsAgent: proxyAgent,
+              headers: {
+                'User-Agent':
+                  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
+                'Sec-Ch-Ua':
+                  '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
+                'Sec-Ch-Ua-Mobile': '?0',
+                'Sec-Ch-Ua-Platform': '"Windows"',
+                'Sec-Fetch-Dest': 'empty',
+                'Sec-Fetch-Mode': 'cors',
+                'Sec-Fetch-Site': 'same-site',
+              },
+            },
+          )
+          return await this.initAi.tx.estimateFee(
+            [{ sequenceNumber: await aiWallt.sequence() }],
+            {
+              msgs: [msg],
+              feeDenoms: [
+                'l2/aadf1a9da6a38b7e7e11839364ee42002260eff1657f403b9ce608337bcb986b',
+              ],
+            },
+          )
+        })
+      const signed = await aiWallt.createAndSignTx({
+        msgs: [msg],
+        fee: new Fee(
+          estimate.gas_limit,
+          new Coins([
+            new Coin(
+              'l2/aadf1a9da6a38b7e7e11839364ee42002260eff1657f403b9ce608337bcb986b',
+              estimate.amount.toArray()[0].amount,
+            ),
+          ]),
+        ),
+      })
+      await this.initAi.tx.broadcastAsync(signed)
+      return `mint`
+      //   ["y/0NIkUSVOcDuguqejyPCsFizyz33v6RVBbrUQxlIbE=","DG1vbmV5IGNvbG9yIA==","AQ=="]
+      //   ["y/0NIkUSVOcDuguqejyPCsFizyz33v6RVBbrUQxlIbE=","HmdyZWVuIGNvbG9yIHBva2Vtb24gd2l0aCB0cmVlcw==","AQ=="]
+      //   ["awRFigvxT99zEmp3Yfrcwj49k5w3PsQ93z/4SgAFrn8=","BGJlcmE=","AQ=="]
+    } else {
+      const res = await polly()
+        .waitAndRetry(5)
+        .executeForPromise(async () => {
+          const axios = getAxiosClient(true)
+          return await axios.get(
+            `https://ai-nft-api.init-ai-1.initia.xyz/v1/tokens?collectionAddress=${collect.data.data[0].collectionAddress}&owner=${this.key.accAddress}&page=1`,
+          )
+        })
+      const nftAddress = res.data.data[0].nftAddress
+      const burnMsg = new MsgExecute(
+        this.key.accAddress,
+        '0x1',
+        'initia_nft',
+        'burn',
+        ['0x1::nft::Nft'],
+        [bcs.object().serialize(nftAddress).toBase64()],
+      )
+      const estimate = await this.initAi.tx.estimateFee(
+        [{ sequenceNumber: await aiWallt.sequence() }],
+        {
+          msgs: [burnMsg],
+          feeDenoms: [
+            'l2/aadf1a9da6a38b7e7e11839364ee42002260eff1657f403b9ce608337bcb986b',
+          ],
+        },
+      )
+      const signed = await aiWallt.createAndSignTx({
+        msgs: [burnMsg],
+        fee: new Fee(
+          estimate.gas_limit,
+          new Coins([
+            new Coin(
+              'l2/aadf1a9da6a38b7e7e11839364ee42002260eff1657f403b9ce608337bcb986b',
+              estimate.amount.toArray()[0].amount,
+            ),
+          ]),
+        ),
+      })
+      await this.initAi.tx.broadcastAsync(signed)
+      return `done`
+    }
+
+    // ["FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=","AA==","AQ==","QEIPAAAAAAA=","5SAPAAAAAAA=","rzMbqDJ/uzWxxP7/AAAAAA=="]
+    // ["FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=","AA==","AQ==","QEIPAAAAAAA=","pCAPAAAAAAA=","rzMbqDJ/uzWxxP7/AAAAAA=="]
+    // ["FrbuJROsvX9uKlyA1LMdS9QsSwfe5LOLvx2xOzAwk+E=","AA==","AQ==","QEIPAAAAAAA=","oyAPAAAAAAA=","rzMbqDJ/uzWxxP7/AAAAAA=="]
+  }
 }

+ 7 - 5
src/JennieModule.ts

@@ -18,8 +18,10 @@ export abstract class JennieModule extends BaseClient {
     return viewResult
   }
   async drawFood() {
-    await this.claimableXp()
-
+    const res = await this.claimableXp()
+    if (res != `done`) {
+      return `needFood`
+    }
     const xp = await this.getXpAmount()
     if (Number(xp) < 700 && Number(xp) > 200) {
       const msg = new MsgExecute(
@@ -273,15 +275,15 @@ export abstract class JennieModule extends BaseClient {
           'claim_point',
           [],
           [
-            bcs.u64().serialize(data.data.claimable_list[0].stage).toBase64(),
+            bcs.u64().serialize(data.data.claimable_list[i].stage).toBase64(),
             sd,
             bcs
               .u64()
-              .serialize(data.data.claimable_list[0].task_point)
+              .serialize(data.data.claimable_list[i].task_point)
               .toBase64(),
             bcs
               .u64()
-              .serialize(data.data.claimable_list[0].referral_point)
+              .serialize(data.data.claimable_list[i].referral_point)
               .toBase64(),
           ],
         )

+ 5 - 3
src/decodeFunction.ts

@@ -120,14 +120,16 @@ function parse5(): void {
   //   'BQ==',
   //   'QKroIsCES99i848oZJPjCeGMr11aDFUGU2Roat7L1LX8LqsTZL5TMJTv3saMfcvo3RjWMK1FtR+fzT715Z+bnh4=',
   // ]
+  //0xcbfd0d22451254e703ba0baa7a3c8f0ac162cf2cf7defe915416eb510c6521b1
+  //0xcbfd0d22451254e703ba0baa7a3c8f0ac162cf2cf7defe915416eb510c6521b1
   const s = [
-    'AQ==',
     'QCzDqo9I8xICLNbNuDICoH4yoxq5QNUeDW+Soq/WbAVxITr1fs+aJpiQuwo3w411O2EogH6qDmVqKSpAAluH2HY=',
   ]
-  const raw = ['CAAAAAAAAAA=']
+  // const raw = ['y/0NIkUSVOcDuguqejyPCsFizyz33v6RVBbrUQxlIbE=']
+  const raw = ['Y3f1AmTp33ykyKV9Qtx1MqM94UkyfrAPasD6v8e3ZM8=']
 
   const d0 = bcs
-    .u64() // type
+    .object() // type
     .parse(Uint8Array.from(Buffer.from(raw[0], 'base64')))
 
   console.log(d0)

+ 8 - 7
src/onchain/finalTask.ts

@@ -1,6 +1,6 @@
 import { DBClient } from '../singletons'
-import { forEachAsync } from '../utils'
 import { InitiaClient } from '../InitiaClient'
+import { forEachAsync } from 'useless-helpers'
 
 async function startCheck(concurrency) {
   const accountsRaw = await DBClient.instance.account.findMany({
@@ -8,7 +8,7 @@ async function startCheck(concurrency) {
       status: 3,
     },
     orderBy: {
-      lastRun: 'desc',
+      lastRun: 'asc',
     },
     take: 10000,
   })
@@ -19,10 +19,10 @@ async function startCheck(concurrency) {
       //   return
       // }
       const client = new InitiaClient(account.mnemonic, true)
-      const gasGot = await client.lcd.bank.balanceByDenom(
-        account.address,
-        `move/944f8dd8dc49f96c25fea9849f16436dcfa6d564eec802f3ef7f8b3ea85368ff`,
-      )
+      // const gasGot = await client.lcd.bank.balanceByDenom(
+      //   account.address,
+      //   `move/944f8dd8dc49f96c25fea9849f16436dcfa6d564eec802f3ef7f8b3ea85368ff`,
+      // )
       // if (Number(gasGot.amount) < 300000) {
       //   // await DBClient.instance.account.update({
       //   //   where: { id: account.id },
@@ -51,6 +51,7 @@ async function startCheck(concurrency) {
         })
       }
     } catch (e) {
+      // console.log(e)
       console.log(
         `${index}/${accountsRaw.length}: processing ${account.address}: fail`,
       )
@@ -61,4 +62,4 @@ async function startCheck(concurrency) {
   })
 }
 
-startCheck(20)
+startCheck(40)

+ 44 - 9
src/onchain/week3/randomWeek3.ts

@@ -1,13 +1,15 @@
 import { DBClient } from '../../singletons'
 import { InitiaClient } from '../../InitiaClient'
 import { forEachAsync } from 'useless-helpers'
+import { getAxiosClient } from '../../utils'
+import polly from 'polly-js'
 
 async function startCheck(concurrency) {
   const accountsRaw = await DBClient.instance.randomTask2.findMany({
     where: {
       finish: 0,
     },
-    take: 1200,
+    take: 2000,
     orderBy: {
       id: 'asc',
     },
@@ -17,12 +19,45 @@ async function startCheck(concurrency) {
       `${index}/${accountsRaw.length}: processing ${account.address},account id: ${account.id}`,
     )
 
+    const res = await polly()
+      .waitAndRetry(5)
+      .executeForPromise(async () => {
+        const axios = getAxiosClient(true)
+
+        return await axios.get(
+          `https://xp-api.initiation-1.initia.xyz/xp/weekly/${account.address}/7`,
+        )
+      })
+
+    if (res.data.finished_tasks.length === 3) {
+      await DBClient.instance.randomTask2.update({
+        where: { id: account.id },
+        data: { task1: 1, task2: 1, task3: 1, finish: 1 },
+      })
+      return
+    }
+    if (res.data.finished_tasks.includes(`civitia_claim_rent_weekly`)) {
+      account.task1 = 1
+    } else {
+      account.task1 = 0
+    }
+    if (res.data.finished_tasks.includes(`tucana_swap_weekly`)) {
+      account.task2 = 1
+    } else {
+      account.task2 = 0
+    }
+    if (res.data.finished_tasks.includes(`initai_burn_weekly`)) {
+      account.task3 = 1
+    } else {
+      account.task3 = 0
+    }
+
     try {
       // await faucetAccount(account.address)
       const notDone = []
 
       if (account.task1 === 0) {
-        // notDone.push(1)
+        notDone.push(1)
       }
       if (account.task2 === 0) {
         notDone.push(2)
@@ -69,7 +104,7 @@ async function startCheck(concurrency) {
           `${index}/${accountsRaw.length}: processing ${account.address},task1`,
         )
 
-        const bool = await client.week5Task1()
+        const bool = await client.week7task1()
         console.log(
           `${index}/${accountsRaw.length}: processing ${account.address},task1`,
           bool,
@@ -77,14 +112,14 @@ async function startCheck(concurrency) {
         if (bool === `done`) {
           await DBClient.instance.randomTask2.update({
             where: { id: account.id },
-            data: { task1: 1 },
+            data: account,
           })
         }
       } else if (randomPick === 2) {
         console.log(
           `${index}/${accountsRaw.length}: processing ${account.address},task2`,
         )
-        const bool = await client.week6task2()
+        const bool = await client.week7task2()
         console.log(
           `${index}/${accountsRaw.length}: processing ${account.address},task2`,
           bool,
@@ -92,14 +127,14 @@ async function startCheck(concurrency) {
         if (bool === `done`) {
           await DBClient.instance.randomTask2.update({
             where: { id: account.id },
-            data: { task2: 1 },
+            data: account,
           })
         }
       } else if (randomPick === 3) {
         console.log(
           `${index}/${accountsRaw.length}: processing ${account.address},task3`,
         )
-        const bool = await client.week6task3()
+        const bool = await client.week7task3()
         console.log(
           `${index}/${accountsRaw.length}: processing ${account.address},task3`,
           bool,
@@ -107,7 +142,7 @@ async function startCheck(concurrency) {
         if (bool === `done`) {
           await DBClient.instance.randomTask2.update({
             where: { id: account.id },
-            data: { task3: 1 },
+            data: account,
           })
         }
       } else if (randomPick === 4) {
@@ -168,4 +203,4 @@ async function startCheck(concurrency) {
   })
 }
 
-startCheck(1)
+startCheck(10)

+ 30 - 23
src/onchain/week3/task3Balance.ts

@@ -1,40 +1,47 @@
-import { forEachAsync } from '../../utils'
 import { DBClient } from '../../singletons'
 import { InitiaClient } from '../../InitiaClient'
+import { forEachAsync } from 'useless-helpers'
 
 async function startCheck(concurrency) {
   const accountsRaw = await DBClient.instance.randomTask2.findMany({
     where: {
-      finish: -1,
+      finish: -2,
     },
     take: 10000,
     orderBy: {
       id: 'asc',
     },
   })
-  await forEachAsync(accountsRaw, concurrency, async (account, index) => {
-    console.log(
-      `${index}/${accountsRaw.length}: processing ${account.address},account id: ${account.id}`,
-    )
+  await forEachAsync(
+    accountsRaw,
+    concurrency,
+    async (account, index) => {
+      console.log(
+        `${index}/${accountsRaw.length}: processing ${account.address},account id: ${account.id}`,
+      )
 
-    // await faucetAccount(account.address)
+      // await faucetAccount(account.address)
 
-    const client = new InitiaClient(account.mnemonic, true)
-    try {
-      const gasGot = await client.gasGot()
-      if (gasGot) {
-        await DBClient.instance.randomTask2.update({
-          where: { id: account.id },
-          data: { finish: 0 },
-        })
-      } else {
-        await DBClient.instance.randomTask2.update({
-          where: { id: account.id },
-          data: { finish: -1 },
-        })
+      const client = new InitiaClient(account.mnemonic, true)
+      try {
+        const gasGot = await client.gasGot()
+        if (gasGot) {
+          await DBClient.instance.randomTask2.update({
+            where: { id: account.id },
+            data: { finish: 0 },
+          })
+        } else {
+          // await DBClient.instance.randomTask2.update({
+          //   where: { id: account.id },
+          //   data: { finish: -2 },
+          // })
+        }
+      } catch (e) {
+        // console.log(e)
       }
-    } catch (e) {}
-  })
+    },
+    { retries: 3 },
+  )
 }
 
-startCheck(10)
+startCheck(50)

+ 30 - 51
src/onchain/week3/task3check.ts

@@ -1,64 +1,43 @@
-import { forEachAsync, getAxiosClient } from '../../utils'
 import { DBClient } from '../../singletons'
+import { InitiaClient } from '../../InitiaClient'
+import { forEachAsync } from 'useless-helpers'
 
 async function startCheck(concurrency) {
-  const accountsRaw = await DBClient.instance.randomTask2.findMany({
+  const needRaw = await DBClient.instance.faucet.findMany({
     where: {
-      finish: 1,
+      balance: {
+        lt: 1000000,
+      },
     },
-    take: 40000,
+    take: 50,
   })
-  await forEachAsync(accountsRaw, concurrency, async (account, index) => {
+  const sendRaw = await DBClient.instance.faucet.findMany({
+    where: {
+      id: {
+        gt: 1000,
+      },
+      balance: {
+        gt: 20000000,
+      },
+    },
+    orderBy: {
+      balance: 'asc',
+    },
+    take: 1,
+  })
+  await forEachAsync(sendRaw, concurrency, async (account, index) => {
     console.log(
-      `${index}/${accountsRaw.length}: processing ${account.address},account id: ${account.id}`,
+      `${index}/${sendRaw.length}: processing ${account.address},account id: ${account.id}`,
     )
     try {
-      const axios = getAxiosClient(true)
-      const res = await axios.get(
-        `https://xp-api.initiation-1.initia.xyz/xp/weekly/${account.address}/3`,
-      )
-      // console.log(res.data)
-      const finishedTasks = res.data.finished_tasks
-      if (finishedTasks.length === 6) {
-        await DBClient.instance.randomTask2.update({
-          where: { id: account.id },
-          data: { finish: 2 },
-        })
-      } else {
-        const data = {
-          task1: 0,
-          task2: 0,
-          task3: 0,
-          task4: 0,
-          task5: 0,
-          task6: 0,
-          finish: 0,
-        }
-        if (finishedTasks.includes('op_deposit_initai')) {
-          data.task4 = 1
-        }
-        if (finishedTasks.includes('op_deposit_miniwasm')) {
-          data.task6 = 1
-        }
-        if (finishedTasks.includes('op_deposit_blackwing')) {
-          data.task1 = 1
-        }
-        if (finishedTasks.includes('op_deposit_noon')) {
-          data.task2 = 1
-        }
-        if (finishedTasks.includes('op_deposit_tucana')) {
-          data.task3 = 1
-        }
-        if (finishedTasks.includes('op_deposit_minimove')) {
-          data.task5 = 1
-        }
-        await DBClient.instance.randomTask2.update({
-          where: { id: account.id },
-          data,
-        })
-      }
+      const client = new InitiaClient(account.mnemonic, true)
+      // for (let i = 0; i < 8; i++) {
+      const i = index
+      console.log(i)
+      console.log(await client.transferGas(needRaw[i].address, 1000000))
+      // }
     } catch (e) {}
   })
 }
 
-startCheck(300)
+startCheck(50)

+ 3 - 2
src/swapTester.ts

@@ -12,7 +12,8 @@ const key = new MnemonicKey({
   mnemonic:
     // 'visual giant rely tooth recall explain vital tunnel snow road airport cake',
     // 'deal earth suggest craft impact vocal outdoor perfect winter nice unhappy lizard',
-    'language tooth rug border arm essence badge rough ahead unaware bag night stay auto spawn february odor equip hub demand three setup used sentence',
+    'nut chalk dilemma solve same correct hood lava earn window under coral picture rabbit inform room maximum puppy mixed valley giggle glue mail frame',
+  // 'language tooth rug border arm essence badge rough ahead unaware bag night stay auto spawn february odor equip hub demand three setup used sentence',
   // 'camp rural essay together right oblige shine visa sketch garage legal crush argue calm soup egg forum luxury action cupboard fade myth gospel confirm',
   // 'neutral flight plug goddess marble champion message bottom gentle guilt ketchup way guide obey nominee panda sleep meadow scene sea fine cause upgrade only',
 })
@@ -48,7 +49,7 @@ async function main() {
   // console.log(a)
   // await client.transferGas('init1yq7erc0hmemy7exhycdqx8j05jj46g0hgycw5g', 0.2)
   // await client.mintPart()
-  const res = await client.week6task1()
+  const res = await client.week7task1()
   // const res = ((new Date().valueOf() + 1500000) * 1000000).toString()
   console.log(res)
   // console.log(`1718639224520000000`)

+ 21 - 20
src/utils/index.ts

@@ -15,26 +15,6 @@ export function generateRandomString(length: number) {
   }
   return result
 }
-export function getProxyUrl() {
-  const pass = `test1234_session-${generateRandomString(8)}_lifetime-24h`
-  return `http://tuxla:${pass}@geo.iproyal.com:12321`
-}
-
-export function generate2CaptchaProxyAgent() {
-  const username = `u3e4c2852572e05c5-zone-custom-session-${generateRandomString(
-    9,
-  )}-sessTime-20`
-  const password = 'u3e4c2852572e05c5'
-  return new HttpsProxyAgent(
-    `http://${username}:${password}@43.152.113.55:2334`,
-  )
-}
-
-export function getProxyAgent() {
-  const pass = `test1234_session-${generateRandomString(8)}_lifetime-1h`
-  return new HttpsProxyAgent(`http://tuxla:${pass}@geo.iproyal.com:12321`)
-}
-
 export function getAxiosClient(useProxy: boolean) {
   const pass = `test1234_session-${generateRandomString(8)}_lifetime-1h`
   const proxyAgent = useProxy
@@ -62,6 +42,27 @@ export function getAxiosClient(useProxy: boolean) {
   })
 }
 
+export function getProxyUrl() {
+  const pass = `test1234_session-${generateRandomString(8)}_lifetime-24h`
+  return `http://tuxla:${pass}@geo.iproyal.com:12321`
+}
+
+export function generate2CaptchaProxyAgent() {
+  const username = `u3e4c2852572e05c5-zone-custom-session-${generateRandomString(
+    9,
+  )}-sessTime-20`
+  const password = 'u3e4c2852572e05c5'
+  return new HttpsProxyAgent(
+    `http://${username}:${password}@43.152.113.55:2334`,
+  )
+}
+
+export function getProxyAgent() {
+  const pass = `test1234_session-${generateRandomString(8)}_lifetime-1h`
+  return new HttpsProxyAgent(`http://tuxla:${pass}@geo.iproyal.com:12321`)
+}
+
+
 export async function forEachAsync<T = any>(
   array: T[],
   concurrency: number,

+ 106 - 205
yarn.lock

@@ -44,7 +44,7 @@
   resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz"
   integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==
 
-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.24.5", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
+"@babel/core@^7.24.5":
   version "7.24.7"
   resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz"
   integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==
@@ -1221,7 +1221,7 @@
   resolved "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz"
   integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==
 
-"@noble/curves@^1.0.0", "@noble/curves@1.2.0":
+"@noble/curves@1.2.0", "@noble/curves@^1.0.0":
   version "1.2.0"
   resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz"
   integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
@@ -1235,16 +1235,16 @@
   dependencies:
     "@noble/hashes" "1.4.0"
 
-"@noble/hashes@^1.0.0", "@noble/hashes@^1.2.0", "@noble/hashes@~1.4.0", "@noble/hashes@1.4.0":
-  version "1.4.0"
-  resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz"
-  integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==
-
 "@noble/hashes@1.3.2":
   version "1.3.2"
   resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz"
   integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==
 
+"@noble/hashes@1.4.0", "@noble/hashes@^1.0.0", "@noble/hashes@^1.2.0", "@noble/hashes@~1.4.0":
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz"
+  integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==
+
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
   resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -1253,7 +1253,7 @@
     "@nodelib/fs.stat" "2.0.5"
     run-parallel "^1.1.9"
 
-"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
   version "2.0.5"
   resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
   integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -1501,7 +1501,7 @@
     semver "^7.5.4"
     ts-api-utils "^1.0.1"
 
-"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@~6.2":
+"@typescript-eslint/parser@~6.2":
   version "6.2.1"
   resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz"
   integrity sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==
@@ -1586,6 +1586,14 @@
     "@xrplf/isomorphic" "^1.0.0"
     ripple-keypairs "^2.0.0"
 
+JSONStream@^1.0.3:
+  version "1.3.5"
+  resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
+  integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+  dependencies:
+    jsonparse "^1.2.0"
+    through ">=2.2.7 <3"
+
 acorn-jsx@^5.3.2:
   version "5.3.2"
   resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
@@ -1605,16 +1613,16 @@ acorn-walk@^7.0.0:
   resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
   integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
 
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.8.2, acorn@^8.9.0:
-  version "8.11.3"
-  resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz"
-  integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
-
 acorn@^7.0.0:
   version "7.4.1"
   resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
   integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
 
+acorn@^8.8.2, acorn@^8.9.0:
+  version "8.11.3"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz"
+  integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+
 aes-js@4.0.0-beta.5:
   version "4.0.0-beta.5"
   resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz"
@@ -1820,22 +1828,7 @@ bip39@^3.0.4:
   dependencies:
     "@noble/hashes" "^1.2.0"
 
-bn.js@^4.0.0:
-  version "4.12.0"
-  resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz"
-  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-
-bn.js@^4.1.0:
-  version "4.12.0"
-  resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz"
-  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-
-bn.js@^4.11.8:
-  version "4.12.0"
-  resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz"
-  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-
-bn.js@^4.11.9:
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.8, bn.js@^4.11.9:
   version "4.12.0"
   resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz"
   integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
@@ -1882,9 +1875,9 @@ browser-pack@^6.0.1:
   resolved "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz"
   integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==
   dependencies:
+    JSONStream "^1.0.3"
     combine-source-map "~0.8.0"
     defined "^1.0.0"
-    JSONStream "^1.0.3"
     safe-buffer "^5.1.1"
     through2 "^2.0.0"
     umd "^3.0.0"
@@ -1963,6 +1956,7 @@ browserify@^17.0.0:
   resolved "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz"
   integrity sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==
   dependencies:
+    JSONStream "^1.0.3"
     assert "^1.4.0"
     browser-pack "^6.0.1"
     browser-resolve "^2.0.0"
@@ -1984,7 +1978,6 @@ browserify@^17.0.0:
     https-browserify "^1.0.0"
     inherits "~2.0.1"
     insert-module-globals "^7.2.1"
-    JSONStream "^1.0.3"
     labeled-stream-splicer "^2.0.0"
     mkdirp-classic "^0.5.2"
     module-deps "^6.2.3"
@@ -2012,7 +2005,7 @@ browserify@^17.0.0:
     vm-browserify "^1.0.0"
     xtend "^4.0.0"
 
-browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0":
+browserslist@^4.22.2, browserslist@^4.23.0:
   version "4.23.1"
   resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz"
   integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==
@@ -2036,7 +2029,7 @@ bs58@^5.0.0:
   dependencies:
     base-x "^4.0.0"
 
-bs58check@^2.1.1, bs58check@<3.0.0:
+bs58check@<3.0.0, bs58check@^2.1.1:
   version "2.1.2"
   resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz"
   integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==
@@ -2176,16 +2169,16 @@ color-convert@^2.0.1:
   dependencies:
     color-name "~1.1.4"
 
-color-name@~1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
-  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
 color-name@1.1.3:
   version "1.1.3"
   resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
   integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
 
+color-name@~1.1.4:
+  version "1.1.4"
+  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
 combine-source-map@^0.8.0, combine-source-map@~0.8.0:
   version "0.8.0"
   resolved "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz"
@@ -2344,7 +2337,7 @@ dash-ast@^1.0.0:
   resolved "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz"
   integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==
 
-debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4:
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
   version "4.3.4"
   resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
   integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -2534,7 +2527,7 @@ escape-string-regexp@^4.0.0:
   resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
   integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
-eslint-config-prettier@*, eslint-config-prettier@~9.0:
+eslint-config-prettier@~9.0:
   version "9.0.0"
   resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz"
   integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==
@@ -2560,7 +2553,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
   resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
   integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
-"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@>=7.0.0, eslint@>=8.0.0, eslint@~8.46:
+eslint@~8.46:
   version "8.46.0"
   resolved "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz"
   integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==
@@ -2649,7 +2642,7 @@ ethers@^6.12.1:
     tslib "2.4.0"
     ws "8.17.1"
 
-eventemitter3@^5.0.1, eventemitter3@5.0.1:
+eventemitter3@5.0.1, eventemitter3@^5.0.1:
   version "5.0.1"
   resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz"
   integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
@@ -2810,6 +2803,11 @@ fs.realpath@^1.0.0:
   resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
+fsevents@~2.3.2:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
 function-bind@^1.1.2:
   version "1.1.2"
   resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -2836,7 +2834,7 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
     has-symbols "^1.0.3"
     hasown "^2.0.0"
 
-glob-parent@^5.1.2:
+glob-parent@^5.1.2, glob-parent@~5.1.2:
   version "5.1.2"
   resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
   integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -2850,13 +2848,6 @@ glob-parent@^6.0.2:
   dependencies:
     is-glob "^4.0.3"
 
-glob-parent@~5.1.2:
-  version "5.1.2"
-  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
-  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
-  dependencies:
-    is-glob "^4.0.1"
-
 glob@^10.3.7:
   version "10.3.15"
   resolved "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz"
@@ -2868,31 +2859,7 @@ glob@^10.3.7:
     minipass "^7.0.4"
     path-scurry "^1.11.0"
 
-glob@^7.1.0:
-  version "7.2.3"
-  resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
-  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.1.1"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-glob@^7.1.3:
-  version "7.2.3"
-  resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
-  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.1.1"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-glob@^7.2.0:
+glob@^7.1.0, glob@^7.1.3, glob@^7.2.0:
   version "7.2.3"
   resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
   integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -2928,7 +2895,7 @@ globby@^11.0.4, globby@^11.1.0:
     merge2 "^1.4.1"
     slash "^3.0.0"
 
-google-protobuf@^3.14.0, google-protobuf@^3.21.0:
+google-protobuf@^3.21.0:
   version "3.21.2"
   resolved "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz"
   integrity sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==
@@ -3092,7 +3059,7 @@ inflight@^1.0.4:
     once "^1.3.0"
     wrappy "1"
 
-inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4, inherits@2:
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
   version "2.0.4"
   resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -3114,11 +3081,11 @@ insert-module-globals@^7.2.1:
   resolved "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz"
   integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==
   dependencies:
+    JSONStream "^1.0.3"
     acorn-node "^1.5.2"
     combine-source-map "^0.8.0"
     concat-stream "^1.6.1"
     is-buffer "^1.1.0"
-    JSONStream "^1.0.3"
     path-is-absolute "^1.0.1"
     process "~0.11.0"
     through2 "^2.0.0"
@@ -3326,13 +3293,14 @@ jsonparse@^1.2.0:
   resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"
   integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
 
-JSONStream@^1.0.3:
-  version "1.3.5"
-  resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
-  integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+keccak256@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz"
+  integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==
   dependencies:
-    jsonparse "^1.2.0"
-    through ">=2.2.7 <3"
+    bn.js "^5.2.0"
+    buffer "^6.0.3"
+    keccak "^3.0.2"
 
 keccak@^3.0.2:
   version "3.0.4"
@@ -3343,15 +3311,6 @@ keccak@^3.0.2:
     node-gyp-build "^4.2.0"
     readable-stream "^3.6.0"
 
-keccak256@^1.0.6:
-  version "1.0.6"
-  resolved "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz"
-  integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==
-  dependencies:
-    bn.js "^5.2.0"
-    buffer "^6.0.3"
-    keccak "^3.0.2"
-
 keyv@^4.5.3:
   version "4.5.4"
   resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
@@ -3539,6 +3498,7 @@ module-deps@^6.2.3:
   resolved "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz"
   integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==
   dependencies:
+    JSONStream "^1.0.3"
     browser-resolve "^2.0.0"
     cached-path-relative "^1.0.2"
     concat-stream "~1.6.0"
@@ -3546,7 +3506,6 @@ module-deps@^6.2.3:
     detective "^5.2.0"
     duplexer2 "^0.1.2"
     inherits "^2.0.1"
-    JSONStream "^1.0.3"
     parents "^1.0.0"
     readable-stream "^2.0.2"
     resolve "^1.4.0"
@@ -3849,7 +3808,7 @@ prettier-linter-helpers@^1.0.0:
   dependencies:
     fast-diff "^1.1.2"
 
-prettier@>=3.0.0, prettier@~3.0:
+prettier@~3.0:
   version "3.0.3"
   resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz"
   integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==
@@ -3863,7 +3822,7 @@ pretty-format@^29.0.0, pretty-format@^29.7.0:
     ansi-styles "^5.0.0"
     react-is "^18.0.0"
 
-prisma@*, prisma@^5.14.0:
+prisma@^5.14.0:
   version "5.15.1"
   resolved "https://registry.npmjs.org/prisma/-/prisma-5.15.1.tgz"
   integrity sha512-pYsUVpTlYvZ6mWvZKDv9rKdUa7tlfSUJY1CVtgb8Had1pHbIm9fr1MBASccr5XnSuCUrjnvKhWNwgSYy6aCajA==
@@ -3915,12 +3874,7 @@ public-encrypt@^4.0.0:
     randombytes "^2.0.1"
     safe-buffer "^5.1.2"
 
-punycode@^1.3.2:
-  version "1.4.1"
-  resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
-  integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
-
-punycode@^1.4.1:
+punycode@^1.3.2, punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
   integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
@@ -3952,6 +3906,13 @@ queue-microtask@^1.2.2:
   resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
   integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
 
+random-words@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/random-words/-/random-words-2.0.1.tgz#cc4564385d040c9fad2b817621a0041a1ecc90f6"
+  integrity sha512-nZNJAmgcFmtJMTDDIUCm/iK4R6RydC6NvALvWhYItXQrgYGk1F7Gww416LpVROFQtfVd5TaLEf4WuSsko03N7w==
+  dependencies:
+    seedrandom "^3.0.5"
+
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
   version "2.1.0"
   resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
@@ -3979,33 +3940,7 @@ read-only-stream@^2.0.0:
   dependencies:
     readable-stream "^2.0.2"
 
-readable-stream@^2.0.2:
-  version "2.3.8"
-  resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
-  integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readable-stream@^2.2.2:
-  version "2.3.8"
-  resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
-  integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readable-stream@^2.3.8:
+readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.8, readable-stream@~2.3.6:
   version "2.3.8"
   resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
   integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
@@ -4027,19 +3962,6 @@ readable-stream@^3.5.0, readable-stream@^3.6.0:
     string_decoder "^1.1.1"
     util-deprecate "^1.0.1"
 
-readable-stream@~2.3.6:
-  version "2.3.8"
-  resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
-  integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
 readdirp@~3.6.0:
   version "3.6.0"
   resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
@@ -4203,6 +4125,11 @@ secp256k1@^5.0.0:
     node-addon-api "^5.0.0"
     node-gyp-build "^4.2.0"
 
+seedrandom@^3.0.5:
+  version "3.0.5"
+  resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7"
+  integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==
+
 semver@^5.6.0:
   version "5.7.2"
   resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
@@ -4313,7 +4240,7 @@ source-map-support@~0.5.20:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
 
-source-map@^0.6.0:
+source-map@^0.6.0, source-map@~0.6.0:
   version "0.6.1"
   resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
   integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -4323,11 +4250,6 @@ source-map@~0.5.3:
   resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
   integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
 
-source-map@~0.6.0:
-  version "0.6.1"
-  resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
 stack-utils@^2.0.3:
   version "2.0.6"
   resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz"
@@ -4369,30 +4291,7 @@ stream-splicer@^2.0.0:
     inherits "^2.0.1"
     readable-stream "^2.0.2"
 
-string_decoder@^1.1.1:
-  version "1.3.0"
-  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
-  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
-  dependencies:
-    safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
-  dependencies:
-    safe-buffer "~5.1.0"
-
-"string-width-cjs@npm:string-width@^4.2.0":
-  version "4.2.3"
-  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
-  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.1"
-
-string-width@^4.1.0:
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
   version "4.2.3"
   resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -4410,14 +4309,21 @@ string-width@^5.0.1, string-width@^5.1.2:
     emoji-regex "^9.2.2"
     strip-ansi "^7.0.1"
 
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
-  version "6.0.1"
-  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
-  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+string_decoder@^1.1.1:
+  version "1.3.0"
+  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
   dependencies:
-    ansi-regex "^5.0.1"
+    safe-buffer "~5.2.0"
 
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+string_decoder@~1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+  dependencies:
+    safe-buffer "~5.1.0"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -4492,11 +4398,6 @@ text-table@^0.2.0:
   resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
   integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
 
-"through@>=2.2.7 <3":
-  version "2.3.8"
-  resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
-  integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-
 through2@^2.0.0:
   version "2.0.5"
   resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz"
@@ -4505,6 +4406,11 @@ through2@^2.0.0:
     readable-stream "~2.3.6"
     xtend "~4.0.1"
 
+"through@>=2.2.7 <3":
+  version "2.3.8"
+  resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
+  integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
 timers-browserify@^1.0.1:
   version "1.4.2"
   resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz"
@@ -4572,16 +4478,16 @@ tsc-alias@1.8.8:
     normalize-path "^3.0.0"
     plimit-lit "^1.2.6"
 
-tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2, tslib@~2.6.2:
-  version "2.6.2"
-  resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
-  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-
 tslib@2.4.0:
   version "2.4.0"
   resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz"
   integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
 
+tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2, tslib@~2.6.2:
+  version "2.6.2"
+  resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
+  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
 tty-browserify@0.0.1:
   version "0.0.1"
   resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz"
@@ -4609,7 +4515,7 @@ typeforce@^1.11.5:
   resolved "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz"
   integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==
 
-typescript@>=4.2.0, typescript@~5.1.0:
+typescript@~5.1.0:
   version "5.1.6"
   resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz"
   integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
@@ -4718,16 +4624,16 @@ util@~0.12.0:
     is-typed-array "^1.1.3"
     which-typed-array "^1.1.2"
 
-uuid@^9.0.1:
-  version "9.0.1"
-  resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz"
-  integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
-
 uuid@8.3.2:
   version "8.3.2"
   resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
   integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
 
+uuid@^9.0.1:
+  version "9.0.1"
+  resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz"
+  integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
+
 vm-browserify@^1.0.0:
   version "1.1.2"
   resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz"
@@ -4799,20 +4705,15 @@ wrappy@1:
   resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
   integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
 
-ws@^7.5.9:
-  version "7.5.9"
-  resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
-  integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
-
-ws@^8.13.0:
+ws@8.17.1, ws@^8.13.0:
   version "8.17.1"
   resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz"
   integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
 
-ws@8.17.1:
-  version "8.17.1"
-  resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz"
-  integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
+ws@^7.5.9:
+  version "7.5.9"
+  resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
+  integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
 
 xrpl@^3.0.0:
   version "3.1.0"