From af48d2011f72e11b52ed751509f5ad9009b87605 Mon Sep 17 00:00:00 2001 From: juliopavila Date: Mon, 18 Nov 2024 16:29:36 -0300 Subject: [PATCH 1/2] Feat: Introduce zksync --- .env.example | 1 + hardhat.config.ts | 34 +- package.json | 8 +- tasks/deploy-mastercopies.ts | 69 ++- yarn.lock | 886 +++++++++++++++++++++++++++++++++-- 5 files changed, 939 insertions(+), 59 deletions(-) diff --git a/.env.example b/.env.example index db81f3f..0c45c3a 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 +ZKSYNC_EXPLORER_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 INFURA_KEY= PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 MNEMONIC= diff --git a/hardhat.config.ts b/hardhat.config.ts index b76c164..97e358a 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,6 +1,9 @@ import "@nomicfoundation/hardhat-toolbox" import "@nomicfoundation/hardhat-verify" import "@nomicfoundation/hardhat-ethers" +import "@matterlabs/hardhat-zksync-solc" +import "@matterlabs/hardhat-zksync-deploy" +import "@matterlabs/hardhat-zksync-verify" import "hardhat-contract-sizer" import "hardhat-gas-reporter" import "solidity-coverage" @@ -43,6 +46,21 @@ const config = { viaIR: true, }, }, + zksolc: { + version: "1.5.7", + compilerSource: "binary", + settings: { + optimizer: { + enabled: true, + runs: 10000, + }, + libraries: { + "contracts/MultisendEncoder.sol": { + "MultisendEncoder": "0x8D29A928a8932EbcC07D1Cd11409A966584A0467" + } + } + }, + }, sourcify: { enabled: true, }, @@ -65,6 +83,20 @@ const config = { url: `https://sepolia.infura.io/v3/${process.env.INFURA_KEY}`, tags: ["moduleMastercopy"], }, + zkSyncMainnet: { + url: "https://mainnet.era.zksync.io", + ethNetwork: "mainnet", + zksync: true, + accounts: sharedNetworkConfig.accounts, + verifyURL: "https://zksync2-mainnet-explorer.zksync.io/contract_verification", + }, + zkSyncSepoliaTestnet: { + url: "https://sepolia.era.zksync.dev", + ethNetwork: "sepolia", + zksync: true, + verifyURL: "https://explorer.sepolia.era.zksync.dev/contract_verification", + accounts: sharedNetworkConfig.accounts, + }, }, namedAccounts: { @@ -77,7 +109,7 @@ const config = { currency: "USD", }, etherscan: { - apiKey: process.env.ETHERSCAN_API_KEY, + apiKey: process.env.ETHERSCAN_API_KEY ?? process.env.ZKSYNC_EXPLORER_API_KEY, }, } diff --git a/package.json b/package.json index a1c7552..4a9e30c 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,8 @@ "devDependencies": { "@gnosis-guild/zodiac-core": "^2.0.4", "@gnosis.pm/safe-contracts": "^1.3.0", + "@matterlabs/hardhat-zksync-deploy": "^1.6.0", + "@matterlabs/hardhat-zksync-verify": "^1.7.0", "@nomicfoundation/hardhat-chai-matchers": "^2.0.7", "@nomicfoundation/hardhat-ethers": "^3.0.6", "@nomicfoundation/hardhat-ignition": "^0.15.5", @@ -73,11 +75,13 @@ "solidity-coverage": "^0.8.12", "ts-node": "^10.7.0", "typechain": "^8.1.1", - "typescript": "5.5.4" + "typescript": "5.5.4", + "zksync-ethers": "^6.11.2" }, "dependencies": { "@openzeppelin/contracts": "^4.5.0", "@openzeppelin/contracts-upgradeable": "4.9.3", - "hardhat-contract-sizer": "^2.6.1" + "hardhat-contract-sizer": "^2.6.1", + "zksync-web3": "^0.17.1" } } diff --git a/tasks/deploy-mastercopies.ts b/tasks/deploy-mastercopies.ts index 059497d..ec9a642 100644 --- a/tasks/deploy-mastercopies.ts +++ b/tasks/deploy-mastercopies.ts @@ -1,31 +1,58 @@ import { task } from "hardhat/config" - -import { readMastercopies, deployMastercopy } from "@gnosis-guild/zodiac-core" +import { deployMastercopy, readMastercopies } from "@gnosis-guild/zodiac-core" import { createEIP1193 } from "./create-EIP1193" +import { Deployer } from "@matterlabs/hardhat-zksync-deploy" +import { Wallet } from "zksync-ethers" +import { AbiCoder, BytesLike, ethers } from "ethers" + task( "deploy:mastercopies", "For every version entry on the artifacts file, deploys a mastercopy into the current network", ).setAction(async (_, hre) => { - const [signer] = await hre.ethers.getSigners() - const provider = createEIP1193(hre.network.provider, signer) - for (const mastercopy of readMastercopies()) { - const { contractName, contractVersion, factory, bytecode, constructorArgs, salt } = mastercopy - - const { address, noop } = await deployMastercopy({ - factory, - bytecode, - constructorArgs, - salt, - provider, - onStart: () => { - console.log(`⏳ ${contractName}@${contractVersion}: Deployment starting...`) - }, - }) - if (noop) { - console.log(`🔄 ${contractName}@${contractVersion}: Already deployed at ${address}`) - } else { - console.log(`🚀 ${contractName}@${contractVersion}: Successfully deployed at ${address}`) + const isZkSync = hre.network.config.zksync === true + + let deployer + + if (isZkSync) { + const zkWallet = new Wallet(process.env.PRIVATE_KEY!) + const deployerZkSync = new Deployer(hre, zkWallet) + + for (const mastercopy of readMastercopies()) { + const { contractName, contractVersion, constructorArgs } = mastercopy + + const artifact = await deployerZkSync.loadArtifact(contractName) + + const constructorArgsValues = constructorArgs?.values || [] + + console.log(`⏳ ${contractName}@${contractVersion}: Deployment starting...`) + + const deployedContract = await deployerZkSync.deploy(artifact, constructorArgsValues, "create2") + + console.log(`🚀 ${contractName}@${contractVersion}: Deployed at ${deployedContract.address}`) + } + } else { + const [signer] = await hre.ethers.getSigners() + const provider = createEIP1193(hre.network.provider, signer) + for (const mastercopy of readMastercopies()) { + const { contractName, contractVersion, factory, bytecode, constructorArgs, salt } = mastercopy + + const { address, noop } = await deployMastercopy({ + factory, + bytecode, + constructorArgs, + salt, + provider, + onStart: () => { + console.log(`⏳ ${contractName}@${contractVersion}: Deployment starting...`) + }, + }) + + if (noop) { + console.log(`🔄 ${contractName}@${contractVersion}: Already deployed at ${address}`) + } else { + console.log(`🚀 ${contractName}@${contractVersion}: Successfully deployed at ${address}`) + } } } }) diff --git a/yarn.lock b/yarn.lock index 74c82a7..acb0ba7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,6 +35,11 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@balena/dockerignore@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" + integrity sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -107,7 +112,7 @@ ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" -"@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -122,7 +127,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/abstract-provider@^5.7.0": +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== @@ -135,7 +140,7 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/web" "^5.7.0" -"@ethersproject/abstract-signer@^5.7.0": +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== @@ -157,7 +162,7 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/rlp" "^5.6.1" -"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== @@ -168,14 +173,22 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/rlp" "^5.7.0" -"@ethersproject/base64@^5.7.0": +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== dependencies: "@ethersproject/bytes" "^5.7.0" -"@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0": +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== @@ -184,21 +197,37 @@ "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0": +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/constants@^5.7.0": +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/hash@^5.7.0": +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -213,7 +242,44 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0": +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== @@ -221,26 +287,68 @@ "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0": +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@ethersproject/networks@^5.7.0": +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/properties@^5.7.0": +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0": +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== @@ -248,7 +356,16 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/signing-key@^5.7.0": +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== @@ -260,7 +377,19 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/strings@^5.7.0": +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -269,7 +398,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/transactions@^5.7.0": +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== @@ -284,7 +413,7 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/units@^5.7.0": +"@ethersproject/units@5.7.0", "@ethersproject/units@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== @@ -293,7 +422,28 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/web@^5.7.0": +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== @@ -304,6 +454,17 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@fastify/busboy@^2.0.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" @@ -365,6 +526,56 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@matterlabs/hardhat-zksync-deploy@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-deploy/-/hardhat-zksync-deploy-1.6.0.tgz#005a02dc63fe3d64e4892de485d7c72c75cc1f4a" + integrity sha512-yaOfhw7hmLOriBc+TnHrFOVKyi79XFqJN5D1Z4T6CadaSNLeq7pgBV81kkgVzaCJVoA/La2RGxPowsG7riZGbw== + dependencies: + "@matterlabs/hardhat-zksync-solc" "^1.2.5" + chai "^4.3.4" + chalk "^4.1.2" + fs-extra "^11.2.0" + glob "^10.4.1" + lodash "^4.17.21" + sinon "^18.0.0" + sinon-chai "^3.7.0" + ts-morph "^22.0.0" + +"@matterlabs/hardhat-zksync-solc@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-1.2.5.tgz#fbeeabc3fea0dd232fa3c8cb31bd93c103eba11a" + integrity sha512-iZyznWl1Hoe/Z46hnUe1s2drBZBjJOS/eN+Ql2lIBX9B6NevBl9DYzkKzH5HEIMCLGnX9sWpRAJqUQJWy9UB6w== + dependencies: + "@nomiclabs/hardhat-docker" "^2.0.2" + chai "^4.3.4" + chalk "^4.1.2" + debug "^4.3.5" + dockerode "^4.0.2" + fs-extra "^11.2.0" + proper-lockfile "^4.1.2" + semver "^7.6.2" + sinon "^18.0.0" + sinon-chai "^3.7.0" + undici "^6.18.2" + +"@matterlabs/hardhat-zksync-verify@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-verify/-/hardhat-zksync-verify-1.7.0.tgz#462a3bb015186e0de0eb68c95bf0bd360678b951" + integrity sha512-jQnrnE9uDfdP1KaG/GLs0J8+5efH97yRmNFzYuokT5qrSU0y6Ws6OFJmgDodB7hHnWOD6FSU9TebaFlAxxtFOA== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/address" "5.7.0" + "@matterlabs/hardhat-zksync-solc" "^1.2.5" + "@nomicfoundation/hardhat-verify" "^2.0.8" + axios "^1.7.2" + cbor "^9.0.2" + chai "^4.3.4" + chalk "^4.1.2" + debug "^4.3.5" + semver "^7.6.2" + sinon "^18.0.0" + sinon-chai "^3.7.0" + "@metamask/eth-sig-util@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -561,6 +772,21 @@ resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz#165b47f8a3d2bf668cc5d453ce7f496a1156948d" integrity sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ== +"@nomicfoundation/hardhat-verify@^2.0.8": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.12.tgz#480819a245a2db0b127e473c62079f7b4f16daa8" + integrity sha512-Lg3Nu7DCXASQRVI/YysjuAX2z8jwOCbS0w5tz2HalWGSTZThqA0v9N0v0psHbKNqzPJa8bNOeapIVSziyJTnAg== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + debug "^4.1.1" + lodash.clonedeep "^4.5.0" + picocolors "^1.1.0" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + "@nomicfoundation/hardhat-verify@^2.0.9": version "2.0.9" resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.9.tgz#98a1c9a3742b008be71a709d074f10dec23bc5f0" @@ -644,6 +870,15 @@ "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2" "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2" +"@nomiclabs/hardhat-docker@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-docker/-/hardhat-docker-2.0.2.tgz#ae964be17951275a55859ff7358e9e7c77448846" + integrity sha512-XgGEpRT3wlA1VslyB57zyAHV+oll8KnV1TjwnxxC1tpAL04/lbdwpdO5KxInVN8irMSepqFpsiSkqlcnvbE7Ng== + dependencies: + dockerode "^2.5.8" + fs-extra "^7.0.1" + node-fetch "^2.6.0" + "@openzeppelin/contracts-upgradeable@4.9.3": version "4.9.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz#ff17a80fb945f5102571f8efecb5ce5915cc4811" @@ -829,6 +1064,41 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^13.0.1": + version "13.0.5" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@sinonjs/samsam@^8.0.0": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" + integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== + dependencies: + "@sinonjs/commons" "^3.0.1" + lodash.get "^4.4.2" + type-detect "^4.1.0" + +"@sinonjs/text-encoding@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" + integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== + "@solidity-parser/parser@^0.18.0": version "0.18.0" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.18.0.tgz#8e77a02a09ecce957255a2f48c9a7178ec191908" @@ -841,6 +1111,16 @@ dependencies: defer-to-connect "^2.0.1" +"@ts-morph/common@~0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.23.0.tgz#bd4ddbd3f484f29476c8bd985491592ae5fc147e" + integrity sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA== + dependencies: + fast-glob "^3.3.2" + minimatch "^9.0.3" + mkdirp "^3.0.1" + path-browserify "^1.0.1" + "@tsconfig/node10@^1.0.7": version "1.0.11" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" @@ -1054,6 +1334,14 @@ "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" +JSONStream@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + integrity sha512-mn0KSip7N4e0UDPZHnqDsHECo5uGQrixQKnAskOM1BIB8hd7QKbd6il8IPRPudPHOeHiECoCFqhyMaRO9+nWyA== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -1091,6 +1379,11 @@ adm-zip@^0.4.16: resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + aes-js@4.0.0-beta.5: version "4.0.0-beta.5" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" @@ -1295,6 +1588,13 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +asn1@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -1341,6 +1641,15 @@ axios@^1.6.7: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.7.2: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1353,11 +1662,45 @@ base-x@^3.0.2: dependencies: safe-buffer "^5.0.1" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + binary-extensions@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" @@ -1457,6 +1800,24 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -1467,6 +1828,19 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buildcheck@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/buildcheck/-/buildcheck-0.0.6.tgz#89aa6e417cfd1e2196e3f8fe915eb709d2fe4238" + integrity sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -1518,7 +1892,7 @@ cbor@^8.1.0: dependencies: nofilter "^3.1.0" -cbor@^9.0.0: +cbor@^9.0.0, cbor@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb" integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ== @@ -1532,7 +1906,7 @@ chai-as-promised@^7.1.1: dependencies: check-error "^1.0.2" -chai@^4.3.6: +chai@^4.3.4, chai@^4.3.6: version "4.5.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== @@ -1589,6 +1963,11 @@ chokidar@^3.4.0, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^1.0.1, chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1630,6 +2009,11 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +code-block-writer@^13.0.1: + version "13.0.3" + resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-13.0.3.tgz#90f8a84763a5012da7af61319dd638655ae90b5b" + integrity sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1701,6 +2085,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concat-stream@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + config-chain@^1.1.11: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" @@ -1714,6 +2108,11 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cosmiconfig@^8.0.0: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" @@ -1724,6 +2123,14 @@ cosmiconfig@^8.0.0: parse-json "^5.2.0" path-type "^4.0.0" +cpu-features@~0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.10.tgz#9aae536db2710c7254d7ed67cb3cbc7d29ad79c5" + integrity sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA== + dependencies: + buildcheck "~0.0.6" + nan "^2.19.0" + create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -1805,7 +2212,7 @@ debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: dependencies: ms "2.1.2" -debug@^3.2.7: +debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -1898,6 +2305,44 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +docker-modem@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" + integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== + dependencies: + JSONStream "1.3.2" + debug "^3.2.6" + readable-stream "~1.0.26-4" + split-ca "^1.0.0" + +docker-modem@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-5.0.3.tgz#50c06f11285289f58112b5c4c4d89824541c41d0" + integrity sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg== + dependencies: + debug "^4.1.1" + readable-stream "^3.5.0" + split-ca "^1.0.1" + ssh2 "^1.15.0" + +dockerode@^2.5.8: + version "2.5.8" + resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" + integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== + dependencies: + concat-stream "~1.6.2" + docker-modem "^1.0.8" + tar-fs "~1.16.3" + +dockerode@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-4.0.2.tgz#dedc8529a1db3ac46d186f5912389899bc309f7d" + integrity sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w== + dependencies: + "@balena/dockerignore" "^1.0.2" + docker-modem "^5.0.3" + tar-fs "~2.0.1" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -1951,6 +2396,13 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + enquirer@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -2395,6 +2847,42 @@ ethers@^6.13.2, ethers@^6.7.0: tslib "2.4.0" ws "8.17.1" +ethers@~5.7.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -2429,7 +2917,7 @@ fast-diff@^1.1.2, fast-diff@^1.2.0: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.0.3, fast-glob@^3.2.9: +fast-glob@^3.0.3, fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -2560,6 +3048,11 @@ fp-ts@^1.0.0: resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -2569,6 +3062,15 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -2708,7 +3210,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.3.10: +glob@^10.3.10, glob@^10.4.1: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -2838,7 +3340,7 @@ graceful-fs@4.2.10: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3065,6 +3567,11 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.0.5, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -3106,7 +3613,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3295,11 +3802,21 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3397,11 +3914,21 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + jsonschema@^1.2.4, jsonschema@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== + keccak@^3.0.0, keccak@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" @@ -3481,6 +4008,11 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -3621,7 +4153,7 @@ minimatch@^5.0.1, minimatch@^5.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.4: +minimatch@^9.0.3, minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -3638,7 +4170,12 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp@0.5.x: +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@0.5.x, mkdirp@^0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -3650,6 +4187,11 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + mnemonist@^0.38.0: version "0.38.5" resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" @@ -3693,6 +4235,11 @@ ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nan@^2.19.0, nan@^2.20.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -3714,6 +4261,17 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +nise@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" + integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "^13.0.1" + "@sinonjs/text-encoding" "^0.7.3" + just-extend "^6.2.0" + path-to-regexp "^8.1.0" + node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" @@ -3726,6 +4284,13 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" +node-fetch@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-gyp-build@^4.2.0: version "4.8.2" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" @@ -3814,7 +4379,7 @@ obliterator@^2.0.0: resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== -once@1.x, once@^1.3.0: +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -3932,6 +4497,11 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -3965,6 +4535,11 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-to-regexp@^8.1.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" + integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -3991,6 +4566,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -4046,6 +4626,11 @@ prettier@^3.3.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -4054,6 +4639,15 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" +proper-lockfile@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== + dependencies: + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -4064,6 +4658,22 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -4106,7 +4716,7 @@ rc@1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -4115,6 +4725,29 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + 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@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -4223,6 +4856,11 @@ responselike@^3.0.0: dependencies: lowercase-keys "^3.0.0" +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -4265,6 +4903,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" @@ -4274,7 +4917,7 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -4299,7 +4942,7 @@ sc-istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" -scrypt-js@^3.0.0: +scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== @@ -4323,7 +4966,7 @@ semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.4, semver@^7.3.7, semver@^7.5.2, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: +semver@^7.3.4, semver@^7.3.7, semver@^7.5.2, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -4414,11 +5057,33 @@ side-channel@^1.0.4: get-intrinsic "^1.2.4" object-inspect "^1.13.1" +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + signal-exit@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +sinon-chai@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.7.0.tgz#cfb7dec1c50990ed18c153f1840721cf13139783" + integrity sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g== + +sinon@^18.0.0: + version "18.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" + integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -4530,6 +5195,11 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" +split-ca@^1.0.0, split-ca@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" + integrity sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ== + split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -4542,6 +5212,17 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +ssh2@^1.15.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.16.0.tgz#79221d40cbf4d03d07fe881149de0a9de928c9f0" + integrity sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg== + dependencies: + asn1 "^0.2.6" + bcrypt-pbkdf "^1.0.2" + optionalDependencies: + cpu-features "~0.0.10" + nan "^2.20.0" + stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -4612,6 +5293,18 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + 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.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -4662,7 +5355,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -4710,6 +5403,50 @@ table@^6.8.0, table@^6.8.1: string-width "^4.2.3" strip-ansi "^6.0.1" +tar-fs@~1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-fs@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.1.tgz#e44086c1c60d31a4f0cf893b1c4e155dabfae9e2" + integrity sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.0.0" + +tar-stream@^1.1.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar-stream@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4722,6 +5459,11 @@ through2@^4.0.0: dependencies: readable-stream "3" +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + tmp@0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4729,6 +5471,11 @@ tmp@0.0.33: dependencies: os-tmpdir "~1.0.2" +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -4741,6 +5488,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + ts-api-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" @@ -4761,6 +5513,14 @@ ts-essentials@^7.0.1: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== +ts-morph@^22.0.0: + version "22.0.0" + resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-22.0.0.tgz#5532c592fb6dddae08846f12c9ab0fc590b1d42e" + integrity sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw== + dependencies: + "@ts-morph/common" "~0.23.0" + code-block-writer "^13.0.1" + ts-node@^10.7.0: version "10.9.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" @@ -4815,6 +5575,11 @@ tweetnacl-util@^0.15.1: resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== +tweetnacl@^0.14.3: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" @@ -4834,6 +5599,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-detect@^4.0.0, type-detect@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" @@ -4914,6 +5684,11 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + typescript@5.5.4: version "5.5.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" @@ -4956,6 +5731,11 @@ undici@^5.14.0: dependencies: "@fastify/busboy" "^2.0.0" +undici@^6.18.2: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.0.tgz#4b3d3afaef984e07b48e7620c34ed8a285ed4cd4" + integrity sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw== + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -4983,7 +5763,7 @@ utf8@3.0.0: resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -5026,6 +5806,19 @@ web3-utils@^1.3.6: randombytes "^2.1.0" utf8 "3.0.0" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -5093,6 +5886,7 @@ workerpool@^6.5.1: integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + name wrap-ansi-cjs version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -5115,6 +5909,11 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + ws@8.13.0: version "8.13.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" @@ -5130,6 +5929,11 @@ ws@^7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -5172,3 +5976,15 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zksync-ethers@^6.11.2: + version "6.15.0" + resolved "https://registry.yarnpkg.com/zksync-ethers/-/zksync-ethers-6.15.0.tgz#50aad345be01f5425ca52d06e59836069e7d24d6" + integrity sha512-zafUxA/lysBO+9Wd6B3qNtDElsPwvAc2b4nBc/YiB4QY4H0pIBvV3/JqxHXXTppEo4gyHAX/+M5brW2qb4YnKA== + +zksync-web3@^0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.17.1.tgz#809c3b31295c29aae924ec2fe47f87701b539012" + integrity sha512-jMV4gfAQyehkIbNs81i4uvccHLe+XBu/tNPFb0Rm38pXccWY5VXzVE6XWS0dBiHlMfjdfUGn/sxwzJbWZDGYGQ== + dependencies: + ethers "~5.7.0" From 8fa5c207248359009f436f1e1a4e6010f517d9b8 Mon Sep 17 00:00:00 2001 From: juliopavila Date: Thu, 12 Dec 2024 09:28:14 -0300 Subject: [PATCH 2/2] feat: split zksync task --- .env.example | 1 - .gitignore | 4 ++ hardhat.config.ts | 33 ++++++++----- mastercopies.json | 35 ++++++++------ package.json | 3 +- tasks/deploy-mastercopies.ts | 67 ++++++++------------------ tasks/deploy-zksync.ts | 73 ++++++++++++++++++++++++++++ tasks/extract-mastercopy.ts | 14 +++++- yarn.lock | 92 +++++++++++++++++++++++++++--------- 9 files changed, 224 insertions(+), 98 deletions(-) create mode 100644 tasks/deploy-zksync.ts diff --git a/.env.example b/.env.example index 0c45c3a..db81f3f 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,4 @@ ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 -ZKSYNC_EXPLORER_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 INFURA_KEY= PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 MNEMONIC= diff --git a/.gitignore b/.gitignore index 40d8408..a6860d1 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,10 @@ cache artifacts deployments +cache-zk +artifacts-zk +deployments-zk + typechain-types yarn-error.log .DS_Store \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 97e358a..852199a 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,17 +1,18 @@ import "@nomicfoundation/hardhat-toolbox" import "@nomicfoundation/hardhat-verify" import "@nomicfoundation/hardhat-ethers" -import "@matterlabs/hardhat-zksync-solc" -import "@matterlabs/hardhat-zksync-deploy" -import "@matterlabs/hardhat-zksync-verify" import "hardhat-contract-sizer" import "hardhat-gas-reporter" import "solidity-coverage" import dotenv from "dotenv" import type { HttpNetworkUserConfig } from "hardhat/types" +import "@matterlabs/hardhat-zksync-solc" +import "@matterlabs/hardhat-zksync-deploy" +import "@matterlabs/hardhat-zksync-verify" dotenv.config() +import "./tasks/deploy-zksync" import "./tasks/deploy-mastercopies" import "./tasks/deploy-mastercopy" import "./tasks/extract-mastercopy" @@ -54,18 +55,18 @@ const config = { enabled: true, runs: 10000, }, - libraries: { - "contracts/MultisendEncoder.sol": { - "MultisendEncoder": "0x8D29A928a8932EbcC07D1Cd11409A966584A0467" - } - } + libraries: { // GENERATED BY hardhat deploy-zksync:libraries --network zkSyncSepoliaTestnet + "contracts/MultisendEncoder.sol": { + MultisendEncoder: "0xfdb2bC5e8d27c339C2aC34692A448d2C7dBF2388", + }, + }, }, }, sourcify: { enabled: true, }, networks: { - hardhat: { tags: ["moduleProxy"] }, + hardhat: { zksync: true }, mainnet: { ...sharedNetworkConfig, url: `https://mainnet.infura.io/v3/${process.env.INFURA_KEY}`, @@ -93,9 +94,9 @@ const config = { zkSyncSepoliaTestnet: { url: "https://sepolia.era.zksync.dev", ethNetwork: "sepolia", + accounts: sharedNetworkConfig.accounts, zksync: true, verifyURL: "https://explorer.sepolia.era.zksync.dev/contract_verification", - accounts: sharedNetworkConfig.accounts, }, }, @@ -109,7 +110,17 @@ const config = { currency: "USD", }, etherscan: { - apiKey: process.env.ETHERSCAN_API_KEY ?? process.env.ZKSYNC_EXPLORER_API_KEY, + apiKey: process.env.ETHERSCAN_API_KEY, + customChains: [ + { + network: "zkSyncSepoliaTestnet", + chainId: 300, + urls: { + apiURL: "https://explorer.sepolia.era.zksync.dev/contract_verification", + browserURL: "https://zksync2-testnet.zkscan.io/", + }, + }, + ], }, } diff --git a/mastercopies.json b/mastercopies.json index 06a0b22..3ddb3ea 100644 --- a/mastercopies.json +++ b/mastercopies.json @@ -912,8 +912,8 @@ "contractVersion": "1.1.0", "compilerVersion": "v0.8.20+commit.a1b79de6", "factory": "0xce0042b868300000d44a59004da54a005ffdcf9f", - "address": "0x9a73aE387eb97EF59765bd13ECF1E37f28515b70", - "bytecode": "0x608080604052346200094057620051a68038038091620000208285620009db565b83398101606082820312620009405781516001600160a01b0381169290839003620009405760208101516001600160401b0381116200094057826200006791830162000a24565b60408201519092906001600160401b03811162000940576200008a920162000a24565b60405160208101938452620000d881620000c9620000b5604083019660608852608084019062000a7f565b6060830195601f1984830301875262000a7f565b03601f198101835282620009db565b6000549360ff8560081c161594858096620009cd575b8015620009b4575b15620009585760ff1981166001176000558562000945575b50815182019060608360208401930312620009405751936001600160a01b03851685036200094057516001600160401b0381116200094057816020620001579285010162000a24565b9251916001600160401b038311620009405762000178920160200162000a24565b916200019760ff60005460081c16620001918162000aa6565b62000aa6565b81516001600160401b0381116200067357603654600181811c9116801562000935575b60208210146200065257601f8111620008dc575b50806020601f8211600114620008635760009162000857575b508160011b916000199060031b1c1916176036555b82516001600160401b0381116200067357603754600181811c911680156200084c575b60208210146200065257601f8111620007f7575b50806020601f82116001146200077e5760009162000772575b508160011b916000199060031b1c1916176037555b620002a460ff60005460081c16620002798162000aa6565b620002848162000aa6565b6200028f8162000aa6565b60ff1960975416609755620001918162000aa6565b620002af3362000b07565b60ff60005460081c16620002c38162000aa6565b6040805191908201906001600160401b038211838310176200067357620002fb9160405260018352603160f81b602084015262000aa6565b82516001600160401b038111620006735760fd54600181811c9116801562000767575b60208210146200065257601f81116200070e575b50806020601f8211600114620006955760009162000689575b508160011b916000199060031b1c19161760fd555b8051906001600160401b038211620006735760fe5490600182811c9216801562000668575b6020831014620006525781601f849311620005ee575b50602090601f8311600114620005745760009262000568575b50508160011b916000199060031b1c19161760fe555b600060fb55600060fc55620003e760ff60005460081c1662000aa6565b60c954336001600160a01b039091160362000524576001600160a01b03811615620004d0577f6d15b88a0390dbe7d4263c114754f248acc53091a1b64716c6e5c3f9b47e448a9162000461916200047b906200044c6001600160a01b03821662000b07565b60405193849360408552604085019062000a7f565b83810360208501526001600160a01b039091169562000a7f565b0390a262000494575b6040516145d5908162000b518239f35b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a162000484565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b015190503880620003b4565b60fe6000908152600080516020620051668339815191529350601f198516905b818110620005d55750908460019594939210620005bb575b505050811b0160fe55620003ca565b015160001960f88460031b161c19169055388080620005ac565b9293602060018192878601518155019501930162000594565b60fe60005290915060008051602062005166833981519152601f840160051c8101916020851062000647575b90601f859493920160051c01905b8181106200063757506200039b565b6000815584935060010162000628565b90915081906200061a565b634e487b7160e01b600052602260045260246000fd5b91607f169162000385565b634e487b7160e01b600052604160045260246000fd5b9050840151386200034b565b60fd6000908152925060008051602062005146833981519152905b601f1983168410620006f5576001935082601f19811610620006db575b5050811b0160fd5562000360565b86015160001960f88460031b161c191690553880620006cd565b86810151825560209384019360019092019101620006b0565b60fd60005260008051602062005146833981519152601f830160051c810191602084106200075c575b601f0160051c01905b8181106200074f575062000332565b6000815560010162000740565b909150819062000737565b90607f16906200031e565b9050840151386200024c565b60376000908152925060008051602062005186833981519152905b601f1983168410620007de576001935082601f19811610620007c4575b5050811b0160375562000261565b86015160001960f88460031b161c191690553880620007b6565b8681015182556020938401936001909201910162000799565b603760005260008051602062005186833981519152601f830160051c81016020841062000844575b601f830160051c820181106200083757505062000233565b600081556001016200081f565b50806200081f565b90607f16906200021f565b905083015138620001e7565b60366000908152925060008051602062005126833981519152905b601f1983168410620008c3576001935082601f19811610620008a9575b5050811b01603655620001fc565b85015160001960f88460031b161c1916905538806200089b565b858101518255602093840193600190920191016200087e565b603660005260008051602062005126833981519152601f830160051c810191602084106200092a575b601f0160051c01905b8181106200091d5750620001ce565b600081556001016200090e565b909150819062000905565b90607f1690620001ba565b600080fd5b61ffff191661010117600055386200010e565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015620000f65750600160ff821614620000f6565b50600160ff821610620000ee565b601f909101601f19168101906001600160401b038211908210176200067357604052565b60005b83811062000a135750506000910152565b818101518382015260200162000a02565b81601f82011215620009405780516001600160401b03811162000673576040519262000a5b601f8301601f191660200185620009db565b81845260208284010111620009405762000a7c9160208085019101620009ff565b90565b9060209162000a9a81518092818552858086019101620009ff565b601f01601f1916010190565b1562000aae57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60c980546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fe6080604052600436101561001257600080fd5b60003560e01c806306fdde0314610247578063095ea7b31461024257806318160ddd1461023d57806323b872dd14610238578063313ce567146102335780633644e5151461022e57806339509351146102295780633a46b1a8146102245780633f4ba83a1461021f57806340c10f191461021a57806342966c68146102155780634bf5d7e914610210578063587cde1e1461020b5780635c19a95c146102065780635c975abb146102015780636fcfff45146101fc57806370a08231146101f7578063715018a6146101f257806379cc6790146101ed5780637ecebe00146101e85780638456cb59146101e357806384b0196e146101de5780638da5cb5b146101d95780638e539e8c146101d457806391ddadf4146101cf57806395d89b41146101ca5780639ab24eb0146101c5578063a457c2d7146101c0578063a4f9edbf146101bb578063a9059cbb146101b6578063c3cda520146101b1578063d505accf146101ac578063dd62ed3e146101a7578063f1127ed8146101a25763f2fde38b1461019d57600080fd5b611de6565b611d1f565b611c82565b611ad6565b611932565b6118ca565b611839565b611628565b611578565b6114b3565b611469565b6112ee565b61129c565b6111c2565b61107d565b611013565b610ef7565b610e58565b610def565b610d77565b610d36565b610cf2565b610c86565b610b9d565b610a24565b6108a8565b6107b6565b610600565b610572565b610531565b6104f7565b610499565b61045d565b61040a565b6102c6565b60005b83811061025f5750506000910152565b818101518382015260200161024f565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936102ab8151809281875287808801910161024c565b0116010190565b9060206102c392818152019061026f565b90565b346103e7576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e457604051908060365461030781611fe7565b8085529160019180831690811561039c5750600114610341575b61033d85610331818703826117af565b604051918291826102b2565b0390f35b9250603683527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b85b8284106103845750505081016020016103318261033d610321565b80546020858701810191909152909301928101610369565b86955061033d969350602092506103319491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019293610321565b80fd5b600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116036103e757565b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757610452600435610448816103ec565b6024359033612491565b602060405160018152f35b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576020603554604051908152f35b346103e75760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576104526004356104d7816103ec565b6024356104e3816103ec565b604435916104f2833383612650565b61230d565b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757602060405160128152f35b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757602061056a613306565b604051908152f35b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576004356105ad816103ec565b3360005260346020526105e48160406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460243581018091116105fb576104529133612491565b6121ad565b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75760043561063b816103ec565b73ffffffffffffffffffffffffffffffffffffffff6024359161066f65ffffffffffff6106674361367b565b168410612815565b16600052610163602052604060002080549160008360058111610765575b50905b838210610710575050816106cb575050602060005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b61070461070b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602094019060005260206000200190565b5460201c90565b6106a5565b909261071c8185613467565b90818363ffffffff610742610738848960005260206000200190565b5463ffffffff1690565b161115610753575050925b90610690565b90945061076091506121dc565b61074d565b8061077561077b9296939661347c565b9061287a565b908263ffffffff610796610738858860005260206000200190565b1611156107a65750925b3861068d565b93506107b1906121dc565b6107a0565b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576107ed611ed2565b60975460ff81161561084a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166097557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576004356108e3816103ec565b6024356108ee611ed2565b73ffffffffffffffffffffffffffffffffffffffff82169182156109c65781610995916109c49461091d61432a565b61093161092c846035546121ea565b603555565b61095b8273ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b8054840190556040518381526000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3614394565b6109bf7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff603554111561446f565b612d77565b005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576004353315610b19576109c490610a6861432a565b80610a933373ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b54610aa0828210156144fa565b03610acb3373ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b55610ad98160355403603555565b60405181815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3610b1481336143ed565b612ef6565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7574365ffffffffffff610bdd4361367b565b1603610c285761033d604051610bf281611772565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c740000006020820152604051918291826102b2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152fd5b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576020600435610cc3816103ec565b73ffffffffffffffffffffffffffffffffffffffff809116600052610162825260406000205416604051908152f35b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576109c4600435610d30816103ec565b336128ec565b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757602060ff609754166040519015158152f35b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75773ffffffffffffffffffffffffffffffffffffffff600435610dc7816103ec565b166000526101636020526020610de1604060002054613712565b63ffffffff60405191168152f35b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75773ffffffffffffffffffffffffffffffffffffffff600435610e3f816103ec565b1660005260336020526020604060002054604051908152f35b346103e7576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e457610e90611ed2565b8073ffffffffffffffffffffffffffffffffffffffff60c9547fffffffffffffffffffffffff0000000000000000000000000000000000000000811660c955167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757600435610f32816103ec565b602435610f40813384612650565b73ffffffffffffffffffffffffffffffffffffffff8216918215610b195781610b149160006109c495610f7161432a565b83610f9c8473ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b54610fa9828210156144fa565b03610fd48473ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b55610fe28460355403603555565b6040518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a36143ed565b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75773ffffffffffffffffffffffffffffffffffffffff600435611063816103ec565b1660005261012f6020526020604060002054604051908152f35b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576110b4611ed2565b6110bc61432a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060975416176097557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b919361117673ffffffffffffffffffffffffffffffffffffffff92957f0f00000000000000000000000000000000000000000000000000000000000000855261116860209760e08988015260e087019061026f565b90858203604087015261026f565b936060840152166080820152600060a082015260c081830391015281808451928381520193019160005b8281106111ae575050505090565b8351855293810193928101926001016111a0565b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75760fb541580611292575b156112345761120861203a565b611210612114565b9061033d60405161122081611793565b600081526040519384933091469186611113565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060fc54156111fb565b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757602073ffffffffffffffffffffffffffffffffffffffff60c95416604051908152f35b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75760043561133b65ffffffffffff6113334361367b565b168210612815565b610164549060008260058111611401575b50905b82821061139d578280611369575060405160008152602090f35b61016460005260209061070b907f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3701610704565b90916113a98184613467565b610164600052908263ffffffff6113e17f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f388501610738565b1611156113f15750915b9061134f565b92506113fc906121dc565b6113eb565b806107756114119295939561347c565b610164600052908263ffffffff6114497f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f388501610738565b1611156114595750915b3861134c565b9250611464906121dc565b611453565b346103e75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75760206114a34361367b565b65ffffffffffff60405191168152f35b346103e7576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e45760405190806037546114f481611fe7565b8085529160019180831690811561039c575060011461151d5761033d85610331818703826117af565b9250603783527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae5b8284106115605750505081016020016103318261033d610321565b80546020858701810191909152909301928101611545565b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75773ffffffffffffffffffffffffffffffffffffffff6004356115c8816103ec565b166000526101636020526040600020805480156000146115f057505060405160008152602090f35b6020917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61161f9201906127ac565b5054811c6106a5565b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757600435611663816103ec565b6024359033600052603460205261169e8160406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54918083106116bf576116b392039033612491565b60405160018152602090f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761178e57604052565b611743565b6020810190811067ffffffffffffffff82111761178e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761178e57604052565b604051906117fd82611772565b565b67ffffffffffffffff811161178e57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75760043567ffffffffffffffff81116103e757366023820112156103e7578060040135611893816117ff565b906118a160405192836117af565b80825236602482850101116103e75760208160009260246109c4960183860137830101526137a7565b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757610452600435611908816103ec565b602435903361230d565b6064359060ff821682036103e757565b6084359060ff821682036103e757565b346103e75760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e75760043561196d816103ec565b6044359060243561197c611912565b92804211611a7857611a38611a73916109c49560405190611a20826119f46020820195898b8860609194939273ffffffffffffffffffffffffffffffffffffffff60808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018452836117af565b611a3360a435936084359351902061337c565b613091565b91611a6d8373ffffffffffffffffffffffffffffffffffffffff1660005261012f602052604060002090815491600183019055565b14612887565b6128ec565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152fd5b346103e75760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757600435611b11816103ec565b602435611b1d816103ec565b6044359060643592611b2d611922565b93804211611c2457611bff611c1f916119f46109c497611bec611b7a8773ffffffffffffffffffffffffffffffffffffffff1660005261012f602052604060002090815491600183019055565b9360405193849160208301968c8c8c8a91959493909260a09360c08401977f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9855273ffffffffffffffffffffffffffffffffffffffff8092166020860152166040840152606083015260808201520152565b611a3360c4359360a4359351902061337c565b73ffffffffffffffffffffffffffffffffffffffff808416911614612747565b612491565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e7576020611d16600435611cc2816103ec565b73ffffffffffffffffffffffffffffffffffffffff60243591611ce4836103ec565b166000526034835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b346103e75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757600435611d5a816103ec565b63ffffffff60243581811681036103e7576020611dd4611dce7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9373ffffffffffffffffffffffffffffffffffffffff6040976000868a51611db781611772565b8281520152166000526101638452866000206127ac565b506127f3565b84519381511684520151166020820152f35b346103e75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103e757600435611e21816103ec565b611e29611ed2565b73ffffffffffffffffffffffffffffffffffffffff811615611e4e576109c490611f7a565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff60c954163303611ef357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b611f59611ed2565b73ffffffffffffffffffffffffffffffffffffffff811615611e4e576117fd905b60c9549073ffffffffffffffffffffffffffffffffffffffff80911691827fffffffffffffffffffffffff000000000000000000000000000000000000000082161760c955167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b90600182811c92168015612030575b602083101461200157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611ff6565b6040519060008260fd549161204e83611fe7565b808352926001908181169081156120d45750600114612075575b506117fd925003836117af565b60fd600090815291507f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca2805b8483106120b957506117fd935050810160200138612068565b81935090816020925483858a010152019101909185926120a0565b602093506117fd9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138612068565b6040519060008260fe549161212883611fe7565b808352926001908181169081156120d4575060011461214e57506117fd925003836117af565b60fe600090815291507f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a5b84831061219257506117fd935050810160200138612068565b81935090816020925483858a01015201910190918592612179565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90600182018092116105fb57565b919082018092116105fb57565b156121fe57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b1561228957565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b919073ffffffffffffffffffffffffffffffffffffffff92838116801561240d576117fd948316906123408215156121f7565b61234861432a565b846123738473ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b5461238082821015612282565b036123ab8473ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b556123d68473ffffffffffffffffffffffffffffffffffffffff166000526033602052604060002090565b8054860190556040518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a361442d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff918281169283156125cd57821693841561254957806125337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259461250e6125449573ffffffffffffffffffffffffffffffffffffffff166000526034602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b556040519081529081906020820190565b0390a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff8216600052603460205261269e8160406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84036126ce575b50505050565b8084106126e9576126e0930391612491565b388080806126c8565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b1561274e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b80548210156127c45760005260206000200190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060405161280081611772565b602081935463ffffffff81168352811c910152565b1561281c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152fd5b919082039182116105fb57565b1561288e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152fd5b6117fd917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f73ffffffffffffffffffffffffffffffffffffffff80931692600084815261016294856020528260408320541693849260336020526040812054976020526040812094871694857fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580a45b919073ffffffffffffffffffffffffffffffffffffffff80821693168381141580612c52575b6129b25750505050565b80612a33575b50826129c5575b806126c8565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72491612a15612a1a9273ffffffffffffffffffffffffffffffffffffffff16600052610163602052604060002090565b612f85565b60408051928352602083019190915290a23880806129bf565b806000526101636020527fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7246040600020805480159182600014612c1157612a786117f0565b6000815260006020820152915b612ad2612ab160208501517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b92612add8985614585565b94159081612bee575b5015612b7757612b2c612b61927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b1d876135ce565b93019060005260206000200190565b9063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b604080519182526020820192909252a2386129b8565b50612be990612b9b612b96612b8b4361367b565b65ffffffffffff1690565b613712565b90612be4612ba8866135ce565b612bbf612bb36117f0565b63ffffffff9095168552565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020840152565b612ce4565b612b61565b5163ffffffff16905063ffffffff612c08612b8b4361367b565b91161438612ae6565b612c4c612c477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018360005260206000200190565b6127f3565b91612a85565b508215156129a8565b6101649081546801000000000000000081101561178e57600181018084558110156127c457600092909252805160209182015190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff91909116177f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3890910155565b80546801000000000000000081101561178e57612d06916001820181556127ac565b612d4857815160209283015190921b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b6101645490918115918215612ec057612d8e6117f0565b60008152600060208201525b612dd0612dc9612ab160208401517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9586614592565b93159081612e9d575b5015612e3d576117fd90612b2c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e10866135ce565b92016101646000527f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f380190565b506117fd612e50612b96612b8b4361367b565b612e98612e5c856135ce565b612e73612e676117f0565b63ffffffff9094168452565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020830152565b612c5b565b5163ffffffff16905063ffffffff612eb7612b8b4361367b565b91161438612dd9565b610164600052612ef17f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3782016127f3565b612d9a565b6101645490918115918215612f4f57612f0d6117f0565b60008152600060208201525b612dd0612f48612ab160208401517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9586614585565b610164600052612f807f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3782016127f3565b612f19565b90918154918215928360001461305657612f9d6117f0565b60008152600060208201525b612fdf612fd8612ab160208401517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9687614592565b94159081613033575b501561301f57612b2c6117fd927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b1d876135ce565b506117fd90612b9b612b96612b8b4361367b565b5163ffffffff16905063ffffffff61304d612b8b4361367b565b91161438612fe8565b61308c612c477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83018460005260206000200190565b612fa9565b916102c393916130a09361326a565b9190916130e1565b600511156130b257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6130ea816130a8565b806130f25750565b6130fb816130a8565b60018103613162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b61316b816130a8565b600281036131d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806131de6003926130a8565b146131e557565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116132fa5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156132ed57815173ffffffffffffffffffffffffffffffffffffffff8116156132e7579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b61330e6133bd565b613316613408565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff82111761178e5760405251902090565b604290613387613306565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b6133c561203a565b80519081156133d5576020012090565b505060fb5480156133e35790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b613410612114565b8051908115613420576020012090565b505060fc5480156133e35790565b8115613438570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90808216911860011c81018091116105fb5790565b80156135b6578061354f61354861353e61353461352a61352061351661350c60016102c39a6000908b60801c806135aa575b508060401c8061359d575b508060201c80613590575b508060101c80613583575b508060081c80613576575b508060041c80613569575b508060021c8061355c575b50821c613555575b811c1b613505818b61342e565b0160011c90565b613505818a61342e565b613505818961342e565b613505818861342e565b613505818761342e565b613505818661342e565b613505818561342e565b809261342e565b906135bc565b81016134f8565b60029150910190386134f0565b60049150910190386134e5565b60089150910190386134da565b60109150910190386134cf565b60209150910190386134c4565b60409150910190386134b9565b915050608090386134ae565b50600090565b90808210156135c9575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908181116135f7571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff9081811161368e571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff90818111613723571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b6000549060ff8260081c161580928193613943575b8115613923575b501561389f5761380790826137fe60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b613869576139b8565b61380d57565b61383a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61389a6101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b6139b8565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b15915081613935575b50386137c3565b6001915060ff16143861392e565b600160ff82161091506137bc565b81601f820112156103e7578051613967816117ff565b9261397560405194856117af565b818452602082840101116103e7576102c3916020808501910161024c565b90916139aa6102c39360408452604084019061026f565b91602081840391015261026f565b80518101606082602083019203126103e75760208201516139d8816103ec565b60408301519267ffffffffffffffff938481116103e7578360206139fe92840101613951565b9360608201519081116103e7577f6d15b88a0390dbe7d4263c114754f248acc53091a1b64716c6e5c3f9b47e448a936020613a509273ffffffffffffffffffffffffffffffffffffffff940101613951565b911692613a5d8282613b90565b613a65614143565b613a6d613b51565b613a75613b2e565b613a7e81614154565b613a86614143565b613a8f84611f51565b613a9e60405192839283613993565b0390a2565b15613aaa57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b613b4860ff60005460081c16613b4381613aa3565b613aa3565b6117fd33611f7a565b613b6660ff60005460081c16613b4381613aa3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060975416609755565b90613ba660ff60005460081c16613b4381613aa3565b815167ffffffffffffffff811161178e57613bcb81613bc6603654611fe7565b613cf9565b602080601f8311600114613c2a575081906117fd94600092613c1f575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617603655613ebd565b015190503880613be8565b9192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416613c7c60366000527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890565b936000905b828210613ce15750509160019391856117fd97969410613caa575b505050811b01603655613ebd565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080613c9c565b80600186978294978701518155019601940190613c81565b601f8111613d05575050565b600090603682527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b8906020601f850160051c83019410613d60575b601f0160051c01915b828110613d5557505050565b818155600101613d49565b9092508290613d40565b601f8111613d76575050565b60009060fd82527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca280906020601f850160051c83019410613dd1575b601f0160051c01915b828110613dc657505050565b818155600101613dba565b9092508290613db1565b601f8111613de7575050565b600090603782527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae906020601f850160051c83019410613e42575b601f0160051c01915b828110613e3757505050565b818155600101613e2b565b9092508290613e22565b601f8111613e58575050565b60009060fe82527f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a906020601f850160051c83019410613eb3575b601f0160051c01915b828110613ea857505050565b818155600101613e9c565b9092508290613e93565b90815167ffffffffffffffff811161178e57613ee381613ede603754611fe7565b613ddb565b602080601f8311600114613f3c5750819293600092613f31575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617603755565b015190503880613efd565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831694613f8d60376000527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae90565b926000905b878210613fe8575050836001959610613fb1575b505050811b01603755565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080613fa6565b80600185968294968601518155019501930190613f92565b90815167ffffffffffffffff811161178e576140268161402160fe54611fe7565b613e4c565b602080601f831160011461407f5750819293600092614074575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161760fe55565b015190503880614040565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316946140d060fe6000527f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a90565b926000905b87821061412b5750508360019596106140f4575b505050811b0160fe55565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690553880806140e9565b806001859682949686015181550195019301906140d5565b6117fd60ff60005460081c16613aa3565b9060ff60005460081c1661416781613aa3565b6040519061417482611772565b60018083526141a96020927f310000000000000000000000000000000000000000000000000000000000000084860152613aa3565b84519167ffffffffffffffff831161178e576141cf836141ca60fd54611fe7565b613d6a565b80601f841160011461426157508280916142229697600093614236575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91921b9260031b1c19161760fd55614000565b61422c600060fb55565b6117fd600060fc55565b015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff386141ec565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084939416966142b460fd6000527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca28090565b926000905b898210614313575050836142229798106142dc575b505050811b0160fd55614000565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690553880806142ce565b8087859682949686015181550195019301906142b9565b60ff6097541661433657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b6101626020527fd3963e8e1761c638694d3c60d54f123240f3fe953a68debc0fa797faeeb01d0f5473ffffffffffffffffffffffffffffffffffffffff918216600090815260409020546117fd93929081169116612982565b906117fd9173ffffffffffffffffffffffffffffffffffffffff809116600052610162602052806040600020541690600080526040600020541690612982565b906117fd929173ffffffffffffffffffffffffffffffffffffffff80911660005261016260205280806040600020541692166000526040600020541690612982565b1561447657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152fd5b1561450157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b9081039081116105fb5790565b9081018091116105fb579056fea264697066735822122011678dad96b13b75d248ca2197fc204ca80d74a3cad7b4857a07ad64c2d2f1e264736f6c634300081400334a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b89346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca28054075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae", + "address": "0x7Ce7f1DBB328376e6A308e51a4BA5Efb8C9f5F5C", + "bytecode": "0x6080806040523462000940576200446e8038038091620000208285620009db565b83398101606082820312620009405781516001600160a01b0381169290839003620009405760208101516001600160401b0381116200094057826200006791830162000a24565b60408201519092906001600160401b03811162000940576200008a920162000a24565b60405160208101938452620000d881620000c9620000b5604083019660608852608084019062000a7f565b6060830195601f1984830301875262000a7f565b03601f198101835282620009db565b6000549360ff8560081c161594858096620009cd575b8015620009b4575b15620009585760ff1981166001176000558562000945575b50815182019060608360208401930312620009405751936001600160a01b03851685036200094057516001600160401b0381116200094057816020620001579285010162000a24565b9251916001600160401b038311620009405762000178920160200162000a24565b916200019760ff60005460081c16620001918162000aa6565b62000aa6565b81516001600160401b0381116200067357603654600181811c9116801562000935575b60208210146200065257601f8111620008dc575b50806020601f8211600114620008635760009162000857575b508160011b916000199060031b1c1916176036555b82516001600160401b0381116200067357603754600181811c911680156200084c575b60208210146200065257601f8111620007f7575b50806020601f82116001146200077e5760009162000772575b508160011b916000199060031b1c1916176037555b620002a460ff60005460081c16620002798162000aa6565b620002848162000aa6565b6200028f8162000aa6565b60ff1960975416609755620001918162000aa6565b620002af3362000b07565b60ff60005460081c16620002c38162000aa6565b6040805191908201906001600160401b038211838310176200067357620002fb9160405260018352603160f81b602084015262000aa6565b82516001600160401b038111620006735760fd54600181811c9116801562000767575b60208210146200065257601f81116200070e575b50806020601f8211600114620006955760009162000689575b508160011b916000199060031b1c19161760fd555b8051906001600160401b038211620006735760fe5490600182811c9216801562000668575b6020831014620006525781601f849311620005ee575b50602090601f8311600114620005745760009262000568575b50508160011b916000199060031b1c19161760fe555b600060fb55600060fc55620003e760ff60005460081c1662000aa6565b60c954336001600160a01b039091160362000524576001600160a01b03811615620004d0577f6d15b88a0390dbe7d4263c114754f248acc53091a1b64716c6e5c3f9b47e448a9162000461916200047b906200044c6001600160a01b03821662000b07565b60405193849360408552604085019062000a7f565b83810360208501526001600160a01b039091169562000a7f565b0390a262000494575b60405161389d908162000b518239f35b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a162000484565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b015190503880620003b4565b60fe60009081526000805160206200442e8339815191529350601f198516905b818110620005d55750908460019594939210620005bb575b505050811b0160fe55620003ca565b015160001960f88460031b161c19169055388080620005ac565b9293602060018192878601518155019501930162000594565b60fe6000529091506000805160206200442e833981519152601f840160051c8101916020851062000647575b90601f859493920160051c01905b8181106200063757506200039b565b6000815584935060010162000628565b90915081906200061a565b634e487b7160e01b600052602260045260246000fd5b91607f169162000385565b634e487b7160e01b600052604160045260246000fd5b9050840151386200034b565b60fd600090815292506000805160206200440e833981519152905b601f1983168410620006f5576001935082601f19811610620006db575b5050811b0160fd5562000360565b86015160001960f88460031b161c191690553880620006cd565b86810151825560209384019360019092019101620006b0565b60fd6000526000805160206200440e833981519152601f830160051c810191602084106200075c575b601f0160051c01905b8181106200074f575062000332565b6000815560010162000740565b909150819062000737565b90607f16906200031e565b9050840151386200024c565b6037600090815292506000805160206200444e833981519152905b601f1983168410620007de576001935082601f19811610620007c4575b5050811b0160375562000261565b86015160001960f88460031b161c191690553880620007b6565b8681015182556020938401936001909201910162000799565b60376000526000805160206200444e833981519152601f830160051c81016020841062000844575b601f830160051c820181106200083757505062000233565b600081556001016200081f565b50806200081f565b90607f16906200021f565b905083015138620001e7565b603660009081529250600080516020620043ee833981519152905b601f1983168410620008c3576001935082601f19811610620008a9575b5050811b01603655620001fc565b85015160001960f88460031b161c1916905538806200089b565b858101518255602093840193600190920191016200087e565b6036600052600080516020620043ee833981519152601f830160051c810191602084106200092a575b601f0160051c01905b8181106200091d5750620001ce565b600081556001016200090e565b909150819062000905565b90607f1690620001ba565b600080fd5b61ffff191661010117600055386200010e565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015620000f65750600160ff821614620000f6565b50600160ff821610620000ee565b601f909101601f19168101906001600160401b038211908210176200067357604052565b60005b83811062000a135750506000910152565b818101518382015260200162000a02565b81601f82011215620009405780516001600160401b03811162000673576040519262000a5b601f8301601f191660200185620009db565b81845260208284010111620009405762000a7c9160208085019101620009ff565b90565b9060209162000a9a81518092818552858086019101620009ff565b601f01601f1916010190565b1562000aae57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60c980546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fe6080604052600436101561001257600080fd5b60003560e01c806306fdde0314610247578063095ea7b31461024257806318160ddd1461023d57806323b872dd14610238578063313ce567146102335780633644e5151461022e57806339509351146102295780633a46b1a8146102245780633f4ba83a1461021f57806340c10f191461021a57806342966c68146102155780634bf5d7e914610210578063587cde1e1461020b5780635c19a95c146102065780635c975abb146102015780636fcfff45146101fc57806370a08231146101f7578063715018a6146101f257806379cc6790146101ed5780637ecebe00146101e85780638456cb59146101e357806384b0196e146101de5780638da5cb5b146101d95780638e539e8c146101d457806391ddadf4146101cf57806395d89b41146101ca5780639ab24eb0146101c5578063a457c2d7146101c0578063a4f9edbf146101bb578063a9059cbb146101b6578063c3cda520146101b1578063d505accf146101ac578063dd62ed3e146101a7578063f1127ed8146101a25763f2fde38b1461019d57600080fd5b6116ad565b611611565b6115ac565b61145f565b61132b565b6112e1565b61126e565b6110de565b611077565b610fd0565b610fa4565b610e47565b610e20565b610d7e565b610c82565b610c43565b610b6c565b610af8565b610aba565b610a6d565b610a4a565b610a24565b6109e3565b610932565b61080b565b6106e1565b610645565b6104d8565b610475565b610452565b610436565b6103f6565b6103d8565b6103a3565b6102a8565b60005b83811061025f5750506000910152565b818101518382015260200161024f565b90601f19601f60209361028d8151809281875287808801910161024c565b0116010190565b9060206102a592818152019061026f565b90565b3461038d5760008060031936011261038a5760405190806036546102cb81611828565b808552916001918083169081156103605750600114610305575b610301856102f581870382611220565b60405191829182610294565b0390f35b9250603683527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b85b8284106103485750505081016020016102f5826103016102e5565b8054602085870181019190915290930192810161032d565b869550610301969350602092506102f594915060ff191682840152151560051b82010192936102e5565b80fd5b600080fd5b6001600160a01b0381160361038d57565b3461038d57604060031936011261038d576103cd6004356103c381610392565b6024359033611c32565b602060405160018152f35b3461038d57600060031936011261038d576020603554604051908152f35b3461038d57606060031936011261038d576103cd60043561041681610392565b60243561042281610392565b60443591610431833383611d96565b611afc565b3461038d57600060031936011261038d57602060405160128152f35b3461038d57600060031936011261038d57602061046d612894565b604051908152f35b3461038d57604060031936011261038d5760043561049281610392565b3360005260346020526104bc816040600020906001600160a01b0316600052602052604060002090565b5460243581018091116104d3576103cd9133611c32565b6119d0565b3461038d57604060031936011261038d576004356104f581610392565b6001600160a01b036024359161051c65ffffffffffff61051443612bef565b168410611eef565b166000526101636020526040600020805491600083600581116105f4575b50905b83821061059f57505081610578575050602060005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b61059361059a91600019602094019060005260206000200190565b5460201c90565b610552565b90926105ab81856129f5565b90818363ffffffff6105d16105c7848960005260206000200190565b5463ffffffff1690565b1611156105e2575050925b9061053d565b9094506105ef91506119ff565b6105dc565b8061060461060a92969396612a0a565b90611f3a565b908263ffffffff6106256105c7858860005260206000200190565b1611156106355750925b3861053a565b9350610640906119ff565b61062f565b3461038d57600060031936011261038d5761065e611754565b60975460ff81161561069d5760ff19166097557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b606460405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b3461038d57604060031936011261038d576004356106fe81610392565b602435610709611754565b6001600160a01b0382169182156107c75781610796916107c59461072b613667565b61073f61073a84603554611a0d565b603555565b61075c826001600160a01b03166000526033602052604060002090565b8054840190556040518381526000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a36136b7565b6107c07bffffffffffffffffffffffffffffffffffffffffffffffffffffffff603554111561376b565b6123ba565b005b606460405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b3461038d57602060031936011261038d5760043533156108c8576107c590610831613667565b8061084f336001600160a01b03166000526033602052604060002090565b5461085c828210156137dc565b0361087a336001600160a01b03166000526033602052604060002090565b556108888160355403603555565b60405181815260009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a36108c38133613703565b61251b565b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b3461038d57600060031936011261038d574365ffffffffffff61095443612bef565b160361099f57610301604051610969816111e3565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015260405191829182610294565b606460405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152fd5b3461038d57602060031936011261038d576020600435610a0281610392565b6001600160a01b03809116600052610162825260406000205416604051908152f35b3461038d57602060031936011261038d576107c5600435610a4481610392565b33611f92565b3461038d57600060031936011261038d57602060ff609754166040519015158152f35b3461038d57602060031936011261038d576001600160a01b03600435610a9281610392565b166000526101636020526020610aac604060002054612c6c565b63ffffffff60405191168152f35b3461038d57602060031936011261038d576001600160a01b03600435610adf81610392565b1660005260336020526020604060002054604051908152f35b3461038d5760008060031936011261038a57610b12611754565b806001600160a01b0360c9547fffffffffffffffffffffffff0000000000000000000000000000000000000000811660c955167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461038d57604060031936011261038d57600435610b8981610392565b602435610b97813384611d96565b6001600160a01b0382169182156108c857816108c39160006107c595610bbb613667565b83610bd9846001600160a01b03166000526033602052604060002090565b54610be6828210156137dc565b03610c04846001600160a01b03166000526033602052604060002090565b55610c128460355403603555565b6040518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3613703565b3461038d57602060031936011261038d576001600160a01b03600435610c6881610392565b1660005261012f6020526020604060002054604051908152f35b3461038d57600060031936011261038d57610c9b611754565b610ca3613667565b600160ff1960975416176097557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b9193610d326001600160a01b0392957f0f000000000000000000000000000000000000000000000000000000000000008552610d2460209760e08988015260e087019061026f565b90858203604087015261026f565b936060840152166080820152600060a082015260c081830391015281808451928381520193019160005b828110610d6a575050505090565b835185529381019392810192600101610d5c565b3461038d57600060031936011261038d5760fb541580610e16575b15610dd257610da661187b565b610dae611937565b90610301604051610dbe81611204565b600081526040519384933091469186610cdc565b606460405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060fc5415610d99565b3461038d57600060031936011261038d5760206001600160a01b0360c95416604051908152f35b3461038d57602060031936011261038d57600435610e7665ffffffffffff610e6e43612bef565b168210611eef565b610164549060008260058111610f3c575b50905b828210610ed8578280610ea4575060405160008152602090f35b61016460005260209061059a907f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3701610593565b9091610ee481846129f5565b610164600052908263ffffffff610f1c7f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3885016105c7565b161115610f2c5750915b90610e8a565b9250610f37906119ff565b610f26565b80610604610f4c92959395612a0a565b610164600052908263ffffffff610f847f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3885016105c7565b161115610f945750915b38610e87565b9250610f9f906119ff565b610f8e565b3461038d57600060031936011261038d576020610fc043612bef565b65ffffffffffff60405191168152f35b3461038d5760008060031936011261038a576040519080603754610ff381611828565b80855291600191808316908115610360575060011461101c57610301856102f581870382611220565b9250603783527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae5b82841061105f5750505081016020016102f5826103016102e5565b80546020858701810191909152909301928101611044565b3461038d57602060031936011261038d576001600160a01b0360043561109c81610392565b166000526101636020526040600020805480156000146110c457505060405160008152602090f35b6020916000196110d5920190611e86565b5054811c610552565b3461038d57604060031936011261038d576004356110fb81610392565b60243590336000526034602052611129816040600020906001600160a01b0316600052602052604060002090565b549180831061114a5761113e92039033611c32565b60405160018152602090f35b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176111ff57604052565b6111b4565b6020810190811067ffffffffffffffff8211176111ff57604052565b90601f601f19910116810190811067ffffffffffffffff8211176111ff57604052565b60405190611250826111e3565b565b67ffffffffffffffff81116111ff57601f01601f191660200190565b3461038d57602060031936011261038d5760043567ffffffffffffffff811161038d573660238201121561038d5780600401356112aa81611252565b906112b86040519283611220565b808252366024828501011161038d5760208160009260246107c596018386013783010152612ce7565b3461038d57604060031936011261038d576103cd60043561130181610392565b6024359033611afc565b6064359060ff8216820361038d57565b6084359060ff8216820361038d57565b3461038d5760c060031936011261038d5760043561134881610392565b6044359060243561135761130b565b9280421161141b576113e8611416916107c595604051906113d0826113c26020820195898b886060919493926001600160a01b0360808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b03601f198101845283611220565b6113e360a435936084359351902061290a565b61267a565b91611410836001600160a01b031660005261012f602052604060002090815491600183019055565b14611f47565b611f92565b606460405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152fd5b3461038d5760e060031936011261038d5760043561147c81610392565b60243561148881610392565b604435906064359261149861131b565b9380421161156857611550611563916113c26107c59761153d6114d8876001600160a01b031660005261012f602052604060002090815491600183019055565b9360405193849160208301968c8c8c8a91959493909260a09360c08401977f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985526001600160a01b038092166020860152166040840152606083015260808201520152565b6113e360c4359360a4359351902061290a565b6001600160a01b03808416911614611e3b565b611c32565b606460405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b3461038d57604060031936011261038d5760206116086004356115ce81610392565b6001600160a01b03602435916115e383610392565b16600052603483526040600020906001600160a01b0316600052602052604060002090565b54604051908152f35b3461038d57604060031936011261038d5760043561162e81610392565b63ffffffff602435818116810361038d57602061169b6116957bffffffffffffffffffffffffffffffffffffffffffffffffffffffff936001600160a01b036040976000868a5161167e816111e3565b828152015216600052610163845286600020611e86565b50611ecd565b84519381511684520151166020820152f35b3461038d57602060031936011261038d576004356116ca81610392565b6116d2611754565b6001600160a01b038116156116ea576107c5906117c8565b608460405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0360c95416330361176857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6117b4611754565b6001600160a01b038116156116ea57611250905b60c954906001600160a01b0380911691827fffffffffffffffffffffffff000000000000000000000000000000000000000082161760c955167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b90600182811c92168015611871575b602083101461184257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611837565b6040519060008260fd549161188f83611828565b8083529260019081811690811561191557506001146118b6575b5061125092500383611220565b60fd600090815291507f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca2805b8483106118fa57506112509350508101602001386118a9565b81935090816020925483858a010152019101909185926118e1565b6020935061125095925060ff1991501682840152151560051b820101386118a9565b6040519060008260fe549161194b83611828565b808352926001908181169081156119155750600114611971575061125092500383611220565b60fe600090815291507f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a5b8483106119b557506112509350508101602001386118a9565b81935090816020925483858a0101520191019091859261199c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90600182018092116104d357565b919082018092116104d357565b15611a2157565b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b15611a9257565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b91906001600160a01b03928381168015611bc85761125094831690611b22821515611a1a565b611b2a613667565b84611b48846001600160a01b03166000526033602052604060002090565b54611b5582821015611a8b565b03611b73846001600160a01b03166000526033602052604060002090565b55611b91846001600160a01b03166000526033602052604060002090565b8054860190556040518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3613736565b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b906001600160a01b0391828116928315611d2d578216938415611cc35780611cad7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594611c95611cbe956001600160a01b03166000526034602052604060002090565b906001600160a01b0316600052602052604060002090565b556040519081529081906020820190565b0390a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b906001600160a01b0382166000526034602052611dca816040600020906001600160a01b0316600052602052604060002090565b54926000198403611ddc575b50505050565b808410611df757611dee930391611c32565b38808080611dd6565b606460405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b15611e4257565b606460405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8054821015611e9e5760005260206000200190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90604051611eda816111e3565b602081935463ffffffff81168352811c910152565b15611ef657565b606460405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152fd5b919082039182116104d357565b15611f4e57565b606460405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152fd5b611250917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f6001600160a01b0380931692600084815261016294856020528260408320541693849260336020526040812054976020526040812094871694857fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580a45b91906001600160a01b0380821693168381141580612295575b61203e5750505050565b806120b2575b5082612051575b80611dd6565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72491612094612099926001600160a01b0316600052610163602052604060002090565b6125aa565b60408051928352602083019190915290a238808061204b565b806000526101636020527fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7246040600020805480159182600014612272576120f7611243565b6000815260006020820152915b61215161213060208501517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9261215c898561384d565b9415908161224f575b50156121d85761218d6121c29260001961217e87612b5c565b93019060005260206000200190565b9063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b604080519182526020820192909252a238612044565b5061224a906121fc6121f76121ec43612bef565b65ffffffffffff1690565b612c6c565b9061224561220986612b5c565b612220612214611243565b63ffffffff9095168552565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020840152565b612327565b6121c2565b5163ffffffff16905063ffffffff6122696121ec43612bef565b91161438612165565b61228f61228a60001984018360005260206000200190565b611ecd565b91612104565b50821515612034565b610164908154680100000000000000008110156111ff5760018101808455811015611e9e57600092909252805160209182015190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff91909116177f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f3890910155565b8054680100000000000000008110156111ff5761234991600182018155611e86565b61238b57815160209283015190921b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b61016454909181159182156124e5576123d1611243565b60008152600060208201525b61241361240c61213060208401517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b958661385a565b931590816124c2575b5015612462576112509061218d60001961243586612b5c565b92016101646000527f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f380190565b506112506124756121f76121ec43612bef565b6124bd61248185612b5c565b61249861248c611243565b63ffffffff9094168452565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020830152565b61229e565b5163ffffffff16905063ffffffff6124dc6121ec43612bef565b9116143861241c565b6101646000526125167f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f378201611ecd565b6123dd565b610164549091811591821561257457612532611243565b60008152600060208201525b61241361256d61213060208401517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b958661384d565b6101646000526125a57f5bc19ff2299cdd9c52c622a9137c53ea8dded8f746ee6e3f831227e4983e3f378201611ecd565b61253e565b90918154918215928360001461265d576125c2611243565b60008152600060208201525b6126046125fd61213060208401517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b968761385a565b9415908161263a575b50156126265761218d6112509260001961217e87612b5c565b50611250906121fc6121f76121ec43612bef565b5163ffffffff16905063ffffffff6126546121ec43612bef565b9116143861260d565b61267561228a60001983018460005260206000200190565b6125ce565b916102a5939161268993612805565b9190916126ca565b6005111561269b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6126d381612691565b806126db5750565b6126e481612691565b600181036127315760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b61273a81612691565b600281036127875760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80612793600392612691565b1461279a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116128885791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561287b5781516001600160a01b03811615612875579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b61289c61294b565b6128a4612996565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176111ff5760405251902090565b604290612915612894565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b61295361187b565b8051908115612963576020012090565b505060fb5480156129715790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61299e611937565b80519081156129ae576020012090565b505060fc5480156129715790565b81156129c6570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90808216911860011c81018091116104d35790565b8015612b445780612add612ad6612acc612ac2612ab8612aae612aa4612a9a60016102a59a6000908b60801c80612b38575b508060401c80612b2b575b508060201c80612b1e575b508060101c80612b11575b508060081c80612b04575b508060041c80612af7575b508060021c80612aea575b50821c612ae3575b811c1b612a93818b6129bc565b0160011c90565b612a93818a6129bc565b612a9381896129bc565b612a9381886129bc565b612a9381876129bc565b612a9381866129bc565b612a9381856129bc565b80926129bc565b90612b4a565b8101612a86565b6002915091019038612a7e565b6004915091019038612a73565b6008915091019038612a68565b6010915091019038612a5d565b6020915091019038612a52565b6040915091019038612a47565b91505060809038612a3c565b50600090565b9080821015612b57575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818111612b85571690565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff90818111612c02571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff90818111612c7d571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b6000549060ff8260081c161580928193612e4b575b8115612e2b575b5015612dc157612d299082612d20600160ff196000541617600055565b612d8b57612ec0565b612d2f57565b612d5c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612dbc6101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b612ec0565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b15915081612e3d575b5038612d03565b6001915060ff161438612e36565b600160ff8216109150612cfc565b81601f8201121561038d578051612e6f81611252565b92612e7d6040519485611220565b8184526020828401011161038d576102a5916020808501910161024c565b9091612eb26102a59360408452604084019061026f565b91602081840391015261026f565b805181016060826020830192031261038d576020820151612ee081610392565b60408301519267ffffffffffffffff9384811161038d57836020612f0692840101612e59565b93606082015190811161038d577f6d15b88a0390dbe7d4263c114754f248acc53091a1b64716c6e5c3f9b47e448a936020612f4b926001600160a01b03940101612e59565b911692612f588282613053565b612f606134f8565b612f68613032565b612f7061300f565b612f7981613509565b612f816134f8565b612f8a846117ac565b612f9960405192839283612e9b565b0390a2565b15612fa557565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b61302960ff60005460081c1661302481612f9e565b612f9e565b611250336117c8565b61304760ff60005460081c1661302481612f9e565b60ff1960975416609755565b9061306960ff60005460081c1661302481612f9e565b815167ffffffffffffffff81116111ff5761308e81613089603654611828565b613162565b602080601f83116001146130cf57508190611250946000926130c4575b50506000198260011b9260031b1c191617603655613326565b0151905038806130ab565b919293601f19841661310360366000527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b890565b936000905b82821061314a57505091600193918561125097969410613131575b505050811b01603655613326565b015160001960f88460031b161c19169055388080613123565b80600186978294978701518155019601940190613108565b601f811161316e575050565b600090603682527f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b8906020601f850160051c830194106131c9575b601f0160051c01915b8281106131be57505050565b8181556001016131b2565b90925082906131a9565b601f81116131df575050565b60009060fd82527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca280906020601f850160051c8301941061323a575b601f0160051c01915b82811061322f57505050565b818155600101613223565b909250829061321a565b601f8111613250575050565b600090603782527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae906020601f850160051c830194106132ab575b601f0160051c01915b8281106132a057505050565b818155600101613294565b909250829061328b565b601f81116132c1575050565b60009060fe82527f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a906020601f850160051c8301941061331c575b601f0160051c01915b82811061331157505050565b818155600101613305565b90925082906132fc565b90815167ffffffffffffffff81116111ff5761334c81613347603754611828565b613244565b602080601f8311600114613387575081929360009261337c575b50506000198260011b9260031b1c191617603755565b015190503880613366565b90601f198316946133ba60376000527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae90565b926000905b8782106133f75750508360019596106133de575b505050811b01603755565b015160001960f88460031b161c191690553880806133d3565b806001859682949686015181550195019301906133bf565b90815167ffffffffffffffff81116111ff576134358161343060fe54611828565b6132b5565b602080601f83116001146134705750819293600092613465575b50506000198260011b9260031b1c19161760fe55565b01519050388061344f565b90601f198316946134a360fe6000527f54075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a90565b926000905b8782106134e05750508360019596106134c7575b505050811b0160fe55565b015160001960f88460031b161c191690553880806134bc565b806001859682949686015181550195019301906134a8565b61125060ff60005460081c16612f9e565b9060ff60005460081c1661351c81612f9e565b60405190613529826111e3565b600180835261355e6020927f310000000000000000000000000000000000000000000000000000000000000084860152612f9e565b84519167ffffffffffffffff83116111ff576135848361357f60fd54611828565b6131d3565b80601f84116001146135da57508280916135b996976000936135cd575b505060001991921b9260031b1c19161760fd5561340f565b6135c3600060fb55565b611250600060fc55565b01519150600019386135a1565b90601f19849394169661360f60fd6000527f9346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca28090565b926000905b898210613650575050836135b9979810613637575b505050811b0160fd5561340f565b015160001960f88460031b161c19169055388080613629565b808785968294968601518155019501930190613614565b60ff6097541661367357565b606460405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b6101626020527fd3963e8e1761c638694d3c60d54f123240f3fe953a68debc0fa797faeeb01d0f546001600160a01b03918216600090815260409020546112509392908116911661201b565b90611250916001600160a01b0380911660005261016260205280604060002054169060008052604060002054169061201b565b9061125092916001600160a01b038091166000526101626020528080604060002054169216600052604060002054169061201b565b1561377257565b608460405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152fd5b156137e357565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b9081039081116104d35790565b9081018091116104d3579056fea26469706673582212201092fb34c7d5117ba6b0c999f38f6a6f8d0309de0252e811347a207ad8ba5ce564736f6c634300081400334a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b89346ac6dd7de6b96975fec380d4d994c4c12e6a8897544f22915316cc6cca28054075df80ec1ae6ac9100e1fd0ebf3246c17f5c933137af392011f4c5f61513a42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae", "constructorArgs": { "types": [ "address", @@ -1894,7 +1894,7 @@ "settings": { "optimizer": { "enabled": true, - "runs": 4294967295 + "runs": 10000 }, "viaIR": true, "evmVersion": "paris", @@ -2839,8 +2839,8 @@ "contractVersion": "1.1.0", "compilerVersion": "v0.8.20+commit.a1b79de6", "factory": "0xce0042b868300000d44a59004da54a005ffdcf9f", - "address": "0x45d755348601c312eFF29f65E2DeB596F97331b6", - "bytecode": "0x608060409080825234620009675762005d33803803809162000022828562000a01565b83398101606082820312620009675781516001600160a01b0381169290839003620009675760208101516001600160401b0381116200096757826200006991830162000a4a565b818501519092906001600160401b03811162000967576200008b920162000a4a565b835160208101938452620000d781620000c8620000b48883019660608852608084019062000aa5565b6060830195601f1984830301875262000aa5565b03601f19810183528262000a01565b6000549360ff8560081c161594858096620009f3575b8015620009da575b156200097f5760ff198116600117600055856200096c575b50815182019060608360208401930312620009675751936001600160a01b03851685036200096757516001600160401b0381116200096757816020620001569285010162000a4a565b9251916001600160401b038311620009675762000177920160200162000a4a565b916200019660ff60005460081c16620001908162000acc565b62000acc565b81516001600160401b0381116200067557606554600181811c911680156200095c575b60208210146200065457601f8111620008f2575b50806020601f821160011462000868576000916200085c575b508160011b916000199060031b1c1916176065555b82516001600160401b0381116200067557606654600181811c9116801562000851575b60208210146200065457601f8111620007f8575b50806020601f82116001146200077f5760009162000773575b508160011b916000199060031b1c1916176066555b620002a360ff60005460081c16620002788162000acc565b620002838162000acc565b6200028e8162000acc565b60ff1960c9541660c955620001908162000acc565b620002ae3362000b2d565b60ff60005460081c16620002c28162000acc565b855190818701906001600160401b038211838310176200067557620002fc91885260018352603160f81b6020840152620001908162000acc565b82516001600160401b038111620006755761016154600181811c9116801562000768575b60208210146200065457601f811162000712575b50806020601f821160011462000697576000916200068b575b508160011b916000199060031b1c191617610161555b8051906001600160401b03821162000675576101625490600182811c921680156200066a575b6020831014620006545781601f849311620005ef575b50602090601f8311600114620005735760009262000567575b50508160011b916000199060031b1c191617610162555b600061015f55600061016055620003ee60ff60005460081c1662000acc565b60fb54336001600160a01b039091160362000524576001600160a01b03811615620004d1577fee35af7fe8dd11884af34e46c4d4e86181e4b0b7a4fcaa68c626ee40f2793fc89162000465916200047f90620004536001600160a01b03821662000b2d565b87519384938985528985019062000aa5565b83810360208501526001600160a01b039091169562000aa5565b0390a262000496575b5161515c908162000b778239f35b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986020825160018152a162000488565b845162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6064855162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b015190503880620003b8565b610162600090815260008051602062005d138339815191529350601f198516905b818110620005d65750908460019594939210620005bc575b505050811b0161016255620003cf565b015160001960f88460031b161c19169055388080620005ac565b9293602060018192878601518155019501930162000594565b61016260005290915060008051602062005d13833981519152601f840160051c8101916020851062000649575b90601f859493920160051c01905b8181106200063957506200039f565b600081558493506001016200062a565b90915081906200061c565b634e487b7160e01b600052602260045260246000fd5b91607f169162000389565b634e487b7160e01b600052604160045260246000fd5b9050840151386200034d565b6101616000908152925060008051602062005cf3833981519152905b601f1983168410620006f9576001935082601f19811610620006df575b5050811b016101615562000363565b86015160001960f88460031b161c191690553880620006d0565b86810151825560209384019360019092019101620006b3565b61016160005260008051602062005cf3833981519152601f830160051c81016020841062000760575b601f830160051c820181106200075357505062000334565b600081556001016200073b565b50806200073b565b90607f169062000320565b9050840151386200024b565b60666000908152925060008051602062005cd3833981519152905b601f1983168410620007df576001935082601f19811610620007c5575b5050811b0160665562000260565b86015160001960f88460031b161c191690553880620007b7565b868101518255602093840193600190920191016200079a565b606660005260008051602062005cd3833981519152601f830160051c8101916020841062000846575b601f0160051c01905b81811062000839575062000232565b600081556001016200082a565b909150819062000821565b90607f16906200021e565b905083015138620001e6565b6065600090815292507f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7905b601f1983168410620008d9576001935082601f19811610620008bf575b5050811b01606555620001fb565b85015160001960f88460031b161c191690553880620008b1565b8581015182556020938401936001909201910162000894565b60656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7601f830160051c8101916020841062000951575b601f0160051c01905b818110620009445750620001cd565b6000815560010162000935565b90915081906200092c565b90607f1690620001b9565b600080fd5b61ffff191661010117600055386200010d565b865162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015620000f55750600160ff821614620000f5565b50600160ff821610620000ed565b601f909101601f19168101906001600160401b038211908210176200067557604052565b60005b83811062000a395750506000910152565b818101518382015260200162000a28565b81601f82011215620009675780516001600160401b03811162000675576040519262000a81601f8301601f19166020018562000a01565b81845260208284010111620009675762000aa2916020808501910162000a25565b90565b9060209162000ac08151809281855285808601910162000a25565b601f01601f1916010190565b1562000ad457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461025757806306fdde0314610252578063081812fc1461024d578063095ea7b31461024857806318160ddd1461024357806323b872dd1461023e5780632f745c59146102395780633644e515146102345780633a46b1a81461022f5780633f4ba83a1461022a57806340d097c31461022557806342842e0e1461022057806342966c681461021b5780634bf5d7e9146102165780634f6ccce714610211578063587cde1e1461020c5780635c19a95c146102075780635c975abb146102025780636352211e146101fd57806370a08231146101f8578063715018a6146101f35780637ecebe00146101ee5780638456cb59146101e957806384b0196e146101e45780638da5cb5b146101df5780638e539e8c146101da57806391ddadf4146101d557806395d89b41146101d05780639ab24eb0146101cb578063a22cb465146101c6578063a4f9edbf146101c1578063b88d4fde146101bc578063c3cda520146101b7578063c87b56dd146101b2578063e985e9c5146101ad5763f2fde38b146101a857600080fd5b612055565b611fb3565b611f17565b611d6f565b611cfa565b611b83565b6118e5565b611856565b611791565b611747565b61161b565b6115c9565b6114ed565b6113a8565b61133e565b61129f565b61125a565b61121e565b6111dd565b611199565b61112d565b61103a565b610f51565b610dbe565b610d96565b610b71565b610a7f565b61093a565b6108f9565b6107e2565b6107b9565b610733565b6105c1565b610549565b610428565b61028b565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361028657565b600080fd5b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760207fffffffff000000000000000000000000000000000000000000000000000000006004356102e98161025c565b167f780e9d63000000000000000000000000000000000000000000000000000000008114908115610320575b506040519015158152f35b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491508115610384575b811561035a575b5038610315565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610353565b7f5b5e139f000000000000000000000000000000000000000000000000000000008114915061034c565b60005b8381106103c15750506000910152565b81810151838201526020016103b1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361040d815180928187528780880191016103ae565b0116010190565b9060206104259281815201906103d1565b90565b34610286576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610546576040519080606554610469816129d8565b808552916001918083169081156104fe57506001146104a3575b61049f8561049381870382611ab2565b60405191829182610414565b0390f35b9250606583527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b8284106104e65750505081016020016104938261049f610483565b805460208587018101919091529093019281016104cb565b86955061049f969350602092506104939491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019293610483565b80fd5b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576020610585600435612c30565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b73ffffffffffffffffffffffffffffffffffffffff81160361028657565b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576004356105fc816105a3565b602435610608816129a9565b9173ffffffffffffffffffffffffffffffffffffffff80841680918316146106af5761064793610642913314908115610649575b50612ba5565b6130bf565b005b6106a991506106a29061067d339173ffffffffffffffffffffffffffffffffffffffff16600052606a602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460ff1690565b3861063c565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576020609954604051908152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060910112610286576004356107a5816105a3565b906024356107b2816105a3565b9060443590565b34610286576106476107ca3661076f565b916107dd6107d88433612dc5565b612c87565b612eeb565b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760043561081d816105a3565b6024359061082a81612893565b8210156108755773ffffffffffffffffffffffffffffffffffffffff16600052609760205260406000209060005260205261049f604060002054604051918291829190602083019252565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152fd5b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576020610932613cbf565b604051908152f35b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435610975816105a3565b6024359061099465ffffffffffff61098c43613fe8565b168310612256565b73ffffffffffffffffffffffffffffffffffffffff6000911681526101946020526109c2604082209261407f565b91805482938160058111610a27575b50906020946109e092846139b2565b80610a0e5750505b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b91610a1a849293613419565b928152200154811c6109e8565b94610a3186613de9565b8603958611610a7a576020956109e09385875263ffffffff80838a8a2001541690851610600014610a685750915b919250946109d1565b929150610a7490613446565b90610a5f565b612864565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657610ab6612141565b60c95460ff811615610b13577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660c9557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435610bac816105a3565b610bb4612141565b6101f79081549160018301905560405191610bce83611a75565b60009283815273ffffffffffffffffffffffffffffffffffffffff8316918215610d3857610d359381610d3094610c37610c32610c2e84600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b1590565b614bdd565b610c418284614c42565b610c74610c32610c2e84600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b610c9e8373ffffffffffffffffffffffffffffffffffffffff166000526068602052604060002090565b60018154019055610cfd83610cbd846000526067602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4610d2b81614fc4565b613215565b612d39565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b3461028657610647610da73661076f565b9060405192610db584611a75565b60008452612d12565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657610647600435610e006107d88233612dc5565b610e09816129a9565b90610e12614b73565b73ffffffffffffffffffffffffffffffffffffffff9181818416610f4357610e3a9150614d39565b610e4381614eaf565b6000610e4e826129a9565b92610e63836000526069602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055610eb38473ffffffffffffffffffffffffffffffffffffffff166000526068602052604060002090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055610f18610ef0846000526067602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a461503d565b610f4c91614d96565b610e3a565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286574365ffffffffffff610f9143613fe8565b1603610fdc5761049f604051610fa681611a96565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015260405191829182610414565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f646500000000000000006044820152fd5b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576004356099548110156110a95760996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000154604051908152602090f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152fd5b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602060043561116a816105a3565b73ffffffffffffffffffffffffffffffffffffffff809116600052610193825260406000205416604051908152f35b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576106476004356111d7816105a3565b33612320565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602060ff60c954166040519015158152f35b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760206105856004356129a9565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602061093260043561129a816105a3565b612893565b34610286576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610546576112d7612141565b8073ffffffffffffffffffffffffffffffffffffffff60fb547fffffffffffffffffffffffff0000000000000000000000000000000000000000811660fb55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865773ffffffffffffffffffffffffffffffffffffffff60043561138e816105a3565b166000526101966020526020604060002054604051908152f35b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576113df612141565b6113e7614b73565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060c954161760c9557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b91936114a173ffffffffffffffffffffffffffffffffffffffff92957f0f00000000000000000000000000000000000000000000000000000000000000855261149360209760e08988015260e08701906103d1565b9085820360408701526103d1565b936060840152166080820152600060a082015260c081830391015281808451928381520193019160005b8281106114d9575050505090565b8351855293810193928101926001016114cb565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865761015f5415806115be575b1561156057611534612a2b565b61153c612b0a565b9061049f60405161154c81611a75565b60008152604051938493309146918661143e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b506101605415611527565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602073ffffffffffffffffffffffffffffffffffffffff60fb5416604051908152f35b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865761167060043561166b65ffffffffffff61166343613fe8565b168210612256565b61407f565b6101959081549060008291600584116116dd575b61168e9350613938565b90600090826116a65750506040516000815260209150f35b6116b1602093613419565b91527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700154811c6109e8565b91926116e881613de9565b8103908111610a7a5761168e9385835263ffffffff80837f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677001541690851610600014611735575091611684565b92915061174190613446565b90611684565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602061178143613fe8565b65ffffffffffff60405191168152f35b34610286576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105465760405190806066546117d2816129d8565b808552916001918083169081156104fe57506001146117fb5761049f8561049381870382611ab2565b9250606683527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b82841061183e5750505081016020016104938261049f610483565b80546020858701810191909152909301928101611823565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865773ffffffffffffffffffffffffffffffffffffffff6004356118a6816105a3565b1660005261019460205260207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6118dc60406000206134bd565b16604051908152f35b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435611920816105a3565b60243580151581036102865773ffffffffffffffffffffffffffffffffffffffff8216918233146119e857816119866119b69233600052606a60205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6020810190811067ffffffffffffffff821117611a9157604052565b611a46565b6040810190811067ffffffffffffffff821117611a9157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611a9157604052565b60405190611b0082611a96565b565b67ffffffffffffffff8111611a9157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561028657803590611b5382611b02565b92611b616040519485611ab2565b8284526020838301011161028657816000926020809301838601378301015290565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760043567ffffffffffffffff811161028657611bd2903690600401611b3c565b611c3460005491611bfa60ff8460081c161580948195611cec575b8115611ccc575b50614114565b82611c2b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b611c965761423f565b611c3a57005b611c677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611cc76101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b61423f565b303b15915081611cde575b5038611bf4565b6001915060ff161438611cd7565b600160ff8216109150611bed565b346102865760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435611d35816105a3565b602435611d41816105a3565b6064359167ffffffffffffffff831161028657611d65610647933690600401611b3c565b9160443591612d12565b346102865760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435611daa816105a3565b6064359060243560443560ff8416840361028657804211611eb957611e79611eb4916106479560405190611e6182611e356020820195898b8860609194939273ffffffffffffffffffffffffffffffffffffffff60808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283611ab2565b611e7460a4359360843593519020613d35565b613a4a565b91611eae8373ffffffffffffffffffffffffffffffffffffffff16600052610196602052604060002090815491600183019055565b146122bb565b612320565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152fd5b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657611f7d611f78600435600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b612944565b6000604051611f8b81611a75565b5261049f604051611f9b81611a75565b600081526040519182916020835260208301906103d1565b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602060ff612049600435611ff5816105a3565b73ffffffffffffffffffffffffffffffffffffffff60243591612017836105a3565b16600052606a845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435612090816105a3565b612098612141565b73ffffffffffffffffffffffffffffffffffffffff8116156120bd57610647906121e9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff60fb5416330361216257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6121c8612141565b73ffffffffffffffffffffffffffffffffffffffff8116156120bd57611b00905b60fb549073ffffffffffffffffffffffffffffffffffffffff80911691827fffffffffffffffffffffffff000000000000000000000000000000000000000082161760fb55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561225d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b75700000000000000000000000006044820152fd5b156122c257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e63650000000000000000000000006044820152fd5b816123c673ffffffffffffffffffffffffffffffffffffffff9283811680600052610193602052604060002094612397818754169788979073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b84169586917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f600080a4612893565b91838114158061255a575b6123dc575b50505050565b80612486575b50826123ef575b806123d6565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249161244861244261244e9373ffffffffffffffffffffffffffffffffffffffff16600052610194602052604060002090565b91613f3b565b9061275a565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a23880806123e9565b6124b18173ffffffffffffffffffffffffffffffffffffffff16600052610194602052604060002090565b6124ba84613f3b565b6124d365ffffffffffff6124cd43613fe8565b1661407f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182806124fc866134bd565b169116900392828411610a7a577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724936125519261253892613828565b6040805192851683529316602082015291829190820190565b0390a2386123e2565b508215156123d1565b9073ffffffffffffffffffffffffffffffffffffffff918282169281169083821415806126ff575b6125955750505050565b81612635575b5050816125aa575b80806123d6565b6125fe6125f97fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249273ffffffffffffffffffffffffffffffffffffffff16600052610194602052604060002090565b612707565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a238806125a3565b6126609073ffffffffffffffffffffffffffffffffffffffff16600052610194602052604060002090565b61267365ffffffffffff6124cd43613fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826126bc856134bd565b160192828411610a7a577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724936126f59261253892613828565b0390a2388061259b565b50600161258b565b61271a65ffffffffffff6124cd43613fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600182612744856134bd565b1601918211610a7a5761275692613828565b9091565b9061276e65ffffffffffff6124cd43613fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff918280612797866134bd565b16911601918211610a7a5761275692613828565b6127be65ffffffffffff6124cd43613fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001816127e6613454565b1601908111610a7a5761275691613699565b61280b65ffffffffffff6124cd43613fe8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612852613454565b16019081116128645761275691613699565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff1680156128c057600052606860205260406000205490565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b1561294b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416610425811515612944565b90600182811c92168015612a21575b60208310146129f257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916129e7565b60405190600082610161918254612a41816129d8565b80845293600191808316908115612ac75750600114612a69575b5050611b0092500383611ab2565b600090815291507fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b5b848310612aac5750611b0093505081016020013880612a5b565b81935090816020925483858a01015201910190918592612a92565b905060209350611b009592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880612a5b565b60405190600082610162918254612b20816129d8565b80845293600191808316908115612ac75750600114612b47575050611b0092500383611ab2565b600090815291507f29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac9195b848310612b8a5750611b0093505081016020013880612a5b565b81935090816020925483858a01015201910190918592612b70565b15612bac57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b612c60611f7882600052606760205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b600052606960205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b15612c8e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b91611b009391610d3093612d296107d88433612dc5565b612d34838383612eeb565b613380565b15612d4057565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff80612de4846129a9565b169281831692848414948515612e1a575b50508315612e04575b50505090565b612e1091929350612c30565b1614388080612dfe565b60ff92955090612e5691600052606a60205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5416923880612df5565b15612e6757565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b612f1c92612ef8816129a9565b73ffffffffffffffffffffffffffffffffffffffff83811695909182168614612e60565b8316801561303c57611b0094612f33838686614c82565b612f6281612f5c612f43866129a9565b73ffffffffffffffffffffffffffffffffffffffff1690565b14612e60565b612f79610ef0846000526069602052604060002090565b612fa38473ffffffffffffffffffffffffffffffffffffffff166000526068602052604060002090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055612ff38573ffffffffffffffffffffffffffffffffffffffff166000526068602052604060002090565b6001815401905561301285610cbd856000526067602052604060002090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46150b7565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b8160005260696020526131118160406000209073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b73ffffffffffffffffffffffffffffffffffffffff80613130846129a9565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4565b9081602091031261028657516104258161025c565b610425939273ffffffffffffffffffffffffffffffffffffffff60809316825260006020830152604082015281606082015201906103d1565b9092610425949360809373ffffffffffffffffffffffffffffffffffffffff8092168452166020830152604082015281606082015201906103d1565b3d15613210573d906131f682611b02565b916132046040519384611ab2565b82523d6000602084013e565b606090565b909190803b156133785761327560209173ffffffffffffffffffffffffffffffffffffffff9360006040519586809581947f150b7a02000000000000000000000000000000000000000000000000000000009a8b84523360048501613170565b0393165af160009181613348575b50613322576132906131e5565b8051908161331d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b61336a91925060203d8111613371575b6133628183611ab2565b81019061315b565b9038613283565b503d613358565b505050600190565b92909190823b156133e15761327592602092600073ffffffffffffffffffffffffffffffffffffffff6040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c855233600486016131a9565b50505050600190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610a7a57565b9060018201809211610a7a57565b61019580546000918161346957505050600090565b817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810111610a7a577f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29676f9252015460201c90565b8054600091816134cf57505050600090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff928284810111610a7a5760209181522001015460201c90565b61019590815468010000000000000000811015611a91576001810180845581101561359257600092909252805160209182015190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff91909116177f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677090910155565b6133ea565b90815468010000000000000000811015611a91576001810180845581101561359257600092835260209283902082519284015190931b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9290921691909117910155565b906040516040810181811067ffffffffffffffff821117611a9157604052602081935463ffffffff81168352811c910152565b1561363b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152fd5b6101955491929180156137e95761379a9181856136ed6136e86136bd602096613419565b6101956000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700190565b613601565b926136fc845163ffffffff1690565b61371363ffffffff91828416928391161115613634565b61372d613724865163ffffffff1690565b63ffffffff1690565b0361379e57506137426136bd61377793613419565b9063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b90506137e491506137bc6137b0611af3565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff871681850152613509565b613777565b50613822906137f96137b0611af3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84166020820152613509565b60009190565b909291928382548015156000146138fe5792602092918461385e6136e861385161379a98613419565b8560005260206000200190565b9361386d855163ffffffff1690565b61388463ffffffff91828416928391161115613634565b613895613724875163ffffffff1690565b036138b85750613777926138ab61374292613419565b9060005260206000200190565b9150506137e4916138d66138ca611af3565b63ffffffff9093168352565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff881682860152613597565b50506138229161390f6138ca611af3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff85166020830152613597565b905b82811061394657505090565b90918082169080831860011c8201809211610a7a5761019560005263ffffffff80837f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770015416908516106000146139a05750915b9061393a565b9291506139ac90613446565b9061399a565b91905b8382106139c25750505090565b9091928083169080841860011c8201809211610a7a5760008581526020902082015463ffffffff90811690841610156139ff5750925b91906139b5565b939250613a0b90613446565b916139f8565b8115613a1b570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b916104259391613a5993613c23565b919091613a9a565b60051115613a6b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b613aa381613a61565b80613aab5750565b613ab481613a61565b60018103613b1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b613b2481613a61565b60028103613b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613b97600392613a61565b14613b9e57565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311613cb35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ca657815173ffffffffffffffffffffffffffffffffffffffff811615613ca0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b613cc7613d76565b613ccf613dc2565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611a915760405251902090565b604290613d40613cbf565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b613d7e612a2b565b8051908115613d8e576020012090565b505061015f548015613d9d5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b613dca612b0a565b8051908115613dda576020012090565b5050610160548015613d9d5790565b8015613f235780613ebc613eb5613eab613ea1613e97613e8d613e83613e7960016104259a6000908b60801c80613f17575b508060401c80613f0a575b508060201c80613efd575b508060101c80613ef0575b508060081c80613ee3575b508060041c80613ed6575b508060021c80613ec9575b50821c613ec2575b811c1b613e72818b613a11565b0160011c90565b613e72818a613a11565b613e728189613a11565b613e728188613a11565b613e728187613a11565b613e728186613a11565b613e728185613a11565b8092613a11565b90613f29565b8101613e65565b6002915091019038613e5d565b6004915091019038613e52565b6008915091019038613e47565b6010915091019038613e3c565b6020915091019038613e31565b6040915091019038613e26565b91505060809038613e1b565b50600090565b9080821015613f36575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818111613f64571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff90818111613ffb571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff90818111614090571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b1561411b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b81601f820112156102865780516141b581611b02565b926141c36040519485611ab2565b818452602082840101116102865761042591602080850191016103ae565b604051906141ee82611a96565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152565b9091614231610425936040845260408401906103d1565b9160208184039101526103d1565b805181016060826020830192031261028657602082015161425f816105a3565b60408301519267ffffffffffffffff93848111610286578360206142859284010161419f565b936060820151908111610286577fee35af7fe8dd11884af34e46c4d4e86181e4b0b7a4fcaa68c626ee40f2793fc89360206142d79273ffffffffffffffffffffffffffffffffffffffff94010161419f565b9116926142e48282614427565b6142ec6149e0565b6142f46143e8565b6142fc6143c5565b6143046149e0565b61431561430f6141e1565b826149f1565b61431d6149e0565b614326846121c0565b6143356040519283928361421a565b0390a2565b1561434157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b6143df60ff60005460081c166143da8161433a565b61433a565b611b00336121e9565b6143fd60ff60005460081c166143da8161433a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060c9541660c955565b9061443d60ff60005460081c166143da8161433a565b815167ffffffffffffffff8111611a91576144628161445d6065546129d8565b614590565b602080601f83116001146144c157508190611b00946000926144b6575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606555614756565b01519050388061447f565b9192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841661451360656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c790565b936000905b828210614578575050916001939185611b0097969410614541575b505050811b01606555614756565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080614533565b80600186978294978701518155019601940190614518565b601f811161459c575050565b600090606582527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7906020601f850160051c830194106145f7575b601f0160051c01915b8281106145ec57505050565b8181556001016145e0565b90925082906145d7565b601f811161460d575050565b60009061016182527fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b906020601f850160051c83019410614669575b601f0160051c01915b82811061465e57505050565b818155600101614652565b9092508290614649565b601f811161467f575050565b600090606682527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354906020601f850160051c830194106146da575b601f0160051c01915b8281106146cf57505050565b8181556001016146c3565b90925082906146ba565b601f81116146f0575050565b60009061016282527f29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac919906020601f850160051c8301941061474c575b601f0160051c01915b82811061474157505050565b818155600101614735565b909250829061472c565b90815167ffffffffffffffff8111611a915761477c816147776066546129d8565b614673565b602080601f83116001146147d557508192936000926147ca575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606655565b015190503880614796565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169461482660666000527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435490565b926000905b87821061488157505083600195961061484a575b505050811b01606655565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905538808061483f565b8060018596829496860151815501950193019061482b565b90815167ffffffffffffffff8111611a9157610162906148c2816148bd84546129d8565b6146e4565b602080601f831160011461491b575081929394600092614910575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055565b0151905038806148dd565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169561496d6101626000527f29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac91990565b926000905b8882106149c857505083600195969710614991575b505050811b019055565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080614987565b80600185968294968601518155019501930190614972565b611b0060ff60005460081c1661433a565b9190614a0860ff60005460081c166143da8161433a565b825167ffffffffffffffff8111611a915761016190614a3081614a2b84546129d8565b614601565b602080601f8311600114614aa557508190614a849596600092614a9a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055614899565b614a8f600061015f55565b611b00600061016055565b015190503880614a4e565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831696614af76101616000527fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b90565b926000905b898210614b5b57505090839291600194614a84989910614b24575b505050811b019055614899565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080614b17565b80600185968294968601518155019501930190614afc565b60ff60c95416614b7f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b15614be457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152fd5b90614c4b614b73565b614c5481614d39565b73ffffffffffffffffffffffffffffffffffffffff8216614c7957611b009150614eaf565b611b0091614cf3565b919091614c8d614b73565b73ffffffffffffffffffffffffffffffffffffffff8181169182614cd15750614cb583614d39565b831680614cc8575050611b009150614eaf565b03614c79575050565b838286168403614ce3575b5050614cb5565b614cec91614d96565b3883614cdc565b604090614cff81612893565b9273ffffffffffffffffffffffffffffffffffffffff60009216825260976020528282208483526020528083832055815260986020522055565b60995481600052609a6020528060406000205568010000000000000000811015611a915760018101806099558110156135925760996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b90614da082612893565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610a7a57614dfe92614e2591600094818692835260986020526040832054868103614e32575b506000526098602052604060002090565b5573ffffffffffffffffffffffffffffffffffffffff166000526097602052604060002090565b9082526020526040812055565b73ffffffffffffffffffffffffffffffffffffffff85168452609760205260408420878552602052614ea86040852054614e8c8773ffffffffffffffffffffffffffffffffffffffff166000526097602052604060002090565b8387526020528060408720556000526098602052604060002090565b5538614ded565b609980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92838201828111610a7a57600092828452609a602052806040852054921015613592578484527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979cff928382015491831015613592578492614f69614f7a9388865280837f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155600052609a602052604060002090565b55600052609a602052604060002090565b558254938415614f97578401938085101561359257838352015555565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526031600452fd5b611b0090614fd06127ab565b505073ffffffffffffffffffffffffffffffffffffffff80911690811561502e575b6101936020527f52b4e351f7ee73df7a81487d66a3c99a3807da594918aed81d3a5b74f597949c54600092835260409092205481169116612563565b6150366127f8565b5050614ff2565b611b009073ffffffffffffffffffffffffffffffffffffffff80911680156150a8575b6150686127f8565b5050600090815261019360205260408120549080527f52b4e351f7ee73df7a81487d66a3c99a3807da594918aed81d3a5b74f597949c5482169116612563565b6150b06127ab565b5050615060565b90611b009173ffffffffffffffffffffffffffffffffffffffff80809216928315615117575b16918215615108575b6000526101936020528060406000205416916000526040600020541690612563565b6151106127f8565b50506150e6565b61511f6127ab565b50506150dd56fea26469706673582212208636f3a65341f7fef8b10e53beb4bec95537bcbdd9d4cb43c604c158e176151864736f6c6343000814003346501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354afbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac919", + "address": "0xF9e9E5F46C41FB488D8EE281279871D3BeC6107C", + "bytecode": "0x608060409080825234620009675762004ecc803803809162000022828562000a01565b83398101606082820312620009675781516001600160a01b0381169290839003620009675760208101516001600160401b0381116200096757826200006991830162000a4a565b818501519092906001600160401b03811162000967576200008b920162000a4a565b835160208101938452620000d781620000c8620000b48883019660608852608084019062000aa5565b6060830195601f1984830301875262000aa5565b03601f19810183528262000a01565b6000549360ff8560081c161594858096620009f3575b8015620009da575b156200097f5760ff198116600117600055856200096c575b50815182019060608360208401930312620009675751936001600160a01b03851685036200096757516001600160401b0381116200096757816020620001569285010162000a4a565b9251916001600160401b038311620009675762000177920160200162000a4a565b916200019660ff60005460081c16620001908162000acc565b62000acc565b81516001600160401b0381116200067557606554600181811c911680156200095c575b60208210146200065457601f8111620008f2575b50806020601f821160011462000868576000916200085c575b508160011b916000199060031b1c1916176065555b82516001600160401b0381116200067557606654600181811c9116801562000851575b60208210146200065457601f8111620007f8575b50806020601f82116001146200077f5760009162000773575b508160011b916000199060031b1c1916176066555b620002a360ff60005460081c16620002788162000acc565b620002838162000acc565b6200028e8162000acc565b60ff1960c9541660c955620001908162000acc565b620002ae3362000b2d565b60ff60005460081c16620002c28162000acc565b855190818701906001600160401b038211838310176200067557620002fc91885260018352603160f81b6020840152620001908162000acc565b82516001600160401b038111620006755761016154600181811c9116801562000768575b60208210146200065457601f811162000712575b50806020601f821160011462000697576000916200068b575b508160011b916000199060031b1c191617610161555b8051906001600160401b03821162000675576101625490600182811c921680156200066a575b6020831014620006545781601f849311620005ef575b50602090601f8311600114620005735760009262000567575b50508160011b916000199060031b1c191617610162555b600061015f55600061016055620003ee60ff60005460081c1662000acc565b60fb54336001600160a01b039091160362000524576001600160a01b03811615620004d1577fee35af7fe8dd11884af34e46c4d4e86181e4b0b7a4fcaa68c626ee40f2793fc89162000465916200047f90620004536001600160a01b03821662000b2d565b87519384938985528985019062000aa5565b83810360208501526001600160a01b039091169562000aa5565b0390a262000496575b516142f5908162000b778239f35b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986020825160018152a162000488565b845162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6064855162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b015190503880620003b8565b610162600090815260008051602062004eac8339815191529350601f198516905b818110620005d65750908460019594939210620005bc575b505050811b0161016255620003cf565b015160001960f88460031b161c19169055388080620005ac565b9293602060018192878601518155019501930162000594565b61016260005290915060008051602062004eac833981519152601f840160051c8101916020851062000649575b90601f859493920160051c01905b8181106200063957506200039f565b600081558493506001016200062a565b90915081906200061c565b634e487b7160e01b600052602260045260246000fd5b91607f169162000389565b634e487b7160e01b600052604160045260246000fd5b9050840151386200034d565b6101616000908152925060008051602062004e8c833981519152905b601f1983168410620006f9576001935082601f19811610620006df575b5050811b016101615562000363565b86015160001960f88460031b161c191690553880620006d0565b86810151825560209384019360019092019101620006b3565b61016160005260008051602062004e8c833981519152601f830160051c81016020841062000760575b601f830160051c820181106200075357505062000334565b600081556001016200073b565b50806200073b565b90607f169062000320565b9050840151386200024b565b60666000908152925060008051602062004e6c833981519152905b601f1983168410620007df576001935082601f19811610620007c5575b5050811b0160665562000260565b86015160001960f88460031b161c191690553880620007b7565b868101518255602093840193600190920191016200079a565b606660005260008051602062004e6c833981519152601f830160051c8101916020841062000846575b601f0160051c01905b81811062000839575062000232565b600081556001016200082a565b909150819062000821565b90607f16906200021e565b905083015138620001e6565b6065600090815292507f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7905b601f1983168410620008d9576001935082601f19811610620008bf575b5050811b01606555620001fb565b85015160001960f88460031b161c191690553880620008b1565b8581015182556020938401936001909201910162000894565b60656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7601f830160051c8101916020841062000951575b601f0160051c01905b818110620009445750620001cd565b6000815560010162000935565b90915081906200092c565b90607f1690620001b9565b600080fd5b61ffff191661010117600055386200010d565b865162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015620000f55750600160ff821614620000f5565b50600160ff821610620000ed565b601f909101601f19168101906001600160401b038211908210176200067557604052565b60005b83811062000a395750506000910152565b818101518382015260200162000a28565b81601f82011215620009675780516001600160401b03811162000675576040519262000a81601f8301601f19166020018562000a01565b81845260208284010111620009675762000aa2916020808501910162000a25565b90565b9060209162000ac08151809281855285808601910162000a25565b601f01601f1916010190565b1562000ad457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461025757806306fdde0314610252578063081812fc1461024d578063095ea7b31461024857806318160ddd1461024357806323b872dd1461023e5780632f745c59146102395780633644e515146102345780633a46b1a81461022f5780633f4ba83a1461022a57806340d097c31461022557806342842e0e1461022057806342966c681461021b5780634bf5d7e9146102165780634f6ccce714610211578063587cde1e1461020c5780635c19a95c146102075780635c975abb146102025780636352211e146101fd57806370a08231146101f8578063715018a6146101f35780637ecebe00146101ee5780638456cb59146101e957806384b0196e146101e45780638da5cb5b146101df5780638e539e8c146101da57806391ddadf4146101d557806395d89b41146101d05780639ab24eb0146101cb578063a22cb465146101c6578063a4f9edbf146101c1578063b88d4fde146101bc578063c3cda520146101b7578063c87b56dd146101b2578063e985e9c5146101ad5763f2fde38b146101a857600080fd5b6118e4565b61187a565b611809565b6116d1565b61167a565b61153f565b61134d565b6112e9565b611242565b611216565b611108565b6110e1565b61103d565b610f41565b610f02565b610e8e565b610e67565b610e49565b610e26565b610e00565b610dbf565b610d04565b610c53565b610b16565b610aee565b610942565b6108a6565b61078c565b610769565b610697565b61066e565b610624565b610511565b6104d1565b6103ec565b61028b565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361028657565b600080fd5b346102865760206003193601126102865760207fffffffff000000000000000000000000000000000000000000000000000000006004356102cb8161025c565b167f780e9d63000000000000000000000000000000000000000000000000000000008114908115610302575b506040519015158152f35b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491508115610366575b811561033c575b50386102f7565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610335565b7f5b5e139f000000000000000000000000000000000000000000000000000000008114915061032e565b60005b8381106103a35750506000910152565b8181015183820152602001610393565b90601f19601f6020936103d181518092818752878088019101610390565b0116010190565b9060206103e99281815201906103b3565b90565b34610286576000806003193601126104ce57604051908060655461040f816120c8565b808552916001918083169081156104a45750600114610449575b61044585610439818703826114aa565b604051918291826103d8565b0390f35b9250606583527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b82841061048c57505050810160200161043982610445610429565b80546020858701810191909152909301928101610471565b8695506104459693506020925061043994915060ff191682840152151560051b8201019293610429565b80fd5b346102865760206003193601126102865760206104ef6004356122e8565b6001600160a01b0360405191168152f35b6001600160a01b0381160361028657565b346102865760406003193601126102865760043561052e81610500565b60243561053a816120a6565b916001600160a01b0380841680918316146105ba5761056c9361056791331490811561056e575b50612277565b612689565b005b6105b491506105ad9061059533916001600160a01b0316600052606a602052604060002090565b906001600160a01b0316600052602052604060002090565b5460ff1690565b38610561565b608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b34610286576000600319360112610286576020609954604051908152f35b60031960609101126102865760043561065a81610500565b9060243561066781610500565b9060443590565b346102865761056c61067f36610642565b9161069261068d843361242f565b612325565b612521565b34610286576040600319360112610286576004356106b481610500565b602435906106c181611fd1565b8210156106ff576001600160a01b03166000526097602052604060002090600052602052610445604060002054604051918291829190602083019252565b608460405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152fd5b34610286576000600319360112610286576020610784613152565b604051908152f35b34610286576040600319360112610286576004356107a981610500565b602435906107c865ffffffffffff6107c043613461565b168310611a5f565b6001600160a01b036000911681526101946020526107e960408220926134de565b9180548293816005811161084e575b50906020946108079284612ea0565b806108355750505b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b9161084184929361297b565b928152200154811c61080f565b946108588661327c565b86039586116108a1576020956108079385875263ffffffff80838a8a200154169085161060001461088f5750915b919250946107f8565b92915061089b9061298a565b90610886565b611fa2565b34610286576000600319360112610286576108bf61198b565b60c95460ff8116156108fe5760ff191660c9557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b606460405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b346102865760206003193601126102865760043561095f81610500565b61096761198b565b6101f790815491600183019055604051916109818361146d565b6000928381526001600160a01b038316918215610aaa57610aa79381610aa2946109d06109cb6109c78460005260676020526001600160a01b0360406000205416151590565b1590565b613e41565b6109da8284613e8c565b610a006109cb6109c78460005260676020526001600160a01b0360406000205416151590565b610a1d836001600160a01b03166000526068602052604060002090565b60018154019055610a6f83610a3c846000526067602052604060002090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4610a9d81614184565b6127ab565b6123bd565b80f35b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b346102865761056c610aff36610642565b9060405192610b0d8461146d565b60008452612396565b346102865760206003193601126102865761056c600435610b3a61068d823361242f565b610b43816120a6565b90610b4c613df1565b6001600160a01b039181818416610c4557610b679150613f5c565b610b708161408d565b6000610b7b826120a6565b92610b90836000526069602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055610bd3846001600160a01b03166000526068602052604060002090565b6000198154019055610c1a610bf2846000526067602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a46141f0565b610c4e91613fb9565b610b67565b34610286576000600319360112610286574365ffffffffffff610c7543613461565b1603610cc057610445604051610c8a8161148e565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c740000006020820152604051918291826103d8565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f646500000000000000006044820152fd5b3461028657602060031936011261028657600435609954811015610d555760996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000154604051908152602090f35b608460405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152fd5b34610286576020600319360112610286576020600435610dde81610500565b6001600160a01b03809116600052610193825260406000205416604051908152f35b346102865760206003193601126102865761056c600435610e2081610500565b33611af5565b3461028657600060031936011261028657602060ff60c954166040519015158152f35b346102865760206003193601126102865760206104ef6004356120a6565b34610286576020600319360112610286576020610784600435610e8981610500565b611fd1565b34610286576000806003193601126104ce57610ea861198b565b806001600160a01b0360fb547fffffffffffffffffffffffff0000000000000000000000000000000000000000811660fb55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b34610286576020600319360112610286576001600160a01b03600435610f2781610500565b166000526101966020526020604060002054604051908152f35b3461028657600060031936011261028657610f5a61198b565b610f62613df1565b600160ff1960c954161760c9557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b9193610ff16001600160a01b0392957f0f000000000000000000000000000000000000000000000000000000000000008552610fe360209760e08988015260e08701906103b3565b9085820360408701526103b3565b936060840152166080820152600060a082015260c081830391015281808451928381520193019160005b828110611029575050505090565b83518552938101939281019260010161101b565b346102865760006003193601126102865761015f5415806110d6575b156110925761106661211b565b61106e6121dc565b9061044560405161107e8161146d565b600081526040519384933091469186610f9b565b606460405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b506101605415611059565b346102865760006003193601126102865760206001600160a01b0360fb5416604051908152f35b346102865760206003193601126102865761113f60043561113a65ffffffffffff61113243613461565b168210611a5f565b6134de565b6101959081549060008291600584116111ac575b61115d9350612e26565b90600090826111755750506040516000815260209150f35b61118060209361297b565b91527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700154811c61080f565b91926111b78161327c565b81039081116108a15761115d9385835263ffffffff80837f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677001541690851610600014611204575091611153565b9291506112109061298a565b90611153565b3461028657600060031936011261028657602061123243613461565b65ffffffffffff60405191168152f35b34610286576000806003193601126104ce576040519080606654611265816120c8565b808552916001918083169081156104a4575060011461128e5761044585610439818703826114aa565b9250606683527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b8284106112d157505050810160200161043982610445610429565b805460208587018101919091529093019281016112b6565b34610286576020600319360112610286576001600160a01b0360043561130e81610500565b1660005261019460205260207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff61134460406000206129e3565b16604051908152f35b346102865760406003193601126102865760043561136a81610500565b6024358015158103610286576001600160a01b038216918233146113fa57816113b66113c89233600052606a6020526040600020906001600160a01b0316600052602052604060002090565b9060ff60ff1983541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6020810190811067ffffffffffffffff82111761148957604052565b61143e565b6040810190811067ffffffffffffffff82111761148957604052565b90601f601f19910116810190811067ffffffffffffffff82111761148957604052565b604051906114da8261148e565b565b67ffffffffffffffff811161148957601f01601f191660200190565b81601f820112156102865780359061150f826114dc565b9261151d60405194856114aa565b8284526020838301011161028657816000926020809301838601378301015290565b346102865760206003193601126102865760043567ffffffffffffffff8111610286576115709036906004016114f8565b6115b46000549161159860ff8460081c16158094819561166c575b811561164c575b50613559565b826115ab600160ff196000541617600055565b6116165761366a565b6115ba57005b6115e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b6116476101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b61366a565b303b1591508161165e575b5038611592565b6001915060ff161438611657565b600160ff821610915061158b565b346102865760806003193601126102865760043561169781610500565b6024356116a381610500565b6064359167ffffffffffffffff8311610286576116c761056c9336906004016114f8565b9160443591612396565b346102865760c0600319360112610286576004356116ee81610500565b6064359060243560443560ff84168403610286578042116117c5576117926117c09161056c956040519061177a8261176c6020820195898b886060919493926001600160a01b0360808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b03601f1981018452836114aa565b61178d60a43593608435935190206131c8565b612f38565b916117ba836001600160a01b0316600052610196602052604060002090815491600183019055565b14611aaa565b611af5565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152fd5b346102865760206003193601126102865761184461183f60043560005260676020526001600160a01b0360406000205416151590565b61205b565b60006040516118528161146d565b526104456040516118628161146d565b600081526040519182916020835260208301906103b3565b3461028657604060031936011261028657602060ff6118d860043561189e81610500565b6001600160a01b03602435916118b383610500565b16600052606a84526040600020906001600160a01b0316600052602052604060002090565b54166040519015158152f35b346102865760206003193601126102865760043561190181610500565b61190961198b565b6001600160a01b038116156119215761056c906119ff565b608460405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0360fb5416330361199f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6119eb61198b565b6001600160a01b03811615611921576114da905b60fb54906001600160a01b0380911691827fffffffffffffffffffffffff000000000000000000000000000000000000000082161760fb55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b15611a6657565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b75700000000000000000000000006044820152fd5b15611ab157565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e63650000000000000000000000006044820152fd5b81611b816001600160a01b039283811680600052610193602052604060002094611b5281875416978897906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b84169586917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f600080a4611fd1565b918381141580611cfb575b611b97575b50505050565b80611c34575b5082611baa575b80611b91565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72491611bf6611bf0611bfc936001600160a01b0316600052610194602052604060002090565b916133ce565b90611eb6565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a2388080611ba4565b611c52816001600160a01b0316600052610194602052604060002090565b611c5b846133ce565b611c7465ffffffffffff611c6e43613461565b166134de565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff918280611c9d866129e3565b1691169003928284116108a1577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72493611cf292611cd992612d16565b6040805192851683529316602082015291829190820190565b0390a238611b9d565b50821515611b8c565b906001600160a01b0391828216928116908382141580611e5b575b611d295750505050565b81611dbc575b505081611d3e575b8080611b91565b611d85611d807fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724926001600160a01b0316600052610194602052604060002090565b611e63565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a23880611d37565b611dda906001600160a01b0316600052610194602052604060002090565b611ded65ffffffffffff611c6e43613461565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060001982611e18856129e3565b1601928284116108a1577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72493611e5192611cd992612d16565b0390a23880611d2f565b506001611d1f565b611e7665ffffffffffff611c6e43613461565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90600182611ea0856129e3565b16019182116108a157611eb292612d16565b9091565b90611eca65ffffffffffff611c6e43613461565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff918280611ef3866129e3565b169116019182116108a157611eb292612d16565b611f1a65ffffffffffff611c6e43613461565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff600181611f42612998565b16019081116108a157611eb291612b87565b611f6765ffffffffffff611c6e43613461565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001981611f90612998565b1601908111611fa257611eb291612b87565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001600160a01b03168015611ff157600052606860205260406000205490565b608460405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b1561206257565b606460405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b60005260676020526001600160a01b03604060002054166103e981151561205b565b90600182811c92168015612111575b60208310146120e257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916120d7565b60405190600082610161918254612131816120c8565b808452936001918083169081156121b75750600114612159575b50506114da925003836114aa565b600090815291507fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b5b84831061219c57506114da9350508101602001388061214b565b81935090816020925483858a01015201910190918592612182565b9050602093506114da95925060ff1991501682840152151560051b820101388061214b565b604051906000826101629182546121f2816120c8565b808452936001918083169081156121b757506001146122195750506114da925003836114aa565b600090815291507f29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac9195b84831061225c57506114da9350508101602001388061214b565b81935090816020925483858a01015201910190918592612242565b1561227e57565b608460405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b61230b61183f8260005260676020526001600160a01b0360406000205416151590565b60005260696020526001600160a01b036040600020541690565b1561232c57565b608460405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b916114da9391610aa2936123ad61068d843361242f565b6123b8838383612521565b6128ef565b156123c457565b60405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b6001600160a01b0380612441846120a6565b169281831692848414948515612477575b50508315612461575b50505090565b61246d919293506122e8565b161438808061245b565b60ff929550906124a691600052606a6020526040600020906001600160a01b0316600052602052604060002090565b5416923880612452565b156124b757565b608460405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b6125459261252e816120a6565b6001600160a01b03838116959091821686146124b0565b83168015612620576114da9461255c838686613ebf565b61257e8161257861256c866120a6565b6001600160a01b031690565b146124b0565b612595610bf2846000526069602052604060002090565b6125b2846001600160a01b03166000526068602052604060002090565b60001981540190556125d7856001600160a01b03166000526068602052604060002090565b600181540190556125f685610a3c856000526067602052604060002090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a461425d565b608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b8160005260696020526126ce816040600020906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6001600160a01b03806126e0846120a6565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4565b9081602091031261028657516103e98161025c565b6103e993926001600160a01b0360809316825260006020830152604082015281606082015201906103b3565b90926103e994936080936001600160a01b038092168452166020830152604082015281606082015201906103b3565b3d156127a6573d9061278c826114dc565b9161279a60405193846114aa565b82523d6000602084013e565b606090565b909190803b156128e7576127fe6020916001600160a01b039360006040519586809581947f150b7a02000000000000000000000000000000000000000000000000000000009a8b84523360048501612720565b0393165af1600091816128b7575b506128915761281961277b565b8051908161288c5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b6128d991925060203d81116128e0575b6128d181836114aa565b81019061270b565b903861280c565b503d6128c7565b505050600190565b92909190823b15612943576127fe9260209260006001600160a01b036040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c8552336004860161274c565b50505050600190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060001982019182116108a157565b90600182018092116108a157565b6101958054600091816129ad57505050600090565b816000198101116108a1577f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29676f9252015460201c90565b8054600091816129f557505050600090565b6000199282848101116108a15760209181522001015460201c90565b610195908154680100000000000000008110156114895760018101808455811015612a9a57600092909252805160209182015190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff91909116177f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677090910155565b61294c565b908154680100000000000000008110156114895760018101808455811015612a9a57600092835260209283902082519284015190931b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9290921691909117910155565b906040516040810181811067ffffffffffffffff82111761148957604052602081935463ffffffff81168352811c910152565b15612b4357565b606460405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152fd5b610195549192918015612cd757612c88918185612bdb612bd6612bab60209661297b565b6101956000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700190565b612b09565b92612bea845163ffffffff1690565b612c0163ffffffff91828416928391161115612b3c565b612c1b612c12865163ffffffff1690565b63ffffffff1690565b03612c8c5750612c30612bab612c659361297b565b9063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b9050612cd29150612caa612c9e6114cd565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff871681850152612a11565b612c65565b50612d1090612ce7612c9e6114cd565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84166020820152612a11565b60009190565b90929192838254801515600014612dec57926020929184612d4c612bd6612d3f612c889861297b565b8560005260206000200190565b93612d5b855163ffffffff1690565b612d7263ffffffff91828416928391161115612b3c565b612d83612c12875163ffffffff1690565b03612da65750612c6592612d99612c309261297b565b9060005260206000200190565b915050612cd291612dc4612db86114cd565b63ffffffff9093168352565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff881682860152612a9f565b5050612d1091612dfd612db86114cd565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff85166020830152612a9f565b905b828110612e3457505090565b90918082169080831860011c82018092116108a15761019560005263ffffffff80837f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677001541690851610600014612e8e5750915b90612e28565b929150612e9a9061298a565b90612e88565b91905b838210612eb05750505090565b9091928083169080841860011c82018092116108a15760008581526020902082015463ffffffff9081169084161015612eed5750925b9190612ea3565b939250612ef99061298a565b91612ee6565b8115612f09570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b916103e99391612f47936130c3565b919091612f88565b60051115612f5957565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b612f9181612f4f565b80612f995750565b612fa281612f4f565b60018103612fef5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b612ff881612f4f565b600281036130455760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613051600392612f4f565b1461305857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116131465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156131395781516001600160a01b03811615613133579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b61315a613209565b613162613255565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176114895760405251902090565b6042906131d3613152565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b61321161211b565b8051908115613221576020012090565b505061015f5480156132305790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61325d6121dc565b805190811561326d576020012090565b50506101605480156132305790565b80156133b6578061334f61334861333e61333461332a61332061331661330c60016103e99a6000908b60801c806133aa575b508060401c8061339d575b508060201c80613390575b508060101c80613383575b508060081c80613376575b508060041c80613369575b508060021c8061335c575b50821c613355575b811c1b613305818b612eff565b0160011c90565b613305818a612eff565b6133058189612eff565b6133058188612eff565b6133058187612eff565b6133058186612eff565b6133058185612eff565b8092612eff565b906133bc565b81016132f8565b60029150910190386132f0565b60049150910190386132e5565b60089150910190386132da565b60109150910190386132cf565b60209150910190386132c4565b60409150910190386132b9565b915050608090386132ae565b50600090565b90808210156133c9575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908181116133f7571690565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff90818111613474571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff908181116134ef571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b1561356057565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b81601f820112156102865780516135e0816114dc565b926135ee60405194856114aa565b81845260208284010111610286576103e99160208085019101610390565b604051906136198261148e565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152565b909161365c6103e9936040845260408401906103b3565b9160208184039101526103b3565b805181016060826020830192031261028657602082015161368a81610500565b60408301519267ffffffffffffffff93848111610286578360206136b0928401016135ca565b936060820151908111610286577fee35af7fe8dd11884af34e46c4d4e86181e4b0b7a4fcaa68c626ee40f2793fc89360206136f5926001600160a01b039401016135ca565b911692613702828261380d565b61370a613cb8565b6137126137ec565b61371a6137c9565b613722613cb8565b61373361372d61360c565b82613cc9565b61373b613cb8565b613744846119e3565b61375360405192839283613645565b0390a2565b1561375f57565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b6137e360ff60005460081c166137de81613758565b613758565b6114da336119ff565b61380160ff60005460081c166137de81613758565b60ff1960c9541660c955565b9061382360ff60005460081c166137de81613758565b815167ffffffffffffffff811161148957613848816138436065546120c8565b61391c565b602080601f8311600114613889575081906114da9460009261387e575b50506000198260011b9260031b1c191617606555613ae2565b015190503880613865565b919293601f1984166138bd60656000527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c790565b936000905b8282106139045750509160019391856114da979694106138eb575b505050811b01606555613ae2565b015160001960f88460031b161c191690553880806138dd565b806001869782949787015181550196019401906138c2565b601f8111613928575050565b600090606582527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7906020601f850160051c83019410613983575b601f0160051c01915b82811061397857505050565b81815560010161396c565b9092508290613963565b601f8111613999575050565b60009061016182527fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b906020601f850160051c830194106139f5575b601f0160051c01915b8281106139ea57505050565b8181556001016139de565b90925082906139d5565b601f8111613a0b575050565b600090606682527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354906020601f850160051c83019410613a66575b601f0160051c01915b828110613a5b57505050565b818155600101613a4f565b9092508290613a46565b601f8111613a7c575050565b60009061016282527f29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac919906020601f850160051c83019410613ad8575b601f0160051c01915b828110613acd57505050565b818155600101613ac1565b9092508290613ab8565b90815167ffffffffffffffff811161148957613b0881613b036066546120c8565b6139ff565b602080601f8311600114613b435750819293600092613b38575b50506000198260011b9260031b1c191617606655565b015190503880613b22565b90601f19831694613b7660666000527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435490565b926000905b878210613bb3575050836001959610613b9a575b505050811b01606655565b015160001960f88460031b161c19169055388080613b8f565b80600185968294968601518155019501930190613b7b565b90815167ffffffffffffffff81116114895761016290613bf481613bef84546120c8565b613a70565b602080601f8311600114613c2f575081929394600092613c24575b50506000198260011b9260031b1c1916179055565b015190503880613c0f565b90601f19831695613c636101626000527f29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac91990565b926000905b888210613ca057505083600195969710613c87575b505050811b019055565b015160001960f88460031b161c19169055388080613c7d565b80600185968294968601518155019501930190613c68565b6114da60ff60005460081c16613758565b9190613ce060ff60005460081c166137de81613758565b825167ffffffffffffffff81116114895761016190613d0881613d0384546120c8565b61398d565b602080601f8311600114613d5f57508190613d3e9596600092613d54575b50506000198260011b9260031b1c1916179055613bcb565b613d49600061015f55565b6114da600061016055565b015190503880613d26565b90601f19831696613d936101616000527fafbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b90565b926000905b898210613dd957505090839291600194613d3e989910613dc0575b505050811b019055613bcb565b015160001960f88460031b161c19169055388080613db3565b80600185968294968601518155019501930190613d98565b60ff60c95416613dfd57565b606460405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b15613e4857565b606460405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152fd5b90613e95613df1565b613e9e81613f5c565b6001600160a01b038216613eb6576114da915061408d565b6114da91613f23565b919091613eca613df1565b6001600160a01b038181169182613f015750613ee583613f5c565b831680613ef85750506114da915061408d565b03613eb6575050565b838286168403613f13575b5050613ee5565b613f1c91613fb9565b3883613f0c565b604090613f2f81611fd1565b926001600160a01b0360009216825260976020528282208483526020528083832055815260986020522055565b60995481600052609a6020528060406000205568010000000000000000811015611489576001810180609955811015612a9a5760996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b90613fc382611fd1565b9060001982019182116108a1576140039261401d9160009481869283526098602052604083205486810361402a575b506000526098602052604060002090565b556001600160a01b03166000526097602052604060002090565b9082526020526040812055565b6001600160a01b0385168452609760205260408420878552602052614086604085205461406a876001600160a01b03166000526097602052604060002090565b8387526020528060408720556000526098602052604060002090565b5538613ff2565b60998054600019928382018281116108a157600092828452609a602052806040852054921015612a9a578484527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979cff928382015491831015612a9a57849261412961413a9388865280837f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155600052609a602052604060002090565b55600052609a602052604060002090565b5582549384156141575784019380851015612a9a57838352015555565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526031600452fd5b6114da90614190611f07565b50506001600160a01b038091169081156141e1575b6101936020527f52b4e351f7ee73df7a81487d66a3c99a3807da594918aed81d3a5b74f597949c54600092835260409092205481169116611d04565b6141e9611f54565b50506141a5565b6114da906001600160a01b03809116801561424e575b61420e611f54565b5050600090815261019360205260408120549080527f52b4e351f7ee73df7a81487d66a3c99a3807da594918aed81d3a5b74f597949c5482169116611d04565b614256611f07565b5050614206565b906114da916001600160a01b03808092169283156142b0575b169182156142a1575b6000526101936020528060406000205416916000526040600020541690611d04565b6142a9611f54565b505061427f565b6142b8611f07565b505061427656fea264697066735822122080eaea4d141bcd77dd482e5edf3555ca63b451fddbae1a44f223216c300da9d164736f6c6343000814003346501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354afbb1c043347995df017ce3291b765e028ad5f784d2aa00c3f5e073760a4de8b29af0939a5988989bfee913a9ad10b9335cb63ebc9fd2b69e5f877d0455ac919", "constructorArgs": { "types": [ "address", @@ -3834,7 +3834,7 @@ "settings": { "optimizer": { "enabled": true, - "runs": 4294967295 + "runs": 10000 }, "viaIR": true, "evmVersion": "paris", @@ -5065,8 +5065,8 @@ "contractVersion": "1.1.0", "compilerVersion": "v0.8.20+commit.a1b79de6", "factory": "0xce0042b868300000d44a59004da54a005ffdcf9f", - "address": "0x0E5da824AbBC578aafCA16f6A3583E2A916183Ff", - "bytecode": "0x608060405234620000c3576200723980380380916200001e82620000de565b608039610140808212620000c357608051906200003b826200015c565b60a051906200004a826200015c565b60c0519062000059826200015c565b620000636200016e565b61010051959091906001600160401b038711620000c357620000b396620000919160800190608001620001af565b6101205191519261016051946101805196620000ac6200020a565b9862000237565b604051615fe99081620012508239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176200010557604052565b620000c8565b604081019081106001600160401b038211176200010557604052565b601f909101601f19168101906001600160401b038211908210176200010557604052565b604051906200015a826200010b565b565b6001600160a01b03811603620000c357565b60e051906200015a826200015c565b51906200015a826200015c565b60005b8381106200019e5750506000910152565b81810151838201526020016200018d565b81601f82011215620000c35780516001600160401b038111620001055760405192620001e6601f8301601f19166020018562000127565b81845260208284010111620000c3576200020791602080850191016200018a565b90565b6101a051906001600160401b0382168203620000c357565b51906001600160401b0382168203620000c357565b93949295620002cc9298620002e3986200015a9b936020998a6040519d8e9a8b9460018060a01b03958694858094169101521660408c01521660608a0152166080880152610140928360a0890152885196620002a5886101609b818d8d01526101809d8e8d0191016200018a565b60c089015260e08801526101008701526101208601526001600160401b0390911690840152565b601f01601f19168101039081018452018262000127565b6000549060ff8260081c16158092819362000412575b8115620003ef575b501562000393576200032c908262000321600160ff196000541617600055565b620003785762000421565b6200033357565b6200034461ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1565b6200038d61010061ff00196000541617600055565b62000421565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b1591508162000403575b503862000301565b6001915060ff161438620003fb565b600160ff8216109150620002f9565b80518101906101408082840312620000c35760208201519162000444836200015c565b604081015162000454816200015c565b60608201519062000465826200015c565b62000473608084016200017d565b60a08401516001600160401b038111620000c357846200057696620005709562000559620004b26200055f956020806200015a9f0191870101620001af565b620005536200050d60c08701519462000530620004e260e08a0151986101206101008c01519b01519f0162000222565b9f60018060a01b039c8d94858093166101f89060018060a01b031660018060a01b0319825416179055565b6101fa8054919092166001600160a01b03166001600160a01b0319909116179055565b6101f98054919092166001600160a01b03166001600160a01b0319909116179055565b620005dd565b62000b02565b6200056962000a7c565b1662000e54565b62000c2d565b62000a8f565b156200058457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b9060ff60005460081c1691620005f3836200057c565b60405162000601816200010b565b60018082526200061c602095603160f81b878501526200057c565b8251946001600160401b038611620001055762000646866200064060675462000841565b6200087e565b80601f8711600114620006ab57509480806200068394936200015a97986000936200069f575b501b916000199060031b1c19161760675562000989565b6200068e6000606555565b620006996000606655565b6200073d565b8701519250386200066c565b606760005290601f1987167f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae926000905b828210620007255750509187916200015a979862000683969594106200070b575b5050811b0160675562000989565b86015160001960f88460031b161c191690553880620006fd565b808685968294968b01518155019501930190620006dc565b906200075160ff60005460081c166200057c565b81516001600160401b03811162000105576200077a816200077460cb5462000841565b620008d7565b602080601f8311600114620007b95750819293600092620007ad575b50508160011b916000199060031b1c19161760cb55565b01519050388062000796565b60cb600052601f198316949091907fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb926000905b878210620008285750508360019596106200080e575b505050811b0160cb55565b015160001960f88460031b161c1916905538808062000803565b80600185968294968601518155019501930190620007ed565b90600182811c9216801562000873575b60208310146200085d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162000851565b601f81116200088b575050565b6000906067825260208220906020601f850160051c83019410620008cc575b601f0160051c01915b828110620008c057505050565b818155600101620008b3565b9092508290620008aa565b601f8111620008e4575050565b60009060cb825260208220906020601f850160051c8301941062000925575b601f0160051c01915b8281106200091957505050565b8181556001016200090c565b909250829062000903565b601f81116200093d575050565b6000906068825260208220906020601f850160051c830194106200097e575b601f0160051c01915b8281106200097257505050565b81815560010162000965565b90925082906200095c565b80519091906001600160401b0381116200010557620009b581620009af60685462000841565b62000930565b602080601f8311600114620009f45750819293600092620009e8575b50508160011b916000199060031b1c191617606855565b015190503880620009d1565b6068600052601f198316949091907fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c22097753926000905b87821062000a6357505083600195961062000a49575b505050811b01606855565b015160001960f88460031b161c1916905538808062000a3e565b8060018596829496860151815501950193019062000a28565b6200015a60ff60005460081c166200057c565b62000aad60ff60005460081c1662000aa7816200057c565b6200057c565b6101c68054604080516001600160401b0380841682529094166020850181905292937f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc29190a16001600160401b031916179055565b91909162000b1d60ff60005460081c1662000aa7816200057c565b60fd5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9391a160fd55811562000b9f5760fe5460408051918252602082018490526200015a93917f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e88289190a160fe5562000bf4565b60405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608490fd5b60ff5460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546191a160ff55565b62000c4560ff60005460081c1662000aa7816200057c565b6064811162000d2a577f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b46339979062000c7a62000e0b565b8015158062000d1e575b62000cdf575b62000cc362000cb162000cab62000ca062000e8e565b65ffffffffffff1690565b620011e9565b62000cbc8462001117565b9062000fc9565b5050604080519182526020820192909252908190810162000373565b62000d1862000cee8262001117565b62000d1262000cfc6200014b565b600081526001600160e01b039092166020830152565b62000da1565b62000c8a565b50610195541562000c84565b60405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a490fd5b6101959081546801000000000000000081101562000105576001810180845581101562000df557600092835260209283902082519284015190931b63ffffffff191663ffffffff9290921691909117910155565b634e487b7160e01b600052603260045260246000fd5b610195805460008162000e22575050506101945490565b60001992828481011162000e40579060209181522001015460201c90565b634e487b7160e01b82526011600452602482fd5b62000e6c60ff60005460081c1662000aa7816200057c565b61016180546001600160a01b0319166001600160a01b03909216919091179055565b610161546040516324776b7d60e21b815290602090829060049082906001600160a01b03165afa809160009162000ed3575b5090620002075750620002074362001181565b6020813d821162000f18575b8162000eee6020938362000127565b8101031262000f1457519065ffffffffffff8216820362000f1157503862000ec0565b80fd5b5080fd5b3d915062000edf565b60001981019190821162000f3157565b634e487b7160e01b600052601160045260246000fd5b604080519192919081016001600160401b038111828210176200010557604052602081935463ffffffff81168352811c910152565b1562000f8457565b60405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606490fd5b610195549192918015620010e857620010a8918185620010246200101e62000ff360209662000f21565b6101956000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700190565b62000f47565b9262001034845163ffffffff1690565b6200104d63ffffffff9182841692839116111562000f7c565b6200106962001060865163ffffffff1690565b63ffffffff1690565b03620010ac57506200108362000ff36200109a9362000f21565b9063ffffffff82549181199060201b169116179055565b01516001600160e01b031690565b9190565b9050620010e29150620010ce620010c26200014b565b63ffffffff9092168252565b6001600160e01b0387168185015262000da1565b6200109a565b506200111190620010fc620010c26200014b565b6001600160e01b038416602082015262000da1565b60009190565b6001600160e01b03908181116200112c571690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608490fd5b65ffffffffffff9081811162001195571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608490fd5b63ffffffff90818111620011fb571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608490fdfe60806040526004361015610023575b361561001957600080fd5b610021612556565b005b60003560e01c806301ffc9a71461032357806302a251a31461031e578063034201811461031957806306f3f9e61461031457806306fdde031461030f578063143489d01461030a578063150b7a02146103055780632656227d14610300578063294402cc146102fb5780632d63f693146102f65780632fe3e261146102f157806332b8113e146102ec5780633932abb1146102e75780633bccf4fd146102e25780633e4f49e6146102dd57806343859632146102d8578063452115d6146102d35780634bf5d7e9146102ce578063544ffc9c146102c957806354fd4d50146102c457806356781388146102bf5780635f398a14146102ba57806360c4247f146102b557806370b0f660146102b05780637b3c71d3146102ab5780637d5e81e2146102a657806384b0196e146102a15780638da5cb5b1461029c57806391ddadf41461029757806397c3d334146102925780639a802a6d1461028d578063a4f9edbf14610288578063a7713a7014610283578063b58131b01461027e578063bc197c8114610279578063c01f9e3714610274578063c28bc2fa1461026f578063c59057e41461026a578063d07f91e914610265578063d4b8399214610260578063dd4e2ba51461025b578063deaaa7cc14610256578063ea0217cf14610251578063eb9019d41461024c578063ece40cc114610247578063f23a6e6114610242578063f8ce560a1461023d5763fc0c546a0361000e57612503565b6124c7565b612437565b6123ab565b6122e4565b612258565b6121ff565b612183565b612130565b612038565b61200a565b611ea9565b611e6d565b611da9565b611d6d565b611d34565b611bbd565b611ab0565b611a76565b611a2d565b6119da565b611900565b61178e565b61171d565b611691565b611655565b6113cd565b61136f565b611335565b6112d3565b611285565b61118f565b611109565b6110bc565b610fb8565b610f7c565b610f35565b610edc565b610e88565b610e35565b610ccb565b610a5b565b6109da565b6108bd565b6107ac565b610705565b610487565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361048257807fbf26d897000000000000000000000000000000000000000000000000000000006103d69214908115610458575b811561042e575b8115610404575b81156103da575b5060405190151581529081906020820190565b0390f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386103c3565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506103bc565b7f51159c0600000000000000000000000000000000000000000000000000000000811491506103b5565b7f79dd796f00000000000000000000000000000000000000000000000000000000811491506103ae565b600080fd5b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602060fe54604051908152f35b6024359060ff8216820361048257565b6044359060ff8216820361048257565b9181601f840112156104825782359167ffffffffffffffff8311610482576020838186019501011161048257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761055c57604052565b610511565b6080810190811067ffffffffffffffff82111761055c57604052565b6020810190811067ffffffffffffffff82111761055c57604052565b6060810190811067ffffffffffffffff82111761055c57604052565b60c0810190811067ffffffffffffffff82111761055c57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761055c57604052565b6040519060e0820182811067ffffffffffffffff82111761055c57604052565b6040519061063f82610540565b565b67ffffffffffffffff811161055c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b91909161068781610641565b61069460405191826105d1565b8093828252821161048257818160009384602080950137010152565b9291926106bc82610641565b916106ca60405193846105d1565b829481845281830111610482578281602093846000960137010152565b9080601f8301121561048257816020610702933591016106b0565b90565b346104825760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825761073c6104c3565b67ffffffffffffffff6044358181116104825761075d9036906004016104e3565b91606435908111610482576107769036906004016106e7565b9260843560ff81168103610482576103d69461079c9460c4359460a43594600435613600565b6040519081529081906020820190565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043573ffffffffffffffffffffffffffffffffffffffff6101f85416610803813314613978565b3003610820575b8061081b6064610021931115614112565b61424c565b61082a363661067b565b602081519101205b8061083b614f49565b03610832575061080a565b60005b8381106108595750506000910152565b8181015183820152602001610849565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936108a581518092818752878088019101610846565b0116010190565b906020610702928181520190610869565b34610482576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109d757604051908060cb546108fe816125d6565b8085529160019180831690811561098f5750600114610934575b6103d685610928818703826105d1565b604051918291826108ac565b925060cb83527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb5b828410610977575050508101602001610928826103d6610918565b8054602085870181019190915290930192810161095c565b8695506103d6969350602092506109289491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019293610918565b80fd5b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043560005260cc602052602073ffffffffffffffffffffffffffffffffffffffff60406000205460401c16604051908152f35b73ffffffffffffffffffffffffffffffffffffffff81160361048257565b346104825760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257610a95600435610a3d565b610aa0602435610a3d565b60643567ffffffffffffffff811161048257610ac09036906004016106e7565b5060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b67ffffffffffffffff811161055c5760051b60200190565b81601f8201121561048257803591610b1a83610aeb565b92610b2860405194856105d1565b808452602092838086019260051b820101928311610482578301905b828210610b52575050505090565b8380918335610b6081610a3d565b815201910190610b44565b81601f8201121561048257803591610b8283610aeb565b92610b9060405194856105d1565b808452602092838086019260051b820101928311610482578301905b828210610bba575050505090565b81358152908301908301610bac565b9080601f8301121561048257813590610be182610aeb565b92610bef60405194856105d1565b828452602092838086019160051b8301019280841161048257848301915b848310610c1d5750505050505090565b823567ffffffffffffffff8111610482578691610c3f848480948901016106e7565b815201920191610c0d565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126104825767ffffffffffffffff916004358381116104825782610c9591600401610b03565b926024358181116104825783610cad91600401610b6b565b9260443591821161048257610cc491600401610bc9565b9060643590565b610ce3610cd736610c4a565b81838594969395612899565b91610ced8361291b565b6008811015610e305760048114908115610e1c575b5015610d98576103d693610d9092610d556002610d298760005260cc602052604060002090565b0160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6040518581527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90602090a1610d8b838261331e565b615ada565b61079c6133f9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c000000000000000000000000000000000000000000000000000000000000006064820152fd5b60059150610e29816110b2565b1438610d02565b611083565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602073ffffffffffffffffffffffffffffffffffffffff6101f95416604051908152f35b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043560005260cc602052602067ffffffffffffffff60406000205416604051908152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206040517fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602067ffffffffffffffff6101c65416604051908152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602060fd54604051908152f35b346104825760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576103d661079c600435610ff86104c3565b61106d6110656110066104d3565b60405160208101917f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f835286604083015260ff861660608301526060825261104d82610561565b6110606084359360643593519020614a79565b6149f0565b919091614867565b6040519261107a8461057d565b60008452613835565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60081115610e3057565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576110f660043561291b565b6040516008821015610e30576020918152f35b346104825760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602060ff61118360243561114b81610a3d565b60043560005261012f845260036040600020019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b346104825761119d36610c4a565b906111aa82828587612899565b926111b48461291b565b6008811015610e3057611227576103d69461122261121b6112026111e561079c9860005260cc602052604060002090565b5460401c73ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b331461321e565b613437565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c000000006044820152fd5b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576103d66112bf6144eb565b604051918291602083526020830190610869565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043560005261012f60205260606040600020805490600260018201549101549060405192835260208301526040820152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576103d66112bf61279c565b346104825760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206113c56113ab6104c3565b604051906113b88261057d565b6000825233600435613835565b604051908152f35b346104825760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576004356114076104c3565b9067ffffffffffffffff906044358281116104825761142a9036906004016104e3565b929093606435828111610482576103d69561144c6114549236906004016106e7565b9536916106b0565b8360005260cc6020526114a96114a3611496604060002061148860016114798a61291b565b611482816110b2565b14615c84565b5467ffffffffffffffff1690565b67ffffffffffffffff1690565b336145cf565b946114b686843388615dfa565b805161161857506114f27fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4916040519182918833968985615d49565b0390a25b8061150f611488846000526101c7602052604060002090565b161580611609575b61152e575b50506040519081529081906020820190565b6115856115b9926115626115406143f4565b65ffffffffffff61155b6101c65467ffffffffffffffff1690565b9116615c68565b9261156c82615f7b565b908416116115c0576000526101c7602052604060002090565b9067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b388061151c565b60405167ffffffffffffffff8416815281907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba51190602090a26000526101c7602052604060002090565b5061161382613bfc565b611517565b7fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87129161164d6040519283928933978a86615d0f565b0390a26114f6565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206113c5600435613e01565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825773ffffffffffffffffffffffffffffffffffffffff6101f854166116e5813314613978565b30036116f7575b610021600435613c3f565b611701363661067b565b602081519101205b80611712614f49565b0361170957506116ec565b346104825760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576117546104c3565b60443567ffffffffffffffff81116104825760209161178461177d6113c59336906004016104e3565b36916106b0565b9033600435613835565b346104825760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825767ffffffffffffffff600435818111610482576117de903690600401610b03565b90602435818111610482576117f7903690600401610b6b565b9160443582811161048257611810903690600401610bc9565b6064359283116104825736602384011215610482576103d69361184061079c9436906024816004013591016106b0565b926130a2565b90815180825260208080930193019160005b828110611866575050505090565b835185529381019392810192600101611858565b91936118e06107029694956118d273ffffffffffffffffffffffffffffffffffffffff947f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e0870190610869565b908582036040870152610869565b946060840152166080820152600060a082015260c0818403910152611846565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760655415806119d0575b1561197257611946612629565b61194e612703565b906103d660405161195e8161057d565b60008152604051938493309146918661187a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060665415611939565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602073ffffffffffffffffffffffffffffffffffffffff6101f85416604051908152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576020611a666143f4565b65ffffffffffff60405191168152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602060405160648152f35b346104825760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257600435611aeb81610a3d565b60443567ffffffffffffffff811161048257611b0b9036906004016106e7565b50602073ffffffffffffffffffffffffffffffffffffffff60448161016154169360405194859384927f3a46b1a800000000000000000000000000000000000000000000000000000000845216600483015260243560248301525afa8015611bb8576103d691600091611b8a575b506040519081529081906020820190565b611bab915060203d8111611bb1575b611ba381836105d1565b810190614018565b38611b79565b503d611b99565b614027565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043567ffffffffffffffff811161048257611c0c9036906004016106e7565b611c6e60005491611c3460ff8460081c161580948195611d26575b8115611d06575b50614fdf565b82611c6560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000541617600055565b611cd057615080565b611c7457005b611ca17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611d016101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b615080565b303b15915081611d18575b5038611c2e565b6001915060ff161438611d11565b600160ff8216109150611c27565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206113c5613d74565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602060ff54604051908152f35b346104825760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257611de3600435610a3d565b611dee602435610a3d565b67ffffffffffffffff60443581811161048257611e0f903690600401610b6b565b5060643581811161048257611e28903690600401610b6b565b5060843590811161048257611e419036906004016106e7565b506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206113c5600435615f7b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257600435611edf81610a3d565b60443567ffffffffffffffff811161048257611eff9036906004016104e3565b919073ffffffffffffffffffffffffffffffffffffffff6101f85416611f26813314613978565b3003611fe4575b611fd991836040519485938437820190600094859383858095520391602435905af13d15611fdd573d611f5f81610641565b90611f6d60405192836105d1565b81523d84602083013e5b60405191611f8483610599565b602883527f476f7665726e6f723a2072656c617920726576657274656420776974686f757460208401527f206d657373616765000000000000000000000000000000000000000000000000604084015261463a565b5080f35b6060611f77565b611fee363661067b565b602081519101205b80611fff614f49565b03611ff65750611f2d565b346104825760206113c561201d36610c4a565b92919091612899565b67ffffffffffffffff81160361048257565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043561207381612026565b73ffffffffffffffffffffffffffffffffffffffff6101f85416612098813314613978565b300361210a575b6101c6907fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000082547f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2604080519467ffffffffffffffff9081851687521694856020820152a116179055005b612114363661067b565b602081519101205b80612125614f49565b0361211c575061209f565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602073ffffffffffffffffffffffffffffffffffffffff6101fa5416604051908152f35b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610482576103d66040516121c181610540565b602081527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e6020820152604051918291602083526020830190610869565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206040517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f8152f35b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825773ffffffffffffffffffffffffffffffffffffffff6101f854166122ac813314613978565b30036122be575b610021600435613c78565b6122c8363661067b565b602081519101205b806122d9614f49565b036122d057506122b3565b346104825760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760043561231f81610a3d565b600060405161232d8161057d565b52602073ffffffffffffffffffffffffffffffffffffffff60448161016154169360405194859384927f3a46b1a800000000000000000000000000000000000000000000000000000000845216600483015260243560248301525afa8015611bb8576103d691600091611b8a57506040519081529081906020820190565b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825773ffffffffffffffffffffffffffffffffffffffff6101f854166123ff813314613978565b3003612411575b610021600435613d3b565b61241b363661067b565b602081519101205b8061242c614f49565b036124235750612406565b346104825760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257612471600435610a3d565b61247c602435610a3d565b60843567ffffffffffffffff81116104825761249c9036906004016106e7565b5060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346104825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104825760206113c560043561406c565b346104825760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261048257602073ffffffffffffffffffffffffffffffffffffffff6101615416604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6101f85416300361257857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f72006044820152fd5b90600182811c9216801561261f575b60208310146125f057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916125e5565b604051906000826067549161263d836125d6565b808352926001908181169081156126c35750600114612664575b5061063f925003836105d1565b6067600090815291507f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae5b8483106126a8575061063f935050810160200138612657565b81935090816020925483858a0101520191019091859261268f565b6020935061063f9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138612657565b6040519060008260685491612717836125d6565b808352926001908181169081156126c3575060011461273d575061063f925003836105d1565b6068600090815291507fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c220977535b848310612781575061063f935050810160200138612657565b81935090816020925483858a01015201910190918592612768565b604051906127a982610540565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152565b90815180825260208080930193019160005b8281106127f5575050505090565b835173ffffffffffffffffffffffffffffffffffffffff16855293810193928101926001016127e7565b908082519081815260208091019281808460051b8301019501936000915b84831061284d5750505050505090565b9091929394958480612889837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51610869565b980193019301919493929061283d565b929061290392612915926040519485926128f36128c2602086019960808b5260a08701906127d5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09687878303016040880152611846565b908585830301606086015261281f565b906080830152039081018352826105d1565b51902090565b60026129318260005260cc602052604060002090565b015460ff8116612a4c5760081c60ff16612a465761295f6114966114888360005260cc602052604060002090565b80156129e35761297b6129706143f4565b65ffffffffffff1690565b809110156129dc5761298c82615f7b565b10156129d65761299b81613bfc565b90816129b2575b50156129ad57600490565b600390565b6129d0915060005261012f6020526040600020600181015490541090565b386129a2565b50600190565b5050600090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606490fd5b0390fd5b50600290565b5050600790565b15612a5a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211612b1457565b612ab8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd88201918211612b1457565b15612b4d57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f77207060448201527f726f706f73616c207468726573686f6c640000000000000000000000000000006064820152fd5b15612bd857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f68000000000000000000000000000000000000000000000000000000000000006064820152fd5b15612c6357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152fd5b15612cc857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b9060018201809211612b1457565b91908201809211612b1457565b90612f0f60c0600261063f9467ffffffffffffffff612db881875116839067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b6020860151907bffffffffffffffffffffffffffffffffffffffff000000000000000083549260401b1690817fffffffff0000000000000000000000000000000000000000ffffffffffffffff84161784557fffffffff00000000000000000000000000000000000000000000000000000000604089015116921617178155612ec560018201612e8b612e56606089015167ffffffffffffffff1690565b829067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b6080870151815467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179055565b0192612f08612ed760a0830151151590565b859060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b0151151590565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690151560081b61ff0016179055565b90612f4c82610aeb565b612f5960405191826105d1565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612f878294610aeb565b019060005b828110612f9857505050565b806060602080938501015201612f8c565b9592612fea90612ff8939b9a9899969592885273ffffffffffffffffffffffffffffffffffffffff60209c168c8901526101208060408a01528801906127d5565b908682036060880152611846565b9784890360808601528251808a52818a019180808360051b8d01019501926000905b8382106130575750505050506107029697509061303e9184820360a086015261281f565b9360c083015260e0820152610100818403910152610869565b909192939583806130938f937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060019582030186528a51610869565b9801920192019093929161301a565b6132187f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e093946130da6130d582336139ee565b612a53565b6130e56129706143f4565b956131056130fb6130f589612ae7565b3361356e565b60ff541115612b46565b61317461311a83516020850120838888612899565b976131288651885114612bd1565b6131358651845114612bd1565b61314186511515612c5c565b61316b67ffffffffffffffff6131646114888c60005260cc602052604060002090565b1615612cc1565b60fd5490612d5a565b61318060fe5482612d5a565b9161320061318d83614d84565b6131d261319986614d84565b6131b46131a4610612565b67ffffffffffffffff9094168452565b3360208401526000604084015267ffffffffffffffff166060830152565b60006080820152600060a0820152600060c08201526131fb8b60005260cc602052604060002090565b612d67565b61320a8651612f42565b604051978897338c8a612fa9565b0390a190565b1561322557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e6360448201527f656c0000000000000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612b145760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156133195760209160051b010190565b6132d6565b919073ffffffffffffffffffffffffffffffffffffffff90816101f854163003613349575b50509050565b600091825b85518110156133eb57613373903083613367838a613305565b511614613378576132a9565b61334e565b6133828185613305565b518051602080920120906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060cd9384549060ce608092831d9586600f0b8d525260408b2055600185549401901b1691161790556132a9565b505050509050803880613343565b73ffffffffffffffffffffffffffffffffffffffff6101f85416300361341b57565b60cd5480600f0b9060801d600f0b1361343057565b600060cd55565b90613443939291612899565b61344c8161291b565b6008811015610e305760028114159081613558575b81613543575b50156134e5576134b360026134868360005260cc602052604060002090565b016101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff825416179055565b6040518181527f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c908060208101613218565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152fd5b60079150613550816110b2565b141538613467565b9050613563816110b2565b600681141590613461565b602090600060405161357f8161057d565b52604473ffffffffffffffffffffffffffffffffffffffff9182610161541660405195869485937f3a46b1a800000000000000000000000000000000000000000000000000000000855216600484015260248301525afa908115611bb8576000916135e8575090565b610702915060203d8111611bb157611ba381836105d1565b959261368c859861177d9560ff98611060868c61369499989b613624368a8c6106b0565b6020815191012090602081519101209060409e8f9485519460208601967fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888852860152166060840152608083015260a082015260a08152613684816105b5565b519020614a79565b949094614867565b8460005260cc6020526136be6136b86114968660002061148860016114798b61291b565b836145cf565b956136cb87858589615dfa565b80516137e257507fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49161371c73ffffffffffffffffffffffffffffffffffffffff9288875194859416968985615d49565b0390a25b67ffffffffffffffff9081613743611488856000526101c7602052604060002090565b1615806137d3575b613756575b50505090565b82613790936115859261376a6115406143f4565b9461377483615f7b565b90861611613798575b50506000526101c7602052604060002090565b388080613750565b5167ffffffffffffffff851681527f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba51190602090a2803861377d565b506137dd83613bfc565b61374b565b9161382d7fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87129373ffffffffffffffffffffffffffffffffffffffff9389885195869516978a86615d0f565b0390a2613720565b9190604051936138448561057d565b600085528360005260cc60205261386d6136b8611496604060002061148860016114798a61291b565b9461387a86858588615dfa565b805161392457507fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4916138cc73ffffffffffffffffffffffffffffffffffffffff928760405194859416968885615d49565b0390a25b67ffffffffffffffff806138f2611488846000526101c7602052604060002090565b161580613915575b61390357505090565b611585610702926115626115406143f4565b5061391f82613bfc565b6138fa565b916139707fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87129373ffffffffffffffffffffffffffffffffffffffff938860405195869516978986615d0f565b0390a26138d0565b1561397f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e636500000000000000006044820152fd5b908151811015613319570160200190565b815160348110613b1c577f2370726f706f7365723d307800000000000000000000000000000000000000007fffffffffffffffffffffffff00000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec83860101511603613b1c5791600092613a7381612b19565b915b818310613a9d5750505073ffffffffffffffffffffffffffffffffffffffff80911691161490565b909193613adb613ad6613ab087856139dd565b517fff000000000000000000000000000000000000000000000000000000000000001690565b613b24565b919015613b115773fffffffffffffffffffffffffffffffffffffff060ff613b0a93169160041b1617946132a9565b9190613a75565b505050505050600190565b505050600190565b60f81c9081602f1080613bf2575b15613b625760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011690565b8160401080613be8575b15613b9c5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9600193011690565b8160601080613bde575b15613bd65760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa9600193011690565b600091508190565b5060678210613ba6565b5060478210613b6c565b50603a8210613b32565b60005261012f602052604060002060cc602052613c2767ffffffffffffffff6040600020541661406c565b600260018301549201548201809211612b1457111590565b60fd5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9391a160fd55565b8015613cb75760fe5460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e882891a160fe55565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060448201527f746f6f206c6f77000000000000000000000000000000000000000000000000006064820152fd5b60ff5460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546191a160ff55565b610195805460009181613d8b575050506101945490565b817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810111612b14577f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29676f9252015460201c90565b90604051613dec81610540565b602081935463ffffffff81168352811c910152565b90610195805492831561400e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401848111612b145784111561331957600091808352613e707f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29676f8601613ddf565b9163ffffffff9281848251161115613fe45750613e8c90614eb4565b91838660058111613f82575b5095928116905b838710613f1e575050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9293508015600014613ed757501690565b613f1a9150613ee8613f1391612ae7565b6101956000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700190565b5460201c90565b1690565b9091928087169080881860011c8201809211612b14578486528383837f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677001541611600014613f705750925b9190613e9f565b939650613f7c90612d4c565b95613f69565b9096613f8d82614b85565b8203918211612b14578386527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677082015483168584161015613fd357508190965b90613e98565b9650613fdf8291612d4c565b613fcd565b602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16955050505050565b5050610194549150565b90816020910312610482575190565b6040513d6000823e3d90fd5b811561403d570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b602490602073ffffffffffffffffffffffffffffffffffffffff6101615416604051938480927f8e539e8c0000000000000000000000000000000000000000000000000000000082528560048301525afa918215611bb8576000926140ee575b506140d690613e01565b90818102918183041490151715612b14576064900490565b6140d691925061410b9060203d8111611bb157611ba381836105d1565b91906140cc565b1561411957565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160648201527f746f7200000000000000000000000000000000000000000000000000000000006084820152fd5b6101959081546801000000000000000081101561055c576001810180845581101561331957600092909252805160209182015190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff91909116177f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677090910155565b6142596064821115614112565b614261613d74565b90811515806143e9575b6142cb575b7f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997916142b76142a86142a36129706143f4565b614eb4565b6142b184614cd7565b906146f9565b5050604080519182526020820192909252a1565b6142d482614cd7565b916040516142e181610540565b6000815260208101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8095168252610195948554926801000000000000000084101561055c57600184018088558410156133195763ffffffff6143e2947f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997986000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770019351167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000845416178355511663ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b9150614270565b50610195541561426b565b6004602073ffffffffffffffffffffffffffffffffffffffff6101615416604051928380927f91ddadf40000000000000000000000000000000000000000000000000000000082525afa8091600091614458575b5090610702575061070243614e1d565b6020813d8211614494575b81614470602093836105d1565b8101031261449057519065ffffffffffff821682036109d7575038614448565b5080fd5b3d9150614463565b909291926144a981610641565b916144b760405193846105d1565b82948284528282011161048257602061063f930190610846565b9080601f830112156104825781516107029260200161449c565b73ffffffffffffffffffffffffffffffffffffffff610161541660405180917f4bf5d7e900000000000000000000000000000000000000000000000000000000825281600460009485935afa90829082614580575b5050610702575060405161455381610540565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b909392503d8085833e61459381836105d1565b8101906020818303126145cb5780519067ffffffffffffffff82116145c7576145bf93949550016144d1565b903880614540565b8580fd5b8480fd5b602090604473ffffffffffffffffffffffffffffffffffffffff9182610161541660405195869485937f3a46b1a800000000000000000000000000000000000000000000000000000000855216600484015260248301525afa908115611bb8576000916135e8575090565b90919015614646575090565b8151156146565750805190602001fd5b612a42906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610869565b1561469b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152fd5b61019554919291801561481e576147cf91818561472261471d613ee8602096612ae7565b613ddf565b92614731845163ffffffff1690565b61474863ffffffff91828416928391161115614694565b614762614759865163ffffffff1690565b63ffffffff1690565b036147d35750614777613ee86147ac93612ae7565b9063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b905061481991506147f16147e5610632565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8716818501526141c3565b6147ac565b506148579061482e6147e5610632565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660208201526141c3565b60009190565b60051115610e3057565b6148708161485d565b806148785750565b6148818161485d565b600181036148e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b6148f18161485d565b60028103614958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061496460039261485d565b1461496b57565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311614a6d5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611bb857815173ffffffffffffffffffffffffffffffffffffffff8116156129d6579190565b50505050600090600390565b604290614a84614b14565b614a8c614b5f565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614adb816105b5565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b614b1c612629565b8051908115614b2c576020012090565b50506065548015614b3a5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b614b67612703565b8051908115614b77576020012090565b50506066548015614b3a5790565b8015614cbf5780614c58614c51614c47614c3d614c33614c29614c1f614c1560016107029a6000908b60801c80614cb3575b508060401c80614ca6575b508060201c80614c99575b508060101c80614c8c575b508060081c80614c7f575b508060041c80614c72575b508060021c80614c65575b50821c614c5e575b811c1b614c0e818b614033565b0160011c90565b614c0e818a614033565b614c0e8189614033565b614c0e8188614033565b614c0e8187614033565b614c0e8186614033565b614c0e8185614033565b8092614033565b90614cc5565b8101614c01565b6002915091019038614bf9565b6004915091019038614bee565b6008915091019038614be3565b6010915091019038614bd8565b6020915091019038614bcd565b6040915091019038614bc2565b91505060809038614bb7565b50600090565b9080821015614cd2575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818111614d00571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b67ffffffffffffffff90818111614d99571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff90818111614e30571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff90818111614ec5571690565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b60cd549081600f0b809260801d600f0b1315614fb5578160005260ce60205260406000209160008354935560017fffffffffffffffffffffffffffffffff0000000000000000000000000000000060cd541691016fffffffffffffffffffffffffffffffff161760cd55565b60046040517f3db2a12a000000000000000000000000000000000000000000000000000000008152fd5b15614fe657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b519061063f82610a3d565b519061063f82612026565b80518101906101408082840312610482576020820151916150a083610a3d565b60408101516150ae81610a3d565b6060820151906150bd82610a3d565b6150c96080840161506a565b60a084015167ffffffffffffffff811161048257846152319661522c9561521961510161521e9560208061063f9f01918701016144d1565b61521461518c60c0870151946151d061512c60e08a0151986101206101008c01519b01519f01615075565b9f73ffffffffffffffffffffffffffffffffffffffff9c8d948580931673ffffffffffffffffffffffffffffffffffffffff6101f891167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1673ffffffffffffffffffffffffffffffffffffffff6101fa91167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1673ffffffffffffffffffffffffffffffffffffffff6101f991167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6152c1565b6158d0565b61522661583a565b16615919565b615900565b61584b565b1561523d57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9060ff60005460081c16916152d583615236565b6152e66152e061279c565b93615236565b805167ffffffffffffffff811161055c5761530b816153066067546125d6565b6155a4565b602080601f8311600114615387575093816153639261063f959660009161537c575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176067556156f7565b61536d6000606555565b6153776000606655565b615450565b90508401513861532d565b6067600052907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083167f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae926000905b8282106154385750509261063f959692600192826153639610615401575b5050811b016067556156f7565b8601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905538806153f4565b80600185968294968a015181550195019301906153d6565b9061546260ff60005460081c16615236565b815167ffffffffffffffff811161055c576154878161548260cb546125d6565b615615565b602080601f83116001146154e057508192936000926154d5575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161760cb55565b0151905038806154a1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169461553160cb6000527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb90565b926000905b87821061558c575050836001959610615555575b505050811b0160cb55565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905538808061554a565b80600185968294968601518155019501930190615536565b601f81116155b0575050565b600090606782527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae906020601f850160051c8301941061560b575b601f0160051c01915b82811061560057505050565b8181556001016155f4565b90925082906155eb565b601f8111615621575050565b60009060cb82527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb906020601f850160051c8301941061567c575b601f0160051c01915b82811061567157505050565b818155600101615665565b909250829061565c565b601f8111615692575050565b600090606882527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c22097753906020601f850160051c830194106156ed575b601f0160051c01915b8281106156e257505050565b8181556001016156d6565b90925082906156cd565b90815167ffffffffffffffff811161055c5761571d816157186068546125d6565b615686565b602080601f8311600114615776575081929360009261576b575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606855565b015190503880615737565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316946157c760686000527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c2209775390565b926000905b8782106158225750508360019596106157eb575b505050811b01606855565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690553880806157e0565b806001859682949686015181550195019301906157cc565b61063f60ff60005460081c16615236565b61586560ff60005460081c1661586081615236565b615236565b6101c6907fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000082547f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2604080519467ffffffffffffffff9081851687521694856020820152a116179055565b61063f92916158f66158fb926158f160ff60005460081c1661586081615236565b613c3f565b613c78565b613d3b565b61063f9061081b60ff60005460081c1661586081615236565b61592e60ff60005460081c1661586081615236565b73ffffffffffffffffffffffffffffffffffffffff61016191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60808183031261048257805161598681610a3d565b92602082015192604083015167ffffffffffffffff811161048257830181601f82011215610482576060918160206159c09351910161449c565b92015160028110156104825790565b90949391608082019573ffffffffffffffffffffffffffffffffffffffff809116835260209660808885015282518091528760a085019301916000905b89838310615a61575050505050818103604083015285808551928381520194019060005b818110615a4d57505050610702939450606081840391015261281f565b825186529487019491870191600101615a30565b845182168652948501949093019260019190910190615a0c565b90816020910312610482575180151581036104825790565b949392909173ffffffffffffffffffffffffffffffffffffffff615aca931686526020860152608060408601526080850190610869565b926002821015610e305760600152565b9190615b3a91615b006101f95473ffffffffffffffffffffffffffffffffffffffff1690565b9160405193849283927f1075c4d40000000000000000000000000000000000000000000000000000000084526000978896600486016159cf565b038173574c22059b3e65c3467241901a175ec2a05caf8e5af48015611bb85782839084918593615c3c575b602093945085615b916112026112026101fa5473ffffffffffffffffffffffffffffffffffffffff1690565b92615bcb604051978896879586947f468721a700000000000000000000000000000000000000000000000000000000865260048601615a93565b03925af1918215611bb85791615c0e575b5015615be457565b60046040517f50e006fd000000000000000000000000000000000000000000000000000000008152fd5b615c2f915060203d8111615c35575b615c2781836105d1565b810190615a7b565b38615bdc565b503d615c1d565b50505050615c5d6020913d8085833e615c5581836105d1565b810190615971565b919350909183615b65565b91909167ffffffffffffffff80809416911601918211612b1457565b15615c8b57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201527f69766500000000000000000000000000000000000000000000000000000000006064820152fd5b93909260ff615d3b9361070297958752166020860152604085015260a0606085015260a0840190610869565b916080818403910152610869565b909260ff6080936107029695845216602083015260408201528160608201520190610869565b15615d7657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160448201527f64792063617374000000000000000000000000000000000000000000000000006064820152fd5b91615eb1615e86615e1960ff949560005261012f602052604060002090565b9460038601615e61615e5c615e58615e5185859073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460ff1690565b1590565b615d6f565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b1680615ec8575090615ec4908254612d5a565b9055565b60018103615ee057506001615ec49101918254612d5a565b600203615ef6576002615ec49101918254612d5a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160448201527f6c756520666f7220656e756d20566f74655479706500000000000000000000006064820152608490fd5b60005260cc60205267ffffffffffffffff8060016040600020015416906101c760205260406000205416808211600014614cd257509056fea2646970667358221220f221dc2f9a94abb2d681799f37629a6e999f884ce46026794c15fcacc70354ea64736f6c63430008140033", + "address": "0xA7AbaaC2DF5669B7A2a14310163c8522c848F7F2", + "bytecode": "0x608060405234620000c3576200667580380380916200001e82620000de565b608039610140808212620000c357608051906200003b826200015c565b60a051906200004a826200015c565b60c0519062000059826200015c565b620000636200016e565b61010051959091906001600160401b038711620000c357620000b396620000919160800190608001620001af565b6101205191519261016051946101805196620000ac6200020a565b9862000237565b6040516154259081620012508239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176200010557604052565b620000c8565b604081019081106001600160401b038211176200010557604052565b601f909101601f19168101906001600160401b038211908210176200010557604052565b604051906200015a826200010b565b565b6001600160a01b03811603620000c357565b60e051906200015a826200015c565b51906200015a826200015c565b60005b8381106200019e5750506000910152565b81810151838201526020016200018d565b81601f82011215620000c35780516001600160401b038111620001055760405192620001e6601f8301601f19166020018562000127565b81845260208284010111620000c3576200020791602080850191016200018a565b90565b6101a051906001600160401b0382168203620000c357565b51906001600160401b0382168203620000c357565b93949295620002cc9298620002e3986200015a9b936020998a6040519d8e9a8b9460018060a01b03958694858094169101521660408c01521660608a0152166080880152610140928360a0890152885196620002a5886101609b818d8d01526101809d8e8d0191016200018a565b60c089015260e08801526101008701526101208601526001600160401b0390911690840152565b601f01601f19168101039081018452018262000127565b6000549060ff8260081c16158092819362000412575b8115620003ef575b501562000393576200032c908262000321600160ff196000541617600055565b620003785762000421565b6200033357565b6200034461ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1565b6200038d61010061ff00196000541617600055565b62000421565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b1591508162000403575b503862000301565b6001915060ff161438620003fb565b600160ff8216109150620002f9565b80518101906101408082840312620000c35760208201519162000444836200015c565b604081015162000454816200015c565b60608201519062000465826200015c565b62000473608084016200017d565b60a08401516001600160401b038111620000c357846200057696620005709562000559620004b26200055f956020806200015a9f0191870101620001af565b620005536200050d60c08701519462000530620004e260e08a0151986101206101008c01519b01519f0162000222565b9f60018060a01b039c8d94858093166101f89060018060a01b031660018060a01b0319825416179055565b6101fa8054919092166001600160a01b03166001600160a01b0319909116179055565b6101f98054919092166001600160a01b03166001600160a01b0319909116179055565b620005dd565b62000b02565b6200056962000a7c565b1662000e54565b62000c2d565b62000a8f565b156200058457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b9060ff60005460081c1691620005f3836200057c565b60405162000601816200010b565b60018082526200061c602095603160f81b878501526200057c565b8251946001600160401b038611620001055762000646866200064060675462000841565b6200087e565b80601f8711600114620006ab57509480806200068394936200015a97986000936200069f575b501b916000199060031b1c19161760675562000989565b6200068e6000606555565b620006996000606655565b6200073d565b8701519250386200066c565b606760005290601f1987167f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae926000905b828210620007255750509187916200015a979862000683969594106200070b575b5050811b0160675562000989565b86015160001960f88460031b161c191690553880620006fd565b808685968294968b01518155019501930190620006dc565b906200075160ff60005460081c166200057c565b81516001600160401b03811162000105576200077a816200077460cb5462000841565b620008d7565b602080601f8311600114620007b95750819293600092620007ad575b50508160011b916000199060031b1c19161760cb55565b01519050388062000796565b60cb600052601f198316949091907fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb926000905b878210620008285750508360019596106200080e575b505050811b0160cb55565b015160001960f88460031b161c1916905538808062000803565b80600185968294968601518155019501930190620007ed565b90600182811c9216801562000873575b60208310146200085d57565b634e487b7160e01b600052602260045260246000fd5b91607f169162000851565b601f81116200088b575050565b6000906067825260208220906020601f850160051c83019410620008cc575b601f0160051c01915b828110620008c057505050565b818155600101620008b3565b9092508290620008aa565b601f8111620008e4575050565b60009060cb825260208220906020601f850160051c8301941062000925575b601f0160051c01915b8281106200091957505050565b8181556001016200090c565b909250829062000903565b601f81116200093d575050565b6000906068825260208220906020601f850160051c830194106200097e575b601f0160051c01915b8281106200097257505050565b81815560010162000965565b90925082906200095c565b80519091906001600160401b0381116200010557620009b581620009af60685462000841565b62000930565b602080601f8311600114620009f45750819293600092620009e8575b50508160011b916000199060031b1c191617606855565b015190503880620009d1565b6068600052601f198316949091907fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c22097753926000905b87821062000a6357505083600195961062000a49575b505050811b01606855565b015160001960f88460031b161c1916905538808062000a3e565b8060018596829496860151815501950193019062000a28565b6200015a60ff60005460081c166200057c565b62000aad60ff60005460081c1662000aa7816200057c565b6200057c565b6101c68054604080516001600160401b0380841682529094166020850181905292937f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc29190a16001600160401b031916179055565b91909162000b1d60ff60005460081c1662000aa7816200057c565b60fd5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9391a160fd55811562000b9f5760fe5460408051918252602082018490526200015a93917f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e88289190a160fe5562000bf4565b60405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608490fd5b60ff5460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546191a160ff55565b62000c4560ff60005460081c1662000aa7816200057c565b6064811162000d2a577f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b46339979062000c7a62000e0b565b8015158062000d1e575b62000cdf575b62000cc362000cb162000cab62000ca062000e8e565b65ffffffffffff1690565b620011e9565b62000cbc8462001117565b9062000fc9565b5050604080519182526020820192909252908190810162000373565b62000d1862000cee8262001117565b62000d1262000cfc6200014b565b600081526001600160e01b039092166020830152565b62000da1565b62000c8a565b50610195541562000c84565b60405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a490fd5b6101959081546801000000000000000081101562000105576001810180845581101562000df557600092835260209283902082519284015190931b63ffffffff191663ffffffff9290921691909117910155565b634e487b7160e01b600052603260045260246000fd5b610195805460008162000e22575050506101945490565b60001992828481011162000e40579060209181522001015460201c90565b634e487b7160e01b82526011600452602482fd5b62000e6c60ff60005460081c1662000aa7816200057c565b61016180546001600160a01b0319166001600160a01b03909216919091179055565b610161546040516324776b7d60e21b815290602090829060049082906001600160a01b03165afa809160009162000ed3575b5090620002075750620002074362001181565b6020813d821162000f18575b8162000eee6020938362000127565b8101031262000f1457519065ffffffffffff8216820362000f1157503862000ec0565b80fd5b5080fd5b3d915062000edf565b60001981019190821162000f3157565b634e487b7160e01b600052601160045260246000fd5b604080519192919081016001600160401b038111828210176200010557604052602081935463ffffffff81168352811c910152565b1562000f8457565b60405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606490fd5b610195549192918015620010e857620010a8918185620010246200101e62000ff360209662000f21565b6101956000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700190565b62000f47565b9262001034845163ffffffff1690565b6200104d63ffffffff9182841692839116111562000f7c565b6200106962001060865163ffffffff1690565b63ffffffff1690565b03620010ac57506200108362000ff36200109a9362000f21565b9063ffffffff82549181199060201b169116179055565b01516001600160e01b031690565b9190565b9050620010e29150620010ce620010c26200014b565b63ffffffff9092168252565b6001600160e01b0387168185015262000da1565b6200109a565b506200111190620010fc620010c26200014b565b6001600160e01b038416602082015262000da1565b60009190565b6001600160e01b03908181116200112c571690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608490fd5b65ffffffffffff9081811162001195571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608490fd5b63ffffffff90818111620011fb571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608490fdfe60806040526004361015610023575b361561001957600080fd5b610021612051565b005b60003560e01c806301ffc9a71461032357806302a251a31461031e578063034201811461031957806306f3f9e61461031457806306fdde031461030f578063143489d01461030a578063150b7a02146103055780632656227d14610300578063294402cc146102fb5780632d63f693146102f65780632fe3e261146102f157806332b8113e146102ec5780633932abb1146102e75780633bccf4fd146102e25780633e4f49e6146102dd57806343859632146102d8578063452115d6146102d35780634bf5d7e9146102ce578063544ffc9c146102c957806354fd4d50146102c457806356781388146102bf5780635f398a14146102ba57806360c4247f146102b557806370b0f660146102b05780637b3c71d3146102ab5780637d5e81e2146102a657806384b0196e146102a15780638da5cb5b1461029c57806391ddadf41461029757806397c3d334146102925780639a802a6d1461028d578063a4f9edbf14610288578063a7713a7014610283578063b58131b01461027e578063bc197c8114610279578063c01f9e3714610274578063c28bc2fa1461026f578063c59057e41461026a578063d07f91e914610265578063d4b8399214610260578063dd4e2ba51461025b578063deaaa7cc14610256578063ea0217cf14610251578063eb9019d41461024c578063ece40cc114610247578063f23a6e6114610242578063f8ce560a1461023d5763fc0c546a0361000e5761201c565b611ffe565b611f8c565b611f1e565b611e75565b611e07565b611dcc565b611d6e565b611d39565b611c5f565b611c31565b611aee565b611ad0565b611a2a565b611a0c565b6119f1565b6118b2565b6117c3565b6117a7565b61177c565b611747565b6116a5565b611551565b6114fe565b611490565b611472565b611208565b6111c8565b6111ac565b611168565b611138565b61105c565b610ff4565b610fc5565b610edf565b610ec1565b610e98565b610e5d565b610e27565b610df2565b610cc0565b610a8c565b610a29565b610948565b610716565b61068d565b610469565b34610464576020600319360112610464576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361046457807fbf26d897000000000000000000000000000000000000000000000000000000006103b8921490811561043a575b8115610410575b81156103e6575b81156103bc575b5060405190151581529081906020820190565b0390f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386103a5565b7f4e2312e0000000000000000000000000000000000000000000000000000000008114915061039e565b7f51159c060000000000000000000000000000000000000000000000000000000081149150610397565b7f79dd796f0000000000000000000000000000000000000000000000000000000081149150610390565b600080fd5b3461046457600060031936011261046457602060fe54604051908152f35b6024359060ff8216820361046457565b6044359060ff8216820361046457565b9181601f840112156104645782359167ffffffffffffffff8311610464576020838186019501011161046457565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761052057604052565b6104d5565b6080810190811067ffffffffffffffff82111761052057604052565b6020810190811067ffffffffffffffff82111761052057604052565b6060810190811067ffffffffffffffff82111761052057604052565b60c0810190811067ffffffffffffffff82111761052057604052565b90601f601f19910116810190811067ffffffffffffffff82111761052057604052565b604051906105c582610504565b565b6040519060e0820182811067ffffffffffffffff82111761052057604052565b67ffffffffffffffff811161052057601f01601f191660200190565b91909161060f816105e7565b61061c6040519182610595565b8093828252821161046457818160009384602080950137010152565b929192610644826105e7565b916106526040519384610595565b829481845281830111610464578281602093846000960137010152565b9080601f830112156104645781602061068a93359101610638565b90565b346104645760e0600319360112610464576106a6610487565b67ffffffffffffffff604435818111610464576106c79036906004016104a7565b91606435908111610464576106e090369060040161066f565b9260843560ff81168103610464576103b8946107069460c4359460a43594600435612f0f565b6040519081529081906020820190565b346104645760206003193601126104645760043573ffffffffffffffffffffffffffffffffffffffff6101f8541661074f813314613287565b30036108c9575b60648111610839577f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b46339979061078861364f565b8015158061082e575b6107e2575b6107c66107b76107b26107a7613a4b565b65ffffffffffff1690565b61443b565b6107c0846142ac565b90613d1c565b505060408051918252602082019290925290819081015b0390a1005b6108296107ee826142ac565b6108246107f96105b8565b600081527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092166020830152565b6139c2565b610796565b506101955415610791565b60a460405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160648201527f746f7200000000000000000000000000000000000000000000000000000000006084820152fd5b6108d33636610603565b602081519101205b806108e46144b6565b036108db5750610756565b60005b8381106109025750506000910152565b81810151838201526020016108f2565b90601f19601f602093610930815180928187528780880191016108ef565b0116010190565b90602061068a928181520190610912565b3461046457600080600319360112610a2657604051908060cb5461096b816120b7565b808552916001918083169081156109fc57506001146109a1575b6103b88561099581870382610595565b60405191829182610937565b925060cb83527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb5b8284106109e4575050508101602001610995826103b8610985565b805460208587018101919091529093019281016109c9565b8695506103b89693506020925061099594915060ff191682840152151560051b8201019293610985565b80fd5b346104645760206003193601126104645760043560005260cc602052602073ffffffffffffffffffffffffffffffffffffffff60406000205460401c16604051908152f35b73ffffffffffffffffffffffffffffffffffffffff81160361046457565b3461046457608060031936011261046457610aa8600435610a6e565b610ab3602435610a6e565b60643567ffffffffffffffff811161046457610ad390369060040161066f565b5060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b67ffffffffffffffff81116105205760051b60200190565b81601f8201121561046457803591610b2d83610afe565b92610b3b6040519485610595565b808452602092838086019260051b820101928311610464578301905b828210610b65575050505090565b8380918335610b7381610a6e565b815201910190610b57565b81601f8201121561046457803591610b9583610afe565b92610ba36040519485610595565b808452602092838086019260051b820101928311610464578301905b828210610bcd575050505090565b81358152908301908301610bbf565b9080601f8301121561046457813590610bf482610afe565b92610c026040519485610595565b828452602092838086019160051b8301019280841161046457848301915b848310610c305750505050505090565b823567ffffffffffffffff8111610464578691610c528484809489010161066f565b815201920191610c20565b60806003198201126104645767ffffffffffffffff916004358381116104645782610c8a91600401610b16565b926024358181116104645783610ca291600401610b7e565b9260443591821161046457610cb991600401610bdc565b9060643590565b610cd8610ccc36610c5d565b81838594969395612337565b91610ce28361239b565b6008811015610ded5760048114908115610dd9575b5015610d6f576103b893610d6792610d2c6002610d1e8760005260cc602052604060002090565b01600160ff19825416179055565b6040518581527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90602090a1610d628382612c47565b614f82565b610706612d22565b608460405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560448201527f6c000000000000000000000000000000000000000000000000000000000000006064820152fd5b60059150610de681610fbb565b1438610cf7565b610f8c565b3461046457600060031936011261046457602073ffffffffffffffffffffffffffffffffffffffff6101f95416604051908152f35b346104645760206003193601126104645760043560005260cc602052602067ffffffffffffffff60406000205416604051908152f35b346104645760006003193601126104645760206040517fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888152f35b3461046457600060031936011261046457602067ffffffffffffffff6101c65416604051908152f35b3461046457600060031936011261046457602060fd54604051908152f35b346104645760a0600319360112610464576103b8610706600435610f01610487565b610f76610f6e610f0f610497565b60405160208101917f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f835286604083015260ff8616606083015260608252610f5682610525565b610f69608435936064359351902061404e565b613fc5565b919091613e8a565b60405192610f8384610541565b60008452613144565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60081115610ded57565b3461046457602060031936011261046457610fe160043561239b565b6040516008821015610ded576020918152f35b3461046457604060031936011261046457602060ff61105060243561101881610a6e565b60043560005261012f845260036040600020019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b346104645761106a36610c5d565b9061107782828587612337565b926110818461239b565b6008811015610ded576110f4576103b8946110ef6110e86110cf6110b26107069860005260cc602052604060002090565b5460401c73ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b3314612b7f565b612d60565b606460405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c000000006044820152fd5b34610464576000600319360112610464576103b8611154613b42565b604051918291602083526020830190610912565b346104645760206003193601126104645760043560005261012f60205260606040600020805490600260018201549101549060405192835260208301526040820152f35b34610464576000600319360112610464576103b861115461225f565b346104645760406003193601126104645760206112006111e6610487565b604051906111f382610541565b6000825233600435613144565b604051908152f35b3461046457608060031936011261046457600435611224610487565b9067ffffffffffffffff90604435828111610464576112479036906004016104a7565b929093606435828111610464576103b89561126961127192369060040161066f565b953691610638565b8360005260cc6020526112c66112c06112b360406000206112a560016112968a61239b565b61129f81610fbb565b1461512c565b5467ffffffffffffffff1690565b67ffffffffffffffff1690565b33613c26565b946112d38684338861526e565b8051611435575061130f7fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49160405191829188339689856151d7565b0390a25b8061132c6112a5846000526101c7602052604060002090565b161580611426575b61134b575b50506040519081529081906020820190565b6113a26113d69261137f61135d613a4b565b65ffffffffffff6113786101c65467ffffffffffffffff1690565b9116615110565b92611389826153b7565b908416116113dd576000526101c7602052604060002090565b9067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b3880611339565b60405167ffffffffffffffff8416815281907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba51190602090a26000526101c7602052604060002090565b50611430826134f1565b611334565b7fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87129161146a6040519283928933978a8661519d565b0390a2611313565b346104645760206003193601126104645760206112006004356136cf565b346104645760206003193601126104645773ffffffffffffffffffffffffffffffffffffffff6101f854166114c6813314613287565b30036114d8575b610021600435613534565b6114e23636610603565b602081519101205b806114f36144b6565b036114ea57506114cd565b3461046457606060031936011261046457611517610487565b60443567ffffffffffffffff8111610464576020916115476115406112009336906004016104a7565b3691610638565b9033600435613144565b346104645760806003193601126104645767ffffffffffffffff60043581811161046457611583903690600401610b16565b906024358181116104645761159c903690600401610b7e565b91604435828111610464576115b5903690600401610bdc565b6064359283116104645736602384011215610464576103b8936115e5610706943690602481600401359101610638565b92612a03565b90815180825260208080930193019160005b82811061160b575050505090565b8351855293810193928101926001016115fd565b919361168561068a96949561167773ffffffffffffffffffffffffffffffffffffffff947f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e0870190610912565b908582036040870152610912565b946060840152166080820152600060a082015260c08184039101526115eb565b3461046457600060031936011261046457606554158061173d575b156116f9576116cd61210a565b6116d56121c6565b906103b86040516116e581610541565b60008152604051938493309146918661161f565b606460405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50606654156116c0565b3461046457600060031936011261046457602073ffffffffffffffffffffffffffffffffffffffff6101f85416604051908152f35b34610464576000600319360112610464576020611797613a4b565b65ffffffffffff60405191168152f35b3461046457600060031936011261046457602060405160648152f35b34610464576060600319360112610464576004356117e081610a6e565b60443567ffffffffffffffff81116104645761180090369060040161066f565b50602073ffffffffffffffffffffffffffffffffffffffff60448161016154169360405194859384927f3a46b1a800000000000000000000000000000000000000000000000000000000845216600483015260243560248301525afa80156118ad576103b89160009161187f575b506040519081529081906020820190565b6118a0915060203d81116118a6575b6118988183610595565b8101906138c8565b3861186e565b503d61188e565b6138d7565b346104645760206003193601126104645760043567ffffffffffffffff8111610464576118e390369060040161066f565b6119276000549161190b60ff8460081c1615809481956119e3575b81156119c3575b5061454c565b8261191e600160ff196000541617600055565b61198d576145d3565b61192d57005b61195a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff60005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081016107dd565b6119be6101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6000541617600055565b6145d3565b303b159150816119d5575b5038611905565b6001915060ff1614386119ce565b600160ff82161091506118fe565b3461046457600060031936011261046457602061120061364f565b3461046457600060031936011261046457602060ff54604051908152f35b346104645760a060031936011261046457611a46600435610a6e565b611a51602435610a6e565b67ffffffffffffffff60443581811161046457611a72903690600401610b7e565b5060643581811161046457611a8b903690600401610b7e565b5060843590811161046457611aa490369060040161066f565b506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346104645760206003193601126104645760206112006004356153b7565b606060031936011261046457600435611b0681610a6e565b60443567ffffffffffffffff811161046457611b269036906004016104a7565b919073ffffffffffffffffffffffffffffffffffffffff6101f85416611b4d813314613287565b3003611c0b575b611c0091836040519485938437820190600094859383858095520391602435905af13d15611c04573d611b86816105e7565b90611b946040519283610595565b81523d84602083013e5b60405191611bab8361055d565b602883527f476f7665726e6f723a2072656c617920726576657274656420776974686f757460208401527f206d6573736167650000000000000000000000000000000000000000000000006040840152613c91565b5080f35b6060611b9e565b611c153636610603565b602081519101205b80611c266144b6565b03611c1d5750611b54565b34610464576020611200611c4436610c5d565b92919091612337565b67ffffffffffffffff81160361046457565b3461046457602060031936011261046457600435611c7c81611c4d565b73ffffffffffffffffffffffffffffffffffffffff6101f85416611ca1813314613287565b3003611d13575b6101c6907fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000082547f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2604080519467ffffffffffffffff9081851687521694856020820152a116179055005b611d1d3636610603565b602081519101205b80611d2e6144b6565b03611d255750611ca8565b3461046457600060031936011261046457602073ffffffffffffffffffffffffffffffffffffffff6101fa5416604051908152f35b34610464576000600319360112610464576103b8604051611d8e81610504565b602081527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e6020820152604051918291602083526020830190610912565b346104645760006003193601126104645760206040517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f8152f35b346104645760206003193601126104645773ffffffffffffffffffffffffffffffffffffffff6101f85416611e3d813314613287565b3003611e4f575b61002160043561356d565b611e593636610603565b602081519101205b80611e6a6144b6565b03611e615750611e44565b3461046457604060031936011261046457600435611e9281610a6e565b6000604051611ea081610541565b52602073ffffffffffffffffffffffffffffffffffffffff60448161016154169360405194859384927f3a46b1a800000000000000000000000000000000000000000000000000000000845216600483015260243560248301525afa80156118ad576103b89160009161187f57506040519081529081906020820190565b346104645760206003193601126104645773ffffffffffffffffffffffffffffffffffffffff6101f85416611f54813314613287565b3003611f66575b610021600435613616565b611f703636610603565b602081519101205b80611f816144b6565b03611f785750611f5b565b346104645760a060031936011261046457611fa8600435610a6e565b611fb3602435610a6e565b60843567ffffffffffffffff811161046457611fd390369060040161066f565b5060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b3461046457602060031936011261046457602061120060043561391c565b3461046457600060031936011261046457602073ffffffffffffffffffffffffffffffffffffffff6101615416604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6101f85416300361207357565b606460405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f72006044820152fd5b90600182811c92168015612100575b60208310146120d157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916120c6565b604051906000826067549161211e836120b7565b808352926001908181169081156121a45750600114612145575b506105c592500383610595565b6067600090815291507f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae5b84831061218957506105c5935050810160200138612138565b81935090816020925483858a01015201910190918592612170565b602093506105c595925060ff1991501682840152151560051b82010138612138565b60405190600082606854916121da836120b7565b808352926001908181169081156121a4575060011461220057506105c592500383610595565b6068600090815291507fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c220977535b84831061224457506105c5935050810160200138612138565b81935090816020925483858a0101520191019091859261222b565b6040519061226c82610504565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152565b90815180825260208080930193019160005b8281106122b8575050505090565b835173ffffffffffffffffffffffffffffffffffffffff16855293810193928101926001016122aa565b90815180825260208092019182818360051b85019501936000915b84831061230d5750505050505090565b909192939495848061232783856001950387528a51610912565b98019301930191949392906122fd565b92906123839261239592604051948592612373612360602086019960808b5260a0870190612298565b601f1996878783030160408801526115eb565b90858583030160608601526122e2565b90608083015203908101835282610595565b51902090565b60026123b18260005260cc602052604060002090565b015460ff81166124a75760081c60ff166124a1576123df6112b36112a58360005260cc602052604060002090565b8015612458576123f06107a7613a4b565b8091101561245157612401826153b7565b101561244b57612410816134f1565b9081612427575b501561242257600490565b600390565b612445915060005261012f6020526040600020600181015490541090565b38612417565b50600190565b5050600090565b60405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606490fd5b0390fd5b50600290565b5050600790565b156124b557565b606460405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90600019820191821161253757565b6124f9565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8820191821161253757565b1561257057565b608460405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f77207060448201527f726f706f73616c207468726573686f6c640000000000000000000000000000006064820152fd5b156125e157565b608460405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460448201527f68000000000000000000000000000000000000000000000000000000000000006064820152fd5b1561265257565b606460405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152fd5b1561269d57565b608460405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b906001820180921161253757565b9190820180921161253757565b906128ac60c060026105c59467ffffffffffffffff61277381875116839067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b6020860151907bffffffffffffffffffffffffffffffffffffffff000000000000000083549260401b1690817fffffffff0000000000000000000000000000000000000000ffffffffffffffff84161784557fffffffff0000000000000000000000000000000000000000000000000000000060408901511692161717815561288060018201612846612811606089015167ffffffffffffffff1690565b829067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b6080870151815467ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179055565b01926128a561289260a0830151151590565b859060ff60ff1983541691151516179055565b0151151590565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690151560081b61ff0016179055565b906128e982610afe565b6128f66040519182610595565b828152601f196129068294610afe565b019060005b82811061291757505050565b80606060208093850101520161290b565b959261296990612977939b9a9899969592885273ffffffffffffffffffffffffffffffffffffffff60209c168c8901526101208060408a0152880190612298565b9086820360608801526115eb565b9784890360808601528251808a52818a019180808360051b8d01019501926000905b8382106129d657505050505061068a969750906129bd9184820360a08601526122e2565b9360c083015260e0820152610100818403910152610912565b909192939583806129f48f93601f1960019582030186528a51610912565b98019201920190939291612999565b612b797f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e09394612a3b612a3682336132e3565b6124ae565b612a466107a7613a4b565b95612a66612a5c612a5689612528565b33612e7d565b60ff541115612569565b612ad5612a7b83516020850120838888612337565b97612a8986518851146125da565b612a9686518451146125da565b612aa28651151561264b565b612acc67ffffffffffffffff612ac56112a58c60005260cc602052604060002090565b1615612696565b60fd5490612715565b612ae160fe5482612715565b91612b61612aee8361433f565b612b33612afa8661433f565b612b15612b056105c7565b67ffffffffffffffff9094168452565b3360208401526000604084015267ffffffffffffffff166060830152565b60006080820152600060a0820152600060c0820152612b5c8b60005260cc602052604060002090565b612722565b612b6b86516128df565b604051978897338c8a612928565b0390a190565b15612b8657565b608460405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e6360448201527f656c0000000000000000000000000000000000000000000000000000000000006064820152fd5b60001981146125375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015612c425760209160051b010190565b612bff565b919073ffffffffffffffffffffffffffffffffffffffff90816101f854163003612c72575b50509050565b600091825b8551811015612d1457612c9c903083612c90838a612c2e565b511614612ca157612bf0565b612c77565b612cab8185612c2e565b518051602080920120906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000060cd9384549060ce608092831d9586600f0b8d525260408b2055600185549401901b169116179055612bf0565b505050509050803880612c6c565b73ffffffffffffffffffffffffffffffffffffffff6101f854163003612d4457565b60cd5480600f0b9060801d600f0b13612d5957565b600060cd55565b90612d6c939291612337565b612d758161239b565b6008811015610ded5760028114159081612e67575b81612e52575b5015612e0e57612ddc6002612daf8360005260cc602052604060002090565b016101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff825416179055565b6040518181527f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c908060208101612b79565b606460405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152fd5b60079150612e5f81610fbb565b141538612d90565b9050612e7281610fbb565b600681141590612d8a565b6020906000604051612e8e81610541565b52604473ffffffffffffffffffffffffffffffffffffffff9182610161541660405195869485937f3a46b1a800000000000000000000000000000000000000000000000000000000855216600484015260248301525afa9081156118ad57600091612ef7575090565b61068a915060203d81116118a6576118988183610595565b9592612f9b85986115409560ff98610f69868c612fa399989b612f33368a8c610638565b6020815191012090602081519101209060409e8f9485519460208601967fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888852860152166060840152608083015260a082015260a08152612f9381610579565b51902061404e565b949094613e8a565b8460005260cc602052612fcd612fc76112b3866000206112a560016112968b61239b565b83613c26565b95612fda8785858961526e565b80516130f157507fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49161302b73ffffffffffffffffffffffffffffffffffffffff92888751948594169689856151d7565b0390a25b67ffffffffffffffff90816130526112a5856000526101c7602052604060002090565b1615806130e2575b613065575b50505090565b8261309f936113a29261307961135d613a4b565b94613083836153b7565b908616116130a7575b50506000526101c7602052604060002090565b38808061305f565b5167ffffffffffffffff851681527f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba51190602090a2803861308c565b506130ec836134f1565b61305a565b9161313c7fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87129373ffffffffffffffffffffffffffffffffffffffff9389885195869516978a8661519d565b0390a261302f565b91906040519361315385610541565b600085528360005260cc60205261317c612fc76112b360406000206112a560016112968a61239b565b946131898685858861526e565b805161323357507fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4916131db73ffffffffffffffffffffffffffffffffffffffff9287604051948594169688856151d7565b0390a25b67ffffffffffffffff806132016112a5846000526101c7602052604060002090565b161580613224575b61321257505090565b6113a261068a9261137f61135d613a4b565b5061322e826134f1565b613209565b9161327f7fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87129373ffffffffffffffffffffffffffffffffffffffff93886040519586951697898661519d565b0390a26131df565b1561328e57565b606460405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a206f6e6c79476f7665726e616e636500000000000000006044820152fd5b908151811015612c42570160200190565b815160348110613411577f2370726f706f7365723d307800000000000000000000000000000000000000007fffffffffffffffffffffffff00000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec8386010151160361341157916000926133688161253c565b915b8183106133925750505073ffffffffffffffffffffffffffffffffffffffff80911691161490565b9091936133d06133cb6133a587856132d2565b517fff000000000000000000000000000000000000000000000000000000000000001690565b613419565b9190156134065773fffffffffffffffffffffffffffffffffffffff060ff6133ff93169160041b161794612bf0565b919061336a565b505050505050600190565b505050600190565b60f81c9081602f10806134e7575b156134575760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011690565b81604010806134dd575b156134915760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9600193011690565b81606010806134d3575b156134cb5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa9600193011690565b600091508190565b506067821061349b565b5060478210613461565b50603a8210613427565b60005261012f602052604060002060cc60205261351c67ffffffffffffffff6040600020541661391c565b60026001830154920154820180921161253757111590565b60fd5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9391a160fd55565b80156135ac5760fe5460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e882891a160fe55565b608460405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060448201527f746f6f206c6f77000000000000000000000000000000000000000000000000006064820152fd5b60ff5460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546191a160ff55565b610195805460009181613666575050506101945490565b81600019810111612537577f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29676f9252015460201c90565b906040516040810181811067ffffffffffffffff82111761052057604052602081935463ffffffff81168352811c910152565b9061019580549283156138be57600019840184811161253757841115612c42576000918083526137207f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29676f860161369c565b9163ffffffff9281848251161115613894575061373c9061443b565b91838660058111613832575b5095928116905b8387106137ce575050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929350801560001461378757501690565b6137ca91506137986137c391612528565b6101956000527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967700190565b5460201c90565b1690565b9091928087169080881860011c8201809211612537578486528383837f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e296770015416116000146138205750925b919061374f565b93965061382c90612707565b95613819565b909661383d8261415a565b8203918211612537578386527f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e2967708201548316858416101561388357508190965b90613748565b965061388f8291612707565b61387d565b602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16955050505050565b5050610194549150565b90816020910312610464575190565b6040513d6000823e3d90fd5b81156138ed570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b602490602073ffffffffffffffffffffffffffffffffffffffff6101615416604051938480927f8e539e8c0000000000000000000000000000000000000000000000000000000082528560048301525afa9182156118ad5760009261399e575b50613986906136cf565b90818102918183041490151715612537576064900490565b6139869192506139bb9060203d81116118a6576118988183610595565b919061397c565b610195908154680100000000000000008110156105205760018101808455811015612c4257600092909252805160209182015190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff91909116177f54034dca961b61bc2a3147cc0c1986762915b42723ed64155364f17a2e29677090910155565b6004602073ffffffffffffffffffffffffffffffffffffffff6101615416604051928380927f91ddadf40000000000000000000000000000000000000000000000000000000082525afa8091600091613aaf575b509061068a575061068a436143be565b6020813d8211613aeb575b81613ac760209383610595565b81010312613ae757519065ffffffffffff82168203610a26575038613a9f565b5080fd5b3d9150613aba565b90929192613b00816105e7565b91613b0e6040519384610595565b8294828452828201116104645760206105c59301906108ef565b9080601f8301121561046457815161068a92602001613af3565b73ffffffffffffffffffffffffffffffffffffffff610161541660405180917f4bf5d7e900000000000000000000000000000000000000000000000000000000825281600460009485935afa90829082613bd7575b505061068a5750604051613baa81610504565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b909392503d8085833e613bea8183610595565b810190602081830312613c225780519067ffffffffffffffff8211613c1e57613c169394955001613b28565b903880613b97565b8580fd5b8480fd5b602090604473ffffffffffffffffffffffffffffffffffffffff9182610161541660405195869485937f3a46b1a800000000000000000000000000000000000000000000000000000000855216600484015260248301525afa9081156118ad57600091612ef7575090565b90919015613c9d575090565b815115613cad5750805190602001fd5b61249d9060405191829162461bcd60e51b8352602060048401526024830190610912565b15613cd857565b606460405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152fd5b610195549192918015613e4157613df2918185613d45613d40613798602096612528565b61369c565b92613d54845163ffffffff1690565b613d6b63ffffffff91828416928391161115613cd1565b613d85613d7c865163ffffffff1690565b63ffffffff1690565b03613df65750613d9a613798613dcf93612528565b9063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b9050613e3c9150613e14613e086105b8565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8716818501526139c2565b613dcf565b50613e7a90613e51613e086105b8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660208201526139c2565b60009190565b60051115610ded57565b613e9381613e80565b80613e9b5750565b613ea481613e80565b60018103613ef15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b613efa81613e80565b60028103613f475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613f53600392613e80565b14613f5a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116140425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118ad57815173ffffffffffffffffffffffffffffffffffffffff81161561244b579190565b50505050600090600390565b6042906140596140e9565b614061614134565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526140b081610579565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b6140f161210a565b8051908115614101576020012090565b5050606554801561410f5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61413c6121c6565b805190811561414c576020012090565b5050606654801561410f5790565b8015614294578061422d61422661421c6142126142086141fe6141f46141ea600161068a9a6000908b60801c80614288575b508060401c8061427b575b508060201c8061426e575b508060101c80614261575b508060081c80614254575b508060041c80614247575b508060021c8061423a575b50821c614233575b811c1b6141e3818b6138e3565b0160011c90565b6141e3818a6138e3565b6141e381896138e3565b6141e381886138e3565b6141e381876138e3565b6141e381866138e3565b6141e381856138e3565b80926138e3565b9061429a565b81016141d6565b60029150910190386141ce565b60049150910190386141c3565b60089150910190386141b8565b60109150910190386141ad565b60209150910190386141a2565b6040915091019038614197565b9150506080903861418c565b50600090565b90808210156142a7575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908181116142d5571690565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b67ffffffffffffffff90818111614354571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff908181116143d1571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff9081811161444c571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b60cd549081600f0b809260801d600f0b1315614522578160005260ce60205260406000209160008354935560017fffffffffffffffffffffffffffffffff0000000000000000000000000000000060cd541691016fffffffffffffffffffffffffffffffff161760cd55565b60046040517f3db2a12a000000000000000000000000000000000000000000000000000000008152fd5b1561455357565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b51906105c582610a6e565b51906105c582611c4d565b80518101906101408082840312610464576020820151916145f383610a6e565b604081015161460181610a6e565b60608201519061461082610a6e565b61461c608084016145bd565b60a084015167ffffffffffffffff811161046457846147849661477f9561476c614654614771956020806105c59f0191870101613b28565b6147676146df60c08701519461472361467f60e08a0151986101206101008c01519b01519f016145c8565b9f73ffffffffffffffffffffffffffffffffffffffff9c8d948580931673ffffffffffffffffffffffffffffffffffffffff6101f891167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1673ffffffffffffffffffffffffffffffffffffffff6101fa91167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1673ffffffffffffffffffffffffffffffffffffffff6101f991167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6147fa565b614cfb565b614779614c65565b16614dc1565b614d2b565b614c76565b1561479057565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9060ff60005460081c169161480e83614789565b61481f61481961225f565b93614789565b805167ffffffffffffffff8111610520576148448161483f6067546120b7565b614a29565b602080601f83116001146148a25750938161487e926105c59596600091614897575b506000198260011b9260031b1c191617606755614b7c565b6148886000606555565b6148926000606655565b61492f565b905084015138614866565b606760005290601f1983167f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae926000905b828210614917575050926105c59596926001928261487e96106148fe575b5050811b01606755614b7c565b86015160001960f88460031b161c1916905538806148f1565b80600185968294968a015181550195019301906148d3565b9061494160ff60005460081c16614789565b815167ffffffffffffffff8111610520576149668161496160cb546120b7565b614a9a565b602080601f83116001146149a15750819293600092614996575b50506000198260011b9260031b1c19161760cb55565b015190503880614980565b90601f198316946149d460cb6000527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb90565b926000905b878210614a115750508360019596106149f8575b505050811b0160cb55565b015160001960f88460031b161c191690553880806149ed565b806001859682949686015181550195019301906149d9565b601f8111614a35575050565b600090606782527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae906020601f850160051c83019410614a90575b601f0160051c01915b828110614a8557505050565b818155600101614a79565b9092508290614a70565b601f8111614aa6575050565b60009060cb82527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb906020601f850160051c83019410614b01575b601f0160051c01915b828110614af657505050565b818155600101614aea565b9092508290614ae1565b601f8111614b17575050565b600090606882527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c22097753906020601f850160051c83019410614b72575b601f0160051c01915b828110614b6757505050565b818155600101614b5b565b9092508290614b52565b90815167ffffffffffffffff811161052057614ba281614b9d6068546120b7565b614b0b565b602080601f8311600114614bdd5750819293600092614bd2575b50506000198260011b9260031b1c191617606855565b015190503880614bbc565b90601f19831694614c1060686000527fa2153420d844928b4421650203c77babc8b33d7f2e7b450e2966db0c2209775390565b926000905b878210614c4d575050836001959610614c34575b505050811b01606855565b015160001960f88460031b161c19169055388080614c29565b80600185968294968601518155019501930190614c15565b6105c560ff60005460081c16614789565b614c9060ff60005460081c16614c8b81614789565b614789565b6101c6907fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000082547f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2604080519467ffffffffffffffff9081851687521694856020820152a116179055565b6105c59291614d21614d2692614d1c60ff60005460081c16614c8b81614789565b613534565b61356d565b613616565b614d4060ff60005460081c16614c8b81614789565b60648111610839577f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b463399790614d7261364f565b80151580614db6575b614da5575b614d916107b76107b26107a7613a4b565b5050604080519182526020820192909252a1565b614db16107ee826142ac565b614d80565b506101955415614d7b565b614dd660ff60005460081c16614c8b81614789565b73ffffffffffffffffffffffffffffffffffffffff61016191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b608081830312610464578051614e2e81610a6e565b92602082015192604083015167ffffffffffffffff811161046457830181601f8201121561046457606091816020614e6893519101613af3565b92015160028110156104645790565b90949391608082019573ffffffffffffffffffffffffffffffffffffffff809116835260209660808885015282518091528760a085019301916000905b89838310614f09575050505050818103604083015285808551928381520194019060005b818110614ef55750505061068a93945060608184039101526122e2565b825186529487019491870191600101614ed8565b845182168652948501949093019260019190910190614eb4565b90816020910312610464575180151581036104645790565b949392909173ffffffffffffffffffffffffffffffffffffffff614f72931686526020860152608060408601526080850190610912565b926002821015610ded5760600152565b9190614fe291614fa86101f95473ffffffffffffffffffffffffffffffffffffffff1690565b9160405193849283927f1075c4d4000000000000000000000000000000000000000000000000000000008452600097889660048601614e77565b038173b48669c9c27a3be7219755b82e5d3567a0f4d21e5af480156118ad57828390849185936150e4575b6020939450856150396110cf6110cf6101fa5473ffffffffffffffffffffffffffffffffffffffff1690565b92615073604051978896879586947f468721a700000000000000000000000000000000000000000000000000000000865260048601614f3b565b03925af19182156118ad57916150b6575b501561508c57565b60046040517f50e006fd000000000000000000000000000000000000000000000000000000008152fd5b6150d7915060203d81116150dd575b6150cf8183610595565b810190614f23565b38615084565b503d6150c5565b505050506151056020913d8085833e6150fd8183610595565b810190614e19565b91935090918361500d565b91909167ffffffffffffffff8080941691160191821161253757565b1561513357565b608460405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201527f69766500000000000000000000000000000000000000000000000000000000006064820152fd5b93909260ff6151c99361068a97958752166020860152604085015260a0606085015260a0840190610912565b916080818403910152610912565b909260ff60809361068a9695845216602083015260408201528160608201520190610912565b1561520457565b608460405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160448201527f64792063617374000000000000000000000000000000000000000000000000006064820152fd5b916153076152fa61528d60ff949560005261012f602052604060002090565b94600386016152d56152d06152cc6152c585859073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460ff1690565b1590565b6151fd565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b600160ff19825416179055565b168061531e57509061531a908254612715565b9055565b600181036153365750600161531a9101918254612715565b60020361534c57600261531a9101918254612715565b60405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160448201527f6c756520666f7220656e756d20566f74655479706500000000000000000000006064820152608490fd5b60005260cc60205267ffffffffffffffff8060016040600020015416906101c7602052604060002054168082116000146142a757509056fea26469706673582212201103e61ef69dd4f10b95b6c8b7f8243d0323c1d38fc895ea156aa0241b8f49ce64736f6c63430008140033", "constructorArgs": { "types": [ "address", @@ -5084,12 +5084,12 @@ "0x0000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000001", - "0x9a73aE387eb97EF59765bd13ECF1E37f28515b70", + "0x7Ce7f1DBB328376e6A308e51a4BA5Efb8C9f5F5C", "", 0, 100, 0, - 0, + 10, 0 ] }, @@ -6515,7 +6515,7 @@ "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (governance/extensions/GovernorSettings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../GovernorUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {Governor} for settings updatable through governance.\n *\n * _Available since v4.4._\n */\nabstract contract GovernorSettingsUpgradeable is Initializable, GovernorUpgradeable {\n uint256 private _votingDelay;\n uint256 private _votingPeriod;\n uint256 private _proposalThreshold;\n\n event VotingDelaySet(uint256 oldVotingDelay, uint256 newVotingDelay);\n event VotingPeriodSet(uint256 oldVotingPeriod, uint256 newVotingPeriod);\n event ProposalThresholdSet(uint256 oldProposalThreshold, uint256 newProposalThreshold);\n\n /**\n * @dev Initialize the governance parameters.\n */\n function __GovernorSettings_init(uint256 initialVotingDelay, uint256 initialVotingPeriod, uint256 initialProposalThreshold) internal onlyInitializing {\n __GovernorSettings_init_unchained(initialVotingDelay, initialVotingPeriod, initialProposalThreshold);\n }\n\n function __GovernorSettings_init_unchained(uint256 initialVotingDelay, uint256 initialVotingPeriod, uint256 initialProposalThreshold) internal onlyInitializing {\n _setVotingDelay(initialVotingDelay);\n _setVotingPeriod(initialVotingPeriod);\n _setProposalThreshold(initialProposalThreshold);\n }\n\n /**\n * @dev See {IGovernor-votingDelay}.\n */\n function votingDelay() public view virtual override returns (uint256) {\n return _votingDelay;\n }\n\n /**\n * @dev See {IGovernor-votingPeriod}.\n */\n function votingPeriod() public view virtual override returns (uint256) {\n return _votingPeriod;\n }\n\n /**\n * @dev See {Governor-proposalThreshold}.\n */\n function proposalThreshold() public view virtual override returns (uint256) {\n return _proposalThreshold;\n }\n\n /**\n * @dev Update the voting delay. This operation can only be performed through a governance proposal.\n *\n * Emits a {VotingDelaySet} event.\n */\n function setVotingDelay(uint256 newVotingDelay) public virtual onlyGovernance {\n _setVotingDelay(newVotingDelay);\n }\n\n /**\n * @dev Update the voting period. This operation can only be performed through a governance proposal.\n *\n * Emits a {VotingPeriodSet} event.\n */\n function setVotingPeriod(uint256 newVotingPeriod) public virtual onlyGovernance {\n _setVotingPeriod(newVotingPeriod);\n }\n\n /**\n * @dev Update the proposal threshold. This operation can only be performed through a governance proposal.\n *\n * Emits a {ProposalThresholdSet} event.\n */\n function setProposalThreshold(uint256 newProposalThreshold) public virtual onlyGovernance {\n _setProposalThreshold(newProposalThreshold);\n }\n\n /**\n * @dev Internal setter for the voting delay.\n *\n * Emits a {VotingDelaySet} event.\n */\n function _setVotingDelay(uint256 newVotingDelay) internal virtual {\n emit VotingDelaySet(_votingDelay, newVotingDelay);\n _votingDelay = newVotingDelay;\n }\n\n /**\n * @dev Internal setter for the voting period.\n *\n * Emits a {VotingPeriodSet} event.\n */\n function _setVotingPeriod(uint256 newVotingPeriod) internal virtual {\n // voting period must be at least one block long\n require(newVotingPeriod > 0, \"GovernorSettings: voting period too low\");\n emit VotingPeriodSet(_votingPeriod, newVotingPeriod);\n _votingPeriod = newVotingPeriod;\n }\n\n /**\n * @dev Internal setter for the proposal threshold.\n *\n * Emits a {ProposalThresholdSet} event.\n */\n function _setProposalThreshold(uint256 newProposalThreshold) internal virtual {\n emit ProposalThresholdSet(_proposalThreshold, newProposalThreshold);\n _proposalThreshold = newProposalThreshold;\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[47] private __gap;\n}\n" }, "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesQuorumFractionUpgradeable.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (governance/extensions/GovernorVotesQuorumFraction.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./GovernorVotesUpgradeable.sol\";\nimport \"../../utils/CheckpointsUpgradeable.sol\";\nimport \"../../utils/math/SafeCastUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {Governor} for voting weight extraction from an {ERC20Votes} token and a quorum expressed as a\n * fraction of the total supply.\n *\n * _Available since v4.3._\n */\nabstract contract GovernorVotesQuorumFractionUpgradeable is Initializable, GovernorVotesUpgradeable {\n using CheckpointsUpgradeable for CheckpointsUpgradeable.Trace224;\n\n uint256 private _quorumNumerator; // DEPRECATED in favor of _quorumNumeratorHistory\n\n /// @custom:oz-retyped-from Checkpoints.History\n CheckpointsUpgradeable.Trace224 private _quorumNumeratorHistory;\n\n event QuorumNumeratorUpdated(uint256 oldQuorumNumerator, uint256 newQuorumNumerator);\n\n /**\n * @dev Initialize quorum as a fraction of the token's total supply.\n *\n * The fraction is specified as `numerator / denominator`. By default the denominator is 100, so quorum is\n * specified as a percent: a numerator of 10 corresponds to quorum being 10% of total supply. The denominator can be\n * customized by overriding {quorumDenominator}.\n */\n function __GovernorVotesQuorumFraction_init(uint256 quorumNumeratorValue) internal onlyInitializing {\n __GovernorVotesQuorumFraction_init_unchained(quorumNumeratorValue);\n }\n\n function __GovernorVotesQuorumFraction_init_unchained(uint256 quorumNumeratorValue) internal onlyInitializing {\n _updateQuorumNumerator(quorumNumeratorValue);\n }\n\n /**\n * @dev Returns the current quorum numerator. See {quorumDenominator}.\n */\n function quorumNumerator() public view virtual returns (uint256) {\n return _quorumNumeratorHistory._checkpoints.length == 0 ? _quorumNumerator : _quorumNumeratorHistory.latest();\n }\n\n /**\n * @dev Returns the quorum numerator at a specific timepoint. See {quorumDenominator}.\n */\n function quorumNumerator(uint256 timepoint) public view virtual returns (uint256) {\n // If history is empty, fallback to old storage\n uint256 length = _quorumNumeratorHistory._checkpoints.length;\n if (length == 0) {\n return _quorumNumerator;\n }\n\n // Optimistic search, check the latest checkpoint\n CheckpointsUpgradeable.Checkpoint224 memory latest = _quorumNumeratorHistory._checkpoints[length - 1];\n if (latest._key <= timepoint) {\n return latest._value;\n }\n\n // Otherwise, do the binary search\n return _quorumNumeratorHistory.upperLookupRecent(SafeCastUpgradeable.toUint32(timepoint));\n }\n\n /**\n * @dev Returns the quorum denominator. Defaults to 100, but may be overridden.\n */\n function quorumDenominator() public view virtual returns (uint256) {\n return 100;\n }\n\n /**\n * @dev Returns the quorum for a timepoint, in terms of number of votes: `supply * numerator / denominator`.\n */\n function quorum(uint256 timepoint) public view virtual override returns (uint256) {\n return (token.getPastTotalSupply(timepoint) * quorumNumerator(timepoint)) / quorumDenominator();\n }\n\n /**\n * @dev Changes the quorum numerator.\n *\n * Emits a {QuorumNumeratorUpdated} event.\n *\n * Requirements:\n *\n * - Must be called through a governance proposal.\n * - New numerator must be smaller or equal to the denominator.\n */\n function updateQuorumNumerator(uint256 newQuorumNumerator) external virtual onlyGovernance {\n require(\n newQuorumNumerator <= quorumDenominator(),\n \"GovernorVotesQuorumFraction: quorumNumerator over quorumDenominator\"\n );\n _updateQuorumNumerator(newQuorumNumerator);\n }\n\n /**\n * @dev Changes the quorum numerator.\n *\n * Emits a {QuorumNumeratorUpdated} event.\n *\n * Requirements:\n *\n * - New numerator must be smaller or equal to the denominator.\n */\n function _updateQuorumNumerator(uint256 newQuorumNumerator) internal virtual {\n require(\n newQuorumNumerator <= quorumDenominator(),\n \"GovernorVotesQuorumFraction: quorumNumerator over quorumDenominator\"\n );\n\n uint256 oldQuorumNumerator = quorumNumerator();\n\n // Make sure we keep track of the original numerator in contracts upgraded from a version without checkpoints.\n if (oldQuorumNumerator != 0 && _quorumNumeratorHistory._checkpoints.length == 0) {\n _quorumNumeratorHistory._checkpoints.push(\n CheckpointsUpgradeable.Checkpoint224({\n _key: 0,\n _value: SafeCastUpgradeable.toUint224(oldQuorumNumerator)\n })\n );\n }\n\n // Set new quorum for future proposals\n _quorumNumeratorHistory.push(\n SafeCastUpgradeable.toUint32(clock()),\n SafeCastUpgradeable.toUint224(newQuorumNumerator)\n );\n\n emit QuorumNumeratorUpdated(oldQuorumNumerator, newQuorumNumerator);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[48] private __gap;\n}\n" + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (governance/extensions/GovernorVotesQuorumFraction.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./GovernorVotesUpgradeable.sol\";\nimport \"../../utils/CheckpointsUpgradeable.sol\";\nimport \"../../utils/math/SafeCastUpgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {Governor} for voting weight extraction from an {ERC20Votes} token and a quorum expressed as a\n * fraction of the total supply.\n *\n * _Available since v4.3._\n */\nabstract contract GovernorVotesQuorumFractionUpgradeable is Initializable, GovernorVotesUpgradeable {\n using CheckpointsUpgradeable for CheckpointsUpgradeable.Trace224;\n\n uint256 private _quorumNumerator; // DEPRECATED in favor of _quorumNumeratorHistory\n\n /// @custom:oz-retyped-from Checkpoints.History\n CheckpointsUpgradeable.Trace224 private _quorumNumeratorHistory;\n\n event QuorumNumeratorUpdated(uint256 oldQuorumNumerator, uint256 newQuorumNumerator);\n\n /**\n * @dev Initialize quorum as a fraction of the token's total supply.\n *\n * The fraction is specified as `numerator / denominator`. By default the denominator is 100, so quorum is\n * specified as a percent: a numerator of 10 corresponds to quorum being 10% of total supply. The denominator can be\n * customized by overriding {quorumDenominator}.\n */\n function __GovernorVotesQuorumFraction_init(uint256 quorumNumeratorValue) internal onlyInitializing {\n __GovernorVotesQuorumFraction_init_unchained(quorumNumeratorValue);\n }\n\n function __GovernorVotesQuorumFraction_init_unchained(uint256 quorumNumeratorValue) internal onlyInitializing {\n _updateQuorumNumerator(quorumNumeratorValue);\n }\n\n /**\n * @dev Returns the current quorum numerator. See {quorumDenominator}.\n */\n function quorumNumerator() public view virtual returns (uint256) {\n return _quorumNumeratorHistory._checkpoints.length == 0 ? _quorumNumerator : _quorumNumeratorHistory.latest();\n }\n\n /**\n * @dev Returns the quorum numerator at a specific timepoint. See {quorumDenominator}.\n */\n function quorumNumerator(uint256 timepoint) public view virtual returns (uint256) {\n // If history is empty, fallback to old storage\n uint256 length = _quorumNumeratorHistory._checkpoints.length;\n if (length == 0) {\n return _quorumNumerator;\n }\n\n // Optimistic search, check the latest checkpoint\n CheckpointsUpgradeable.Checkpoint224 memory latest = _quorumNumeratorHistory._checkpoints[length - 1];\n if (latest._key <= timepoint) {\n return latest._value;\n }\n\n // Otherwise, do the binary search\n return _quorumNumeratorHistory.upperLookupRecent(SafeCastUpgradeable.toUint32(timepoint));\n }\n\n /**\n * @dev Returns the quorum denominator. Defaults to 100, but may be overridden.\n */\n function quorumDenominator() public view virtual returns (uint256) {\n return 100;\n }\n\n /**\n * @dev Returns the quorum for a timepoint, in terms of number of votes: `supply * numerator / denominator`.\n */\n function quorum(uint256 timepoint) public view virtual override returns (uint256) {\n return (token.getPastTotalSupply(timepoint) * quorumNumerator(timepoint)) / quorumDenominator();\n }\n\n /**\n * @dev Changes the quorum numerator.\n *\n * Emits a {QuorumNumeratorUpdated} event.\n *\n * Requirements:\n *\n * - Must be called through a governance proposal.\n * - New numerator must be smaller or equal to the denominator.\n */\n function updateQuorumNumerator(uint256 newQuorumNumerator) external virtual onlyGovernance {\n _updateQuorumNumerator(newQuorumNumerator);\n }\n\n /**\n * @dev Changes the quorum numerator.\n *\n * Emits a {QuorumNumeratorUpdated} event.\n *\n * Requirements:\n *\n * - New numerator must be smaller or equal to the denominator.\n */\n function _updateQuorumNumerator(uint256 newQuorumNumerator) internal virtual {\n require(\n newQuorumNumerator <= quorumDenominator(),\n \"GovernorVotesQuorumFraction: quorumNumerator over quorumDenominator\"\n );\n\n uint256 oldQuorumNumerator = quorumNumerator();\n\n // Make sure we keep track of the original numerator in contracts upgraded from a version without checkpoints.\n if (oldQuorumNumerator != 0 && _quorumNumeratorHistory._checkpoints.length == 0) {\n _quorumNumeratorHistory._checkpoints.push(\n CheckpointsUpgradeable.Checkpoint224({_key: 0, _value: SafeCastUpgradeable.toUint224(oldQuorumNumerator)})\n );\n }\n\n // Set new quorum for future proposals\n _quorumNumeratorHistory.push(SafeCastUpgradeable.toUint32(clock()), SafeCastUpgradeable.toUint224(newQuorumNumerator));\n\n emit QuorumNumeratorUpdated(oldQuorumNumerator, newQuorumNumerator);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[48] private __gap;\n}\n" }, "@openzeppelin/contracts-upgradeable/governance/extensions/GovernorVotesUpgradeable.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (governance/extensions/GovernorVotes.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../GovernorUpgradeable.sol\";\nimport \"../../interfaces/IERC5805Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {Governor} for voting weight extraction from an {ERC20Votes} token, or since v4.5 an {ERC721Votes} token.\n *\n * _Available since v4.3._\n *\n * @custom:storage-size 51\n */\nabstract contract GovernorVotesUpgradeable is Initializable, GovernorUpgradeable {\n IERC5805Upgradeable public token;\n\n function __GovernorVotes_init(IVotesUpgradeable tokenAddress) internal onlyInitializing {\n __GovernorVotes_init_unchained(tokenAddress);\n }\n\n function __GovernorVotes_init_unchained(IVotesUpgradeable tokenAddress) internal onlyInitializing {\n token = IERC5805Upgradeable(address(tokenAddress));\n }\n\n /**\n * @dev Clock (as specified in EIP-6372) is set to match the token's clock. Fallback to block numbers if the token\n * does not implement EIP-6372.\n */\n function clock() public view virtual override returns (uint48) {\n try token.clock() returns (uint48 timepoint) {\n return timepoint;\n } catch {\n return SafeCastUpgradeable.toUint48(block.number);\n }\n }\n\n /**\n * @dev Machine-readable description of the clock as specified in EIP-6372.\n */\n // solhint-disable-next-line func-name-mixedcase\n function CLOCK_MODE() public view virtual override returns (string memory) {\n try token.CLOCK_MODE() returns (string memory clockmode) {\n return clockmode;\n } catch {\n return \"mode=blocknumber&from=default\";\n }\n }\n\n /**\n * Read the voting weight from the token's built in snapshot mechanism (see {Governor-_getVotes}).\n */\n function _getVotes(\n address account,\n uint256 timepoint,\n bytes memory /*params*/\n ) internal view virtual override returns (uint256) {\n return token.getPastVotes(account, timepoint);\n }\n\n /**\n * @dev This empty reserved space is put in place to allow future versions to add new\n * variables without shifting down storage in the inheritance chain.\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n */\n uint256[50] private __gap;\n}\n" @@ -6596,7 +6596,7 @@ "settings": { "optimizer": { "enabled": true, - "runs": 4294967295 + "runs": 10000 }, "viaIR": true, "evmVersion": "paris", @@ -6613,6 +6613,11 @@ "ast" ] } + }, + "libraries": { + "contracts/MultisendEncoder.sol": { + "MultisendEncoder": "0xB48669C9c27A3bE7219755B82E5d3567a0f4D21E" + } } } } @@ -6736,8 +6741,8 @@ "contractVersion": "1.1.0", "compilerVersion": "v0.8.20+commit.a1b79de6", "factory": "0xce0042b868300000d44a59004da54a005ffdcf9f", - "address": "0x574C22059b3e65C3467241901a175EC2a05cAF8E", - "bytecode": "0x6080806040523461001a576107359081610020823930815050f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c631075c4d41461002c57600080fd5b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bd5780359273ffffffffffffffffffffffffffffffffffffffff9081851685036105ba5760249485359467ffffffffffffffff8087116105b657366023880112156105b657868601356100a681610631565b976100b38451998a6105c1565b8189526020918a838b019160051b830101913683116105b2578b01905b82821061059a5750505060443597828911610596573660238a0112156105965788880135986100fe8a610631565b9961010b86519b8c6105c1565b808b528b848c019160051b83010191368311610592578c859101915b838310610582575050505060643598838a1161057e573660238b01121561057e5789890135996101568b610631565b9a61016387519c8d6105c1565b808c528c858d019160051b8301019136831161057a578d8101915b8383106104c2575050505081511561049a57815181518091149081159161048e575b50610466576001958683511160001461042f5799879486519085820190828210908211176104045787528881528c93909289929091838a5b6102b3575b505050505091806102576080959361022b88966102709a99519485937f8d80ff0a0000000000000000000000000000000000000000000000000000000082860152840152604483019061066c565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105c1565b94975b83519a168a52890152870152608086019061066c565b92600283101561028857505082935060608301520390f35b90602186927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90929491939583518710156103f957508661038a9261039692876103648d898c7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000061032161030d836103068f82906106eb565b51986106eb565b519261031981866106eb565b5151946106eb565b5193519589870197885260601b166021860152603585015260559081850152838251610355816075958b8786019101610649565b810103908101845201826105c1565b8c51958361037b8895518092888089019101610649565b84019151809386840190610649565b010380845201826105c1565b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103ce578d94939089019290918a8a6101d8565b8d8a60118e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9550819450806101dd565b8d8a60418e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5098906102709550608093506104568861044e61045d939795976106af565b51169a6106af565b51916106af565b5193869761025a565b8885517f88590d67000000000000000000000000000000000000000000000000000000008152fd5b90508a511415386101a0565b8885517fe2330552000000000000000000000000000000000000000000000000000000008152fd5b823588811161057657820136604382011215610576578f810135898111610549578a51916105178a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601846105c1565b818352366044838301011161054557918d8a838196946044839701838601378301015281520192019161017e565b8d80fd5b50508e8b60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8b80fd5b8980fd5b8680fd5b8235815291810191859101610127565b8880fd5b8580fd5b813589811681036105925781529083019083016100d0565b8780fd5b8380fd5b80fd5b8280fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761060257604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116106025760051b60200190565b60005b83811061065c5750506000910152565b818101518382015260200161064c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936106a881518092818752878088019101610649565b0116010190565b8051156106bc5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156106bc5760209160051b01019056fea26469706673582212208bdaec7585c1fb067cade880c9d3714f9030d5ad02d58755fa304072ccfb96f164736f6c63430008140033", + "address": "0xB48669C9c27A3bE7219755B82E5d3567a0f4D21E", + "bytecode": "0x6080806040523461001a576107359081610020823930815050f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c631075c4d41461002c57600080fd5b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bd5780359273ffffffffffffffffffffffffffffffffffffffff9081851685036105ba5760249485359467ffffffffffffffff8087116105b657366023880112156105b657868601356100a681610631565b976100b38451998a6105c1565b8189526020918a838b019160051b830101913683116105b2578b01905b82821061059a5750505060443597828911610596573660238a0112156105965788880135986100fe8a610631565b9961010b86519b8c6105c1565b808b528b848c019160051b83010191368311610592578c859101915b838310610582575050505060643598838a1161057e573660238b01121561057e5789890135996101568b610631565b9a61016387519c8d6105c1565b808c528c858d019160051b8301019136831161057a578d8101915b8383106104c2575050505081511561049a57815181518091149081159161048e575b50610466576001958683511160001461042f5799879486519085820190828210908211176104045787528881528c93909289929091838a5b6102b3575b505050505091806102576080959361022b88966102709a99519485937f8d80ff0a0000000000000000000000000000000000000000000000000000000082860152840152604483019061066c565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105c1565b94975b83519a168a52890152870152608086019061066c565b92600283101561028857505082935060608301520390f35b90602186927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90929491939583518710156103f957508661038a9261039692876103648d898c7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000061032161030d836103068f82906106eb565b51986106eb565b519261031981866106eb565b5151946106eb565b5193519589870197885260601b166021860152603585015260559081850152838251610355816075958b8786019101610649565b810103908101845201826105c1565b8c51958361037b8895518092888089019101610649565b84019151809386840190610649565b010380845201826105c1565b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103ce578d94939089019290918a8a6101d8565b8d8a60118e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9550819450806101dd565b8d8a60418e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5098906102709550608093506104568861044e61045d939795976106af565b51169a6106af565b51916106af565b5193869761025a565b8885517f88590d67000000000000000000000000000000000000000000000000000000008152fd5b90508a511415386101a0565b8885517fe2330552000000000000000000000000000000000000000000000000000000008152fd5b823588811161057657820136604382011215610576578f810135898111610549578a51916105178a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601846105c1565b818352366044838301011161054557918d8a838196946044839701838601378301015281520192019161017e565b8d80fd5b50508e8b60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8b80fd5b8980fd5b8680fd5b8235815291810191859101610127565b8880fd5b8580fd5b813589811681036105925781529083019083016100d0565b8780fd5b8380fd5b80fd5b8280fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761060257604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116106025760051b60200190565b60005b83811061065c5750506000910152565b818101518382015260200161064c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936106a881518092818752878088019101610649565b0116010190565b8051156106bc5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156106bc5760209160051b01019056fea2646970667358221220685546f5abeb40891bee2248e327d4afa9c10f3469d0ed856c05c0f3f590e8e464736f6c63430008140033", "constructorArgs": { "types": [], "values": [] @@ -6820,7 +6825,7 @@ "settings": { "optimizer": { "enabled": true, - "runs": 4294967295 + "runs": 10000 }, "viaIR": true, "evmVersion": "paris", diff --git a/package.json b/package.json index 4a9e30c..a089f02 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "deploy": "hardhat deploy", "reconstruct:mastercopy": "yarn run build && yarn hardhat mastercopy:reconstruct --network", "extract:mastercopy": "yarn run build && yarn hardhat extract:mastercopy", - "deploy:mastercopies": "yarn hardhat deploy:mastercopies --network", + "deploy:zksync": "yarn hardhat deploy:zksync --network", + "deploy:mastercopies": "yarn hardhat deploy:mastercopies ", "deploy:mastercopy": "yarn hardhat deploy:mastercopy --network", "verify:mastercopies": "yarn hardhat verify:mastercopies --network", "verify:mastercopy": "yarn hardhat verify:mastercopy --network", diff --git a/tasks/deploy-mastercopies.ts b/tasks/deploy-mastercopies.ts index ec9a642..fe97c80 100644 --- a/tasks/deploy-mastercopies.ts +++ b/tasks/deploy-mastercopies.ts @@ -2,57 +2,30 @@ import { task } from "hardhat/config" import { deployMastercopy, readMastercopies } from "@gnosis-guild/zodiac-core" import { createEIP1193 } from "./create-EIP1193" -import { Deployer } from "@matterlabs/hardhat-zksync-deploy" -import { Wallet } from "zksync-ethers" -import { AbiCoder, BytesLike, ethers } from "ethers" - task( "deploy:mastercopies", "For every version entry on the artifacts file, deploys a mastercopy into the current network", ).setAction(async (_, hre) => { - const isZkSync = hre.network.config.zksync === true - - let deployer - - if (isZkSync) { - const zkWallet = new Wallet(process.env.PRIVATE_KEY!) - const deployerZkSync = new Deployer(hre, zkWallet) - - for (const mastercopy of readMastercopies()) { - const { contractName, contractVersion, constructorArgs } = mastercopy - - const artifact = await deployerZkSync.loadArtifact(contractName) - - const constructorArgsValues = constructorArgs?.values || [] - - console.log(`⏳ ${contractName}@${contractVersion}: Deployment starting...`) - - const deployedContract = await deployerZkSync.deploy(artifact, constructorArgsValues, "create2") - - console.log(`🚀 ${contractName}@${contractVersion}: Deployed at ${deployedContract.address}`) - } - } else { - const [signer] = await hre.ethers.getSigners() - const provider = createEIP1193(hre.network.provider, signer) - for (const mastercopy of readMastercopies()) { - const { contractName, contractVersion, factory, bytecode, constructorArgs, salt } = mastercopy - - const { address, noop } = await deployMastercopy({ - factory, - bytecode, - constructorArgs, - salt, - provider, - onStart: () => { - console.log(`⏳ ${contractName}@${contractVersion}: Deployment starting...`) - }, - }) - - if (noop) { - console.log(`🔄 ${contractName}@${contractVersion}: Already deployed at ${address}`) - } else { - console.log(`🚀 ${contractName}@${contractVersion}: Successfully deployed at ${address}`) - } + const [signer] = await hre.ethers.getSigners() + const provider = createEIP1193(hre.network.provider, signer) + for (const mastercopy of readMastercopies()) { + const { contractName, contractVersion, factory, bytecode, constructorArgs, salt } = mastercopy + + const { address, noop } = await deployMastercopy({ + factory, + bytecode, + constructorArgs, + salt, + provider, + onStart: () => { + console.log(`⏳ ${contractName}@${contractVersion}: Deployment starting...`) + }, + }) + + if (noop) { + console.log(`🔄 ${contractName}@${contractVersion}: Already deployed at ${address}`) + } else { + console.log(`🚀 ${contractName}@${contractVersion}: Successfully deployed at ${address}`) } } }) diff --git a/tasks/deploy-zksync.ts b/tasks/deploy-zksync.ts new file mode 100644 index 0000000..bfcb008 --- /dev/null +++ b/tasks/deploy-zksync.ts @@ -0,0 +1,73 @@ +import { task } from "hardhat/config" + +import { Deployer } from "@matterlabs/hardhat-zksync-deploy" +import { Wallet } from "zksync-ethers" +import { ethers } from "ethers" +import { ZkSyncArtifact } from "@matterlabs/hardhat-zksync-deploy/dist/types" +import { HardhatRuntimeEnvironment } from "hardhat/types" + +const ERC_CONTRACT_ARGS = ["0x0000000000000000000000000000000000000001", "0x", "0x"] + +// 🚀 MultisendEncoder: Deployed at 0xD9920581E8DabbC358A616BE09b88de8cADFfAeF +// ⏳ ERC20Votes: Deployment starting... +// The deployment is estimated to cost 0.0009026994 ETH +// 🚀 ERC20Votes: Deployed at 0x7a81046A24A40B5e6FEB0285ebBc3236749EF2fC +// ⏳ ERC721Votes: Deployment starting... +// The deployment is estimated to cost 0.0009923398 ETH +// 🚀 ERC721Votes: Deployed at 0x2E5AC7989A9194F425D0F2fa92A48381810E8F6B +// ⏳ OZGovernorModule: Deployment starting... +// The deployment is estimated to cost 0.00176351265 ETH +// 🚀 OZGovernorModule: Deployed at 0x2F7faFB5CAA3Aa3BD96A0F359f5a20Acb512241A +const deployContact = async ( + hre: HardhatRuntimeEnvironment, + deployer: Deployer, + artifact: ZkSyncArtifact, + constructorArguments: any[], +) => { + console.log(`⏳ ${artifact.contractName}: Deployment starting...`) + const deploymentFee = await deployer.estimateDeployFee(artifact, constructorArguments) + const parsedFee = ethers.formatEther(deploymentFee) + console.log(`The deployment is estimated to cost ${parsedFee} ETH`) + const contract = await deployer.deploy(artifact, constructorArguments) + const contractAddress = await contract.getAddress() + console.log(`🚀 ${artifact.contractName}: Deployed at ${contractAddress}`) + // const verificationId = await hre.run("verify:verify", { + // address: contractAddress, + // contract: `contracts/${artifact.contractName}.sol:${artifact.contractName}`, + // constructorArguments, + // }) + // console.log(`🚀 ${artifact.contractName}: VerificationId ${verificationId}`) + return contractAddress +} + +task("deploy:zksync", "TODO").setAction(async (_, hre) => { + const zkWallet = new Wallet(process.env.PRIVATE_KEY!) + const deployerZkSync = new Deployer(hre, zkWallet) + + //Deploy MultisendEncoder + const multisendEncoderArtifact = await deployerZkSync.loadArtifact("MultisendEncoder") + const multisendAddress = await deployContact(hre, deployerZkSync, multisendEncoderArtifact, []) + + // Deploy ERC20Votes + const erc20VotesArtifact = await deployerZkSync.loadArtifact("ERC20Votes") + const erc20Address = await deployContact(hre, deployerZkSync, erc20VotesArtifact, ERC_CONTRACT_ARGS) + + // Deploy ERC721Votes + const erc721VotesArtifact = await deployerZkSync.loadArtifact("ERC721Votes") + await deployContact(hre, deployerZkSync, erc721VotesArtifact, ERC_CONTRACT_ARGS) + + // Deploy OZGovernorModule + const ozModuleArtifact = await deployerZkSync.loadArtifact("OZGovernorModule") + await deployContact(hre, deployerZkSync, ozModuleArtifact, [ + "0x0000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000001", + erc20Address, + "", + 0, + 100, + 0, + 10, + 0, + ]) +}) diff --git a/tasks/extract-mastercopy.ts b/tasks/extract-mastercopy.ts index 388cb36..4778f95 100644 --- a/tasks/extract-mastercopy.ts +++ b/tasks/extract-mastercopy.ts @@ -49,6 +49,18 @@ task("extract:mastercopy", "Extracts and persists current mastercopy build artif sourceName: "contracts/OZGovernorModule.sol", }) + // address _owner, + // address _target, + // address _multisend, + // address _token, + // string memory _name, + // uint256 _votingDelay, + // uint256 _votingPeriod, + + // uint256 _proposalThreshold, + // uint256 _quorum, + // uint64 _initialVoteExtension + console.log("HELLO " + erc20VotesAddress) writeMastercopyFromBuild({ contractVersion: packageJson.version, contractName: "OZGovernorModule", @@ -68,7 +80,7 @@ task("extract:mastercopy", "Extracts and persists current mastercopy build artif "uint256", "uint64", ], - values: [AddressOne, AddressOne, AddressOne, erc20VotesAddress, "", 0, 100, 0, 0, 0], + values: [AddressOne, AddressOne, AddressOne, erc20VotesAddress, "", 0, 100, 0, 10, 0], }, salt: "0x0000000000000000000000000000000000000000000000000000000000000000", }) diff --git a/yarn.lock b/yarn.lock index acb0ba7..9bae7ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -559,9 +559,9 @@ undici "^6.18.2" "@matterlabs/hardhat-zksync-verify@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-verify/-/hardhat-zksync-verify-1.7.0.tgz#462a3bb015186e0de0eb68c95bf0bd360678b951" - integrity sha512-jQnrnE9uDfdP1KaG/GLs0J8+5efH97yRmNFzYuokT5qrSU0y6Ws6OFJmgDodB7hHnWOD6FSU9TebaFlAxxtFOA== + version "1.7.1" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-verify/-/hardhat-zksync-verify-1.7.1.tgz#45d4c1a4ea5ebe1137df1856f93a9686b018481f" + integrity sha512-FtibELgllkyAZORDW4/s/7XSC5DaqAXG0KXMqGipQyXuIXQ9l1kpaHMpoEtHvQL7xxmkgZqCcSZgATnKl91nDg== dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/address" "5.7.0" @@ -1227,6 +1227,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + "@types/node@^20.5.6": version "20.16.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.2.tgz#9e388f503a5af306e8c63319334887390966a11e" @@ -1642,9 +1649,9 @@ axios@^1.6.7: proxy-from-env "^1.1.0" axios@^1.7.2: - version "1.7.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" - integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + version "1.7.9" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -1711,11 +1718,16 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: +bn.js@^4.11.0, bn.js@^4.11.8: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^4.11.9: + version "4.12.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.1.tgz#215741fe3c9dba2d7e12c001d0cfdbae43975ba7" + integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg== + bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" @@ -2205,7 +2217,7 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== -debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: +debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.6" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== @@ -2219,6 +2231,13 @@ debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.1.1, debug@^4.3.5: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -2834,7 +2853,20 @@ ethereumjs-util@^7.1.4: ethereum-cryptography "^0.1.3" rlp "^2.2.4" -ethers@^6.13.2, ethers@^6.7.0: +ethers@^6.13.2: + version "6.13.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.4.tgz#bd3e1c3dc1e7dc8ce10f9ffb4ee40967a651b53c" + integrity sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +ethers@^6.7.0: version "6.13.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.2.tgz#4b67d4b49e69b59893931a032560999e5e4419fe" integrity sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg== @@ -2939,9 +2971,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-uri@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" - integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== fastq@^1.6.0: version "1.17.1" @@ -3004,11 +3036,16 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@^1.12.1, follow-redirects@^1.15.6: +follow-redirects@^1.12.1: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -3030,9 +3067,9 @@ form-data-encoder@^2.1.2: integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -5392,7 +5429,18 @@ table-layout@^1.0.2: typical "^5.2.0" wordwrapjs "^4.0.0" -table@^6.8.0, table@^6.8.1: +table@^6.8.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" + integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +table@^6.8.1: version "6.8.2" resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== @@ -5555,16 +5603,16 @@ tslib@2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@2.7.0, tslib@^2.6.2: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== - tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786"