diff --git a/cmd/geth/genesis_test.go b/cmd/geth/genesis_test.go index ffe8176b01..b2cd4dc593 100644 --- a/cmd/geth/genesis_test.go +++ b/cmd/geth/genesis_test.go @@ -89,6 +89,7 @@ func TestCustomGenesis(t *testing.T) { // Query the custom genesis block geth := runGeth(t, "--networkid", "1337", "--syncmode=full", "--cache", "16", + "--snapshot=false", "--datadir", datadir, "--maxpeers", "0", "--port", "0", "--authrpc.port", "0", "--nodiscover", "--nat", "none", "--ipcdisable", "--exec", tt.query, "console") diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 3aca4af089..ad8b09112e 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -289,6 +289,12 @@ func prepare(ctx *cli.Context) { case ctx.IsSet(utils.HoleskyFlag.Name): log.Info("Starting Geth on Holesky testnet...") + case ctx.IsSet(utils.ScrollAlphaFlag.Name): + log.Info("Starting l2geth on Scroll Alpha testnet...") + + case ctx.IsSet(utils.ScrollSepoliaFlag.Name): + log.Info("Starting l2geth on Scroll Sepolia testnet...") + case ctx.IsSet(utils.DeveloperFlag.Name): log.Info("Starting Geth in ephemeral dev mode...") log.Warn(`You are running Geth in --dev mode. Please note the following: @@ -316,6 +322,8 @@ func prepare(ctx *cli.Context) { if !ctx.IsSet(utils.HoleskyFlag.Name) && !ctx.IsSet(utils.SepoliaFlag.Name) && !ctx.IsSet(utils.GoerliFlag.Name) && + !ctx.IsSet(utils.ScrollAlphaFlag.Name) && + !ctx.IsSet(utils.ScrollSepoliaFlag.Name) && !ctx.IsSet(utils.DeveloperFlag.Name) { // Nope, we're really on mainnet. Bump that cache up! log.Info("Bumping default cache on mainnet", "provided", ctx.Int(utils.CacheFlag.Name), "updated", 4096) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index ec6b4f8198..edebff6b1e 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -81,6 +81,11 @@ import ( "github.com/urfave/cli/v2" ) +const ( + GCModeFull = "full" + GCModeArchive = "archive" +) + // These are all the command line flags we support. // If you add to this list, please remember to include the // flag in the appropriate command definition. @@ -159,6 +164,21 @@ var ( Usage: "Holesky network: pre-configured proof-of-stake test network", Category: flags.EthCategory, } + ScrollFlag = &cli.BoolFlag{ + Name: "scroll", + Usage: "Scroll mainnet", + Category: flags.EthCategory, + } + ScrollAlphaFlag = &cli.BoolFlag{ + Name: "scroll-alpha", + Usage: "Scroll Alpha test network", + Category: flags.EthCategory, + } + ScrollSepoliaFlag = &cli.BoolFlag{ + Name: "scroll-sepolia", + Usage: "Scroll Sepolia test network", + Category: flags.EthCategory, + } // Dev mode DeveloperFlag = &cli.BoolFlag{ Name: "dev", @@ -265,7 +285,7 @@ var ( GCModeFlag = &cli.StringFlag{ Name: "gcmode", Usage: `Blockchain garbage collection mode, only relevant in state.scheme=hash ("full", "archive")`, - Value: "full", + Value: GCModeArchive, Category: flags.StateCategory, } StateSchemeFlag = &cli.StringFlag{ @@ -991,9 +1011,11 @@ var ( GoerliFlag, SepoliaFlag, HoleskyFlag, + ScrollAlphaFlag, + ScrollSepoliaFlag, } // NetworkFlags is the flag group of all built-in supported networks. - NetworkFlags = append([]cli.Flag{MainnetFlag}, TestnetFlags...) + NetworkFlags = append([]cli.Flag{MainnetFlag, ScrollFlag}, TestnetFlags...) // DatabaseFlags is the flag group of all database flags. DatabaseFlags = []cli.Flag{ @@ -1020,6 +1042,15 @@ func MakeDataDir(ctx *cli.Context) string { if ctx.Bool(HoleskyFlag.Name) { return filepath.Join(path, "holesky") } + if ctx.Bool(ScrollAlphaFlag.Name) { + return filepath.Join(path, "scroll-alpha") + } + if ctx.Bool(ScrollSepoliaFlag.Name) { + return filepath.Join(path, "scroll-sepolia") + } + if ctx.Bool(ScrollFlag.Name) { + return filepath.Join(path, "scroll") + } return path } Fatalf("Cannot determine default data directory, please set manually (--datadir)") @@ -1082,6 +1113,12 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) { urls = params.SepoliaBootnodes case ctx.Bool(GoerliFlag.Name): urls = params.GoerliBootnodes + case ctx.Bool(ScrollAlphaFlag.Name): + urls = params.ScrollAlphaBootnodes + case ctx.Bool(ScrollSepoliaFlag.Name): + urls = params.ScrollSepoliaBootnodes + case ctx.Bool(ScrollFlag.Name): + urls = params.ScrollMainnetBootnodes } } cfg.BootstrapNodes = mustParseBootnodes(urls) @@ -1569,6 +1606,12 @@ func SetDataDir(ctx *cli.Context, cfg *node.Config) { cfg.DataDir = filepath.Join(node.DefaultDataDir(), "sepolia") case ctx.Bool(HoleskyFlag.Name) && cfg.DataDir == node.DefaultDataDir(): cfg.DataDir = filepath.Join(node.DefaultDataDir(), "holesky") + case ctx.Bool(ScrollAlphaFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + cfg.DataDir = filepath.Join(node.DefaultDataDir(), "scroll-alpha") + case ctx.Bool(ScrollSepoliaFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + cfg.DataDir = filepath.Join(node.DefaultDataDir(), "scroll-sepolia") + case ctx.Bool(ScrollFlag.Name) && cfg.DataDir == node.DefaultDataDir(): + cfg.DataDir = filepath.Join(node.DefaultDataDir(), "scroll") } } @@ -1748,7 +1791,7 @@ func CheckExclusive(ctx *cli.Context, args ...interface{}) { // SetEthConfig applies eth-related command line flags to the config. func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { // Avoid conflicting network flags - CheckExclusive(ctx, MainnetFlag, DeveloperFlag, GoerliFlag, SepoliaFlag, HoleskyFlag) + CheckExclusive(ctx, MainnetFlag, DeveloperFlag, GoerliFlag, SepoliaFlag, HoleskyFlag, ScrollAlphaFlag, ScrollSepoliaFlag, ScrollFlag) CheckExclusive(ctx, LightServeFlag, SyncModeFlag, "light") CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer @@ -1799,11 +1842,11 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { cfg.DatabaseFreezer = ctx.String(AncientFlag.Name) } - if gcmode := ctx.String(GCModeFlag.Name); gcmode != "full" && gcmode != "archive" { + if gcmode := ctx.String(GCModeFlag.Name); gcmode != GCModeFull && gcmode != GCModeArchive { Fatalf("--%s must be either 'full' or 'archive'", GCModeFlag.Name) } if ctx.IsSet(GCModeFlag.Name) { - cfg.NoPruning = ctx.String(GCModeFlag.Name) == "archive" + cfg.NoPruning = ctx.String(GCModeFlag.Name) == GCModeArchive } if ctx.IsSet(CacheNoPrefetchFlag.Name) { cfg.NoPrefetch = ctx.Bool(CacheNoPrefetchFlag.Name) @@ -1832,7 +1875,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { log.Warn("The flag --txlookuplimit is deprecated and will be removed, please use --history.transactions") cfg.TransactionHistory = ctx.Uint64(TxLookupLimitFlag.Name) } - if ctx.String(GCModeFlag.Name) == "archive" && cfg.TransactionHistory != 0 { + if ctx.String(GCModeFlag.Name) == GCModeArchive && cfg.TransactionHistory != 0 { cfg.TransactionHistory = 0 log.Warn("Disabled transaction unindexing for archive node") } @@ -1918,6 +1961,50 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { } cfg.Genesis = core.DefaultGoerliGenesisBlock() SetDNSDiscoveryDefaults(cfg, params.GoerliGenesisHash) + case ctx.Bool(ScrollAlphaFlag.Name): + if !ctx.IsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 534353 + } + cfg.Genesis = core.DefaultScrollAlphaGenesisBlock() + // SetDNSDiscoveryDefaults(cfg, params.ScrollAlphaGenesisHash) + case ctx.Bool(ScrollSepoliaFlag.Name): + if !ctx.IsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 534351 + } + cfg.Genesis = core.DefaultScrollSepoliaGenesisBlock() + // forced for sepolia + log.Info("Setting flag", "--l1.confirmations", "finalized") + stack.Config().L1Confirmations = rpc.FinalizedBlockNumber + log.Info("Setting flag", "--l1.sync.startblock", "4038000") + stack.Config().L1DeploymentBlock = 4038000 + // disable pruning + if ctx.String(GCModeFlag.Name) != GCModeArchive { + log.Crit("Must use --gcmode=archive") + } + log.Info("Pruning disabled") + cfg.NoPruning = true + // disable prefetch + log.Info("Prefetch disabled") + cfg.NoPrefetch = true + case ctx.Bool(ScrollFlag.Name): + if !ctx.IsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 534352 + } + cfg.Genesis = core.DefaultScrollMainnetGenesisBlock() + // forced for mainnet + log.Info("Setting flag", "--l1.confirmations", "finalized") + stack.Config().L1Confirmations = rpc.FinalizedBlockNumber + log.Info("Setting flag", "--l1.sync.startblock", "18306000") + stack.Config().L1DeploymentBlock = 18306000 + // disable pruning + if ctx.String(GCModeFlag.Name) != GCModeArchive { + log.Crit("Must use --gcmode=archive") + } + log.Info("Pruning disabled") + cfg.NoPruning = true + // disable prefetch + log.Info("Prefetch disabled") + cfg.NoPrefetch = true case ctx.Bool(DeveloperFlag.Name): if !ctx.IsSet(NetworkIdFlag.Name) { cfg.NetworkId = 1337 @@ -2256,6 +2343,12 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis { genesis = core.DefaultSepoliaGenesisBlock() case ctx.Bool(GoerliFlag.Name): genesis = core.DefaultGoerliGenesisBlock() + case ctx.Bool(ScrollAlphaFlag.Name): + genesis = core.DefaultScrollAlphaGenesisBlock() + case ctx.Bool(ScrollSepoliaFlag.Name): + genesis = core.DefaultScrollSepoliaGenesisBlock() + case ctx.Bool(ScrollFlag.Name): + genesis = core.DefaultScrollMainnetGenesisBlock() case ctx.Bool(DeveloperFlag.Name): Fatalf("Developer chains are ephemeral") } @@ -2276,7 +2369,7 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh if err != nil { Fatalf("%v", err) } - if gcmode := ctx.String(GCModeFlag.Name); gcmode != "full" && gcmode != "archive" { + if gcmode := ctx.String(GCModeFlag.Name); gcmode != GCModeFull && gcmode != GCModeArchive { Fatalf("--%s must be either 'full' or 'archive'", GCModeFlag.Name) } scheme, err := rawdb.ParseStateScheme(ctx.String(StateSchemeFlag.Name), chainDb) @@ -2287,7 +2380,7 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh TrieCleanLimit: ethconfig.Defaults.TrieCleanCache, TrieCleanNoPrefetch: ctx.Bool(CacheNoPrefetchFlag.Name), TrieDirtyLimit: ethconfig.Defaults.TrieDirtyCache, - TrieDirtyDisabled: ctx.String(GCModeFlag.Name) == "archive", + TrieDirtyDisabled: ctx.String(GCModeFlag.Name) == GCModeArchive, TrieTimeLimit: ethconfig.Defaults.TrieTimeout, SnapshotLimit: ethconfig.Defaults.SnapshotCache, Preimages: ctx.Bool(CachePreimagesFlag.Name), diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go index f708050abd..7e3e185065 100644 --- a/consensus/clique/clique.go +++ b/consensus/clique/clique.go @@ -299,9 +299,9 @@ func (c *Clique) verifyHeader(chain consensus.ChainHeaderReader, header *types.H if header.GasLimit > params.MaxGasLimit { return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, params.MaxGasLimit) } - if chain.Config().IsShanghai(header.Number, header.Time) { - return errors.New("clique does not support shanghai fork") - } + // if chain.Config().IsShanghai(header.Number, header.Time) { + // return errors.New("clique does not support shanghai fork") + // } if chain.Config().IsCancun(header.Number, header.Time) { return errors.New("clique does not support cancun fork") } diff --git a/consensus/ethash/consensus.go b/consensus/ethash/consensus.go index 8eb9863da1..bb6b2257e3 100644 --- a/consensus/ethash/consensus.go +++ b/consensus/ethash/consensus.go @@ -263,9 +263,9 @@ func (ethash *Ethash) verifyHeader(chain consensus.ChainHeaderReader, header, pa if diff := new(big.Int).Sub(header.Number, parent.Number); diff.Cmp(big.NewInt(1)) != 0 { return consensus.ErrInvalidNumber } - if chain.Config().IsShanghai(header.Number, header.Time) { - return errors.New("ethash does not support shanghai fork") - } + // if chain.Config().IsShanghai(header.Number, header.Time) { + // return errors.New("ethash does not support shanghai fork") + // } if chain.Config().IsCancun(header.Number, header.Time) { return errors.New("ethash does not support cancun fork") } diff --git a/core/genesis.go b/core/genesis.go index ac1072d009..49b1a8aec4 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -581,6 +581,42 @@ func DefaultHoleskyGenesisBlock() *Genesis { } } +// DefaultScrollAlphaGenesisBlock returns the Scroll Alpha network genesis block. +func DefaultScrollAlphaGenesisBlock() *Genesis { + return &Genesis{ + Config: params.ScrollAlphaChainConfig, + Timestamp: 0x63f67207, + ExtraData: hexutil.MustDecode("0x0000000000000000000000000000000000000000000000000000000000000000b7C0c58702D0781C0e2eB3aaE301E4c340073448Ec9c139eFCBBe6323DA406fffBF4Db02a60A9720589c71deC4302fE718bE62350c174922782Cc6600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + GasLimit: 8000000, + Difficulty: big.NewInt(1), + Alloc: decodePrealloc(scrollAlphaAllocData), + } +} + +// DefaultScrollSepoliaGenesisBlock returns the Scroll Sepolia network genesis block. +func DefaultScrollSepoliaGenesisBlock() *Genesis { + return &Genesis{ + Config: params.ScrollSepoliaChainConfig, + Timestamp: 0x64cfd015, + ExtraData: hexutil.MustDecode("0x000000000000000000000000000000000000000000000000000000000000000048C3F81f3D998b6652900e1C3183736C238Fe4290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + GasLimit: 8000000, + Difficulty: big.NewInt(1), + Alloc: decodePrealloc(scrollSepoliaAllocData), + } +} + +// DefaultScrollMainnetGenesisBlock returns the Scroll mainnet genesis block. +func DefaultScrollMainnetGenesisBlock() *Genesis { + return &Genesis{ + Config: params.ScrollMainnetChainConfig, + Timestamp: 0x6524e860, + ExtraData: hexutil.MustDecode("0x4c61206573746f6e7465636f206573746173206d616c6665726d6974612e0000d2ACF5d16a983DB0d909d9D761B8337Fabd6cBd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + GasLimit: 10000000, + Difficulty: big.NewInt(1), + Alloc: decodePrealloc(scrollMainnetAllocData), + } +} + // DeveloperGenesisBlock returns the 'geth --dev' genesis block. func DeveloperGenesisBlock(gasLimit uint64, faucet common.Address) *Genesis { // Override the default period to the user requested one @@ -602,12 +638,46 @@ func DeveloperGenesisBlock(gasLimit uint64, faucet common.Address) *Genesis { common.BytesToAddress([]byte{7}): {Balance: big.NewInt(1)}, // ECScalarMul common.BytesToAddress([]byte{8}): {Balance: big.NewInt(1)}, // ECPairing common.BytesToAddress([]byte{9}): {Balance: big.NewInt(1)}, // BLAKE2b - faucet: {Balance: new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 256), big.NewInt(9))}, + // faucet: {Balance: new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 256), big.NewInt(9))}, + faucet: {Balance: new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 250), big.NewInt(9))}, // LSH 250 due to finite field limitation }, } } +// decodePrealloc does not support code and storage in prealloc config, +// so we provide an alternative implementation here. +func decodePreallocScroll(data string) (GenesisAlloc, error) { + var p []struct { + Addr, Balance *big.Int + Code []byte + Storage []struct{ Key, Value *big.Int } + } + + if err := rlp.NewStream(strings.NewReader(data), 0).Decode(&p); err != nil { + return nil, err + } + ga := make(GenesisAlloc, len(p)) + + for _, account := range p { + s := make(map[common.Hash]common.Hash) + for _, entry := range account.Storage { + s[common.BigToHash(entry.Key)] = common.BigToHash(entry.Value) + } + + ga[common.BigToAddress(account.Addr)] = GenesisAccount{ + Balance: account.Balance, + Code: account.Code, + Storage: s, + } + } + + return ga, nil +} + func decodePrealloc(data string) GenesisAlloc { + if ga, err := decodePreallocScroll(data); err == nil { + return ga + } var p []struct { Addr *big.Int Balance *big.Int diff --git a/core/genesis_alloc.go b/core/genesis_alloc.go index 94c4ec5358..6e1ed9b3a1 100644 --- a/core/genesis_alloc.go +++ b/core/genesis_alloc.go @@ -25,3 +25,6 @@ const mainnetAllocData = "\xfa\x04]X\u0793\r\x83b\x011\x8e\u0189\x9agT\x06\x908' const goerliAllocData = "\xf9\x04\x06\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\u007f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\xe0\x94L*\xe4\x82Y5\x05\xf0\x16<\xde\xfc\a>\x81\xc6<\xdaA\a\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe0\x94\xa8\xe8\xf1G2e\x8eKQ\xe8q\x191\x05:\x8ai\xba\xf2\xb1\x8a\x15-\x02\xc7\xe1J\xf6\x80\x00\x00\xe1\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\u08bdBX\xd2v\x887\xba\xa2j(\xfeq\xdc\a\x9f\x84\u01cbJG\xe3\xc1$H\xf4\xad\x00\x00\x00" const sepoliaAllocData = "\xf9\x01\xee\u0791i\x16\xa8{\x823?BE\x04f#\xb27\x94\xc6\\\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe1\x94\x10\xf5\xd4XT\xe08\a\x14\x85\xac\x9e@#\b\u03c0\xd2\xd2\xfe\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\u0794y\x9d2\x9e_X4\x19\x16|\xd7\"\x96$\x85\x92n3\x8fJ\x88\r\u0db3\xa7d\x00\x00\xe0\x94|\xf5\xb7\x9b\xfe)\x1ag\xab\x02\xb3\x93\xe4V\xcc\xc4\xc2f\xf7S\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\x8b\u007f\tw\xbbO\x0f\xbepv\xfa\"\xbc$\xac\xa0CX?^\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xa2\xa6\xd949\x14O\xfeM'\xc9\xe0\x88\xdc\u0637\x83\x94bc\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xaa\xec\x869DA\xf9\x15\xbc\xe3\xe6\xab9\x99w\xe9\x90o;i\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\u1532\x1c3\xde\x1f\xab?\xa1T\x99\xc6+Y\xfe\f\xc3%\x00 \u044bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xbc\x11)Y6\xaay\u0554\x13\x9d\xe1\xb2\xe1&)AO;\u06ca\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xbe\xef2\xca[\x9a\x19\x8d'\xb4\xe0/LpC\x9f\xe6\x03V\u03ca\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94\xd7\xd7lX\xb3\xa5\x19\xe9\xfal\xc4\xd2-\xc0\x17%\x9b\u011f\x1e\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xd7\xed\xdbx\xed)[<\x96)$\x0e\x89$\xfb\x8d\x88t\xdd\u060a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\u0665\x17\x9f\t\x1d\x85\x05\x1d<\x98'\x85\xef\xd1E\\\uc199\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xe2\xe2e\x90(\x147\x84\xd5W\xbc\xeco\xf3\xa0r\x10H\x88\n\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xf4|\xae\x1c\xf7\x9c\xa6u\x8b\xfcx}\xbd!\u6f7eq\x12\xb8\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00" const holeskyAllocData = "\xf9,\x85\u0080\x01\xc2\x01\x01\xc2\x02\x01\xc2\x03\x01\xc2\x04\x01\xc2\x05\x01\xc2\x06\x01\xc2\a\x01\xc2\b\x01\xc2\t\x01\xc2\n\x01\xc2\v\x01\xc2\f\x01\xc2\r\x01\xc2\x0e\x01\xc2\x0f\x01\xc2\x10\x01\xc2\x11\x01\xc2\x12\x01\xc2\x13\x01\xc2\x14\x01\xc2\x15\x01\xc2\x16\x01\xc2\x17\x01\xc2\x18\x01\xc2\x19\x01\xc2\x1a\x01\xc2\x1b\x01\xc2\x1c\x01\xc2\x1d\x01\xc2\x1e\x01\xc2\x1f\x01\xc2 \x01\xc2!\x01\xc2\"\x01\xc2#\x01\xc2$\x01\xc2%\x01\xc2&\x01\xc2'\x01\xc2(\x01\xc2)\x01\xc2*\x01\xc2+\x01\xc2,\x01\xc2-\x01\xc2.\x01\xc2/\x01\xc20\x01\xc21\x01\xc22\x01\xc23\x01\xc24\x01\xc25\x01\xc26\x01\xc27\x01\xc28\x01\xc29\x01\xc2:\x01\xc2;\x01\xc2<\x01\xc2=\x01\xc2>\x01\xc2?\x01\xc2@\x01\xc2A\x01\xc2B\x01\xc2C\x01\xc2D\x01\xc2E\x01\xc2F\x01\xc2G\x01\xc2H\x01\xc2I\x01\xc2J\x01\xc2K\x01\xc2L\x01\xc2M\x01\xc2N\x01\xc2O\x01\xc2P\x01\xc2Q\x01\xc2R\x01\xc2S\x01\xc2T\x01\xc2U\x01\xc2V\x01\xc2W\x01\xc2X\x01\xc2Y\x01\xc2Z\x01\xc2[\x01\xc2\\\x01\xc2]\x01\xc2^\x01\xc2_\x01\xc2`\x01\xc2a\x01\xc2b\x01\xc2c\x01\xc2d\x01\xc2e\x01\xc2f\x01\xc2g\x01\xc2h\x01\xc2i\x01\xc2j\x01\xc2k\x01\xc2l\x01\xc2m\x01\xc2n\x01\xc2o\x01\xc2p\x01\xc2q\x01\xc2r\x01\xc2s\x01\xc2t\x01\xc2u\x01\xc2v\x01\xc2w\x01\xc2x\x01\xc2y\x01\xc2z\x01\xc2{\x01\xc2|\x01\xc2}\x01\xc2~\x01\xc2\x7f\x01\u00c1\x80\x01\u00c1\x81\x01\u00c1\x82\x01\u00c1\x83\x01\u00c1\x84\x01\u00c1\x85\x01\u00c1\x86\x01\u00c1\x87\x01\u00c1\x88\x01\u00c1\x89\x01\u00c1\x8a\x01\u00c1\x8b\x01\u00c1\x8c\x01\u00c1\x8d\x01\u00c1\x8e\x01\u00c1\x8f\x01\u00c1\x90\x01\u00c1\x91\x01\u00c1\x92\x01\u00c1\x93\x01\u00c1\x94\x01\u00c1\x95\x01\u00c1\x96\x01\u00c1\x97\x01\u00c1\x98\x01\u00c1\x99\x01\u00c1\x9a\x01\u00c1\x9b\x01\u00c1\x9c\x01\u00c1\x9d\x01\u00c1\x9e\x01\u00c1\x9f\x01\u00c1\xa0\x01\u00c1\xa1\x01\u00c1\xa2\x01\u00c1\xa3\x01\u00c1\xa4\x01\u00c1\xa5\x01\u00c1\xa6\x01\u00c1\xa7\x01\u00c1\xa8\x01\u00c1\xa9\x01\u00c1\xaa\x01\u00c1\xab\x01\u00c1\xac\x01\u00c1\xad\x01\u00c1\xae\x01\u00c1\xaf\x01\u00c1\xb0\x01\u00c1\xb1\x01\u00c1\xb2\x01\u00c1\xb3\x01\u00c1\xb4\x01\u00c1\xb5\x01\u00c1\xb6\x01\u00c1\xb7\x01\u00c1\xb8\x01\u00c1\xb9\x01\u00c1\xba\x01\u00c1\xbb\x01\u00c1\xbc\x01\u00c1\xbd\x01\u00c1\xbe\x01\u00c1\xbf\x01\u00c1\xc0\x01\u00c1\xc1\x01\u00c1\xc2\x01\u00c1\xc3\x01\u00c1\xc4\x01\u00c1\xc5\x01\u00c1\xc6\x01\u00c1\xc7\x01\u00c1\xc8\x01\u00c1\xc9\x01\u00c1\xca\x01\u00c1\xcb\x01\u00c1\xcc\x01\u00c1\xcd\x01\u00c1\xce\x01\u00c1\xcf\x01\u00c1\xd0\x01\u00c1\xd1\x01\u00c1\xd2\x01\u00c1\xd3\x01\u00c1\xd4\x01\u00c1\xd5\x01\u00c1\xd6\x01\u00c1\xd7\x01\u00c1\xd8\x01\u00c1\xd9\x01\u00c1\xda\x01\u00c1\xdb\x01\u00c1\xdc\x01\u00c1\xdd\x01\u00c1\xde\x01\u00c1\xdf\x01\u00c1\xe0\x01\u00c1\xe1\x01\u00c1\xe2\x01\u00c1\xe3\x01\u00c1\xe4\x01\u00c1\xe5\x01\u00c1\xe6\x01\u00c1\xe7\x01\u00c1\xe8\x01\u00c1\xe9\x01\u00c1\xea\x01\u00c1\xeb\x01\u00c1\xec\x01\u00c1\xed\x01\u00c1\xee\x01\u00c1\xef\x01\u00c1\xf0\x01\u00c1\xf1\x01\u00c1\xf2\x01\u00c1\xf3\x01\u00c1\xf4\x01\u00c1\xf5\x01\u00c1\xf6\x01\u00c1\xf7\x01\u00c1\xf8\x01\u00c1\xf9\x01\u00c1\xfa\x01\u00c1\xfb\x01\u00c1\xfc\x01\u00c1\xfd\x01\u00c1\xfe\x01\u00c1\xff\x01\u0791i\x16\xa8{\x823?BE\x04f#\xb27\x94\xc6\\\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe1\x94\v\xe9I\x92\x8f\xf1\x99\xc9\xeb\xa9\xe1\x10\xdb!\n\xa5\xc9N\xfa\u040b|\x13\xbcK,\x13\x8e\u0344h\xa0\x03\x7f\x05\x8a\x9d\xaf\xady\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xf9!2\x94BBBBBBBBBBBBBBBBBBBB\x80\xf9!\x19\x80\xb9\x18\xd6`\x80`@R`\x046\x10a\x00?W`\x005`\xe0\x1c\x80c\x01\xff\u0267\x14a\x00DW\x80c\"\x89Q\x18\x14a\x00\xa4W\x80cb\x1f\xd10\x14a\x01\xbaW\x80c\xc5\xf2\x89/\x14a\x02DW[`\x00\x80\xfd[4\x80\x15a\x00PW`\x00\x80\xfd[Pa\x00\x90`\x04\x806\x03` \x81\x10\x15a\x00gW`\x00\x80\xfd[P5\x7f\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16a\x02kV[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xf3[a\x01\xb8`\x04\x806\x03`\x80\x81\x10\x15a\x00\xbaW`\x00\x80\xfd[\x81\x01\x90` \x81\x01\x815d\x01\x00\x00\x00\x00\x81\x11\x15a\x00\xd5W`\x00\x80\xfd[\x82\x01\x83` \x82\x01\x11\x15a\x00\xe7W`\x00\x80\xfd[\x805\x90` \x01\x91\x84`\x01\x83\x02\x84\x01\x11d\x01\x00\x00\x00\x00\x83\x11\x17\x15a\x01\tW`\x00\x80\xfd[\x91\x93\x90\x92\x90\x91` \x81\x01\x905d\x01\x00\x00\x00\x00\x81\x11\x15a\x01'W`\x00\x80\xfd[\x82\x01\x83` \x82\x01\x11\x15a\x019W`\x00\x80\xfd[\x805\x90` \x01\x91\x84`\x01\x83\x02\x84\x01\x11d\x01\x00\x00\x00\x00\x83\x11\x17\x15a\x01[W`\x00\x80\xfd[\x91\x93\x90\x92\x90\x91` \x81\x01\x905d\x01\x00\x00\x00\x00\x81\x11\x15a\x01yW`\x00\x80\xfd[\x82\x01\x83` \x82\x01\x11\x15a\x01\x8bW`\x00\x80\xfd[\x805\x90` \x01\x91\x84`\x01\x83\x02\x84\x01\x11d\x01\x00\x00\x00\x00\x83\x11\x17\x15a\x01\xadW`\x00\x80\xfd[\x91\x93P\x91P5a\x03\x04V[\x00[4\x80\x15a\x01\xc6W`\x00\x80\xfd[Pa\x01\xcfa\x10\xb5V[`@\x80Q` \x80\x82R\x83Q\x81\x83\x01R\x83Q\x91\x92\x83\x92\x90\x83\x01\x91\x85\x01\x90\x80\x83\x83`\x00[\x83\x81\x10\x15a\x02\tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xf1V[PPPP\x90P\x90\x81\x01\x90`\x1f\x16\x80\x15a\x026W\x80\x82\x03\x80Q`\x01\x83` \x03a\x01\x00\n\x03\x19\x16\x81R` \x01\x91P[P\x92PPP`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x02PW`\x00\x80\xfd[Pa\x02Ya\x10\xc7V[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xf3[`\x00\x7f\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x16\x7f\x01\xff\u0267\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x80a\x02\xfeWP\x7f\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x16\x7f\x85d\t\a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14[\x92\x91PPV[`0\x86\x14a\x03]W`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x18\x05`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[` \x84\x14a\x03\xb6W`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`6\x81R` \x01\x80a\x17\x9c`6\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[``\x82\x14a\x04\x0fW`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`)\x81R` \x01\x80a\x18x`)\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[g\r\u0db3\xa7d\x00\x004\x10\x15a\x04pW`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x18R`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[c;\x9a\xca\x004\x06\x15a\x04\xcdW`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`3\x81R` \x01\x80a\x17\xd2`3\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[c;\x9a\xca\x004\x04g\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x055W`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`'\x81R` \x01\x80a\x18+`'\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[``a\x05@\x82a\x14\xbaV[\x90P\x7fd\x9b\xbcb\xd0\xe3\x13B\xaf\xeaN\\\xd8-@I\xe7\xe1\xee\x91/\xc0\x88\x9a\xa7\x90\x80;\xe3\x908\u0149\x89\x89\x89\x85\x8a\x8aa\x05u` Ta\x14\xbaV[`@\x80Q`\xa0\x80\x82R\x81\x01\x89\x90R\x90\x81\x90` \x82\x01\x90\x82\x01``\x83\x01`\x80\x84\x01`\xc0\x85\x01\x8e\x8e\x80\x82\x847`\x00\x83\x82\x01R`\x1f\x01\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x16\x90\x91\x01\x87\x81\x03\x86R\x8c\x81R` \x01\x90P\x8c\x8c\x80\x82\x847`\x00\x83\x82\x01\x81\x90R`\x1f\x90\x91\x01\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x16\x90\x92\x01\x88\x81\x03\x86R\x8cQ\x81R\x8cQ` \x91\x82\x01\x93\x91\x8e\x01\x92P\x90\x81\x90\x84\x90\x84\x90[\x83\x81\x10\x15a\x06HW\x81\x81\x01Q\x83\x82\x01R` \x01a\x060V[PPPP\x90P\x90\x81\x01\x90`\x1f\x16\x80\x15a\x06uW\x80\x82\x03\x80Q`\x01\x83` \x03a\x01\x00\n\x03\x19\x16\x81R` \x01\x91P[P\x86\x81\x03\x83R\x88\x81R` \x01\x89\x89\x80\x82\x847`\x00\x83\x82\x01\x81\x90R`\x1f\x90\x91\x01\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x16\x90\x92\x01\x88\x81\x03\x84R\x89Q\x81R\x89Q` \x91\x82\x01\x93\x91\x8b\x01\x92P\x90\x81\x90\x84\x90\x84\x90[\x83\x81\x10\x15a\x06\xefW\x81\x81\x01Q\x83\x82\x01R` \x01a\x06\xd7V[PPPP\x90P\x90\x81\x01\x90`\x1f\x16\x80\x15a\a\x1cW\x80\x82\x03\x80Q`\x01\x83` \x03a\x01\x00\n\x03\x19\x16\x81R` \x01\x91P[P\x9dPPPPPPPPPPPPPP`@Q\x80\x91\x03\x90\xa1`\x00`\x02\x8a\x8a`\x00`\x80\x1b`@Q` \x01\x80\x84\x84\x80\x82\x847\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x94\x16\x91\x90\x93\x01\x90\x81R`@\x80Q\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x81\x84\x03\x01\x81R`\x10\x90\x92\x01\x90\x81\x90R\x81Q\x91\x95P\x93P\x83\x92P` \x85\x01\x91P\x80\x83\x83[` \x83\x10a\a\xfcW\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\a\xbfV[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\bYW=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\bnW`\x00\x80\xfd[PQ\x90P`\x00`\x02\x80a\b\x84`@\x84\x8a\x8ca\x16\xfeV[`@Q` \x01\x80\x83\x83\x80\x82\x847\x80\x83\x01\x92PPP\x92PPP`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\b\xf8W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\b\xbbV[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\tUW=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\tjW`\x00\x80\xfd[PQ`\x02a\t{\x89`@\x81\x8da\x16\xfeV[`@Q`\x00\x90` \x01\x80\x84\x84\x80\x82\x847\x91\x90\x91\x01\x92\x83RPP`@\x80Q\x80\x83\x03\x81R` \x92\x83\x01\x91\x82\x90R\x80Q\x90\x94P\x90\x92P\x82\x91\x84\x01\x90\x80\x83\x83[` \x83\x10a\t\xf4W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\t\xb7V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\nQW=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\nfW`\x00\x80\xfd[PQ`@\x80Q` \x81\x81\x01\x94\x90\x94R\x80\x82\x01\x92\x90\x92R\x80Q\x80\x83\x03\x82\x01\x81R``\x90\x92\x01\x90\x81\x90R\x81Q\x91\x92\x90\x91\x82\x91\x84\x01\x90\x80\x83\x83[` \x83\x10a\n\xdaW\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\n\x9dV[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\v7W=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\vLW`\x00\x80\xfd[PQ`@\x80Q` \x81\x01\x85\x81R\x92\x93P`\x00\x92`\x02\x92\x83\x92\x87\x92\x8f\x92\x8f\x92\x01\x83\x83\x80\x82\x847\x80\x83\x01\x92PPP\x93PPPP`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\v\xd9W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\v\x9cV[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\f6W=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\fKW`\x00\x80\xfd[PQ`@Q\x86Q`\x02\x91\x88\x91`\x00\x91\x88\x91` \x91\x82\x01\x91\x82\x91\x90\x86\x01\x90\x80\x83\x83[` \x83\x10a\f\xa9W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\flV[`\x01\x83` \x03a\x01\x00\n\x03\x80\x19\x82Q\x16\x81\x84Q\x16\x80\x82\x17\x85RPPPPPP\x90P\x01\x83g\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16g\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x81R`\x18\x01\x82\x81R` \x01\x93PPPP`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\rNW\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\r\x11V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\r\xabW=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\r\xc0W`\x00\x80\xfd[PQ`@\x80Q` \x81\x81\x01\x94\x90\x94R\x80\x82\x01\x92\x90\x92R\x80Q\x80\x83\x03\x82\x01\x81R``\x90\x92\x01\x90\x81\x90R\x81Q\x91\x92\x90\x91\x82\x91\x84\x01\x90\x80\x83\x83[` \x83\x10a\x0e4W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\r\xf7V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\x0e\x91W=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\x0e\xa6W`\x00\x80\xfd[PQ\x90P\x85\x81\x14a\x0f\x02W`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`T\x81R` \x01\x80a\x17H`T\x919``\x01\x91PP`@Q\x80\x91\x03\x90\xfd[` Tc\xff\xff\xff\xff\x11a\x0f`W`@Q\x7f\b\xc3y\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`!\x81R` \x01\x80a\x17'`!\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xfd[` \x80T`\x01\x01\x90\x81\x90U`\x00[` \x81\x10\x15a\x10\xa9W\x81`\x01\x16`\x01\x14\x15a\x0f\xa0W\x82`\x00\x82` \x81\x10a\x0f\x91W\xfe[\x01UPa\x10\xac\x95PPPPPPV[`\x02`\x00\x82` \x81\x10a\x0f\xafW\xfe[\x01T\x84`@Q` \x01\x80\x83\x81R` \x01\x82\x81R` \x01\x92PPP`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\x10%W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x0f\xe8V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\x10\x82W=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\x10\x97W`\x00\x80\xfd[PQ\x92P`\x02\x82\x04\x91P`\x01\x01a\x0fnV[P\xfe[PPPPPPPV[``a\x10\xc2` Ta\x14\xbaV[\x90P\x90V[` T`\x00\x90\x81\x90\x81[` \x81\x10\x15a\x12\xf0W\x81`\x01\x16`\x01\x14\x15a\x11\xe6W`\x02`\x00\x82` \x81\x10a\x10\xf5W\xfe[\x01T\x84`@Q` \x01\x80\x83\x81R` \x01\x82\x81R` \x01\x92PPP`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\x11kW\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x11.V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\x11\xc8W=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\x11\xddW`\x00\x80\xfd[PQ\x92Pa\x12\xe2V[`\x02\x83`!\x83` \x81\x10a\x11\xf6W\xfe[\x01T`@Q` \x01\x80\x83\x81R` \x01\x82\x81R` \x01\x92PPP`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\x12kW\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x12.V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\x12\xc8W=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\x12\xddW`\x00\x80\xfd[PQ\x92P[`\x02\x82\x04\x91P`\x01\x01a\x10\xd1V[P`\x02\x82a\x12\xff` Ta\x14\xbaV[`\x00`@\x1b`@Q` \x01\x80\x84\x81R` \x01\x83\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\x13ZW\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x13\x1dV[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\x90\x95\x16\x92\x01\x91\x82RP`@\x80Q\x80\x83\x03\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x01\x81R`\x18\x90\x92\x01\x90\x81\x90R\x81Q\x91\x95P\x93P\x83\x92\x85\x01\x91P\x80\x83\x83[` \x83\x10a\x14?W\x80Q\x82R\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x14\x02V[Q\x81Q` \x93\x84\x03a\x01\x00\n\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x19\x90\x92\x16\x91\x16\x17\x90R`@Q\x91\x90\x93\x01\x94P\x91\x92PP\x80\x83\x03\x81\x85Z\xfa\x15\x80\x15a\x14\x9cW=`\x00\x80>=`\x00\xfd[PPP`@Q=` \x81\x10\x15a\x14\xb1W`\x00\x80\xfd[PQ\x92PPP\x90V[`@\x80Q`\b\x80\x82R\x81\x83\x01\x90\x92R``\x91` \x82\x01\x81\x806\x837\x01\x90PP\x90P`\xc0\x82\x90\x1b\x80`\a\x1a`\xf8\x1b\x82`\x00\x81Q\x81\x10a\x14\xf4W\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x06\x1a`\xf8\x1b\x82`\x01\x81Q\x81\x10a\x157W\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x05\x1a`\xf8\x1b\x82`\x02\x81Q\x81\x10a\x15zW\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x04\x1a`\xf8\x1b\x82`\x03\x81Q\x81\x10a\x15\xbdW\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x03\x1a`\xf8\x1b\x82`\x04\x81Q\x81\x10a\x16\x00W\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x02\x1a`\xf8\x1b\x82`\x05\x81Q\x81\x10a\x16CW\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x01\x1a`\xf8\x1b\x82`\x06\x81Q\x81\x10a\x16\x86W\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SP\x80`\x00\x1a`\xf8\x1b\x82`\a\x81Q\x81\x10a\x16\xc9W\xfe[` \x01\x01\x90~\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x16\x90\x81`\x00\x1a\x90SPP\x91\x90PV[`\x00\x80\x85\x85\x11\x15a\x17\rW\x81\x82\xfd[\x83\x86\x11\x15a\x17\x19W\x81\x82\xfd[PP\x82\x01\x93\x91\x90\x92\x03\x91PV\xfeDepositContract: merkle tree fullDepositContract: reconstructed DepositData does not match supplied deposit_data_rootDepositContract: invalid withdrawal_credentials lengthDepositContract: deposit value not multiple of gweiDepositContract: invalid pubkey lengthDepositContract: deposit value too highDepositContract: deposit value too lowDepositContract: invalid signature length\xa2dipfsX\"\x12 \x1d\xd2o7\xa6!p0\t\xab\xf1nw\u6713\xdcP\u01dd\xb7\xf6\xcc7T>>\x0e=\xec\u0717dsolcC\x00\x06\v\x003\xf9\b<\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"\xa0\xf5\xa5\xfdB\xd1j 0'\x98\xefn\xd3\t\x97\x9bC\x00=# \xd9\xf0\xe8\xea\x981\xa9'Y\xfbK\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00#\xa0\xdbV\x11N\x00\xfd\xd4\xc1\xf8\\\x89+\xf3Z\u0268\x92\x89\xaa\xec\xb1\xeb\u0429l\xde`jt\x8b]q\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\xa0\u01c0\t\xfd\xf0\x7f\xc5j\x11\xf1\"7\x06X\xa3S\xaa\xa5B\xedc\xe4LK\xc1_\xf4\xcd\x10Z\xb3<\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\xa0Sm\x98\x83\x7f-\xd1e\xa5]^\xea\xe9\x14\x85\x95Dr\xd5o$m\xf2V\xbf<\xae\x195*\x12<\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&\xa0\x9e\xfd\xe0R\xaa\x15B\x9f\xae\x05\xba\xd4\u0431\xd7\xc6M\xa6M\x03\u05e1\x85JX\x8c,\xb8C\f\r0\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\xa0\u060d\xdf\xee\xd4\x00\xa8uU\x96\xb2\x19B\xc1I~\x11L0.a\x18)\x0f\x91\xe6w)v\x04\x1f\xa1\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xa0\x87\xeb\r\u06e5~5\xf6\u0486g8\x02\xa4\xafYu\xe2%\x06\xc7\xcfLd\xbbk\xe5\xee\x11R\x7f,\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00)\xa0&\x84dv\xfd_\xc5J]C8Qg\xc9QD\xf2d?S<\xc8[\xb9\xd1kx/\x8d}\xb1\x93\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*\xa0Pm\x86X-%$\x05\xb8@\x01\x87\x92\xca\u04bf\x12Y\xf1\xefZ\xa5\xf8\x87\xe1<\xb2\xf0\tOQ\xe1\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\xa0\xff\xff\n\xd7\xe6Yw/\x954\xc1\x95\xc8\x15\xef\xc4\x01N\xf1\xe1\xda\xedD\x04\xc0c\x85\xd1\x11\x92\xe9+\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,\xa0l\xf0A'\xdb\x05D\x1c\xd83\x10zR\xbe\x85(h\x89\x0eC\x17\xe6\xa0*\xb4v\x83\xaau\x96B \xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-\xa0\xb7\xd0_\x87_\x14\x00'\xefQ\x18\xa2${\xbb\x84\u038f/\x0f\x11#b0\x85\xda\xf7\x96\f2\x9f_\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.\xa0\xdfj\xf5\xf5\xbb\xdbk\xe9\uf2a6\x18\u4fc0s\x96\bg\x17\x1e)go\x8b(M\xeaj\b\xa8^\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/\xa0\xb5\x8d\x90\x0f^\x18.\x01t\u0285\x18.\xec\x9f:\t\xf6\xa6\xc0\xdfcw\xa5\x10\xd7\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x009\xa01 o\xa8\nP\xbbj\xbe)\bPX\xf1b\x12!*`\xee\xc8\xf0I\xfe\u02d2\xd8\xc8\xe0\xa8K\xc0\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:\xa0!5+\xfe\xcb\xed\xdd\u94c3\x9faL=\xac\n>\xe3uC\xf9\xb4\x12\xb1a\x99\xdc\x15\x8e#\xb5D\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\xa0a\x9e1'$\xbbm|1S\xed\x9d\xe7\x91\xd7d\xa3f\xb3\x89\xaf\x13\u014b\xf8\xa8\xd9\x04\x81\xa4ge\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00<\xa0|\xdd)\x86&\x82Pb\x8d\f\x10\xe3\x85\u014ca\x91\xe6\xfb\xe0Q\x91\xbc\xc0O\x13?,\xear\xc1\xc4\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00=\xa0\x84\x890\xbd{\xa8\xca\xc5Fa\a!\x13\xfb'\x88i\xe0{\xb8X\x7f\x919)37M\x01{\xcb\xe1\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>\xa0\x88i\xff,\"\xb2\x8c\xc1\x05\x10\u06452\x92\x803(\xbeO\xb0\xe8\x04\x95\u8ecd'\x1f[\x88\x966\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\xa0\xb5\xfe(\xe7\x9f\x1b\x85\x0f\x86X$l\u9da1\u7d1f\xc0m\xb7\x14>\x8f\xe0\xb4\xf2\xb0\xc5R:\\\xf8B\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\xa0\x98^\x92\x9fp\xaf(\u043d\u0469\n\x80\x8f\x97\x7fY||w\x8cH\x9e\x98\u04fd\x89\x10\xd3\x1a\xc0\xf7\xe1\x94F#\x96\u677f\xa4U\xf4\x05\xf4\u0742\xf3\x01J\xf8\x00;r\x8b\xa5o\xa5\xb9\x90\x19\xa5\xc8\x00\x00\x00\xe0\x94I\xdf<\xca&p\xeb\rY\x11F\xb1cY\xfe3nGo)\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94K\xc6V\xb3M\xe28\x96\xfa`i\u0246/5[t\x04\x01\xaf\x8b\bE\x95\x16\x14\x01HJ\x00\x00\x00\xe0\x94M\v\x04\xb4\x05\u01b6,|\xfc:\xe5GYt~,\vFb\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94MIl\xcc(\x05\x8b\x1dt\xb7\xa1\x95Af>!\x15O\x9c\x84\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe1\x94P\x9avg\xac\x8d\x03 \xe3ar\xc1\x92Pja\x88\xaa\x84\xf6\x8b|\x13\xbcK,\x13\xfa<]\xc1\xaa\x19;\xc6\x03=\xfd\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94jz\xa9\xb8\x82\xd5\v\xb7\xbc]\xa1\xa2Dq\x9c\x99\xf1/\x06\xa3\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe1\x94l\xc99|;8s\x9d\xac\xbf\xaah\xea\xd5\xf5\xd7{\xa5\xf4U\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe1\x94s\xb2\xe0\xe5E\x10#\x9e\"\u0313o\vJm\xe1\xac\xf0\xab\u078bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94v,\xa6,\xa2T\x9a\xd8\x06v;:\xa1\xea1|B\x9b\xdb\u068a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94w\x8f_\x13\u013ex\xa3\xa4\xd7\x14\x1b\xcb&\x99\x97\x02\xf4\a\u03cbR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\x83M\xbfZ\x03\xe2\x9c%\xbcUE\x9c\u039c\x02\x1e\xeb\xe6v\xad\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\x87]%\xeeK\xc6\x04\xc7\x1b\xafb6\xa8H\x8f\"9\x9b\xedK\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\u150d\xf7\x87\x8d5q\xbe\xf5\xe5\xa7D\xf9b\x87\xc8\xd2\x03\x86\xd7Z\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\x9eAZ\to\xf7vP\u0712]\xeaTe\x85\xb4\xad\xb3\"\xb6\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xa0vke\xa4\xf7\xb1\xday\xa1\xafy\xaciTV\uf886D\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xa2\x9b\x14JD\x9eAJG,`\u01ea\xf1\xaa\xff\xe3)\x02\x1d\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xa5S\x95Vk\vT9[2F\xf9j\v\xdcK\x8aH=\xf9\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xac\x9b\xa7/\xb6\x1a\xa7\xc3\x1a\x95\xdf\n\x8bn\xbaoA\xef\x87^\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xb0I\x8c\x15\x87\x9d\xb2\xeeTq\u0512l_\xaa%\u0260\x96\x83\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xb0J\xef*=-\x86\xb0\x10\x06\xcc\xd43\x9a.\x94=\x9cd\x80\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\u1531\x9f\xb4\xc1\xf2\x802~`\xed7\xb1\xdcn\xe7u3S\x93\x14\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xbb\x97{.\xe8\xa1\x11\u05c8\xb3G}$ x\u04387\xe7+\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xc2\x1c\xb9\u025c1m\x18c\x14/}\xd8m\xd5Im\x81\xa8\u058a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xc4s\xd4\x12\xdcR\xe3I\x86\"\t\x92L\x89\x81\xb2\xeeB\ah\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94\u010e#\xc5\xf6\xe1\xea\v\xae\xf6S\a4\xed\u00d6\x8fy\xaf.\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe1\x94\xc6\xe2E\x99\x91\xbf\xe2|\xcam\x86r/5\xda#\xa1\xe4\u02d7\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xc9\xca+\xa9\xa2}\xe1\xdbX\x9d\x8c3\xab\x8e\u07e2\x11\x1b1\xfb\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xd1\xf7~L\x1cE\x18n\x86S\u0109\xf9\x0e\x00\x8asYr\x96\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe2\x94\u04d9NM2\x02\xdd#\xc8I}\x7fu\xbf\x16G\xd1\xda\x1b\xb1\x8c\x01\x9d\x97\x1eO\xe8@\x1et\x00\x00\x00\xe0\x94\u0726\u9d0e\xa8j\xeb\xfd\xf9\x92\x99I\x12@B)kn4\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xe0\x99\x1e\x84@A\xbeo\x11\xb9\x9d\xa5\xb1\x14\xb6\xbc\xf8N\xbdW\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94\u08bdBX\xd2v\x887\xba\xa2j(\xfeq\xdc\a\x9f\x84\u01cbR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00\xe0\x94\xea(\xd0\x02\x04/\u0649\x8d\r\xb0\x16\xbe\x97X\xee\xaf\xe3\\\x1e\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe0\x94\xef\xa7EO\x11\x16\x80yu\xa4u\vFi^\x96xP\xde]\x8a\xd3\xc2\x1b\xce\xcc\xed\xa1\x00\x00\x00\xe1\x94\xfb\xfdo\xa9\xf7:\u01a0X\xe0\x12Y\x03L(\x00\x1b\xef\x82G\x8bR\xb7\xd2\xdc\xc8\f\xd2\xe4\x00\x00\x00" +const scrollAlphaAllocData = "\xf91$\xe0\x94@u\xa6\xbc\xadl<[\x94\x1c$\x82\xfd\xa7\x16\xa5f\b\x10k\x88\x8a\xc7#\x04\x89\xe8\x00\x00\x80\xc0\xf9\x06~\x94S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xb9\x06M`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\x9eW`\x005`\xe0\x1c\x80c\x83\xccv`\x11a\x00fW\x80c\x83\xccv`\x14a\x01\x0fW\x80c\x8d\xa5\xcb[\x14a\x01\"W\x80c\x9ez\xdcy\x14a\x015W\x80c\u0539\xf4\xfa\x14a\x01HW\x80c\xf2\xfd\xe3\x8b\x14a\x01QW`\x00\x80\xfd[\x80c&\xaa\u05f7\x14a\x00\xa3W\x80c<\xb7G\xbf\x14a\x00\xbfW\x80c`\n.w\x14a\x00\xeaW\x80cqP\x18\xa6\x14a\x00\xfdW\x80c\x81)\xfc\x1c\x14a\x01\aW[`\x00\x80\xfd[a\x00\xac`\x01T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[`STa\x00\u0490`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xb6V[a\x00\xaca\x00\xf86`\x04a\x05\x16V[a\x01dV[a\x01\x05a\x02\tV[\x00[a\x01\x05a\x02?V[a\x00\xaca\x01\x1d6`\x04a\x05\x16V[a\x02GV[`RTa\x00\u0490`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x01\x05a\x01C6`\x04a\x05/V[a\x02^V[a\x00\xac`\x00T\x81V[a\x01\x05a\x01_6`\x04a\x05/V[a\x02\xfaV[`ST`\x00\x90`\x01`\x01`\xa0\x1b\x03\x163\x14a\x01\xb7W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x0e`$\x82\x01Rm7\xb76<\x906\xb2\xb9\xb9\xb2\xb73\xb2\xb9`\x91\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`\x00\x80a\x01\u00c4a\x03\x86V[`@\x80Q\x83\x81R` \x81\x01\x88\x90R\x92\x94P\x90\x92P\u007f\xfa\xa6\x17\xc2\xd8\xce\x12\xc6&7\xdb\xcev\xef\xcc\x18\xda\xe6\x05t\xaa\x95p\x9b\xdc\xed\xce~v\a\x16\x93\x91\x01`@Q\x80\x91\x03\x90\xa1\x93\x92PPPV[`RT`\x01`\x01`\xa0\x1b\x03\x163\x14a\x023W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xae\x90a\x05_V[a\x02=`\x00a\x04RV[V[a\x02=a\x04\xa4V[`*\x81`(\x81\x10a\x02WW`\x00\x80\xfd[\x01T\x90P\x81V[`RT`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\x88W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xae\x90a\x05_V[`\x01T\x15a\x02\xd8W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\u007fcannot update messenger\x00\x00\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01a\x01\xaeV[`S\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`RT`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03$W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xae\x90a\x05_V[`\x01`\x01`\xa0\x1b\x03\x81\x16a\x03zW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\u007fnew owner is the zero address\x00\x00\x00`D\x82\x01R`d\x01a\x01\xaeV[a\x03\x83\x81a\x04RV[PV[`\x01T`\x00\x90\x81\x90\x83\x82[\x82\x15a\x04\"Wa\x03\xa2`\x02\x84a\x05\x96V[a\x03\xebW\x81`*\x82`(\x81\x10a\x03\xbaWa\x03\xbaa\x05\xb8V[\x01Ua\x03\xe4\x82`\x02\x83`(\x81\x10a\x03\xd3Wa\x03\xd3a\x05\xb8V[\x01T`\x00\x91\x82R` R`@\x90 \x90V[\x91Pa\x04\x16V[a\x04\x13`*\x82`(\x81\x10a\x04\x01Wa\x04\x01a\x05\xb8V[\x01T\x83`\x00\x91\x82R` R`@\x90 \x90V[\x91P[`\x01\x92\x83\x1c\x92\x01a\x03\x91V[\x81`*\x82`(\x81\x10a\x046Wa\x046a\x05\xb8V[\x01UP`\x00\x81\x90U`\x01\x80T\x80\x82\x01\x90\x91U\x95\x90\x94P\x92PPPV[`R\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\u007f\x8b\xe0\a\x9cS\x16Y\x14\x13D\xcd\x1f\u0424\xf2\x84\x19I\u007f\x97\"\xa3\u06af\xe3\xb4\x18okdW\xe0\x90`\x00\x90\xa3PPV[`\x00[`(a\x04\xb4\x82`\x01a\x05\xe4V[\x10\x15a\x03\x83Wa\x04\xe5`\x02\x82`(\x81\x10a\x04\xd0Wa\x04\xd0a\x05\xb8V[\x01T`\x02\x83`(\x81\x10a\x03\xd3Wa\x03\xd3a\x05\xb8V[`\x02a\x04\xf2\x83`\x01a\x05\xe4V[`(\x81\x10a\x05\x02Wa\x05\x02a\x05\xb8V[\x01U\x80a\x05\x0e\x81a\x05\xfcV[\x91PPa\x04\xa7V[`\x00` \x82\x84\x03\x12\x15a\x05(W`\x00\x80\xfd[P5\x91\x90PV[`\x00` \x82\x84\x03\x12\x15a\x05AW`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x05XW`\x00\x80\xfd[\x93\x92PPPV[` \x80\x82R`\x17\x90\x82\x01R\u007fcaller is not the owner\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`\x00\x82a\x05\xb3WcNH{q`\xe0\x1b`\x00R`\x12`\x04R`$`\x00\xfd[P\x06\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[`\x00\x82\x19\x82\x11\x15a\x05\xf7Wa\x05\xf7a\x05\xceV[P\x01\x90V[`\x00`\x00\x19\x82\x14\x15a\x06\x10Wa\x06\x10a\x05\xceV[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xca ]\x16\bZ\xa5fc0\xf880L\xfe\xe2\x9f\x0f6]\x8e\xc8\xf5\x04G\x98\x89\xac\xa3K\x97\vdsolcC\x00\b\n\x003\xd7\xd6R\x94@u\xa6\xbc\xadl<[\x94\x1c$\x82\xfd\xa7\x16\xa5f\b\x10k\xf9\x0eS\x94S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x80\xb9\x0e\"`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xf5W`\x005`\xe0\x1c\x80cq\"\xba\x06\x11a\x00\x97W\x80c\x93\xe5\x9d\xc1\x11a\x00fW\x80c\x93\xe5\x9d\xc1\x14a\x02\xaeW\x80c\x96\x90\xae#\x14a\x02\xc1W\x80c\xaf\xbb\xa3\x98\x14a\x02\xd4W\x80c\xf2\xfd\xe3\x8b\x14a\x02\xe7W`\x00\x80\xfd[\x80cq\"\xba\x06\x14a\x01\xe5W\x80cqP\x18\xa6\x14a\x02[W\x80c\x84\x1f\x12|\x14a\x02cW\x80c\x8d\xa5\xcb[\x14a\x02\x83W`\x00\x80\xfd[\x80c=\x0f\x96>\x11a\x00\xd3W\x80c=\x0f\x96>\x14a\x01wW\x80cE\x99\u01c8\x14a\x01\x8cW\x80cV\xe2\x14\xe4\x14a\x01\xacW\x80clOk\xa9\x14a\x01\xdcW`\x00\x80\xfd[\x80c\x03\x85\xf4\xf1\x14a\x00\xfaW\x80c\f\x19R\xd3\x14a\x010W\x80c,\xb5\x83x\x14a\x01WW[`\x00\x80\xfd[`\x02T`\x00\x90\x81R`\x04` R`@\x90 T`\x01`\x80\x1b\x90\x04`\x01`\x01`\x80\x1b\x03\x16[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[`\x02T`\x00\x90\x81R`\x04` R`@\x90 T`\x01`@\x1b\x90\x04`\x01`\x01`@\x1b\x03\x16a\x01\x1dV[a\x01\x1da\x01e6`\x04a\v\xfbV[`\x00\x90\x81R`\x03` R`@\x90 T\x90V[a\x01\x8aa\x01\x856`\x04a\f\x14V[a\x02\xfaV[\x00[`\x02T`\x00\x90\x81R`\x04` R`@\x90 T`\x01`\x01`@\x1b\x03\x16a\x01\x1dV[a\x01\x1da\x01\xba6`\x04a\v\xfbV[`\x00\x90\x81R`\x04` R`@\x90 T`\x01`@\x1b\x90\x04`\x01`\x01`@\x1b\x03\x16\x90V[a\x01\x1d`\x02T\x81V[a\x02,a\x01\xf36`\x04a\v\xfbV[`\x04` R`\x00\x90\x81R`@\x90 T`\x01`\x01`@\x1b\x03\x80\x82\x16\x91`\x01`@\x1b\x81\x04\x90\x91\x16\x90`\x01`\x80\x1b\x90\x04`\x01`\x01`\x80\x1b\x03\x16\x83V[`@\x80Q`\x01`\x01`@\x1b\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R`\x01`\x01`\x80\x1b\x03\x16\x90\x82\x01R``\x01a\x01'V[a\x01\x8aa\x03\x8eV[a\x01\x1da\x02q6`\x04a\v\xfbV[`\x03` R`\x00\x90\x81R`@\x90 T\x81V[`\x00Ta\x02\x96\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x01'V[`\x01Ta\x02\x96\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x01\x8aa\x02\xcf6`\x04a\f`V[a\x03\xc4V[a\x01\x8aa\x02\xe26`\x04a\f\xd1V[a\x059V[a\x01\x8aa\x02\xf56`\x04a\f\x14V[a\v\x1fV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03-W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x03$\x90a\r_V[`@Q\x80\x91\x03\x90\xfd[`\x01\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\u007f\"\xd1\xc3_\xe0r\xd2\xe4,<\x8f\x9b\u0520\xd3J\xa8J\x01\x01\xd0 \xa6%\x17\xb3?\xdb1t\xe5\xf7\x91\x01`@Q\x80\x91\x03\x90\xa1PPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\xb8W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x03$\x90a\r_V[a\x03\xc2`\x00a\v\xabV[V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\xeeW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x03$\x90a\r_V[`\x02T\x15a\x044W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x18[\x1c\x99XY\x1eH\x1a[\x9a]\x1aX[\x1a^\x99Y`j\x1b`D\x82\x01R`d\x01a\x03$V[`\x02\x85\x90U`\x00\x85\x81R`\x03` \x90\x81R`@\x80\x83 \x84\x90U\x80Q``\x81\x01\x82R`\x01`\x01`@\x1b\x03\x80\x89\x16\x82R\x87\x81\x16\x82\x85\x01\x90\x81R`\x01`\x01`\x80\x1b\x03\x80\x89\x16\x84\x86\x01\x90\x81R\x8c\x88R`\x04\x90\x96R\x95\x84\x90 \x92Q\x83T\x91Q\x95Q\x87\x16`\x01`\x80\x1b\x02\x95\x83\x16`\x01`@\x1b\x02o\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x90\x92\x16\x92\x16\x91\x90\x91\x17\x17\x90\x93\x16\x91\x90\x91\x17\x90\x91UQ\x85\x90\u007f\xa7\x82?E\xe1\xee!\xf9S\vw\x95\x9bWPz\xd5\x15\xa1O\xa9\xfa$\xd2b\xee\x80\xe7\x9b+WE\x90a\x05*\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x01`\x01`@\x1b\x03\x94\x85\x16\x81R\x92\x90\x93\x16` \x83\x01R`\x01`\x01`\x80\x1b\x03\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa2PPPPPV[`\x01T`\x01`\x01`\xa0\x1b\x03\x16\x80\x15\x80a\x05\xb5WP`@Qc\xef\u01c4\x01`\xe0\x1b\x81R3`\x04\x82\x01R`\x01`\x01`\xa0\x1b\x03\x82\x16\x90c\xef\u01c4\x01\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05\x91W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xb5\x91\x90a\r\x96V[a\x05\xfaW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ru'7\xba\x10;\xb44\xba2\xb64\xb9\xba2\xb2\x109\xb2\xb722\xb9`Q\x1b`D\x82\x01R`d\x01a\x03$V[P`\x00\x80`\x00\x80`\x00a\x06\xd4V[c\b\xc3y\xa0`\xe0\x1b`\x00R` `\x04R\x80`DR`\x00[\x81\x15a\x064W`\b\x91\x90\x91\x1b\x90`\x01\x01a\x06\x1fV[`$R`d`\x00\xfd[\x80a\x06KWa\x06K\x82a\x06\bV[PPV[`\x00\x80\x825`\x00\x1a`\x80\x81\x10\x15a\x06iWP`\x01\x93\x91PPV[`\xb8\x81\x10\x15a\x06\x83W`\u007f\x19\x01\x93`\x01\x93\x90\x93\x01\x92\x91PPV[`\xc0\x81\x10\x15a\x06\xb9W`\xb7\x81\x03`\x04\x81\x11\x15a\x06\x9bW\xfe[`\x01\x85\x81\x015`\b\x83\x02a\x01\x00\x03\x1c\x96\x91\x90\x95\x01\x90\x94\x01\x93\x92PPPV[Pa\x06\xcfhNot value`\xb8\x1ba\x06\bV[\x91P\x91V[\x87`\x00\x815`\x00\x1a`\xf8\x81\x10\x15a\x06\xe7W\xfe[`\xf6\x19\x01` \x81\x11\x15a\x06\xf6W\xfe[`@Q`\x01\x84\x83\x01\x81\x01\x94\x81\x015`\b\x84\x02a\x01\x00\x03\x1c\x90\x92\x01\x90\x91\x01\x91P\x81\x8b\x827\x90\x81 \x90a\a?r\bM\x8d\xecmd\r\f.m\x04\r\xad.m\xac.\x8cm`k\x1b\x8d\x84\x14a\x06=V[`\x00\x91P[`\x10\x82\x10\x15a\a\u007fWa\aV\x83a\x06OV[`!\x82\x10\x15a\amW\x805` \x83\x90\x03`\b\x02\x1c\x83R[\x01\x92P`\x01\x91\x90\x91\x01\x90` \x01a\aDV[a\a\xad\u007fHeader RLP length mismatch\x00\x00\x00\x00\x00\x00\x8b\x8d\x01\x85\x14a\x06=V[PP`@\x80Q\x80Q``\x82\x01Qa\x01\x00\x83\x01Qa\x01`\x84\x01Qa\x01\xe0\x90\x94\x01Q`\x00\x84\x81R`\x03` R\x95\x90\x95 T\x92\x9aP\x90\x98P\x96P\x90\x94P\x90\x92P\x15\x15\x90Pa\b0W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x14\x18\\\x99[\x9d\b\x1b\x9b\xdd\b\x1a[\\\x1b\u071d\x19Y`j\x1b`D\x82\x01R`d\x01a\x03$V[`\x00\x85\x81R`\x04` \x90\x81R`@\x91\x82\x90 \x82Q``\x81\x01\x84R\x90T`\x01`\x01`@\x1b\x03\x80\x82\x16\x80\x84R`\x01`@\x1b\x83\x04\x82\x16\x94\x84\x01\x94\x90\x94R`\x01`\x80\x1b\x90\x91\x04`\x01`\x01`\x80\x1b\x03\x16\x93\x82\x01\x93\x90\x93R\x91\x85\x16\x90a\b\x91\x90`\x01a\r\xb3V[`\x01`\x01`@\x1b\x03\x16\x14a\b\xdfW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\bM\x8d\xecmd\r\f\xad,\xed\x0e\x84\r\xad.m\xac.\x8cm`[\x1b`D\x82\x01R`d\x01a\x03$V[\x82`\x01`\x01`@\x1b\x03\x16\x81` \x01Q`\x01`\x01`@\x1b\x03\x16\x11\x15a\tOW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`!`$\x82\x01R\u007fParent block has larger timestam`D\x82\x01R`\a`\xfc\x1b`d\x82\x01R`\x84\x01a\x03$V[\x89`\x02\x81\x90UP\x84`\x03`\x00\x8c\x81R` \x01\x90\x81R` \x01`\x00 \x81\x90UP`@Q\x80``\x01`@R\x80\x85`\x01`\x01`@\x1b\x03\x16\x81R` \x01\x84`\x01`\x01`@\x1b\x03\x16\x81R` \x01\x83`\x01`\x01`\x80\x1b\x03\x16\x81RP`\x04`\x00\x8c\x81R` \x01\x90\x81R` \x01`\x00 `\x00\x82\x01Q\x81`\x00\x01`\x00a\x01\x00\n\x81T\x81`\x01`\x01`@\x1b\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1b\x03\x16\x02\x17\x90UP` \x82\x01Q\x81`\x00\x01`\ba\x01\x00\n\x81T\x81`\x01`\x01`@\x1b\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1b\x03\x16\x02\x17\x90UP`@\x82\x01Q\x81`\x00\x01`\x10a\x01\x00\n\x81T\x81`\x01`\x01`\x80\x1b\x03\x02\x19\x16\x90\x83`\x01`\x01`\x80\x1b\x03\x16\x02\x17\x90UP\x90PP\x89\u007f\xa7\x82?E\xe1\xee!\xf9S\vw\x95\x9bWPz\xd5\x15\xa1O\xa9\xfa$\xd2b\xee\x80\xe7\x9b+WE\x85\x85\x85\x89`@Qa\n\xa4\x94\x93\x92\x91\x90`\x01`\x01`@\x1b\x03\x94\x85\x16\x81R\x92\x90\x93\x16` \x83\x01R`\x01`\x01`\x80\x1b\x03\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xa2\x86\x15a\v\x13W`@Qc\xbe\xde9\xb5`\xe0\x1b\x81R`\x01`\x01`\x80\x1b\x03\x83\x16`\x04\x82\x01R`\x02`S`\x98\x1b\x01\x90c\xbe\xde9\xb5\x90`$\x01`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\n\xfaW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\v\x0eW=`\x00\x80>=`\x00\xfd[PPPP[PPPPPPPPPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\vIW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x03$\x90a\r_V[`\x01`\x01`\xa0\x1b\x03\x81\x16a\v\x9fW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\u007fnew owner is the zero address\x00\x00\x00`D\x82\x01R`d\x01a\x03$V[a\v\xa8\x81a\v\xabV[PV[`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\u007f\x8b\xe0\a\x9cS\x16Y\x14\x13D\xcd\x1f\u0424\xf2\x84\x19I\u007f\x97\"\xa3\u06af\xe3\xb4\x18okdW\xe0\x91\x90\xa3PPV[`\x00` \x82\x84\x03\x12\x15a\f\rW`\x00\x80\xfd[P5\x91\x90PV[`\x00` \x82\x84\x03\x12\x15a\f&W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\f=W`\x00\x80\xfd[\x93\x92PPPV[\x805`\x01`\x01`@\x1b\x03\x81\x16\x81\x14a\f[W`\x00\x80\xfd[\x91\x90PV[`\x00\x80`\x00\x80`\x00`\xa0\x86\x88\x03\x12\x15a\fxW`\x00\x80\xfd[\x855\x94Pa\f\x88` \x87\x01a\fDV[\x93Pa\f\x96`@\x87\x01a\fDV[\x92P``\x86\x015`\x01`\x01`\x80\x1b\x03\x81\x16\x81\x14a\f\xb2W`\x00\x80\xfd[\x94\x97\x93\x96P\x91\x94`\x80\x015\x92\x91PPV[\x80\x15\x15\x81\x14a\v\xa8W`\x00\x80\xfd[`\x00\x80`\x00\x80``\x85\x87\x03\x12\x15a\f\xe7W`\x00\x80\xfd[\x845\x93P` \x85\x015`\x01`\x01`@\x1b\x03\x80\x82\x11\x15a\r\x05W`\x00\x80\xfd[\x81\x87\x01\x91P\x87`\x1f\x83\x01\x12a\r\x19W`\x00\x80\xfd[\x815\x81\x81\x11\x15a\r(W`\x00\x80\xfd[\x88` \x82\x85\x01\x01\x11\x15a\r:W`\x00\x80\xfd[` \x83\x01\x95P\x80\x94PPPP`@\x85\x015a\rT\x81a\f\xc3V[\x93\x96\x92\x95P\x90\x93PPV[` \x80\x82R`\x17\x90\x82\x01R\u007fcaller is not the owner\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[`\x00` \x82\x84\x03\x12\x15a\r\xa8W`\x00\x80\xfd[\x81Qa\f=\x81a\f\xc3V[`\x00`\x01`\x01`@\x1b\x03\x80\x83\x16\x81\x85\x16\x80\x83\x03\x82\x11\x15a\r\xe3WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[\x01\x94\x93PPPPV\xfe\xa2dipfsX\"\x12 sq\x02s\xde\xc90\xf4'N\x03\xfc\xf7\x89\x18\x157\x9e\x00(<3\xb3\xb0\x05>\x93\xe4&t\x89\xf1dsolcC\x00\b\n\x003\xd7\u0580\x94@u\xa6\xbc\xadl<[\x94\x1c$\x82\xfd\xa7\x16\xa5f\b\x10k\xf9\b\xa4\x94S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x80\xb9\bs`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00\xcfW`\x005`\xe0\x1c\x80cqP\x18\xa6\x11a\x00\x8cW\x80c\xbe\xde9\xb5\x11a\x00fW\x80c\xbe\xde9\xb5\x14a\x01\x8dW\x80c\xde&\u0121\x14a\x01\xa0W\x80c\xf2\xfd\xe3\x8b\x14a\x01\xb3W\x80c\xf4^e\xd8\x14a\x01\xc6W`\x00\x80\xfd[\x80cqP\x18\xa6\x14a\x01GW\x80c\x8d\xa5\xcb[\x14a\x01OW\x80c\x93\xe5\x9d\xc1\x14a\x01zW`\x00\x80\xfd[\x80c\f\x18\xc1b\x14a\x00\xd4W\x80c5w\xaf\xc5\x14a\x00\xf0W\x80c=\x0f\x96>\x14a\x01\x05W\x80cI\x94\x8e\x0e\x14a\x01\x18W\x80cQ\x9bK\xd3\x14a\x01+W\x80cpFU\x97\x14a\x014W[`\x00\x80\xfd[a\x00\xdd`\x02T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x01\x03a\x00\xfe6`\x04a\x06oV[a\x01\xcfV[\x00[a\x01\x03a\x01\x136`\x04a\x06\x88V[a\x02\x91V[a\x00\xdda\x01&6`\x04a\x06\xceV[a\x03\x1cV[a\x00\xdd`\x01T\x81V[a\x01\x03a\x01B6`\x04a\x06oV[a\x03aV[a\x01\x03a\x04\x16V[`\x00Ta\x01b\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe7V[`\x04Ta\x01b\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x01\x03a\x01\x9b6`\x04a\x06oV[a\x04LV[a\x00\xdda\x01\xae6`\x04a\x06\xceV[a\x053V[a\x01\x03a\x01\xc16`\x04a\x06\x88V[a\x05\x93V[a\x00\xdd`\x03T\x81V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\x02W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\u007fV[`@Q\x80\x91\x03\x90\xfd[b\x1c\x9c8\x81\x11\x15a\x02UW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\u007fexceed maximum overhead\x00\x00\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01a\x01\xf9V[`\x02\x81\x90U`@Q\x81\x81R\u007f2t\v5\xc0\xea!6P\xf6\rD6kO\xb2\x11\xc9\x03;PqNJ\x1d4\xe6][\ub6f4\x90` \x01[`@Q\x80\x91\x03\x90\xa1PV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\xbbW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\u007fV[`\x04\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\u007f\"\xd1\xc3_\xe0r\xd2\xe4,<\x8f\x9b\u0520\xd3J\xa8J\x01\x01\xd0 \xa6%\x17\xb3?\xdb1t\xe5\xf7\x91\x01`@Q\x80\x91\x03\x90\xa1PPV[`\x00\x80a\x03(\x83a\x053V[\x90P`\x00`\x01T\x82a\x03:\x91\x90a\a\xb6V[\x90Pc;\x9a\xca\x00`\x03T\x82a\x03O\x91\x90a\a\xb6V[a\x03Y\x91\x90a\a\xe3V[\x94\x93PPPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\x8bW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\u007fV[a\x03\x9bc;\x9a\xca\x00a\x03\xe8a\a\xb6V[\x81\x11\x15a\x03\xe1W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rsexceed maximum scale``\x1b`D\x82\x01R`d\x01a\x01\xf9V[`\x03\x81\x90U`@Q\x81\x81R\u007f36\u0357\b\xea\xf2v\x9a\x0f\r\xc0g\x9f0\xe8\x0f\x15\xdc\u060d\x19!\xb5\xa1hX\xe8\xb8\\Y\x1a\x90` \x01a\x02\x86V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04@W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\u007fV[a\x04J`\x00a\x06\x1fV[V[`\x04\x80T`@Qc\xef\u01c4\x01`\xe0\x1b\x81R3\x92\x81\x01\x92\x90\x92R`\x01`\x01`\xa0\x1b\x03\x16\x90c\xef\u01c4\x01\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xb9\x91\x90a\b\x05V[a\x04\xfeW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ru'7\xba\x10;\xb44\xba2\xb64\xb9\xba2\xb2\x109\xb2\xb722\xb9`Q\x1b`D\x82\x01R`d\x01a\x01\xf9V[`\x01\x81\x90U`@Q\x81\x81R\u007f5\x1f\xb27W\xbb^\xa0Tl\x85\xb7\x99m\xddqU\xf9k\x93\x9e\xba\xa5\xff{\u011cu\xf2\u007f,D\x90` \x01a\x02\x86V[\x80Q`\x00\x90\x81\x90\x81[\x81\x81\x10\x15a\x05\x83W\x84\x81\x81Q\x81\x10a\x05VWa\x05Va\b'V[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16a\x05tW`\x04\x83\x01\x92Pa\x05{V[`\x10\x83\x01\x92P[`\x01\x01a\x05\xd5\u059f\xd0k\xafC\x1b{\x93\xb2a\x04\x16\xe9r\xfe\x17\xb1\xfe\x1d\xe2\xac@\ndsolcC\x00\b\n\x003\xd7\u0580\x94@u\xa6\xbc\xadl<[\x94\x1c$\x82\xfd\xa7\x16\xa5f\b\x10k\xf9\x05,\x94S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\xb9\x04\xfb`\x80`@R4\x80\x15a\x00\x10W`\x00\x80\xfd[P`\x046\x10a\x00WW`\x005`\xe0\x1c\x80cqP\x18\xa6\x14a\x00\\W\x80cyXm\xd7\x14a\x00fW\x80c\x8d\xa5\xcb[\x14a\x00yW\x80c\xef\u01c4\x01\x14a\x00\xa9W\x80c\xf2\xfd\xe3\x8b\x14a\x00\xe5W[`\x00\x80\xfd[a\x00da\x00\xf8V[\x00[a\x00da\x00t6`\x04a\x03VV[a\x017V[`\x00Ta\x00\x8c\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x00\xd5a\x00\xb76`\x04a\x04-V[`\x01`\x01`\xa0\x1b\x03\x16`\x00\x90\x81R`\x01` R`@\x90 T`\xff\x16\x90V[`@Q\x90\x15\x15\x81R` \x01a\x00\xa0V[a\x00da\x00\xf36`\x04a\x04-V[a\x028V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x01+W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\"\x90a\x04OV[`@Q\x80\x91\x03\x90\xfd[a\x015`\x00a\x02\xc4V[V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x01aW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\"\x90a\x04OV[`\x00[\x82Q\x81\x10\x15a\x023W\x81`\x01`\x00\x85\x84\x81Q\x81\x10a\x01\x84Wa\x01\x84a\x04\x86V[` \x02` \x01\x01Q`\x01`\x01`\xa0\x1b\x03\x16`\x01`\x01`\xa0\x1b\x03\x16\x81R` \x01\x90\x81R` \x01`\x00 `\x00a\x01\x00\n\x81T\x81`\xff\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x82\x81\x81Q\x81\x10a\x01\xd5Wa\x01\xd5a\x04\x86V[` \x02` \x01\x01Q`\x01`\x01`\xa0\x1b\x03\x16\u007f\x8d\xaa\xf0`\xc30l8\xe0h\xa7\\\x05K\xf9n\u0345\xa3\xdb\x12Rq,M\x93c'D\xc4.\r\x83`@Qa\x02\x19\x91\x15\x15\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xa2\x80a\x02+\x81a\x04\x9cV[\x91PPa\x01dV[PPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02bW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\"\x90a\x04OV[`\x01`\x01`\xa0\x1b\x03\x81\x16a\x02\xb8W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\u007fnew owner is the zero address\x00\x00\x00`D\x82\x01R`d\x01a\x01\"V[a\x02\xc1\x81a\x02\xc4V[PV[`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\u007f\x8b\xe0\a\x9cS\x16Y\x14\x13D\xcd\x1f\u0424\xf2\x84\x19I\u007f\x97\"\xa3\u06af\xe3\xb4\x18okdW\xe0\x91\x90\xa3PPV[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[\x805`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x03AW`\x00\x80\xfd[\x91\x90PV[\x805\x80\x15\x15\x81\x14a\x03AW`\x00\x80\xfd[`\x00\x80`@\x83\x85\x03\x12\x15a\x03iW`\x00\x80\xfd[\x825g\xff\xff\xff\xff\xff\xff\xff\xff\x80\x82\x11\x15a\x03\x81W`\x00\x80\xfd[\x81\x85\x01\x91P\x85`\x1f\x83\x01\x12a\x03\x95W`\x00\x80\xfd[\x815` \x82\x82\x11\x15a\x03\xa9Wa\x03\xa9a\x03\x14V[\x81`\x05\x1b`@Q`\x1f\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15a\x03\xceWa\x03\xcea\x03\x14V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x89\x84\x11\x15a\x03\xecW`\x00\x80\xfd[\x94\x82\x01\x94[\x83\x86\x10\x15a\x04\x11Wa\x04\x02\x86a\x03*V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93a\x03\xf1V[\x96Pa\x04 \x90P\x87\x82\x01a\x03FV[\x94PPPPP\x92P\x92\x90PV[`\x00` \x82\x84\x03\x12\x15a\x04?W`\x00\x80\xfd[a\x04H\x82a\x03*V[\x93\x92PPPV[` \x80\x82R`\x17\x90\x82\x01R\u007fcaller is not the owner\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V[cNH{q`\xe0\x1b`\x00R`2`\x04R`$`\x00\xfd[`\x00`\x00\x19\x82\x14\x15a\x04\xbeWcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[P`\x01\x01\x90V\xfe\xa2dipfsX\"\x12 \xad\x8bk\xb8L<\xa7\x1a\x1a\x1dHC:\xf1\xb6d\x91@\x90\xd9\x14:nK\xed\xbag\xf0\x83\xde4\xbddsolcC\x00\b\n\x003\xd7\u0580\x94@u\xa6\xbc\xadl<[\x94\x1c$\x82\xfd\xa7\x16\xa5f\b\x10k\xf9\a7\x94S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x80\xb9\a\x1d`\x80`@R`\x046\x10a\x00\xa0W`\x005`\xe0\x1c\x80c1<\xe5g\x11a\x00dW\x80c1<\xe5g\x14a\x01lW\x80cp\xa0\x821\x14a\x01\x98W\x80c\x95\u061bA\x14a\x01\xc5W\x80c\xa9\x05\x9c\xbb\x14a\x01\xdaW\x80c\xd0\xe3\r\xb0\x14a\x01\xfaW\x80c\xddb\xed>\x14a\x02\x02W`\x00\x80\xfd[\x80c\x06\xfd\xde\x03\x14a\x00\xb4W\x80c\t^\xa7\xb3\x14a\x00\xdfW\x80c\x18\x16\r\xdd\x14a\x01\x0fW\x80c#\xb8r\xdd\x14a\x01,W\x80c.\x1a}M\x14a\x01LW`\x00\x80\xfd[6a\x00\xafWa\x00\xada\x02:V[\x00[`\x00\x80\xfd[4\x80\x15a\x00\xc0W`\x00\x80\xfd[Pa\x00\xc9a\x02\x88V[`@Qa\x00\u0591\x90a\x05nV[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x00\xebW`\x00\x80\xfd[Pa\x00\xffa\x00\xfa6`\x04a\x05\xdfV[a\x03\x16V[`@Q\x90\x15\x15\x81R` \x01a\x00\xd6V[4\x80\x15a\x01\x1bW`\x00\x80\xfd[PG[`@Q\x90\x81R` \x01a\x00\xd6V[4\x80\x15a\x018W`\x00\x80\xfd[Pa\x00\xffa\x01G6`\x04a\x06\tV[a\x03\x82V[4\x80\x15a\x01XW`\x00\x80\xfd[Pa\x00\xada\x01g6`\x04a\x06EV[a\x04\xb9V[4\x80\x15a\x01xW`\x00\x80\xfd[P`\x02Ta\x01\x86\x90`\xff\x16\x81V[`@Q`\xff\x90\x91\x16\x81R` \x01a\x00\xd6V[4\x80\x15a\x01\xa4W`\x00\x80\xfd[Pa\x01\x1ea\x01\xb36`\x04a\x06^V[`\x03` R`\x00\x90\x81R`@\x90 T\x81V[4\x80\x15a\x01\xd1W`\x00\x80\xfd[Pa\x00\xc9a\x05MV[4\x80\x15a\x01\xe6W`\x00\x80\xfd[Pa\x00\xffa\x01\xf56`\x04a\x05\xdfV[a\x05ZV[a\x00\xada\x02:V[4\x80\x15a\x02\x0eW`\x00\x80\xfd[Pa\x01\x1ea\x02\x1d6`\x04a\x06yV[`\x04` \x90\x81R`\x00\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[3`\x00\x81\x81R`\x03` \x90\x81R`@\x91\x82\x90 \x80T4\x90\x81\x01\x90\x91U\x91Q\x91\x82R\u007f\xe1\xff\xfc\u0112=\x04\xb5Y\xf4\u049a\x8b\xfcl\xda\x04\xeb[\r=`\x00\xfd[P`@Q\x81\x81R3\x90\u007f\u007f\xcfS,\x15\xf0\xa6\xdb\v\xd6\xd0\xe08\xbe\xa7\x1d0\xd8\b\xc7\u064c\xb3\xbfrh\xa9[\xf5\b\x1be\x90` \x01`@Q\x80\x91\x03\x90\xa2PV[`\x01\x80Ta\x02\x95\x90a\x06\xacV[`\x00a\x05g3\x84\x84a\x03\x82V[\x93\x92PPPV[`\x00` \x80\x83R\x83Q\x80\x82\x85\x01R`\x00[\x81\x81\x10\x15a\x05\x9bW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x05\u007fV[\x81\x81\x11\x15a\x05\xadW`\x00`@\x83\x87\x01\x01R[P`\x1f\x01`\x1f\x19\x16\x92\x90\x92\x01`@\x01\x93\x92PPPV[\x805`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x05\xdaW`\x00\x80\xfd[\x91\x90PV[`\x00\x80`@\x83\x85\x03\x12\x15a\x05\xf2W`\x00\x80\xfd[a\x05\xfb\x83a\x05\xc3V[\x94` \x93\x90\x93\x015\x93PPPV[`\x00\x80`\x00``\x84\x86\x03\x12\x15a\x06\x1eW`\x00\x80\xfd[a\x06'\x84a\x05\xc3V[\x92Pa\x065` \x85\x01a\x05\xc3V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\x00` \x82\x84\x03\x12\x15a\x06WW`\x00\x80\xfd[P5\x91\x90PV[`\x00` \x82\x84\x03\x12\x15a\x06pW`\x00\x80\xfd[a\x05g\x82a\x05\xc3V[`\x00\x80`@\x83\x85\x03\x12\x15a\x06\x8cW`\x00\x80\xfd[a\x06\x95\x83a\x05\xc3V[\x91Pa\x06\xa3` \x84\x01a\x05\xc3V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x06\xc0W`\u007f\x82\x16\x91P[` \x82\x10\x81\x14\x15a\x06\xe1WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[P\x91\x90PV\xfe\xa2dipfsX\"\x12 d\x90\xc73\xb5\xd6\x06\xf6\t\xa2;\xba\xe9\x13\x96+z\xf5h\xf6\x15Q\xfa\x1dV\x91\u074d\x9f\x10\x00\xb0dsolcC\x00\b\n\x003\xc0\xf9\x06\u07d4S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x80\xb9\x06t`\x80`@R`\x046\x10a\x00\xa0W`\x005`\xe0\x1c\x80c\x84A\x1de\x11a\x00dW\x80c\x84A\x1de\x14a\x01YW\x80c\x8d\xa5\xcb[\x14a\x01oW\x80c\x9ez\xdcy\x14a\x01\x8fW\x80c\xf2\xfd\xe3\x8b\x14a\x01\xafW\x80c\xfe\xecul\x14a\x01\xcfW\x80c\xffO5F\x14a\x01\xefW`\x00\x80\xfd[\x80c<\xb7G\xbf\x14a\x00\xacW\x80c<\xcf\xd6\v\x14a\x00\xe9W\x80cE~\x1aI\x14a\x01\x00W\x80cf\xd0\x03\xac\x14a\x01$W\x80cqP\x18\xa6\x14a\x01DW`\x00\x80\xfd[6a\x00\xa7W\x00[`\x00\x80\xfd[4\x80\x15a\x00\xb8W`\x00\x80\xfd[P`\x02Ta\x00\u0310`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x00\xf5W`\x00\x80\xfd[Pa\x00\xfea\x02\x0fV[\x00[4\x80\x15a\x01\fW`\x00\x80\xfd[Pa\x01\x16`\x01T\x81V[`@Q\x90\x81R` \x01a\x00\xe0V[4\x80\x15a\x010W`\x00\x80\xfd[P`\x03Ta\x00\u0310`\x01`\x01`\xa0\x1b\x03\x16\x81V[4\x80\x15a\x01PW`\x00\x80\xfd[Pa\x00\xfea\x03qV[4\x80\x15a\x01eW`\x00\x80\xfd[Pa\x01\x16`\x04T\x81V[4\x80\x15a\x01{W`\x00\x80\xfd[P`\x00Ta\x00\u0310`\x01`\x01`\xa0\x1b\x03\x16\x81V[4\x80\x15a\x01\x9bW`\x00\x80\xfd[Pa\x00\xfea\x01\xaa6`\x04a\x05JV[a\x03\xa7V[4\x80\x15a\x01\xbbW`\x00\x80\xfd[Pa\x00\xfea\x01\xca6`\x04a\x05JV[a\x03\xf3V[4\x80\x15a\x01\xdbW`\x00\x80\xfd[Pa\x00\xfea\x01\xea6`\x04a\x05JV[a\x04\u007fV[4\x80\x15a\x01\xfbW`\x00\x80\xfd[Pa\x00\xfea\x02\n6`\x04a\x05zV[a\x04\xcbV[`\x01TG\x90\x81\x10\x15a\x02\xa1W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`J`$\x82\x01R\u007fFeeVault: withdrawal amount must`D\x82\x01R\u007f be greater than minimum withdra`d\x82\x01Ri\x1d\xd8[\b\x18[[\xdd[\x9d`\xb2\x1b`\x84\x82\x01R`\xa4\x01[`@Q\x80\x91\x03\x90\xfd[`\x04\x80T\x82\x01\x90U`\x03T`@\x80Q\x83\x81R`\x01`\x01`\xa0\x1b\x03\x90\x92\x16` \x83\x01R3\x82\x82\x01RQ\u007f\u0222\x11\xccd\xb6\xed\x1bPYZ\x9f\xcb\x192\xb6\xd1\xe5\xa6\xe8\xef\x15\xb6\x0e[\x1f\x98\x8e\xa9\bk\xba\x91\x81\x90\x03``\x01\x90\xa1`\x02T`\x03T`@\x80Q` \x81\x01\x82R`\x00\x80\x82R\x91Qc\xb2&z{`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x94\x85\x16\x94c\xb2&z{\x94\x87\x94a\x03<\x94\x91\x90\x92\x16\x92\x85\x92\x90`\x04\x01a\x05\x93V[`\x00`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x03UW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03iW=`\x00\x80>=`\x00\xfd[PPPPPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\x9bW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\aV[a\x03\xa5`\x00a\x04\xfaV[V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\xd1W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\aV[`\x02\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04\x1dW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\aV[`\x01`\x01`\xa0\x1b\x03\x81\x16a\x04sW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\u007fnew owner is the zero address\x00\x00\x00`D\x82\x01R`d\x01a\x02\x98V[a\x04|\x81a\x04\xfaV[PV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04\xa9W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\aV[`\x03\x80T`\x01`\x01`\xa0\x1b\x03\x19\x16`\x01`\x01`\xa0\x1b\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04\xf5W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\aV[`\x01UV[`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\u007f\x8b\xe0\a\x9cS\x16Y\x14\x13D\xcd\x1f\u0424\xf2\x84\x19I\u007f\x97\"\xa3\u06af\xe3\xb4\x18okdW\xe0\x91\x90\xa3PPV[`\x00` \x82\x84\x03\x12\x15a\x05\\W`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x05sW`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x82\x84\x03\x12\x15a\x05\x8cW`\x00\x80\xfd[P5\x91\x90PV[`\x01\x80`\xa0\x1b\x03\x85\x16\x81R`\x00` \x85\x81\x84\x01R`\x80`@\x84\x01R\x84Q\x80`\x80\x85\x01R`\x00[\x81\x81\x10\x15a\x05\xd5W\x86\x81\x01\x83\x01Q\x85\x82\x01`\xa0\x01R\x82\x01a\x05\xb9V[\x81\x81\x11\x15a\x05\xe7W`\x00`\xa0\x83\x87\x01\x01R[P``\x84\x01\x94\x90\x94RPP`\x1f\x91\x90\x91\x01`\x1f\x19\x16\x01`\xa0\x01\x93\x92PPPV[` \x80\x82R`\x17\x90\x82\x01R\u007fcaller is not the owner\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V\xfe\xa2dipfsX\"\x12 \xe5Y`\x9d\x00-\xe8\xdfMud\xcbD\x17P\xad\u00c8\xec\xf2\xcc\a\u0643\xed\x8cL\x97\x11\xb4\xeeBdsolcC\x00\b\n\x003\xf8P\xd6\x02\x94\xb7]~\x84Q~\x15\x04\xc1Q\xb2p%[\b\u007f\xd7F\xd3L\xd6\x03\x94\x13p\xf9\\H\x85\x8dN\x1b\x13y!cH\x16;\xf3V\xfe\x11\u0580\x94@u\xa6\xbc\xadl<[\x94\x1c$\x82\xfd\xa7\x16\xa5f\b\x10k\xca\x01\x88\x01cEx]\x8a\x00\x00\xf88\x94\xb7]~\x84Q~\x15\x04\xc1Q\xb2p%[\b\u007f\xd7F\xd3L\xa00dNr\xe11\xa0)\xb8PE\xb6\x81\x81X](3\xe8Hy\xb9p\x90\xb9\x1a\u048ff\x18\x00\x00\x80\xc0" +const scrollSepoliaAllocData = "\xf93\x85\xe0\x94\x18\x96\x0e\xec!\xb1\x87\x8cX\x197\xa1L\\W`\x00\x80\xfd[\x80c&\xaa\u05f7\x14a\x00\x98W\x80c<\xb7G\xbf\x14a\x00\xb4W\x80c`\n.w\x14a\x00\xdfW\x80cqP\x18\xa6\x14a\x00\xf2W[`\x00\x80\xfd[a\x00\xa1`\x01T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[`STa\x00\u01d0`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xabV[a\x00\xa1a\x00\xed6`\x04a\x05JV[a\x01QV[a\x00\xfaa\x01\xf6V[\x00[a\x00\xa1a\x01\n6`\x04a\x05JV[a\x02,V[`RTa\x00\u01d0`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x00\xfaa\x0106`\x04a\x05cV[a\x02CV[a\x00\xa1`\x00T\x81V[a\x00\xfaa\x01L6`\x04a\x05cV[a\x02\xdbV[`ST`\x00\x90`\x01`\x01`\xa0\x1b\x03\x163\x14a\x01\xa4W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x0e`$\x82\x01Rm7\xb76<\x906\xb2\xb9\xb9\xb2\xb73\xb2\xb9`\x91\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`\x00\x80a\x01\xb0\x84a\x03gV[`@\x80Q\x83\x81R` \x81\x01\x88\x90R\x92\x94P\x90\x92P\x7f\xfa\xa6\x17\xc2\xd8\xce\x12\xc6&7\xdb\xcev\xef\xcc\x18\xda\xe6\x05t\xaa\x95p\x9b\xdc\xed\xce~v\a\x16\x93\x91\x01`@Q\x80\x91\x03\x90\xa1\x93\x92PPPV[`RT`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02 W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\x9b\x90a\x05\x93V[a\x02*`\x00a\x04\x86V[V[`*\x81`(\x81\x10a\x02\x14a\x01\x05W\x80cI\x94\x8e\x0e\x14a\x01\x18W\x80cQ\x9bK\xd3\x14a\x01+W\x80cpFU\x97\x14a\x014W[`\x00\x80\xfd[a\x00\xdd`\x02T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x01\x03a\x00\xfe6`\x04a\x06qV[a\x01\xcfV[\x00[a\x01\x03a\x01\x136`\x04a\x06\x8aV[a\x02\x91V[a\x00\xdda\x01&6`\x04a\x06\xd0V[a\x03\x1cV[a\x00\xdd`\x01T\x81V[a\x01\x03a\x01B6`\x04a\x06qV[a\x03aV[a\x01\x03a\x04\x16V[`\x00Ta\x01b\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe7V[`\x04Ta\x01b\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x01\x03a\x01\x9b6`\x04a\x06qV[a\x04LV[a\x00\xdda\x01\xae6`\x04a\x06\xd0V[a\x053V[a\x01\x03a\x01\xc16`\x04a\x06\x8aV[a\x05\x95V[a\x00\xdd`\x03T\x81V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\x02W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[`@Q\x80\x91\x03\x90\xfd[b\x1c\x9c8\x81\x11\x15a\x02UW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7fexceed maximum overhead\x00\x00\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01a\x01\xf9V[`\x02\x81\x90U`@Q\x81\x81R\x7f2t\v5\xc0\xea!6P\xf6\rD6kO\xb2\x11\xc9\x03;PqNJ\x1d4\xe6][\ub6f4\x90` \x01[`@Q\x80\x91\x03\x90\xa1PV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\xbbW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[`\x04\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7f\"\xd1\xc3_\xe0r\xd2\xe4,<\x8f\x9b\u0520\xd3J\xa8J\x01\x01\xd0 \xa6%\x17\xb3?\xdb1t\xe5\xf7\x91\x01`@Q\x80\x91\x03\x90\xa1PPV[`\x00\x80a\x03(\x83a\x053V[\x90P`\x00`\x01T\x82a\x03:\x91\x90a\a\xb8V[\x90Pc;\x9a\xca\x00`\x03T\x82a\x03O\x91\x90a\a\xb8V[a\x03Y\x91\x90a\a\xe5V[\x94\x93PPPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\x8bW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[a\x03\x9bc;\x9a\xca\x00a\x03\xe8a\a\xb8V[\x81\x11\x15a\x03\xe1W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rsexceed maximum scale``\x1b`D\x82\x01R`d\x01a\x01\xf9V[`\x03\x81\x90U`@Q\x81\x81R\x7f36\u0357\b\xea\xf2v\x9a\x0f\r\xc0g\x9f0\xe8\x0f\x15\xdc\u060d\x19!\xb5\xa1hX\xe8\xb8\\Y\x1a\x90` \x01a\x02\x86V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04@W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[a\x04J`\x00a\x06!V[V[`\x04\x80T`@Qc\xef\u01c4\x01`\xe0\x1b\x81R3\x92\x81\x01\x92\x90\x92R`\x01`\x01`\xa0\x1b\x03\x16\x90c\xef\u01c4\x01\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xb9\x91\x90a\b\aV[a\x04\xfeW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ru'7\xba\x10;\xb44\xba2\xb64\xb9\xba2\xb2\x109\xb2\xb722\xb9`Q\x1b`D\x82\x01R`d\x01a\x01\xf9V[`\x01\x81\x90U`@Q\x81\x81R\x7f5\x1f\xb27W\xbb^\xa0Tl\x85\xb7\x99m\xddqU\xf9k\x93\x9e\xba\xa5\xff{\u011cu\xf2\x7f,D\x90` \x01a\x02\x86V[\x80Q`\x00\x90\x81\x90\x81[\x81\x81\x10\x15a\x05\x86W\x84\x81\x81Q\x81\x10a\x05VWa\x05Va\b)V[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16`\x00\x03a\x05wW`\x04\x83\x01\x92Pa\x05~V[`\x10\x83\x01\x92P[`\x01\x01a\x05\x14a\x03\x1cW`\x00\x80\xfd[\x80cp\xa0\x821\x14a\x02!W\x80c~\u03be\x00\x14a\x02WW\x80c\x84\xb0\x19n\x14a\x02wW\x80c\x95\u061bA\x14a\x02\x9fW`\x00\x80\xfd[\x80c.\x1a}M\x11a\x00\xd1W\x80c.\x1a}M\x14a\x01\xb0W\x80c1<\xe5g\x14a\x01\xd0W\x80c6D\xe5\x15\x14a\x01\xecW\x80c9P\x93Q\x14a\x02\x01W`\x00\x80\xfd[\x80c\x06\xfd\xde\x03\x14a\x01\x16W\x80c\t^\xa7\xb3\x14a\x01AW\x80c\x18\x16\r\xdd\x14a\x01qW\x80c#\xb8r\xdd\x14a\x01\x90W`\x00\x80\xfd[6a\x01\x11Wa\x01\x0fa\x03a\x04\x9eV[``\x91P[PP\x90P\x80a\x04\xeaW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x1d\xda]\x1a\x19\x1c\x98]\xc8\x11U\x12\b\x19\x98Z[\x19Y`j\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`@Q\x82\x81R3\x90\x7f\x7f\xcfS,\x15\xf0\xa6\xdb\v\xd6\xd0\xe08\xbe\xa7\x1d0\xd8\b\xc7\u064c\xb3\xbfrh\xa9[\xf5\b\x1be\x90` \x01`@Q\x80\x91\x03\x90\xa2PPV[`\x00a\x05-a\r\x87V[\x90P\x90V[`\x003a\x04\x1d\x81\x85\x85a\x05E\x83\x83a\a\xf7V[a\x05O\x91\x90a\x15\x0fV[a\t\x15V[`\x01`\x01`\xa0\x1b\x03\x81\x16`\x00\x90\x81R`\a` R`@\x81 Ta\x04#V[`\x00``\x80\x82\x80\x80\x83a\x05\xa6\x7fWrapped Ether\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r`\x05a\x0e\xb2V[a\x05\xd1\x7f1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01`\x06a\x0e\xb2V[`@\x80Q`\x00\x80\x82R` \x82\x01\x90\x92R`\x0f`\xf8\x1b\x9b\x93\x9aP\x91\x98PF\x97P0\x96P\x94P\x92P\x90PV[```\x04\x80Ta\x03\x8c\x90a\x14\xdbV[`\x003\x81a\x06\x18\x82\x86a\a\xf7V[\x90P\x83\x81\x10\x15a\x06xW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7fERC20: decreased allowance below`D\x82\x01Rd zero`\xd8\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[a\x04B\x82\x86\x86\x84\x03a\t\x15V[`\x003a\x04\x1d\x81\x85\x85a\n\xb4V[\x83B\x11\x15a\x06\xe3W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fERC20Permit: expired deadline\x00\x00\x00`D\x82\x01R`d\x01a\x04\xe1V[`\x00\x7fnq\xed\xae\x12\xb1\xb9\x7fM\x1f`7\x0f\xef\x10\x10_\xa2\xfa\xae\x01&\x11J\x16\x9cd\x84]a&\u0248\x88\x88a\a\x12\x8ca\x0fVV[`@\x80Q` \x81\x01\x96\x90\x96R`\x01`\x01`\xa0\x1b\x03\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xa0\x82\x01R`\xc0\x81\x01\x86\x90R`\xe0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P`\x00a\am\x82a\x0f~V[\x90P`\x00a\a}\x82\x87\x87\x87a\x0f\xabV[\x90P\x89`\x01`\x01`\xa0\x1b\x03\x16\x81`\x01`\x01`\xa0\x1b\x03\x16\x14a\a\xe0W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1e`$\x82\x01R\x7fERC20Permit: invalid signature\x00\x00`D\x82\x01R`d\x01a\x04\xe1V[a\a\ub28a\x8aa\t\x15V[PPPPPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x82\x16`\x00\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x00` \x83Q\x10\x15a\b>Wa\b7\x83a\x0f\xd3V[\x90Pa\x04#V[\x81a\bI\x84\x82a\x15\x94V[P`\xff\x90Pa\x04#V[\x90V[`\x01`\x01`\xa0\x1b\x03\x82\x16a\b\xacW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1f`$\x82\x01R\x7fERC20: mint to the zero address\x00`D\x82\x01R`d\x01a\x04\xe1V[\x80`\x02`\x00\x82\x82Ta\b\xbe\x91\x90a\x15\x0fV[\x90\x91UPP`\x01`\x01`\xa0\x1b\x03\x82\x16`\x00\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7f\xdd\xf2R\xad\x1b\xe2\u021bi\u00b0h\xfc7\x8d\xaa\x95+\xa7\xf1c\u0121\x16(\xf5ZM\xf5#\xb3\xef\x91\x01`@Q\x80\x91\x03\x90\xa3PPV[`\x01`\x01`\xa0\x1b\x03\x83\x16a\twW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7fERC20: approve from the zero add`D\x82\x01Rcress`\xe0\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x82\x16a\t\xd8W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7fERC20: approve to the zero addre`D\x82\x01Rass`\xf0\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x00\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7f\x8c[\xe1\xe5\xeb\xec}[\xd1OqB}\x1e\x84\xf3\xdd\x03\x14\xc0\xf7\xb2)\x1e[ \n\xc8\xc7\u00f9%\x91\x01[`@Q\x80\x91\x03\x90\xa3PPPV[`\x00a\nF\x84\x84a\a\xf7V[\x90P`\x00\x19\x81\x14a\n\xaeW\x81\x81\x10\x15a\n\xa1W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fERC20: insufficient allowance\x00\x00\x00`D\x82\x01R`d\x01a\x04\xe1V[a\n\xae\x84\x84\x84\x84\x03a\t\x15V[PPPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16a\v\x18W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7fERC20: transfer from the zero ad`D\x82\x01Rddress`\xd8\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x82\x16a\vzW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7fERC20: transfer to the zero addr`D\x82\x01Rbess`\xe8\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x83\x16`\x00\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\v\xf2W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7fERC20: transfer amount exceeds b`D\x82\x01Realance`\xd0\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x84\x81\x16`\x00\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7f\xdd\xf2R\xad\x1b\xe2\u021bi\u00b0h\xfc7\x8d\xaa\x95+\xa7\xf1c\u0121\x16(\xf5ZM\xf5#\xb3\xef\x91\x01`@Q\x80\x91\x03\x90\xa3a\n\xaeV[`\x01`\x01`\xa0\x1b\x03\x82\x16a\f\xb8W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7fERC20: burn from the zero addres`D\x82\x01R`s`\xf8\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x82\x16`\x00\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\r,W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7fERC20: burn amount exceeds balan`D\x82\x01Race`\xf0\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[`\x01`\x01`\xa0\x1b\x03\x83\x16`\x00\x81\x81R` \x81\x81R`@\x80\x83 \x86\x86\x03\x90U`\x02\x80T\x87\x90\x03\x90UQ\x85\x81R\x91\x92\x91\x7f\xdd\xf2R\xad\x1b\xe2\u021bi\u00b0h\xfc7\x8d\xaa\x95+\xa7\xf1c\u0121\x16(\xf5ZM\xf5#\xb3\xef\x91\x01a\n-V[PPPV[`\x000`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00_\xbd\xb21Vx\xaf\xec\xb3g\xf02\xd9?d/d\x18\n\xa3\x16\x14\x80\x15a\r\xe0WP\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b'OF\x14[\x15a\x0e\nWP\x7fbDS\xde\xcbNx\u0299\xc7c\x0f\xf9\xf5\"\"\xeaoU\x9f\nl\x1b\xb6\v\x93^\xf0\x06\xfa\x15\x9e\x90V[a\x05-`@\x80Q\x7f\x8bs\xc3\u019b\xb8\xfe=Q.\xccL\xf7Y\xccy#\x9f{\x17\x9b\x0f\xfa\u02a9\xa7]R+9@\x0f` \x82\x01R\x7f\x00\xcd=F\xdfD\xf2\u02f9P\u03c4\xeb.\x92\xaa-\xdd#\x19[\x1a\x00\x91s\xeaY\xa0c5~\u04d1\x81\x01\x91\x90\x91R\x7f\u021e\xfd\xaaT\xc0\xf2\fz\xdfa(\x82\xdf\tP\xf5\xa9Qc~\x03\a\xcd\xcbLg/)\x8b\x8b\xc6``\x82\x01RF`\x80\x82\x01R0`\xa0\x82\x01R`\x00\x90`\xc0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[```\xff\x83\x14a\x0e\xc5Wa\b7\x83a\x10\x11V[\x81\x80Ta\x0e\u0450a\x14\xdbV[\x80`\x1f\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0e\xfd\x90a\x14\xdbV[\x80\x15a\x0fJW\x80`\x1f\x10a\x0f\x1fWa\x01\x00\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0fJV[\x82\x01\x91\x90`\x00R` `\x00 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0f-W\x82\x90\x03`\x1f\x16\x82\x01\x91[PPPPP\x90Pa\x04#V[`\x01`\x01`\xa0\x1b\x03\x81\x16`\x00\x90\x81R`\a` R`@\x90 \x80T`\x01\x81\x01\x82U\x90[P\x91\x90PV[`\x00a\x04#a\x0f\x8ba\r\x87V[\x83`@Qa\x19\x01`\xf0\x1b\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x90 \x90V[`\x00\x80`\x00a\x0f\xbc\x87\x87\x87\x87a\x10PV[\x91P\x91Pa\x0f\u0241a\x11\x14V[P\x95\x94PPPPPV[`\x00\x80\x82\x90P`\x1f\x81Q\x11\x15a\x0f\xfeW\x82`@Qc0Z'\xa9`\xe0\x1b\x81R`\x04\x01a\x04\u1450a\x12\xcfV[\x80Qa\x10\t\x82a\x16TV[\x17\x93\x92PPPV[```\x00a\x10\x1e\x83a\x12aV[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P`\x00\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[`\x00\x80\x7f\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff]WnsW\xa4P\x1d\xdf\xe9/Fh\x1b \xa0\x83\x11\x15a\x10\x87WP`\x00\x90P`\x03a\x11\vV[`@\x80Q`\x00\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xff\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xa0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xfa\x15\x80\x15a\x10\xdbW=`\x00\x80>=`\x00\xfd[PP`@Q`\x1f\x19\x01Q\x91PP`\x01`\x01`\xa0\x1b\x03\x81\x16a\x11\x04W`\x00`\x01\x92P\x92PPa\x11\vV[\x91P`\x00\x90P[\x94P\x94\x92PPPV[`\x00\x81`\x04\x81\x11\x15a\x11(Wa\x11(a\x16xV[\x03a\x110WPV[`\x01\x81`\x04\x81\x11\x15a\x11DWa\x11Da\x16xV[\x03a\x11\x91W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7fECDSA: invalid signature\x00\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01a\x04\xe1V[`\x02\x81`\x04\x81\x11\x15a\x11\xa5Wa\x11\xa5a\x16xV[\x03a\x11\xf2W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1f`$\x82\x01R\x7fECDSA: invalid signature length\x00`D\x82\x01R`d\x01a\x04\xe1V[`\x03\x81`\x04\x81\x11\x15a\x12\x06Wa\x12\x06a\x16xV[\x03a\x12^W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7fECDSA: invalid signature 's' val`D\x82\x01Raue`\xf0\x1b`d\x82\x01R`\x84\x01a\x04\xe1V[PV[`\x00`\xff\x82\x16`\x1f\x81\x11\x15a\x04#W`@Qc,\xd4J\xc3`\xe2\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x81Q\x80\x84R`\x00[\x81\x81\x10\x15a\x12\xafW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x12\x93V[P`\x00` \x82\x86\x01\x01R` `\x1f\x19`\x1f\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\x00a\x12\xe2` \x83\x01\x84a\x12\x89V[\x93\x92PPPV[\x805`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x13\x00W`\x00\x80\xfd[\x91\x90PV[`\x00\x80`@\x83\x85\x03\x12\x15a\x13\x18W`\x00\x80\xfd[a\x13!\x83a\x12\xe9V[\x94` \x93\x90\x93\x015\x93PPPV[`\x00\x80`\x00``\x84\x86\x03\x12\x15a\x13DW`\x00\x80\xfd[a\x13M\x84a\x12\xe9V[\x92Pa\x13[` \x85\x01a\x12\xe9V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\x00` \x82\x84\x03\x12\x15a\x13}W`\x00\x80\xfd[P5\x91\x90PV[`\x00` \x82\x84\x03\x12\x15a\x13\x96W`\x00\x80\xfd[a\x12\xe2\x82a\x12\xe9V[`\xff`\xf8\x1b\x88\x16\x81R`\x00` `\xe0\x81\x84\x01Ra\x13\xbf`\xe0\x84\x01\x8aa\x12\x89V[\x83\x81\x03`@\x85\x01Ra\x13\u0441\x8aa\x12\x89V[``\x85\x01\x89\x90R`\x01`\x01`\xa0\x1b\x03\x88\x16`\x80\x86\x01R`\xa0\x85\x01\x87\x90R\x84\x81\x03`\xc0\x86\x01R\x85Q\x80\x82R\x83\x87\x01\x92P\x90\x83\x01\x90`\x00[\x81\x81\x10\x15a\x14#W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x14\aV[P\x90\x9c\x9bPPPPPPPPPPPPV[`\x00\x80`\x00\x80`\x00\x80`\x00`\xe0\x88\x8a\x03\x12\x15a\x14PW`\x00\x80\xfd[a\x14Y\x88a\x12\xe9V[\x96Pa\x14g` \x89\x01a\x12\xe9V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xff\x81\x16\x81\x14a\x14\x8bW`\x00\x80\xfd[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xa0\x84\x015\x94P`\xc0\x90\x93\x015\x92\x91PPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x14\xbbW`\x00\x80\xfd[a\x14\u0103a\x12\xe9V[\x91Pa\x14\xd2` \x84\x01a\x12\xe9V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x14\xefW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0fxWcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[\x80\x82\x01\x80\x82\x11\x15a\x04#WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x1f\x82\x11\x15a\r\x82W`\x00\x81\x81R` \x81 `\x1f\x85\x01`\x05\x1c\x81\x01` \x86\x10\x15a\x15mWP\x80[`\x1f\x85\x01`\x05\x1c\x82\x01\x91P[\x81\x81\x10\x15a\x15\x8cW\x82\x81U`\x01\x01a\x15yV[PPPPPPV[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x15\xaeWa\x15\xaea\x150V[a\x15\u0081a\x15\xbc\x84Ta\x14\xdbV[\x84a\x15FV[` \x80`\x1f\x83\x11`\x01\x81\x14a\x15\xf7W`\x00\x84\x15a\x15\xdfWP\x85\x83\x01Q[`\x00\x19`\x03\x86\x90\x1b\x1c\x19\x16`\x01\x85\x90\x1b\x17\x85Ua\x15\x8cV[`\x00\x85\x81R` \x81 `\x1f\x19\x86\x16\x91[\x82\x81\x10\x15a\x16&W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x16\aV[P\x85\x82\x10\x15a\x16DW\x87\x85\x01Q`\x00\x19`\x03\x88\x90\x1b`\xf8\x16\x1c\x19\x16\x81U[PPPPP`\x01\x90\x81\x1b\x01\x90UPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x0fxW`\x00\x19` \x91\x90\x91\x03`\x03\x1b\x1b\x16\x91\x90PV[cNH{q`\xe0\x1b`\x00R`!`\x04R`$`\x00\xfd\xfe\xa2dipfsX\"\x12 uE\x8b JA3\x8d\xf7\x99\xef\xfa\x8bs\xc6\xc1\xa1~a+\u00f31\x1c\f\xec\x12=`\x00\xfd[PPPPPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\x9bW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\x9fV[a\x03\xa5`\x00a\x05\x9aV[V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\xd1W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\x9fV[`\x02\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7f\x1c\x92\x8cAz\x10\xa2\x1c<\u076d\x14\x8c]\xba]q\x0eK\x14B\xd6\u0623m\xe3E\x93Z\xd8F\x12\x90`\x00\x90\xa3PPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04MW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\x9fV[`\x01`\x01`\xa0\x1b\x03\x81\x16a\x04\xa3W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fnew owner is the zero address\x00\x00\x00`D\x82\x01R`d\x01a\x02\x98V[a\x04\xac\x81a\x05\x9aV[PV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04\xd9W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\x9fV[`\x03\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7f~\x1e\x96\x96\x1a9|\x8a\xa2ab\xfe%\x9c\xc87\xaf\xc9^3\xaa\u0514]\xdca\xc1\x8d\xab\xb7\xa6\xad\x90`\x00\x90\xa3PPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x05UW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\x98\x90a\x06\x9fV[`\x01\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7f\r<\x80!\x9f\xe5w\x13\xb9\xf9\xc8=\x1eQBg\x92\xd0\xc1M\x8e3\x0ee\xb1\x02W\x18\x16\x14\te\x91\x01`@Q\x80\x91\x03\x90\xa1PPV[`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7f\x8b\xe0\a\x9cS\x16Y\x14\x13D\xcd\x1f\u0424\xf2\x84\x19I\x7f\x97\"\xa3\u06af\xe3\xb4\x18okdW\xe0\x91\x90\xa3PPV[`\x00` \x82\x84\x03\x12\x15a\x05\xfcW`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x06\x13W`\x00\x80\xfd[\x93\x92PPPV[`\x00` \x82\x84\x03\x12\x15a\x06,W`\x00\x80\xfd[P5\x91\x90PV[`\x01\x80`\xa0\x1b\x03\x85\x16\x81R`\x00` \x85\x81\x84\x01R`\x80`@\x84\x01R\x84Q\x80`\x80\x85\x01R`\x00[\x81\x81\x10\x15a\x06uW\x86\x81\x01\x83\x01Q\x85\x82\x01`\xa0\x01R\x82\x01a\x06YV[P`\x00`\xa0\x82\x86\x01\x01R`\xa0`\x1f\x19`\x1f\x83\x01\x16\x85\x01\x01\x92PPP\x82``\x83\x01R\x95\x94PPPPPV[` \x80\x82R`\x17\x90\x82\x01R\x7fcaller is not the owner\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V\xfe\xa2dipfsX\"\x12 \f[\xec\n\xf2\a\xd4\u01c4X)\xd53\x0f)Z_\x16p*\xb8\xbd\xe6p\xae\x90\xbeh\x97J\xf0\xa7dsolcC\x00\b\x10\x003\xf8P\u0580\x94\x18\x96\x0e\xec!\xb1\x87\x8cX\x197\xa1L\\W`\x00\x80\xfd[\x80c&\xaa\u05f7\x14a\x00\x98W\x80c<\xb7G\xbf\x14a\x00\xb4W\x80c`\n.w\x14a\x00\xdfW\x80cqP\x18\xa6\x14a\x00\xf2W[`\x00\x80\xfd[a\x00\xa1`\x01T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[`STa\x00\u01d0`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xabV[a\x00\xa1a\x00\xed6`\x04a\x05JV[a\x01QV[a\x00\xfaa\x01\xf6V[\x00[a\x00\xa1a\x01\n6`\x04a\x05JV[a\x02,V[`RTa\x00\u01d0`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x00\xfaa\x0106`\x04a\x05cV[a\x02CV[a\x00\xa1`\x00T\x81V[a\x00\xfaa\x01L6`\x04a\x05cV[a\x02\xdbV[`ST`\x00\x90`\x01`\x01`\xa0\x1b\x03\x163\x14a\x01\xa4W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x0e`$\x82\x01Rm7\xb76<\x906\xb2\xb9\xb9\xb2\xb73\xb2\xb9`\x91\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[`\x00\x80a\x01\xb0\x84a\x03gV[`@\x80Q\x83\x81R` \x81\x01\x88\x90R\x92\x94P\x90\x92P\x7f\xfa\xa6\x17\xc2\xd8\xce\x12\xc6&7\xdb\xcev\xef\xcc\x18\xda\xe6\x05t\xaa\x95p\x9b\xdc\xed\xce~v\a\x16\x93\x91\x01`@Q\x80\x91\x03\x90\xa1\x93\x92PPPV[`RT`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02 W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\x9b\x90a\x05\x93V[a\x02*`\x00a\x04\x86V[V[`*\x81`(\x81\x10a\x02\x14a\x01\x05W\x80cI\x94\x8e\x0e\x14a\x01\x18W\x80cQ\x9bK\xd3\x14a\x01+W\x80cpFU\x97\x14a\x014W[`\x00\x80\xfd[a\x00\xdd`\x02T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[a\x01\x03a\x00\xfe6`\x04a\x06qV[a\x01\xcfV[\x00[a\x01\x03a\x01\x136`\x04a\x06\x8aV[a\x02\x91V[a\x00\xdda\x01&6`\x04a\x06\xd0V[a\x03\x1cV[a\x00\xdd`\x01T\x81V[a\x01\x03a\x01B6`\x04a\x06qV[a\x03aV[a\x01\x03a\x04\x16V[`\x00Ta\x01b\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01a\x00\xe7V[`\x04Ta\x01b\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[a\x01\x03a\x01\x9b6`\x04a\x06qV[a\x04LV[a\x00\xdda\x01\xae6`\x04a\x06\xd0V[a\x053V[a\x01\x03a\x01\xc16`\x04a\x06\x8aV[a\x05\x95V[a\x00\xdd`\x03T\x81V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\x02W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[`@Q\x80\x91\x03\x90\xfd[b\x1c\x9c8\x81\x11\x15a\x02UW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7fexceed maximum overhead\x00\x00\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01a\x01\xf9V[`\x02\x81\x90U`@Q\x81\x81R\x7f2t\v5\xc0\xea!6P\xf6\rD6kO\xb2\x11\xc9\x03;PqNJ\x1d4\xe6][\ub6f4\x90` \x01[`@Q\x80\x91\x03\x90\xa1PV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x02\xbbW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[`\x04\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7f\"\xd1\xc3_\xe0r\xd2\xe4,<\x8f\x9b\u0520\xd3J\xa8J\x01\x01\xd0 \xa6%\x17\xb3?\xdb1t\xe5\xf7\x91\x01`@Q\x80\x91\x03\x90\xa1PPV[`\x00\x80a\x03(\x83a\x053V[\x90P`\x00`\x01T\x82a\x03:\x91\x90a\a\xb8V[\x90Pc;\x9a\xca\x00`\x03T\x82a\x03O\x91\x90a\a\xb8V[a\x03Y\x91\x90a\a\xe5V[\x94\x93PPPPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x03\x8bW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[a\x03\x9bc;\x9a\xca\x00a\x03\xe8a\a\xb8V[\x81\x11\x15a\x03\xe1W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rsexceed maximum scale``\x1b`D\x82\x01R`d\x01a\x01\xf9V[`\x03\x81\x90U`@Q\x81\x81R\x7f36\u0357\b\xea\xf2v\x9a\x0f\r\xc0g\x9f0\xe8\x0f\x15\xdc\u060d\x19!\xb5\xa1hX\xe8\xb8\\Y\x1a\x90` \x01a\x02\x86V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04@W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x01\xf9\x90a\a\x81V[a\x04J`\x00a\x06!V[V[`\x04\x80T`@Qc\xef\u01c4\x01`\xe0\x1b\x81R3\x92\x81\x01\x92\x90\x92R`\x01`\x01`\xa0\x1b\x03\x16\x90c\xef\u01c4\x01\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x04\x95W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xb9\x91\x90a\b\aV[a\x04\xfeW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x16`$\x82\x01Ru'7\xba\x10;\xb44\xba2\xb64\xb9\xba2\xb2\x109\xb2\xb722\xb9`Q\x1b`D\x82\x01R`d\x01a\x01\xf9V[`\x01\x81\x90U`@Q\x81\x81R\x7f5\x1f\xb27W\xbb^\xa0Tl\x85\xb7\x99m\xddqU\xf9k\x93\x9e\xba\xa5\xff{\u011cu\xf2\x7f,D\x90` \x01a\x02\x86V[\x80Q`\x00\x90\x81\x90\x81[\x81\x81\x10\x15a\x05\x86W\x84\x81\x81Q\x81\x10a\x05VWa\x05Va\b)V[\x01` \x01Q`\x01`\x01`\xf8\x1b\x03\x19\x16`\x00\x03a\x05wW`\x04\x83\x01\x92Pa\x05~V[`\x10\x83\x01\x92P[`\x01\x01a\x05\x14a\x03\x1cW`\x00\x80\xfd[\x80cp\xa0\x821\x14a\x02!W\x80c~\u03be\x00\x14a\x02WW\x80c\x84\xb0\x19n\x14a\x02wW\x80c\x95\u061bA\x14a\x02\x9fW`\x00\x80\xfd[\x80c.\x1a}M\x11a\x00\xd1W\x80c.\x1a}M\x14a\x01\xb0W\x80c1<\xe5g\x14a\x01\xd0W\x80c6D\xe5\x15\x14a\x01\xecW\x80c9P\x93Q\x14a\x02\x01W`\x00\x80\xfd[\x80c\x06\xfd\xde\x03\x14a\x01\x16W\x80c\t^\xa7\xb3\x14a\x01AW\x80c\x18\x16\r\xdd\x14a\x01qW\x80c#\xb8r\xdd\x14a\x01\x90W`\x00\x80\xfd[6a\x01\x11Wa\x01\x0fa\x03a\x04\xbaV[``\x91P[PP\x90P\x80a\x05\x06W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x1d\xda]\x1a\x19\x1c\x98]\xc8\x11U\x12\b\x19\x98Z[\x19Y`j\x1b`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xfd[\x81`\x01`\x01`\xa0\x1b\x03\x16\x7f\x7f\xcfS,\x15\xf0\xa6\xdb\v\xd6\xd0\xe08\xbe\xa7\x1d0\xd8\b\xc7\u064c\xb3\xbfrh\xa9[\xf5\b\x1be\x84`@Qa\x05A\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xa2PPPV[`\x00a\x05Xa\r\xb2V[\x90P\x90V[`\x003a\x04-\x81\x85\x85a\x05p\x83\x83a\b\"V[a\x05z\x91\x90a\x15:V[a\t@V[`\x01`\x01`\xa0\x1b\x03\x81\x16`\x00\x90\x81R`\a` R`@\x81 Ta\x043V[`\x00``\x80\x82\x80\x80\x83a\x05\xd1\x7fWrapped Ether\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r`\x05a\x0e\xddV[a\x05\xfc\x7f1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01`\x06a\x0e\xddV[`@\x80Q`\x00\x80\x82R` \x82\x01\x90\x92R`\x0f`\xf8\x1b\x9b\x93\x9aP\x91\x98PF\x97P0\x96P\x94P\x92P\x90PV[```\x04\x80Ta\x03\x9c\x90a\x15\x06V[`\x003\x81a\x06C\x82\x86a\b\"V[\x90P\x83\x81\x10\x15a\x06\xa3W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7fERC20: decreased allowance below`D\x82\x01Rd zero`\xd8\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[a\x04R\x82\x86\x86\x84\x03a\t@V[`\x003a\x04-\x81\x85\x85a\n\xdfV[\x83B\x11\x15a\a\x0eW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fERC20Permit: expired deadline\x00\x00\x00`D\x82\x01R`d\x01a\x04\xfdV[`\x00\x7fnq\xed\xae\x12\xb1\xb9\x7fM\x1f`7\x0f\xef\x10\x10_\xa2\xfa\xae\x01&\x11J\x16\x9cd\x84]a&\u0248\x88\x88a\a=\x8ca\x0f\x81V[`@\x80Q` \x81\x01\x96\x90\x96R`\x01`\x01`\xa0\x1b\x03\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xa0\x82\x01R`\xc0\x81\x01\x86\x90R`\xe0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P`\x00a\a\x98\x82a\x0f\xa9V[\x90P`\x00a\a\xa8\x82\x87\x87\x87a\x0f\xd6V[\x90P\x89`\x01`\x01`\xa0\x1b\x03\x16\x81`\x01`\x01`\xa0\x1b\x03\x16\x14a\b\vW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1e`$\x82\x01R\x7fERC20Permit: invalid signature\x00\x00`D\x82\x01R`d\x01a\x04\xfdV[a\b\x16\x8a\x8a\x8aa\t@V[PPPPPPPPPPV[`\x01`\x01`\xa0\x1b\x03\x91\x82\x16`\x00\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x00` \x83Q\x10\x15a\biWa\bb\x83a\x0f\xfeV[\x90Pa\x043V[\x81a\bt\x84\x82a\x15\xbfV[P`\xff\x90Pa\x043V[\x90V[`\x01`\x01`\xa0\x1b\x03\x82\x16a\b\xd7W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1f`$\x82\x01R\x7fERC20: mint to the zero address\x00`D\x82\x01R`d\x01a\x04\xfdV[\x80`\x02`\x00\x82\x82Ta\b\u9450a\x15:V[\x90\x91UPP`\x01`\x01`\xa0\x1b\x03\x82\x16`\x00\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7f\xdd\xf2R\xad\x1b\xe2\u021bi\u00b0h\xfc7\x8d\xaa\x95+\xa7\xf1c\u0121\x16(\xf5ZM\xf5#\xb3\xef\x91\x01`@Q\x80\x91\x03\x90\xa3PPV[`\x01`\x01`\xa0\x1b\x03\x83\x16a\t\xa2W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7fERC20: approve from the zero add`D\x82\x01Rcress`\xe0\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x82\x16a\n\x03W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7fERC20: approve to the zero addre`D\x82\x01Rass`\xf0\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x00\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7f\x8c[\xe1\xe5\xeb\xec}[\xd1OqB}\x1e\x84\xf3\xdd\x03\x14\xc0\xf7\xb2)\x1e[ \n\xc8\xc7\u00f9%\x91\x01[`@Q\x80\x91\x03\x90\xa3PPPV[`\x00a\nq\x84\x84a\b\"V[\x90P`\x00\x19\x81\x14a\n\xd9W\x81\x81\x10\x15a\n\xccW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fERC20: insufficient allowance\x00\x00\x00`D\x82\x01R`d\x01a\x04\xfdV[a\n\u0644\x84\x84\x84\x03a\t@V[PPPPV[`\x01`\x01`\xa0\x1b\x03\x83\x16a\vCW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7fERC20: transfer from the zero ad`D\x82\x01Rddress`\xd8\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x82\x16a\v\xa5W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7fERC20: transfer to the zero addr`D\x82\x01Rbess`\xe8\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x83\x16`\x00\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\f\x1dW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7fERC20: transfer amount exceeds b`D\x82\x01Realance`\xd0\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x84\x81\x16`\x00\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7f\xdd\xf2R\xad\x1b\xe2\u021bi\u00b0h\xfc7\x8d\xaa\x95+\xa7\xf1c\u0121\x16(\xf5ZM\xf5#\xb3\xef\x91\x01`@Q\x80\x91\x03\x90\xa3a\n\xd9V[`\x01`\x01`\xa0\x1b\x03\x82\x16a\f\xe3W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7fERC20: burn from the zero addres`D\x82\x01R`s`\xf8\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x82\x16`\x00\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\rWW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7fERC20: burn amount exceeds balan`D\x82\x01Race`\xf0\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[`\x01`\x01`\xa0\x1b\x03\x83\x16`\x00\x81\x81R` \x81\x81R`@\x80\x83 \x86\x86\x03\x90U`\x02\x80T\x87\x90\x03\x90UQ\x85\x81R\x91\x92\x91\x7f\xdd\xf2R\xad\x1b\xe2\u021bi\u00b0h\xfc7\x8d\xaa\x95+\xa7\xf1c\u0121\x16(\xf5ZM\xf5#\xb3\xef\x91\x01a\nXV[PPPV[`\x000`\x01`\x01`\xa0\x1b\x03\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x16\x14\x80\x15a\x0e\vWP\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b'PF\x14[\x15a\x0e5WP\x7f\xe5\xb1\x17\xa3\xcdz\xe7\xed5\b\xe6\xe6\u0160yE6\xb2\xa8\xde\xe1%3\xc4\xd7RN\xae\x9c\x85C\x8f\x90V[a\x05X`@\x80Q\x7f\x8bs\xc3\u019b\xb8\xfe=Q.\xccL\xf7Y\xccy#\x9f{\x17\x9b\x0f\xfa\u02a9\xa7]R+9@\x0f` \x82\x01R\x7f\x00\xcd=F\xdfD\xf2\u02f9P\u03c4\xeb.\x92\xaa-\xdd#\x19[\x1a\x00\x91s\xeaY\xa0c5~\u04d1\x81\x01\x91\x90\x91R\x7f\u021e\xfd\xaaT\xc0\xf2\fz\xdfa(\x82\xdf\tP\xf5\xa9Qc~\x03\a\xcd\xcbLg/)\x8b\x8b\xc6``\x82\x01RF`\x80\x82\x01R0`\xa0\x82\x01R`\x00\x90`\xc0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[```\xff\x83\x14a\x0e\xf0Wa\bb\x83a\x10=`\x00\xfd[PP`@Q`\x1f\x19\x01Q\x91PP`\x01`\x01`\xa0\x1b\x03\x81\x16a\x11/W`\x00`\x01\x92P\x92PPa\x116V[\x91P`\x00\x90P[\x94P\x94\x92PPPV[`\x00\x81`\x04\x81\x11\x15a\x11SWa\x11Sa\x16\xa3V[\x03a\x11[WPV[`\x01\x81`\x04\x81\x11\x15a\x11oWa\x11oa\x16\xa3V[\x03a\x11\xbcW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7fECDSA: invalid signature\x00\x00\x00\x00\x00\x00\x00\x00`D\x82\x01R`d\x01a\x04\xfdV[`\x02\x81`\x04\x81\x11\x15a\x11\xd0Wa\x11\xd0a\x16\xa3V[\x03a\x12\x1dW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1f`$\x82\x01R\x7fECDSA: invalid signature length\x00`D\x82\x01R`d\x01a\x04\xfdV[`\x03\x81`\x04\x81\x11\x15a\x121Wa\x121a\x16\xa3V[\x03a\x12\x89W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7fECDSA: invalid signature 's' val`D\x82\x01Raue`\xf0\x1b`d\x82\x01R`\x84\x01a\x04\xfdV[PV[`\x00`\xff\x82\x16`\x1f\x81\x11\x15a\x043W`@Qc,\xd4J\xc3`\xe2\x1b\x81R`\x04\x01`@Q\x80\x91\x03\x90\xfd[`\x00\x81Q\x80\x84R`\x00[\x81\x81\x10\x15a\x12\xdaW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x12\xbeV[P`\x00` \x82\x86\x01\x01R` `\x1f\x19`\x1f\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\x00a\x13\r` \x83\x01\x84a\x12\xb4V[\x93\x92PPPV[\x805`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x13+W`\x00\x80\xfd[\x91\x90PV[`\x00\x80`@\x83\x85\x03\x12\x15a\x13CW`\x00\x80\xfd[a\x13L\x83a\x13\x14V[\x94` \x93\x90\x93\x015\x93PPPV[`\x00\x80`\x00``\x84\x86\x03\x12\x15a\x13oW`\x00\x80\xfd[a\x13x\x84a\x13\x14V[\x92Pa\x13\x86` \x85\x01a\x13\x14V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\x00` \x82\x84\x03\x12\x15a\x13\xa8W`\x00\x80\xfd[P5\x91\x90PV[`\x00` \x82\x84\x03\x12\x15a\x13\xc1W`\x00\x80\xfd[a\x13\r\x82a\x13\x14V[`\xff`\xf8\x1b\x88\x16\x81R`\x00` `\xe0\x81\x84\x01Ra\x13\xea`\xe0\x84\x01\x8aa\x12\xb4V[\x83\x81\x03`@\x85\x01Ra\x13\xfc\x81\x8aa\x12\xb4V[``\x85\x01\x89\x90R`\x01`\x01`\xa0\x1b\x03\x88\x16`\x80\x86\x01R`\xa0\x85\x01\x87\x90R\x84\x81\x03`\xc0\x86\x01R\x85Q\x80\x82R\x83\x87\x01\x92P\x90\x83\x01\x90`\x00[\x81\x81\x10\x15a\x14NW\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x142V[P\x90\x9c\x9bPPPPPPPPPPPPV[`\x00\x80`\x00\x80`\x00\x80`\x00`\xe0\x88\x8a\x03\x12\x15a\x14{W`\x00\x80\xfd[a\x14\x84\x88a\x13\x14V[\x96Pa\x14\x92` \x89\x01a\x13\x14V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xff\x81\x16\x81\x14a\x14\xb6W`\x00\x80\xfd[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xa0\x84\x015\x94P`\xc0\x90\x93\x015\x92\x91PPV[`\x00\x80`@\x83\x85\x03\x12\x15a\x14\xe6W`\x00\x80\xfd[a\x14\xef\x83a\x13\x14V[\x91Pa\x14\xfd` \x84\x01a\x13\x14V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1c\x90\x82\x16\x80a\x15\x1aW`\x7f\x82\x16\x91P[` \x82\x10\x81\x03a\x0f\xa3WcNH{q`\xe0\x1b`\x00R`\"`\x04R`$`\x00\xfd[\x80\x82\x01\x80\x82\x11\x15a\x043WcNH{q`\xe0\x1b`\x00R`\x11`\x04R`$`\x00\xfd[cNH{q`\xe0\x1b`\x00R`A`\x04R`$`\x00\xfd[`\x1f\x82\x11\x15a\r\xadW`\x00\x81\x81R` \x81 `\x1f\x85\x01`\x05\x1c\x81\x01` \x86\x10\x15a\x15\x98WP\x80[`\x1f\x85\x01`\x05\x1c\x82\x01\x91P[\x81\x81\x10\x15a\x15\xb7W\x82\x81U`\x01\x01a\x15\xa4V[PPPPPPV[\x81Qg\xff\xff\xff\xff\xff\xff\xff\xff\x81\x11\x15a\x15\xd9Wa\x15\xd9a\x15[V[a\x15\xed\x81a\x15\xe7\x84Ta\x15\x06V[\x84a\x15qV[` \x80`\x1f\x83\x11`\x01\x81\x14a\x16\"W`\x00\x84\x15a\x16\nWP\x85\x83\x01Q[`\x00\x19`\x03\x86\x90\x1b\x1c\x19\x16`\x01\x85\x90\x1b\x17\x85Ua\x15\xb7V[`\x00\x85\x81R` \x81 `\x1f\x19\x86\x16\x91[\x82\x81\x10\x15a\x16QW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x162V[P\x85\x82\x10\x15a\x16oW\x87\x85\x01Q`\x00\x19`\x03\x88\x90\x1b`\xf8\x16\x1c\x19\x16\x81U[PPPPP`\x01\x90\x81\x1b\x01\x90UPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x0f\xa3W`\x00\x19` \x91\x90\x91\x03`\x03\x1b\x1b\x16\x91\x90PV[cNH{q`\xe0\x1b`\x00R`!`\x04R`$`\x00\xfd\xfe\xa2dipfsX\"\x12 \x7f9\xe3>\x12.\x8e+\x03\x81\xaaj\xbe\xa4`F\xf5k\x05\xce\xd6lUj\x06\xbb\x1b\x80\xbe\x7fU\xcfdsolcC\x00\b\x10\x003\xf8F\xe2\x03\xa0Wrapped Ether\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\xe2\x04\xa0WETH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\xf9\b\x0f\x94S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x80\xb9\a\xa4`\x80`@R`\x046\x10a\x00\xabW`\x005`\xe0\x1c\x80c\x84A\x1de\x11a\x00dW\x80c\x84A\x1de\x14a\x01\x84W\x80c\x8d\xa5\xcb[\x14a\x01\x9aW\x80c\x9ez\xdcy\x14a\x01\xbaW\x80c\xf2\xfd\xe3\x8b\x14a\x01\xdaW\x80c\xfe\xecul\x14a\x01\xfaW\x80c\xffO5F\x14a\x02\x1aW`\x00\x80\xfd[\x80c.\x1a}M\x14a\x00\xb7W\x80c<\xb7G\xbf\x14a\x00\xd9W\x80c<\xcf\xd6\v\x14a\x01\x16W\x80cE~\x1aI\x14a\x01+W\x80cf\xd0\x03\xac\x14a\x01OW\x80cqP\x18\xa6\x14a\x01oW`\x00\x80\xfd[6a\x00\xb2W\x00[`\x00\x80\xfd[4\x80\x15a\x00\xc3W`\x00\x80\xfd[Pa\x00\xd7a\x00\xd26`\x04a\x06\x82V[a\x02:V[\x00[4\x80\x15a\x00\xe5W`\x00\x80\xfd[P`\x02Ta\x00\xf9\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[`@Q`\x01`\x01`\xa0\x1b\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01\"W`\x00\x80\xfd[Pa\x00\xd7a\x03\xffV[4\x80\x15a\x017W`\x00\x80\xfd[Pa\x01A`\x01T\x81V[`@Q\x90\x81R` \x01a\x01\rV[4\x80\x15a\x01[W`\x00\x80\xfd[P`\x03Ta\x00\xf9\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[4\x80\x15a\x01{W`\x00\x80\xfd[Pa\x00\xd7a\x04\fV[4\x80\x15a\x01\x90W`\x00\x80\xfd[Pa\x01A`\x04T\x81V[4\x80\x15a\x01\xa6W`\x00\x80\xfd[P`\x00Ta\x00\xf9\x90`\x01`\x01`\xa0\x1b\x03\x16\x81V[4\x80\x15a\x01\xc6W`\x00\x80\xfd[Pa\x00\xd7a\x01\xd56`\x04a\x06\x9bV[a\x04BV[4\x80\x15a\x01\xe6W`\x00\x80\xfd[Pa\x00\xd7a\x01\xf56`\x04a\x06\x9bV[a\x04\xbeV[4\x80\x15a\x02\x06W`\x00\x80\xfd[Pa\x00\xd7a\x02\x156`\x04a\x06\x9bV[a\x05GV[4\x80\x15a\x02&W`\x00\x80\xfd[Pa\x00\xd7a\x0256`\x04a\x06\x82V[a\x05\xc3V[`\x01T\x81\x10\x15a\x02\xcaW`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`J`$\x82\x01R\x7fFeeVault: withdrawal amount must`D\x82\x01R\x7f be greater than minimum withdra`d\x82\x01Ri\x1d\xd8[\b\x18[[\xdd[\x9d`\xb2\x1b`\x84\x82\x01R`\xa4\x01[`@Q\x80\x91\x03\x90\xfd[G\x80\x82\x11\x15a\x03.W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7fFeeVault: insufficient balance t`D\x82\x01Rio withdraw`\xb0\x1b`d\x82\x01R`\x84\x01a\x02\xc1V[`\x04\x80T\x83\x01\x90U`\x03T`@\x80Q\x84\x81R`\x01`\x01`\xa0\x1b\x03\x90\x92\x16` \x83\x01R3\x82\x82\x01RQ\x7f\u0222\x11\xccd\xb6\xed\x1bPYZ\x9f\xcb\x192\xb6\xd1\xe5\xa6\xe8\xef\x15\xb6\x0e[\x1f\x98\x8e\xa9\bk\xba\x91\x81\x90\x03``\x01\x90\xa1`\x02T`\x03T`@\x80Q` \x81\x01\x82R`\x00\x80\x82R\x91Qc\xb2&z{`\xe0\x1b\x81R`\x01`\x01`\xa0\x1b\x03\x94\x85\x16\x94c\xb2&z{\x94\x88\x94a\x03\u0254\x91\x90\x92\x16\x92\x85\x92\x90`\x04\x01a\x06\xcbV[`\x00`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x03\xe2W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x03\xf6W=`\x00\x80>=`\x00\xfd[PPPPPPPV[Ga\x04\t\x81a\x02:V[PV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x046W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\xc1\x90a\a7V[a\x04@`\x00a\x062V[V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04lW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\xc1\x90a\a7V[`\x02\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7f\x1c\x92\x8cAz\x10\xa2\x1c<\u076d\x14\x8c]\xba]q\x0eK\x14B\xd6\u0623m\xe3E\x93Z\xd8F\x12\x90`\x00\x90\xa3PPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x04\xe8W`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\xc1\x90a\a7V[`\x01`\x01`\xa0\x1b\x03\x81\x16a\x05>W`@QbF\x1b\xcd`\xe5\x1b\x81R` `\x04\x82\x01R`\x1d`$\x82\x01R\x7fnew owner is the zero address\x00\x00\x00`D\x82\x01R`d\x01a\x02\xc1V[a\x04\t\x81a\x062V[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x05qW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\xc1\x90a\a7V[`\x03\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7f~\x1e\x96\x96\x1a9|\x8a\xa2ab\xfe%\x9c\xc87\xaf\xc9^3\xaa\u0514]\xdca\xc1\x8d\xab\xb7\xa6\xad\x90`\x00\x90\xa3PPV[`\x00T`\x01`\x01`\xa0\x1b\x03\x163\x14a\x05\xedW`@QbF\x1b\xcd`\xe5\x1b\x81R`\x04\x01a\x02\xc1\x90a\a7V[`\x01\x80T\x90\x82\x90U`@\x80Q\x82\x81R` \x81\x01\x84\x90R\x7f\r<\x80!\x9f\xe5w\x13\xb9\xf9\xc8=\x1eQBg\x92\xd0\xc1M\x8e3\x0ee\xb1\x02W\x18\x16\x14\te\x91\x01`@Q\x80\x91\x03\x90\xa1PPV[`\x00\x80T`\x01`\x01`\xa0\x1b\x03\x83\x81\x16`\x01`\x01`\xa0\x1b\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7f\x8b\xe0\a\x9cS\x16Y\x14\x13D\xcd\x1f\u0424\xf2\x84\x19I\x7f\x97\"\xa3\u06af\xe3\xb4\x18okdW\xe0\x91\x90\xa3PPV[`\x00` \x82\x84\x03\x12\x15a\x06\x94W`\x00\x80\xfd[P5\x91\x90PV[`\x00` \x82\x84\x03\x12\x15a\x06\xadW`\x00\x80\xfd[\x815`\x01`\x01`\xa0\x1b\x03\x81\x16\x81\x14a\x06\xc4W`\x00\x80\xfd[\x93\x92PPPV[`\x01\x80`\xa0\x1b\x03\x85\x16\x81R`\x00` \x85\x81\x84\x01R`\x80`@\x84\x01R\x84Q\x80`\x80\x85\x01R`\x00[\x81\x81\x10\x15a\a\rW\x86\x81\x01\x83\x01Q\x85\x82\x01`\xa0\x01R\x82\x01a\x06\xf1V[P`\x00`\xa0\x82\x86\x01\x01R`\xa0`\x1f\x19`\x1f\x83\x01\x16\x85\x01\x01\x92PPP\x82``\x83\x01R\x95\x94PPPPPV[` \x80\x82R`\x17\x90\x82\x01R\x7fcaller is not the owner\x00\x00\x00\x00\x00\x00\x00\x00\x00`@\x82\x01R``\x01\x90V\xfe\xa2dipfsX\"\x12 \x06\x92\x98\xb18\x00\x00\x80\xc0\xe0\x94\xf9\x06+\x8a0\xe0\xd7r)`\xe3\x05\x04\x9f\xa5\v\x86\xbabS\x88\x1b\xc1mgN\xc8\x00\x00\x80\xc0" diff --git a/core/genesis_test.go b/core/genesis_test.go index c85dbaf05f..284eac3e27 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -184,10 +184,17 @@ func TestGenesisHashes(t *testing.T) { // {DefaultGenesisBlock(), params.MainnetGenesisHash}, // {DefaultGoerliGenesisBlock(), params.GoerliGenesisHash}, // {DefaultSepoliaGenesisBlock(), params.SepoliaGenesisHash}, + // {DefaultScrollAlphaGenesisBlock(), params.ScrollAlphaGenesisHash}, + {DefaultScrollSepoliaGenesisBlock(), params.ScrollSepoliaGenesisHash}, + {DefaultScrollMainnetGenesisBlock(), params.ScrollMainnetGenesisHash}, } { // Test via MustCommit db := rawdb.NewMemoryDatabase() - if have := c.genesis.MustCommit(db, trie.NewDatabase(db, trie.HashDefaults)).Hash(); have != c.want { + trieConfig := trie.HashDefaults + if c.genesis.Config.Scroll.ZktrieEnabled() { + trieConfig = trie.HashDefaultsWithZktrie + } + if have := c.genesis.MustCommit(db, trie.NewDatabase(db, trieConfig)).Hash(); have != c.want { t.Errorf("case: %d a), want: %s, got: %s", i, c.want.Hex(), have.Hex()) } // Test via ToBlock diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index cbf5f6f8cc..551c0b514a 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -58,7 +58,7 @@ var LightClientGPO = gasprice.Config{ // Defaults contains default settings for use on the Ethereum main net. var Defaults = Config{ - SyncMode: downloader.SnapSync, + SyncMode: downloader.FullSync, NetworkId: 1, TxLookupLimit: 2350000, TransactionHistory: 2350000, diff --git a/eth/gasprice/gasprice_test.go b/eth/gasprice/gasprice_test.go index 4ee5a0d1b2..5a842d26b7 100644 --- a/eth/gasprice/gasprice_test.go +++ b/eth/gasprice/gasprice_test.go @@ -133,6 +133,17 @@ func newTestBackend(t *testing.T, londonBlock *big.Int, pending bool) *testBacke config.LondonBlock = londonBlock config.ArrowGlacierBlock = londonBlock config.GrayGlacierBlock = londonBlock + + config.ArchimedesBlock = londonBlock + config.BernoulliBlock = londonBlock + config.CurieBlock = londonBlock + config.DescartesBlock = londonBlock + config.ShanghaiTime = nil + if londonBlock != nil { + shanghaiTime := londonBlock.Uint64() * 12 + config.ShanghaiTime = &shanghaiTime + } + config.TerminalTotalDifficulty = common.Big0 engine := ethash.NewFaker() diff --git a/params/bootnodes.go b/params/bootnodes.go index a843896914..b41c33d82e 100644 --- a/params/bootnodes.go +++ b/params/bootnodes.go @@ -64,6 +64,29 @@ var GoerliBootnodes = []string{ "enode://d2b720352e8216c9efc470091aa91ddafc53e222b32780f505c817ceef69e01d5b0b0797b69db254c586f493872352f5a022b4d8479a00fc92ec55f9ad46a27e@88.99.70.182:30303", } +// ScrollAlphaBootnodes are the enode URLs of the P2P bootstrap nodes running on the Scroll Alpha test network. +var ScrollAlphaBootnodes = []string{ + "enode://996a655365e731321ca35636f5a62fdf37c0b75dc56a8832c472d077da5af47effe45874196268f6083b8f65e1a9589ed25015f68f47598c7bcc93ac8ea29e8a@35.85.116.190:30303", + "enode://a4e90d8108bbcd8b13066567c786f800812a9b6b3eeb92947e64edd19ac9231bf371da1a86796af2ccd7b7e781218ebbe2d04130d63f7b3f25d6372a706fc022@44.224.134.190:30303", + "enode://cf85bfa5828239b1f6b21758579ee8aaaba2a1fb4c658d6967c5f7ed4f040d95dee5b5cef0c77d656a191f6b0875dd03f05b30a3b2b3e15bfcf18b500d8f634c@35.155.117.77:30303", +} + +// ScrollSepoliaBootnodes are the enode URLs of the P2P bootstrap nodes running on the Scroll Sepolia test network. +var ScrollSepoliaBootnodes = []string{ + "enode://ceb1636bac5cbb262e5ad5b2cd22014bdb35ffe7f58b3506970d337a63099481814a338dbcd15f2d28757151e3ecd40ba38b41350b793cd0d910ff0436654f8c@35.85.84.250:30303", + "enode://29cee709c400533ae038a875b9ca975c8abef9eade956dcf3585e940acd5c0ae916968f514bd37d1278775aad1b7db30f7032a70202a87fd7365bd8de3c9f5fc@44.242.39.33:30303", + "enode://dd1ac5433c5c2b04ca3166f4cb726f8ff6d2da83dbc16d9b68b1ea83b7079b371eb16ef41c00441b6e85e32e33087f3b7753ea9e8b1e3f26d3e4df9208625e7f@54.148.111.168:30303", +} + +// ScrollMainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the Scroll mainnet. +var ScrollMainnetBootnodes = []string{ + "enode://c6ac91f43df3d63916ac1ae411cdd5ba249d55d48a7bec7f8cd5bb351a31aba437e5a69e8a1de74d73fdfeba8af1cfe9caf9846ecd3abf60d1ffdf4925b55b23@54.186.123.248:30303", + "enode://fdcc807b5d1353f3a1e98b90208ce6ef1b7d446136e51eaa8ad657b55518a2f8b37655e42375d61622e6ea18f3faf9d070c9bbdf012cf5484bcbad33b7a15fb1@44.227.91.206:30303", + "enode://6beb5a3efbb39be73d17630b6da48e94c0ce7ec665172111463cb470197b20c12faa1fa6f835b81c28571277d1017e65c4e426cc92a46141cf69118ecf28ac03@44.237.194.52:30303", + "enode://7cf893d444eb8e129dca0f6485b3df579911606e7c728be4fa55fcc5f155a37c3ce07d217ccec5447798bde465ac2bdba2cb8763d107e9f3257e787579e9f27e@52.35.203.107:30303", + "enode://c7b2d94e95da343db6e667a01cef90376a592f2d277fbcbf6e9c9186734ed8003d01389571bd10cdbab7a6e5adfa6f0c7b55644d0db24e0b9deb4ec80f842075@54.70.236.187:30303", +} + var V5Bootnodes = []string{ // Teku team's bootnode "enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA", diff --git a/params/config.go b/params/config.go index 2e26590ca4..d631caeb30 100644 --- a/params/config.go +++ b/params/config.go @@ -21,6 +21,7 @@ import ( "math/big" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/rollup/rcfg" ) // Genesis hashes to enforce below configs on. @@ -29,6 +30,10 @@ var ( HoleskyGenesisHash = common.HexToHash("0xb5f7f912443c940f21fd611f12828d75b534364ed9e95ca4e307729a4661bde4") SepoliaGenesisHash = common.HexToHash("0x25a5cc106eea7138acab33231d7160d69cb777ee0c2c553fcddf5138993e6dd9") GoerliGenesisHash = common.HexToHash("0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a") + + ScrollAlphaGenesisHash = common.HexToHash("0xa4fc62b9b0643e345bdcebe457b3ae898bef59c7203c3db269200055e037afda") + ScrollSepoliaGenesisHash = common.HexToHash("0xaa62d1a8b2bffa9e5d2368b63aae0d98d54928bd713125e3fd9e5c896c68592c") + ScrollMainnetGenesisHash = common.HexToHash("0xbbc05efd412b7cd47a2ed0e5ddfcf87af251e414ea4c801d78b6784513180a80") ) func newUint64(val uint64) *uint64 { return &val } @@ -152,7 +157,7 @@ var ( ArrowGlacierBlock: big.NewInt(0), GrayGlacierBlock: big.NewInt(0), MergeNetsplitBlock: nil, - ShanghaiTime: nil, + ShanghaiTime: newUint64(0), CancunTime: nil, PragueTime: nil, VerkleTime: nil, @@ -160,6 +165,138 @@ var ( TerminalTotalDifficultyPassed: true, Ethash: new(EthashConfig), Clique: nil, + ArchimedesBlock: big.NewInt(0), + BernoulliBlock: big.NewInt(0), + CurieBlock: big.NewInt(0), + DescartesBlock: big.NewInt(0), + Scroll: ScrollConfig{ + UseZktrie: false, + FeeVaultAddress: nil, + MaxTxPerBlock: nil, + MaxTxPayloadBytesPerBlock: nil, + L1Config: &L1Config{ + L1ChainId: 5, + L1MessageQueueAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + NumL1MessagesPerBlock: 0, + ScrollChainAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + }, + }, + } + + // ScrollAlphaChainConfig contains the chain parameters to run a node on the Scroll Alpha test network. + ScrollAlphaChainConfig = &ChainConfig{ + ChainID: big.NewInt(534353), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: nil, + DAOForkSupport: true, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: nil, + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: nil, + ShanghaiTime: nil, + ArchimedesBlock: big.NewInt(2646311), + BernoulliBlock: nil, + CurieBlock: nil, + DescartesBlock: nil, + Clique: &CliqueConfig{ + Period: 3, + Epoch: 30000, + }, + Scroll: ScrollConfig{ + UseZktrie: true, + MaxTxPerBlock: &rcfg.ScrollMaxTxPerBlock, + MaxTxPayloadBytesPerBlock: &rcfg.ScrollMaxTxPayloadBytesPerBlock, + FeeVaultAddress: &rcfg.ScrollFeeVaultAddress, + L1Config: &L1Config{ + L1ChainId: 5, + L1MessageQueueAddress: common.HexToAddress("0x79DB48002Aa861C8cb189cabc21c6B1468BC83BB"), + NumL1MessagesPerBlock: 0, + ScrollChainAddress: common.HexToAddress("0x3C584eC7f0f2764CC715ac3180Ae9828465E9833"), + }, + }, + } + ScrollSepoliaChainConfig = &ChainConfig{ + ChainID: big.NewInt(534351), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: nil, + DAOForkSupport: true, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: nil, + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: nil, + ShanghaiTime: newUint64(0), + ArchimedesBlock: big.NewInt(0), + BernoulliBlock: big.NewInt(3747132), + CurieBlock: nil, + DescartesBlock: nil, + Clique: &CliqueConfig{ + Period: 3, + Epoch: 30000, + }, + Scroll: ScrollConfig{ + UseZktrie: true, + MaxTxPerBlock: &rcfg.ScrollMaxTxPerBlock, + MaxTxPayloadBytesPerBlock: &rcfg.ScrollMaxTxPayloadBytesPerBlock, + FeeVaultAddress: &rcfg.ScrollFeeVaultAddress, + L1Config: &L1Config{ + L1ChainId: 11155111, + L1MessageQueueAddress: common.HexToAddress("0xF0B2293F5D834eAe920c6974D50957A1732de763"), + NumL1MessagesPerBlock: 10, + ScrollChainAddress: common.HexToAddress("0x2D567EcE699Eabe5afCd141eDB7A4f2D0D6ce8a0"), + }, + }, + } + ScrollMainnetChainConfig = &ChainConfig{ + ChainID: big.NewInt(534352), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: nil, + DAOForkSupport: true, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: nil, + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: nil, + ShanghaiTime: newUint64(0), + ArchimedesBlock: big.NewInt(0), + BernoulliBlock: big.NewInt(5220340), + CurieBlock: nil, + DescartesBlock: nil, + Clique: &CliqueConfig{ + Period: 3, + Epoch: 30000, + }, + Scroll: ScrollConfig{ + UseZktrie: true, + MaxTxPerBlock: &rcfg.ScrollMaxTxPerBlock, + MaxTxPayloadBytesPerBlock: &rcfg.ScrollMaxTxPayloadBytesPerBlock, + FeeVaultAddress: &rcfg.ScrollFeeVaultAddress, + L1Config: &L1Config{ + L1ChainId: 1, + L1MessageQueueAddress: common.HexToAddress("0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B"), + NumL1MessagesPerBlock: 10, + ScrollChainAddress: common.HexToAddress("0xa13BAF47339d63B743e7Da8741db5456DAc1E556"), + }, + }, } AllDevChainProtocolChanges = &ChainConfig{ @@ -203,7 +340,7 @@ var ( ArrowGlacierBlock: nil, GrayGlacierBlock: nil, MergeNetsplitBlock: nil, - ShanghaiTime: nil, + ShanghaiTime: newUint64(0), CancunTime: nil, PragueTime: nil, VerkleTime: nil, @@ -211,6 +348,22 @@ var ( TerminalTotalDifficultyPassed: false, Ethash: nil, Clique: &CliqueConfig{Period: 0, Epoch: 30000}, + ArchimedesBlock: big.NewInt(0), + BernoulliBlock: big.NewInt(0), + CurieBlock: big.NewInt(0), + DescartesBlock: big.NewInt(0), + Scroll: ScrollConfig{ + UseZktrie: false, + FeeVaultAddress: nil, + MaxTxPerBlock: nil, + MaxTxPayloadBytesPerBlock: nil, + L1Config: &L1Config{ + L1ChainId: 5, + L1MessageQueueAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + NumL1MessagesPerBlock: 0, + ScrollChainAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + }, + }, } // TestChainConfig contains every protocol change (EIPs) introduced @@ -233,7 +386,7 @@ var ( ArrowGlacierBlock: big.NewInt(0), GrayGlacierBlock: big.NewInt(0), MergeNetsplitBlock: nil, - ShanghaiTime: nil, + ShanghaiTime: newUint64(0), CancunTime: nil, PragueTime: nil, VerkleTime: nil, @@ -241,6 +394,66 @@ var ( TerminalTotalDifficultyPassed: false, Ethash: new(EthashConfig), Clique: nil, + ArchimedesBlock: big.NewInt(0), + BernoulliBlock: big.NewInt(0), + CurieBlock: big.NewInt(0), + DescartesBlock: big.NewInt(0), + Scroll: ScrollConfig{ + UseZktrie: false, + FeeVaultAddress: &common.Address{123}, + MaxTxPerBlock: nil, + MaxTxPayloadBytesPerBlock: nil, + L1Config: &L1Config{ + L1ChainId: 5, + L1MessageQueueAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + NumL1MessagesPerBlock: 0, + ScrollChainAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + }, + }, + } + + TestNoL1DataFeeChainConfig = &ChainConfig{ + ChainID: big.NewInt(1), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: nil, + DAOForkSupport: false, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: big.NewInt(0), + GrayGlacierBlock: big.NewInt(0), + MergeNetsplitBlock: nil, + ShanghaiTime: newUint64(0), + CancunTime: nil, + PragueTime: nil, + VerkleTime: nil, + TerminalTotalDifficulty: nil, + TerminalTotalDifficultyPassed: false, + Ethash: new(EthashConfig), + Clique: nil, + ArchimedesBlock: big.NewInt(0), + BernoulliBlock: big.NewInt(0), + CurieBlock: big.NewInt(0), + DescartesBlock: big.NewInt(0), + Scroll: ScrollConfig{ + UseZktrie: false, + FeeVaultAddress: nil, + MaxTxPerBlock: nil, + MaxTxPayloadBytesPerBlock: nil, + L1Config: &L1Config{ + L1ChainId: 5, + L1MessageQueueAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + NumL1MessagesPerBlock: 0, + ScrollChainAddress: common.HexToAddress("0x0000000000000000000000000000000000000000"), + }, + }, } // NonActivatedConfig defines the chain configuration without activating @@ -281,6 +494,10 @@ var NetworkNames = map[string]string{ GoerliChainConfig.ChainID.String(): "goerli", SepoliaChainConfig.ChainID.String(): "sepolia", HoleskyChainConfig.ChainID.String(): "holesky", + + ScrollAlphaChainConfig.ChainID.String(): "scroll-alpha", + ScrollSepoliaChainConfig.ChainID.String(): "scroll-sepolia", + ScrollMainnetChainConfig.ChainID.String(): "scroll", } // ChainConfig is the core config which determines the blockchain settings. @@ -309,10 +526,14 @@ type ChainConfig struct { BerlinBlock *big.Int `json:"berlinBlock,omitempty"` // Berlin switch block (nil = no fork, 0 = already on berlin) LondonBlock *big.Int `json:"londonBlock,omitempty"` // London switch block (nil = no fork, 0 = already on london) ArrowGlacierBlock *big.Int `json:"arrowGlacierBlock,omitempty"` // Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated) - ArchimedesBlock *big.Int `json:"archimedesBlock,omitempty"` // Archimedes switch block (nil = no fork, 0 = already on archimedes) GrayGlacierBlock *big.Int `json:"grayGlacierBlock,omitempty"` // Eip-5133 (bomb delay) switch block (nil = no fork, 0 = already activated) MergeNetsplitBlock *big.Int `json:"mergeNetsplitBlock,omitempty"` // Virtual fork after The Merge to use as a network splitter + ArchimedesBlock *big.Int `json:"archimedesBlock,omitempty"` // Archimedes switch block (nil = no fork, 0 = already on archimedes) + BernoulliBlock *big.Int `json:"bernoulliBlock,omitempty"` // Bernoulli switch block (nil = no fork, 0 = already on bernoulli) + CurieBlock *big.Int `json:"curieBlock,omitempty"` // Curie switch block (nil = no fork, 0 = already on curie) + DescartesBlock *big.Int `json:"descartesBlock,omitempty"` // Descartes switch block (nil = no fork, 0 = already on descartes) + // Fork scheduling was switched from blocks to timestamps here ShanghaiTime *uint64 `json:"shanghaiTime,omitempty"` // Shanghai switch time (nil = no fork, 0 = already on shanghai) @@ -395,6 +616,21 @@ func (s ScrollConfig) IsValidBlockSize(size uint64) bool { return s.MaxTxPayloadBytesPerBlock == nil || size <= uint64(*s.MaxTxPayloadBytesPerBlock) } +func (s ScrollConfig) String() string { + maxTxPerBlock := "" + if s.MaxTxPerBlock != nil { + maxTxPerBlock = fmt.Sprintf("%v", *s.MaxTxPerBlock) + } + + maxTxPayloadBytesPerBlock := "" + if s.MaxTxPayloadBytesPerBlock != nil { + maxTxPayloadBytesPerBlock = fmt.Sprintf("%v", *s.MaxTxPayloadBytesPerBlock) + } + + return fmt.Sprintf("{useZktrie: %v, maxTxPerBlock: %v, MaxTxPayloadBytesPerBlock: %v, feeVaultAddress: %v, l1Config: %v}", + s.UseZktrie, maxTxPerBlock, maxTxPayloadBytesPerBlock, s.FeeVaultAddress, s.L1Config.String()) +} + // EthashConfig is the consensus engine configs for proof-of-work based sealing. type EthashConfig struct{} @@ -469,12 +705,21 @@ func (c *ChainConfig) Description() string { if c.ArrowGlacierBlock != nil { banner += fmt.Sprintf(" - Arrow Glacier: #%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md)\n", c.ArrowGlacierBlock) } - if c.ArchimedesBlock != nil { - banner += fmt.Sprintf(" - Archimedes: #%-8v\n", c.ArchimedesBlock) // TODO: add archimedes execution-specs - } if c.GrayGlacierBlock != nil { banner += fmt.Sprintf(" - Gray Glacier: #%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md)\n", c.GrayGlacierBlock) } + if c.ArchimedesBlock != nil { + banner += fmt.Sprintf(" - Archimedes: #%-8v\n", c.ArchimedesBlock) // TODO: add Archimedes execution-specs + } + if c.BernoulliBlock != nil { + banner += fmt.Sprintf(" - Bernoulli: #%-8v\n", c.BernoulliBlock) // TODO: add Bernoulli execution-specs + } + if c.CurieBlock != nil { + banner += fmt.Sprintf(" - Curie: #%-8v\n", c.CurieBlock) // TODO: add Curie execution-specs + } + if c.DescartesBlock != nil { + banner += fmt.Sprintf(" - Descartes: #%-8v\n", c.DescartesBlock) // TODO: add Descartes execution-specs + } banner += "\n" // Add a special section for the merge as it's non-obvious @@ -506,6 +751,12 @@ func (c *ChainConfig) Description() string { if c.VerkleTime != nil { banner += fmt.Sprintf(" - Verkle: @%-10v\n", *c.VerkleTime) } + banner += "\n" + + banner += "Scroll Config:\n" + banner += c.Scroll.String() + banner += "\n" + return banner } @@ -576,11 +827,6 @@ func (c *ChainConfig) IsArrowGlacier(num *big.Int) bool { return isBlockForked(c.ArrowGlacierBlock, num) } -// IsArchimedes returns whether num is either equal to the Archimedes fork block or greater. -func (c *ChainConfig) IsArchimedes(num *big.Int) bool { - return isBlockForked(c.ArchimedesBlock, num) -} - // IsGrayGlacier returns whether num is either equal to the Gray Glacier (EIP-5133) fork block or greater. func (c *ChainConfig) IsGrayGlacier(num *big.Int) bool { return isBlockForked(c.GrayGlacierBlock, num) @@ -614,6 +860,26 @@ func (c *ChainConfig) IsVerkle(num *big.Int, time uint64) bool { return c.IsLondon(num) && isTimestampForked(c.VerkleTime, time) } +// IsArchimedes returns whether num is either equal to the Archimedes fork block or greater. +func (c *ChainConfig) IsArchimedes(num *big.Int) bool { + return isBlockForked(c.ArchimedesBlock, num) +} + +// IsBernoulli returns whether num is either equal to the Bernoulli fork block or greater. +func (c *ChainConfig) IsBernoulli(num *big.Int) bool { + return isBlockForked(c.BernoulliBlock, num) +} + +// IsCurie returns whether num is either equal to the Curie fork block or greater. +func (c *ChainConfig) IsCurie(num *big.Int) bool { + return isBlockForked(c.CurieBlock, num) +} + +// IsDescartes returns whether num is either equal to the Descartes fork block or greater. +func (c *ChainConfig) IsDescartes(num *big.Int) bool { + return isBlockForked(c.DescartesBlock, num) +} + // CheckCompatible checks whether scheduled fork transitions have been imported // with a mismatching chain configuration. func (c *ChainConfig) CheckCompatible(newcfg *ChainConfig, height uint64, time uint64) *ConfigCompatError { @@ -663,13 +929,17 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "berlinBlock", block: c.BerlinBlock}, {name: "londonBlock", block: c.LondonBlock}, {name: "arrowGlacierBlock", block: c.ArrowGlacierBlock, optional: true}, - {name: "archimedesBlock", block: c.ArchimedesBlock, optional: true}, {name: "grayGlacierBlock", block: c.GrayGlacierBlock, optional: true}, {name: "mergeNetsplitBlock", block: c.MergeNetsplitBlock, optional: true}, - {name: "shanghaiTime", timestamp: c.ShanghaiTime}, + // {name: "shanghaiTime", timestamp: c.ShanghaiTime}, {name: "cancunTime", timestamp: c.CancunTime, optional: true}, {name: "pragueTime", timestamp: c.PragueTime, optional: true}, {name: "verkleTime", timestamp: c.VerkleTime, optional: true}, + {name: "archimedesBlock", block: c.ArchimedesBlock, optional: true}, + {name: "bernoulliBlock", block: c.BernoulliBlock, optional: true}, + {name: "shanghaiTime", timestamp: c.ShanghaiTime}, + {name: "curieBlock", block: c.CurieBlock, optional: true}, + {name: "descartesBlock", block: c.DescartesBlock, optional: true}, } { if lastFork.name != "" { switch { @@ -779,6 +1049,18 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, headNumber *big.Int, if isForkTimestampIncompatible(c.VerkleTime, newcfg.VerkleTime, headTimestamp) { return newTimestampCompatError("Verkle fork timestamp", c.VerkleTime, newcfg.VerkleTime) } + if isForkBlockIncompatible(c.ArchimedesBlock, newcfg.ArchimedesBlock, headNumber) { + return newBlockCompatError("Archimedes fork block", c.ArchimedesBlock, newcfg.ArchimedesBlock) + } + if isForkBlockIncompatible(c.BernoulliBlock, newcfg.BernoulliBlock, headNumber) { + return newBlockCompatError("Bernoulli fork block", c.BernoulliBlock, newcfg.BernoulliBlock) + } + if isForkBlockIncompatible(c.CurieBlock, newcfg.CurieBlock, headNumber) { + return newBlockCompatError("Curie fork block", c.CurieBlock, newcfg.CurieBlock) + } + if isForkBlockIncompatible(c.DescartesBlock, newcfg.DescartesBlock, headNumber) { + return newBlockCompatError("Descartes fork block", c.DescartesBlock, newcfg.DescartesBlock) + } return nil } @@ -923,9 +1205,9 @@ type Rules struct { IsHomestead, IsEIP150, IsEIP155, IsEIP158 bool IsByzantium, IsConstantinople, IsPetersburg, IsIstanbul bool IsBerlin, IsLondon bool - IsArchimedes bool IsMerge, IsShanghai, IsCancun, IsPrague bool IsVerkle bool + IsArchimedes, IsBernoulli, IsCurie, IsDescartes bool } // Rules ensures c's ChainID is not nil. @@ -946,11 +1228,14 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool, timestamp uint64) Rules IsIstanbul: c.IsIstanbul(num), IsBerlin: c.IsBerlin(num), IsLondon: c.IsLondon(num), - IsArchimedes: c.IsArchimedes(num), IsMerge: isMerge, IsShanghai: c.IsShanghai(num, timestamp), IsCancun: c.IsCancun(num, timestamp), IsPrague: c.IsPrague(num, timestamp), IsVerkle: c.IsVerkle(num, timestamp), + IsArchimedes: c.IsArchimedes(num), + IsBernoulli: c.IsBernoulli(num), + IsCurie: c.IsCurie(num), + IsDescartes: c.IsDescartes(num), } }