diff --git a/cmd/cdk-erigon/main.go b/cmd/cdk-erigon/main.go index 584f7a250bd..cb404bc71c1 100644 --- a/cmd/cdk-erigon/main.go +++ b/cmd/cdk-erigon/main.go @@ -110,13 +110,17 @@ func setFlagsFromConfigFile(ctx *cli.Context, filePath string) error { for i, v := range sliceInterface { s[i] = fmt.Sprintf("%v", v) } - err := ctx.Set(key, strings.Join(s, ",")) - if err != nil { + if err := ctx.Set(key, strings.Join(s, ",")); err != nil { + if deprecatedFlag, found := erigoncli.DeprecatedFlags[key]; found { + return fmt.Errorf("failed setting %s flag Flag is deprecated, use %s instead", key, deprecatedFlag) + } return fmt.Errorf("failed setting %s flag with values=%s error=%s", key, s, err) } } else { - err := ctx.Set(key, fmt.Sprintf("%v", value)) - if err != nil { + if err := ctx.Set(key, fmt.Sprintf("%v", value)); err != nil { + if deprecatedFlag, found := erigoncli.DeprecatedFlags[key]; found { + return fmt.Errorf("failed setting %s flag Flag is deprecated, use %s instead", key, deprecatedFlag) + } return fmt.Errorf("failed setting %s flag with value=%v error=%s", key, value, err) } } diff --git a/cmd/rpcdaemon/cli/config.go b/cmd/rpcdaemon/cli/config.go index f9a8b872af5..a5a738ed45b 100644 --- a/cmd/rpcdaemon/cli/config.go +++ b/cmd/rpcdaemon/cli/config.go @@ -93,7 +93,6 @@ func RootCommand() (*cobra.Command, *httpcfg.HttpCfg) { rootCmd.PersistentFlags().BoolVar(&cfg.GraphQLEnabled, "graphql", false, "enables graphql endpoint (disabled by default)") rootCmd.PersistentFlags().Uint64Var(&cfg.Gascap, "rpc.gascap", 50_000_000, "Sets a cap on gas that can be used in eth_call/estimateGas") rootCmd.PersistentFlags().Uint64Var(&cfg.MaxTraces, "trace.maxtraces", 200, "Sets a limit on traces that can be returned in trace_filter") - rootCmd.PersistentFlags().StringVar(&cfg.RpcAllowListFilePath, utils.RpcAccessListFlag.Name, "", "Specify granular (method-by-method) API allowlist") rootCmd.PersistentFlags().UintVar(&cfg.RpcBatchConcurrency, utils.RpcBatchConcurrencyFlag.Name, 2, utils.RpcBatchConcurrencyFlag.Usage) rootCmd.PersistentFlags().BoolVar(&cfg.RpcStreamingDisable, utils.RpcStreamingDisableFlag.Name, false, utils.RpcStreamingDisableFlag.Usage) @@ -124,6 +123,9 @@ func RootCommand() (*cobra.Command, *httpcfg.HttpCfg) { rootCmd.PersistentFlags().BoolVar(&cfg.HttpCompression, "http.compression", true, "Disable http compression") rootCmd.PersistentFlags().BoolVar(&cfg.WebsocketEnabled, "ws", false, "Enable Websockets - Same port as HTTP[S]") rootCmd.PersistentFlags().BoolVar(&cfg.WebsocketCompression, "ws.compression", false, "Enable Websocket compression (RFC 7692)") + rootCmd.PersistentFlags().StringVar(&cfg.WebSocketListenAddress, "ws.addr", nodecfg.DefaultHTTPHost, "Websocket server listening interface") + rootCmd.PersistentFlags().IntVar(&cfg.WebSocketPort, "ws.port", nodecfg.DefaultHTTPPort, "Websocket server listening port") + rootCmd.PersistentFlags().StringSliceVar(&cfg.WebsocketCORSDomain, "ws.corsdomain", []string{}, "Comma separated list of domains from which to accept cross origin requests (browser enforced)") rootCmd.PersistentFlags().BoolVar(&cfg.HttpsServerEnabled, "https.enabled", false, "enable http server") rootCmd.PersistentFlags().StringVar(&cfg.HttpsListenAddress, "https.addr", nodecfg.DefaultHTTPHost, "rpc HTTPS server listening interface") @@ -630,37 +632,14 @@ func startRegularRpcServer(ctx context.Context, cfg *httpcfg.HttpCfg, rpcAPI []r } httpHandler := node.NewHTTPHandlerStack(srv, cfg.HttpCORSDomain, cfg.HttpVirtualHost, cfg.HttpCompression) - var wsHandler http.Handler - if cfg.WebsocketEnabled { - wsHandler = srv.WebsocketHandler([]string{"*"}, nil, cfg.WebsocketCompression, logger) - } + graphQLHandler := graphql.CreateHandler(defaultAPIList) - apiHandler, err := createHandler(cfg, defaultAPIList, httpHandler, wsHandler, graphQLHandler, nil) + + apiHandler, err := createHandler(*cfg, defaultAPIList, httpHandler, nil, graphQLHandler, nil) if err != nil { return err } - // Separate Websocket handler if websocket port flag specified - if cfg.WebsocketEnabled && cfg.WebsocketPort != cfg.HttpPort { - wsEndpoint := fmt.Sprintf("tcp://%s:%d", cfg.HttpListenAddress, cfg.WebsocketPort) - wsApiHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if isWebsocket(r) { - wsHandler.ServeHTTP(w, r) - } - }) - wsListener, wsAddr, err := node.StartHTTPEndpoint(wsEndpoint, &node.HttpEndpointConfig{Timeouts: cfg.HTTPTimeouts}, wsApiHandler) - if err != nil { - return fmt.Errorf("could not start separate Websocket RPC api at port %d: %w", cfg.WebsocketPort, err) - } - info = append(info, "websocket.url", wsAddr) - defer func() { - shutdownCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - _ = wsListener.Shutdown(shutdownCtx) - logger.Info("HTTP endpoint closed", "url", wsAddr) - }() - } - if cfg.HttpServerEnabled { httpEndpoint := fmt.Sprintf("tcp://%s:%d", cfg.HttpListenAddress, cfg.HttpPort) if cfg.HttpURL != "" { @@ -680,6 +659,7 @@ func startRegularRpcServer(ctx context.Context, cfg *httpcfg.HttpCfg, rpcAPI []r logger.Info("HTTP endpoint closed", "url", httpAddr) }() } + if cfg.HttpsURL != "" { cfg.HttpsServerEnabled = true } @@ -740,7 +720,72 @@ func startRegularRpcServer(ctx context.Context, cfg *httpcfg.HttpCfg, rpcAPI []r }() } - logger.Info("JsonRpc endpoint opened", info...) + log.Info("HTTP endpoint opened", info...) + + if cfg.WebsocketEnabled { + wsSrv := rpc.NewServer(cfg.RpcBatchConcurrency, cfg.TraceRequests, cfg.RpcStreamingDisable, false, logger, cfg.RPCSlowLogThreshold) + + allowListForRPC, err := parseAllowListForRPC(cfg.RpcAllowListFilePath) + if err != nil { + return err + } + + var wsApiFlags []string + for _, flag := range cfg.WebSocketApi { + if flag != "engine" { + wsApiFlags = append(wsApiFlags, flag) + } + } + + if err := node.RegisterApisFromWhitelist(defaultAPIList, wsApiFlags, wsSrv, false, logger); err != nil { + return fmt.Errorf("could not start register WS apis: %w", err) + } + wsSrv.SetAllowList(allowListForRPC) + + wsSrv.SetBatchLimit(cfg.BatchLimit) + + var defaultAPIList []rpc.API + + for _, api := range rpcAPI { + if api.Namespace != "engine" { + defaultAPIList = append(defaultAPIList, api) + } + } + + var apiFlags []string + for _, flag := range cfg.API { + if flag != "engine" { + apiFlags = append(apiFlags, flag) + } + } + + if err := node.RegisterApisFromWhitelist(defaultAPIList, apiFlags, wsSrv, false, logger); err != nil { + return fmt.Errorf("could not start register RPC apis: %w", err) + } + + wsEndpoint := fmt.Sprintf("tcp://%s:%d", cfg.WebSocketListenAddress, cfg.WebSocketPort) + + wsHttpHandler := wsSrv.WebsocketHandler(cfg.WebsocketCORSDomain, nil, cfg.WebsocketCompression, logger) + wsHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + wsHttpHandler.ServeHTTP(w, r) + }) + + wsListener, wsHttpAddr, err := node.StartHTTPEndpoint(wsEndpoint, &node.HttpEndpointConfig{ + Timeouts: cfg.HTTPTimeouts, + }, wsHandler) + if err != nil { + return fmt.Errorf("could not start ws RPC api: %w", err) + } + + defer func() { + wsSrv.Stop() + shutdownCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + _ = wsListener.Shutdown(shutdownCtx) + log.Info("WS endpoint closed", "url", wsHttpAddr) + }() + } + <-ctx.Done() logger.Info("Exiting...") return nil @@ -816,7 +861,7 @@ func ObtainJWTSecret(cfg *httpcfg.HttpCfg, logger log.Logger) ([]byte, error) { return jwtSecret, nil } -func createHandler(cfg *httpcfg.HttpCfg, apiList []rpc.API, httpHandler http.Handler, wsHandler http.Handler, graphQLHandler http.Handler, jwtSecret []byte) (http.Handler, error) { +func createHandler(cfg httpcfg.HttpCfg, apiList []rpc.API, httpHandler, wsHandler, graphQLHandler http.Handler, jwtSecret []byte) (http.Handler, error) { var handler http.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if cfg.GraphQLEnabled && graphql.ProcessGraphQLcheckIfNeeded(graphQLHandler, w, r) { return @@ -861,7 +906,7 @@ func createEngineListener(cfg *httpcfg.HttpCfg, engineApi []rpc.API, logger log. graphQLHandler := graphql.CreateHandler(engineApi) - engineApiHandler, err := createHandler(cfg, engineApi, engineHttpHandler, wsHandler, graphQLHandler, jwtSecret) + engineApiHandler, err := createHandler(*cfg, engineApi, engineHttpHandler, wsHandler, graphQLHandler, jwtSecret) if err != nil { return nil, nil, "", err } diff --git a/cmd/rpcdaemon/cli/httpcfg/http_cfg.go b/cmd/rpcdaemon/cli/httpcfg/http_cfg.go index 2c3f142f52c..b886d0258a6 100644 --- a/cmd/rpcdaemon/cli/httpcfg/http_cfg.go +++ b/cmd/rpcdaemon/cli/httpcfg/http_cfg.go @@ -48,6 +48,10 @@ type HttpCfg struct { WebsocketEnabled bool WebsocketCompression bool WebsocketSubscribeLogsChannelSize int + WebSocketListenAddress string + WebSocketPort int + WebsocketCORSDomain []string + WebSocketApi []string RpcAllowListFilePath string RpcBatchConcurrency uint RpcStreamingDisable bool diff --git a/cmd/rpcdaemon/commands/mocks/l1_syncer_mock.go b/cmd/rpcdaemon/commands/mocks/l1_syncer_mock.go index e071260adfd..86825d378f3 100644 --- a/cmd/rpcdaemon/commands/mocks/l1_syncer_mock.go +++ b/cmd/rpcdaemon/commands/mocks/l1_syncer_mock.go @@ -73,6 +73,22 @@ func (mr *MockIEthermanMockRecorder) CallContract(ctx, msg, blockNumber any) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CallContract", reflect.TypeOf((*MockIEtherman)(nil).CallContract), ctx, msg, blockNumber) } +// CallContract indicates an expected call of CallContract. +func (m *MockIEtherman) StorageAt(ctx context.Context, contract common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StorageAt", ctx, contract, key, blockNumber) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CallContract indicates an expected call of CallContract. +func (mr *MockIEthermanMockRecorder) StorageAt(ctx, contract, key, blockNumber any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StorageAt", reflect.TypeOf((*MockIEtherman)(nil).StorageAt), ctx, contract, key, blockNumber) +} + + // FilterLogs mocks base method. func (m *MockIEtherman) FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error) { m.ctrl.T.Helper() diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 6f88a533dce..8eb2baa66a7 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -373,7 +373,7 @@ var ( HTTPCORSDomainFlag = cli.StringFlag{ Name: "http.corsdomain", Usage: "Comma separated list of domains from which to accept cross origin requests (browser enforced)", - Value: "", + Value: "*", } HTTPVirtualHostsFlag = cli.StringFlag{ Name: "http.vhosts", @@ -707,11 +707,6 @@ var ( Usage: "Disable the virtual counters. This has an effect on on sequencer node and when external executor is not enabled.", Value: false, } - SupportGasless = cli.BoolFlag{ - Name: "zkevm.gasless", - Usage: "Support gasless transactions", - Value: false, - } ExecutorPayloadOutput = cli.StringFlag{ Name: "zkevm.executor-payload-output", Usage: "Output the payload of the executor, serialised requests stored to disk by batch number", diff --git a/consensus/misc/eip1559_zk.go b/consensus/misc/eip1559_zk.go index b8e99334658..4b01cba12b7 100644 --- a/consensus/misc/eip1559_zk.go +++ b/consensus/misc/eip1559_zk.go @@ -9,7 +9,7 @@ import ( ) func CalcBaseFeeZk(config *chain.Config, parent *types.Header) *big.Int { - if config.SupportGasless || parent.Number.Cmp(big.NewInt(0)) == 0 { + if config.AllowFreeTransactions || parent.Number.Cmp(big.NewInt(0)) == 0 { // If the parent is the genesis block, the next block will include the initial batch transaction, which is a legacy transaction, so the basefee will be set to 0 return big.NewInt(0) } diff --git a/core/vm/zk_batch_counters.go b/core/vm/zk_batch_counters.go index c2704cb2844..4b58c0fa9d7 100644 --- a/core/vm/zk_batch_counters.go +++ b/core/vm/zk_batch_counters.go @@ -88,6 +88,12 @@ func (bcc *BatchCounterCollector) AddNewTransactionCounters(txCounters *Transact return bcc.CheckForOverflow(false) //no need to calculate the merkle proof here } +func (bcc *BatchCounterCollector) RemovePreviousTransactionCounters() { + lastTx := bcc.transactions[len(bcc.transactions)-1] + bcc.UndoTransactionCountersCache(lastTx) + bcc.transactions = bcc.transactions[:len(bcc.transactions)-1] +} + func (bcc *BatchCounterCollector) ClearTransactionCounters() { bcc.transactions = bcc.transactions[:0] } @@ -154,7 +160,7 @@ func (bcc *BatchCounterCollector) CheckForOverflow(verifyMerkleProof bool) (bool for _, v := range combined { logText += fmt.Sprintf(" %s: initial: %v used: %v (remaining: %v)", v.name, v.initialAmount, v.used, v.remaining) } - log.Info(logText) + log.Debug(logText) } return overflow, nil @@ -275,3 +281,15 @@ func (bcc *BatchCounterCollector) UpdateExecutionAndProcessingCountersCache(txCo bcc.processingCombinedCounters[k].used += v.used } } + +func (bcc *BatchCounterCollector) UndoTransactionCountersCache(txCounters *TransactionCounter) { + for k, v := range txCounters.rlpCounters.counters { + bcc.rlpCombinedCounters[k].used -= v.used + } + for k, v := range txCounters.executionCounters.counters { + bcc.executionCombinedCounters[k].used -= v.used + } + for k, v := range txCounters.processingCounters.counters { + bcc.processingCombinedCounters[k].used -= v.used + } +} diff --git a/erigon-lib/chain/chain_config.go b/erigon-lib/chain/chain_config.go index cfc0e68fd55..6255e58cd84 100644 --- a/erigon-lib/chain/chain_config.go +++ b/erigon-lib/chain/chain_config.go @@ -117,7 +117,7 @@ type Config struct { ForkID12BananaBlock *big.Int `json:"forkID12BananaBlock,omitempty"` NormalcyBlock *big.Int `json:"normalcyBlock,omitempty"` - SupportGasless bool `json:"supportGasless,omitempty"` + AllowFreeTransactions bool `json:"allowFreeTransactions,omitempty"` } type BorConfig interface { diff --git a/eth/backend.go b/eth/backend.go index a8fbb752335..543e98c7c70 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -995,9 +995,7 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger // entering ZK territory! cfg := backend.config - // update the chain config with the zero gas from the flags - backend.chainConfig.SupportGasless = cfg.Gasless - + backend.chainConfig.AllowFreeTransactions = cfg.AllowFreeTransactions l1Urls := strings.Split(cfg.L1RpcUrl, ",") if cfg.Zk.L1CacheEnabled { diff --git a/migrations/migrations.go b/migrations/migrations.go index 75c4a826ef1..6b08dec2b40 100644 --- a/migrations/migrations.go +++ b/migrations/migrations.go @@ -40,6 +40,7 @@ var migrations = map[kv.Label][]Migration{ refactorTableLastRoot, ProhibitNewDownloadsLock2, countersToArray, + resetL1Sequences, }, kv.TxPoolDB: {}, kv.SentryDB: {}, diff --git a/migrations/reset_l1sequences.go b/migrations/reset_l1sequences.go new file mode 100644 index 00000000000..733fcc6b3f8 --- /dev/null +++ b/migrations/reset_l1sequences.go @@ -0,0 +1,34 @@ +package migrations + +import ( + "context" + "fmt" + + "github.com/ledgerwatch/erigon-lib/common/datadir" + "github.com/ledgerwatch/erigon-lib/kv" + "github.com/ledgerwatch/erigon/eth/stagedsync/stages" + "github.com/ledgerwatch/log/v3" +) + +var resetL1Sequences = Migration{ + Name: "remove l1 sequences and stage_l1sync progress to download all l1 sequences anew", + Up: func(db kv.RwDB, dirs datadir.Dirs, progress []byte, BeforeCommit Callback, logger log.Logger) (err error) { + tx, err := db.BeginRw(context.Background()) + if err != nil { + return err + } + defer tx.Rollback() + tx.ClearBucket(kv.L1SEQUENCES) + + // already checked + if err := stages.SaveStageProgress(tx, stages.L1Syncer, 0); err != nil { + return fmt.Errorf("failed to get highest checked block, %w", err) + } + + // This migration is no-op, but it forces the migration mechanism to apply it and thus write the DB schema version info + if err := BeforeCommit(tx, nil, true); err != nil { + return err + } + return tx.Commit() + }, +} diff --git a/smt/pkg/smt/smt.go b/smt/pkg/smt/smt.go index a978878a20d..1c2a8a386e4 100644 --- a/smt/pkg/smt/smt.go +++ b/smt/pkg/smt/smt.go @@ -257,9 +257,6 @@ func (s *SMT) insert(k utils.NodeKey, v utils.NodeValue8, newValH [4]uint64, old foundVal = foundValA foundKey = utils.JoinKey(usedKey, foundRKey) - if err != nil { - return nil, err - } } else { oldRoot = utils.NodeKeyFromBigIntArray(siblings[level][keys[level]*4 : keys[level]*4+4]) usedKey = append(usedKey, keys[level]) @@ -533,37 +530,31 @@ func (s *SMT) insert(k utils.NodeKey, v utils.NodeValue8, newValH [4]uint64, old return smtResponse, nil } -func prepareHashValueForSave(in [8]uint64, capacity [4]uint64) utils.NodeValue12 { - v := utils.NodeValue12{} - for i, val := range in { - v[i] = new(big.Int).SetUint64(val) - } - for i, val := range capacity { - v[i+8] = new(big.Int).SetUint64(val) +// used only by old smt (not by smt batch/create) +func (s *SMT) hashSave(in [8]uint64, capacity, h [4]uint64) error { + if s.noSaveOnInsert { + return nil } + v := utils.ConcatArrays8AndCapacityByPointers(&in, &capacity) - return v + return s.Db.Insert(h, *v) } -func (s *SMT) hashSave(in [8]uint64, capacity, h [4]uint64) error { +func (s *SMT) hashSaveByPointers(in *[8]uint64, capacity, h *[4]uint64) error { if s.noSaveOnInsert { return nil } - v := prepareHashValueForSave(in, capacity) + v := utils.ConcatArrays8AndCapacityByPointers(in, capacity) - return s.Db.Insert(h, v) + return s.Db.Insert(*h, *v) } +// used only by old smt (not by smt batch/create) func (s *SMT) hashcalcAndSave(in [8]uint64, capacity [4]uint64) ([4]uint64, error) { h := utils.Hash(in, capacity) return h, s.hashSave(in, capacity, h) } -func hashCalcAndPrepareForSave(in [8]uint64, capacity [4]uint64) ([4]uint64, utils.NodeValue12, error) { - h := utils.Hash(in, capacity) - return h, prepareHashValueForSave(in, capacity), nil -} - func (s *RoSMT) getLastRoot() (utils.NodeKey, error) { or, err := s.DbRo.GetLastRoot() if err != nil { diff --git a/smt/pkg/smt/smt_batch.go b/smt/pkg/smt/smt_batch.go index a08b6765994..e7676665918 100644 --- a/smt/pkg/smt/smt_batch.go +++ b/smt/pkg/smt/smt_batch.go @@ -237,7 +237,7 @@ func (s *SMT) InsertBatch(cfg InsertBatchConfig, nodeKeys []*utils.NodeKey, node default: } if !nodeValue.IsZero() { - err = s.hashSave(nodeValue.ToUintArray(), utils.BranchCapacity, *nodeValuesHashes[i]) + err = s.hashSaveByPointers(nodeValue.ToUintArrayByPointer(), &utils.BranchCapacity, nodeValuesHashes[i]) if err != nil { return nil, err } @@ -248,10 +248,21 @@ func (s *SMT) InsertBatch(cfg InsertBatchConfig, nodeKeys []*utils.NodeKey, node if smtBatchNodeRoot == nil { rootNodeHash = &utils.NodeKey{0, 0, 0, 0} } else { - if err := calculateAndSaveHashesDfs(s, smtBatchNodeRoot, make([]int, 256), 0); err != nil { - return nil, fmt.Errorf("calculating and saving hashes dfs: %w", err) + sdh := newSmtDfsHelper(s) + + go func() { + defer sdh.destroy() + + calculateAndSaveHashesDfs(sdh, smtBatchNodeRoot, make([]int, 256), 0) + rootNodeHash = (*utils.NodeKey)(smtBatchNodeRoot.hash) + }() + + if !s.noSaveOnInsert { + if err = sdh.startConsumersLoop(s); err != nil { + return nil, fmt.Errorf("saving smt hashes dfs: %w", err) + } } - rootNodeHash = (*utils.NodeKey)(smtBatchNodeRoot.hash) + sdh.wg.Wait() } if err := s.setLastRoot(*rootNodeHash); err != nil { return nil, err @@ -454,59 +465,44 @@ func updateNodeHashesForDelete(nodeHashesForDelete map[uint64]map[uint64]map[uin } } -func calculateAndSaveHashesDfs(s *SMT, smtBatchNode *smtBatchNode, path []int, level int) error { +// no point to parallelize this function because db consumer is slower than this producer +func calculateAndSaveHashesDfs(sdh *smtDfsHelper, smtBatchNode *smtBatchNode, path []int, level int) { if smtBatchNode.isLeaf() { - hashObj, err := s.hashcalcAndSave(utils.ConcatArrays4(*smtBatchNode.nodeLeftHashOrRemainingKey, *smtBatchNode.nodeRightHashOrValueHash), utils.LeafCapacity) - if err != nil { - return fmt.Errorf("hashing leaf: %w", err) - } + hashObj, hashValue := utils.HashKeyAndValueByPointers(utils.ConcatArrays4ByPointers(smtBatchNode.nodeLeftHashOrRemainingKey.AsUint64Pointer(), smtBatchNode.nodeRightHashOrValueHash.AsUint64Pointer()), &utils.LeafCapacity) + smtBatchNode.hash = hashObj + if !sdh.s.noSaveOnInsert { + sdh.dataChan <- newSmtDfsHelperDataStruct(hashObj, hashValue) - smtBatchNode.hash = &hashObj - - nodeKey := utils.JoinKey(path[:level], *smtBatchNode.nodeLeftHashOrRemainingKey) - if err := s.Db.InsertHashKey(hashObj, *nodeKey); err != nil { - return fmt.Errorf("inserting hash key: %w", err) + nodeKey := utils.JoinKey(path[:level], *smtBatchNode.nodeLeftHashOrRemainingKey) + sdh.dataChan <- newSmtDfsHelperDataStruct(hashObj, nodeKey) } - - return nil + return } var totalHash utils.NodeValue8 if smtBatchNode.leftNode != nil { path[level] = 0 - if err := calculateAndSaveHashesDfs(s, smtBatchNode.leftNode, path, level+1); err != nil { - return err - } - if err := totalHash.SetHalfValue(*smtBatchNode.leftNode.hash, 0); err != nil { - return err - } + calculateAndSaveHashesDfs(sdh, smtBatchNode.leftNode, path, level+1) + totalHash.SetHalfValue(*smtBatchNode.leftNode.hash, 0) // no point to check for error because we used hardcoded 0 which ensures that no error will be returned } else { - if err := totalHash.SetHalfValue(*smtBatchNode.nodeLeftHashOrRemainingKey, 0); err != nil { - return err - } + totalHash.SetHalfValue(*smtBatchNode.nodeLeftHashOrRemainingKey, 0) // no point to check for error because we used hardcoded 0 which ensures that no error will be returned } if smtBatchNode.rightNode != nil { path[level] = 1 - if err := calculateAndSaveHashesDfs(s, smtBatchNode.rightNode, path, level+1); err != nil { - return err - } - if err := totalHash.SetHalfValue(*smtBatchNode.rightNode.hash, 1); err != nil { - return err - } + calculateAndSaveHashesDfs(sdh, smtBatchNode.rightNode, path, level+1) + totalHash.SetHalfValue(*smtBatchNode.rightNode.hash, 1) // no point to check for error because we used hardcoded 1 which ensures that no error will be returned } else { - if err := totalHash.SetHalfValue(*smtBatchNode.nodeRightHashOrValueHash, 1); err != nil { - return err - } + totalHash.SetHalfValue(*smtBatchNode.nodeRightHashOrValueHash, 1) // no point to check for error because we used hardcoded 1 which ensures that no error will be returned } - hashObj, err := s.hashcalcAndSave(totalHash.ToUintArray(), utils.BranchCapacity) - if err != nil { - return err + hashObj, hashValue := utils.HashKeyAndValueByPointers(totalHash.ToUintArrayByPointer(), &utils.BranchCapacity) + if !sdh.s.noSaveOnInsert { + sdh.dataChan <- newSmtDfsHelperDataStruct(hashObj, hashValue) } - smtBatchNode.hash = &hashObj - return nil + + smtBatchNode.hash = hashObj } type smtBatchNode struct { @@ -633,6 +629,65 @@ func (sbn *smtBatchNode) collapseLeafByRemovingTheSingleLeaf(insertingNodeKey [] return &sbn.parentNode } +type smtDfsHelperDataStruct struct { + key *[4]uint64 + value interface{} +} + +func newSmtDfsHelperDataStruct(key *[4]uint64, value interface{}) *smtDfsHelperDataStruct { + return &smtDfsHelperDataStruct{ + key: key, + value: value, + } +} + +type smtDfsHelper struct { + s *SMT + dataChan chan *smtDfsHelperDataStruct + wg *sync.WaitGroup + once *sync.Once +} + +func newSmtDfsHelper(s *SMT) *smtDfsHelper { + sdh := &smtDfsHelper{ + s: s, + dataChan: make(chan *smtDfsHelperDataStruct, 1<<16), + wg: &sync.WaitGroup{}, + once: &sync.Once{}, + } + + sdh.wg.Add(1) + + return sdh +} + +func (sdh *smtDfsHelper) destroy() { + sdh.once.Do(func() { + close(sdh.dataChan) + sdh.wg.Done() + }) +} + +func (sdh *smtDfsHelper) startConsumersLoop(s *SMT) error { + for { + dataStruct, ok := <-sdh.dataChan + if !ok { + return nil + } + + switch castedDataStruct := dataStruct.value.(type) { + case *utils.NodeKey: + if err := s.Db.InsertHashKey(*dataStruct.key, *castedDataStruct); err != nil { + return fmt.Errorf("calculating and saving hashes dfs: %w", err) + } + case *utils.NodeValue12: + if err := s.Db.Insert(*dataStruct.key, *castedDataStruct); err != nil { + return fmt.Errorf("calculating and saving hashes dfs: %w", err) + } + } + } +} + func setNodeKeyMapValue[T int | *utils.NodeKey](nodeKeyMap map[uint64]map[uint64]map[uint64]map[uint64]T, nodeKey *utils.NodeKey, value T) { mapLevel0, found := nodeKeyMap[nodeKey[0]] if !found { diff --git a/smt/pkg/smt/smt_batch_compare_test.go b/smt/pkg/smt/smt_batch_compare_test.go index a3fd57c3984..26dd0a97d71 100644 --- a/smt/pkg/smt/smt_batch_compare_test.go +++ b/smt/pkg/smt/smt_batch_compare_test.go @@ -30,14 +30,8 @@ func TestCompareAllTreesInsertTimesAndFinalHashesUsingDiskDb(t *testing.T) { compareAllTreesInsertTimesAndFinalHashes(t, smtIncremental, smtBulk, smtBatch) smtIncrementalTx.Commit() - tt := time.Now() - t.Logf("1: %v\n", time.Since(tt)) smtBulkTx.Commit() - tt = time.Now() - t.Logf("2: %v\n", time.Since(tt)) smtBatchTx.Commit() - tt = time.Now() - t.Logf("3: %v\n", time.Since(tt)) t.Cleanup(func() { smtIncrementalDb.Close() smtBulkDb.Close() diff --git a/smt/pkg/smt/smt_create.go b/smt/pkg/smt/smt_create.go index da017b96d82..325aca5e998 100644 --- a/smt/pkg/smt/smt_create.go +++ b/smt/pkg/smt/smt_create.go @@ -35,10 +35,7 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys defer s.clearUpMutex.Unlock() log.Info(fmt.Sprintf("[%s] Building temp binary tree started", logPrefix)) - - totalKeysCount := len(nodeKeys) - - log.Info(fmt.Sprintf("[%s] Total values to insert: %d", logPrefix, totalKeysCount)) + log.Info(fmt.Sprintf("[%s] Total values to insert: %d", logPrefix, len(nodeKeys))) log.Info(fmt.Sprintf("[%s] Sorting keys...", logPrefix)) sortStartTime := time.Now() @@ -49,6 +46,86 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys sortTotalTime := time.Since(sortStartTime) log.Info(fmt.Sprintf("[%s] Keys sorted in %v", logPrefix, sortTotalTime)) + wg := sync.WaitGroup{} + wg.Add(2) + + deletesWorker := utils.NewWorker(ctx, "smt_save_finished", 1<<16) + + // start a worker to delete finished parts of the tree and return values to save to the db + go func() { + defer wg.Done() + deletesWorker.DoWork() + }() + + var buildSmtLoopErr error + var rootNode *SmtNode + tempTreeBuildStart := time.Now() + leafValueMap := sync.Map{} + accountValuesReadChan := make(chan *utils.NodeValue8, 1024) + go func() { + defer wg.Done() + defer deletesWorker.Stop() + rootNode, buildSmtLoopErr = runBuildSmtLoop(s, logPrefix, nodeKeys, &leafValueMap, deletesWorker, accountValuesReadChan) + }() + + // startBuildSmtLoopDbCompanionLoop is blocking operation. It continue only when the last result is saved + if err := startBuildSmtLoopDbCompanionLoop(s, nodeKeys, deletesWorker.GetJobResultsChannel(), accountValuesReadChan); err != nil { + return [4]uint64{}, err + } + + // by the time the code goes to here the runBuildSmtLoop as finished and everything has been stored in the db + // => the .Wait here ensure that current thread will see the memory written by deleteWorkers' thread and runBuildSmtLoop's thread + wg.Wait() + + if buildSmtLoopErr != nil { + return [4]uint64{}, buildSmtLoopErr + } + + tempTreeBuildTime := time.Since(tempTreeBuildStart) + log.Info(fmt.Sprintf("[%s] Finished the temp tree build in %v, hashing and saving the result...", logPrefix, tempTreeBuildTime)) + + //special case where no values were inserted + if rootNode.isLeaf() { + return [4]uint64{}, nil + } + + //if the root node has only one branch, that branch should become the root node + var pathToDeleteFrom []int + if len(nodeKeys) == 1 { + if rootNode.node1 == nil { + rootNode = rootNode.node0 + pathToDeleteFrom = append(pathToDeleteFrom, 0) + } else if rootNode.node0 == nil && utils.IsArrayUint64Empty(rootNode.leftHash[:]) { + rootNode = rootNode.node1 + pathToDeleteFrom = append(pathToDeleteFrom, 1) + } + } + + //if the branch is a leaf, the rkey is the whole key + if rootNode.isLeaf() { + newRkey := []int{pathToDeleteFrom[0]} + pathToDeleteFrom = []int{} + newRkey = append(newRkey, rootNode.rKey...) + rootNode.rKey = newRkey + } + + finalRoot, err := rootNode.deleteTree(pathToDeleteFrom, s, &leafValueMap) + if err != nil { + return [4]uint64{}, err + } + + if err := s.setLastRoot(finalRoot); err != nil { + return [4]uint64{}, err + } + + return finalRoot, nil +} + +func runBuildSmtLoop(s *SMT, logPrefix string, nodeKeys []utils.NodeKey, leafValueMap *sync.Map, deletesWorker *utils.Worker, accountValuesReadChan <-chan *utils.NodeValue8) (*SmtNode, error) { + totalKeysCount := len(nodeKeys) + insertedKeysCount := uint64(0) + maxReachedLevel := 0 + rootNode := SmtNode{ leftHash: [4]uint64{}, node0: nil, @@ -60,32 +137,15 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys defer stopProgressPrinter() progressChan <- uint64(totalKeysCount) - insertedKeysCount := uint64(0) - - maxReachedLevel := 0 - - deletesWorker := utils.NewWorker(ctx, "smt_save_finished", 5) - - // start a worker to delete finished parts of the tree and return values to save to the db - wg := sync.WaitGroup{} - wg.Add(1) - go func() { - deletesWorker.DoWork() - wg.Done() - }() - - tempTreeBuildStart := time.Now() - leafValueMap := sync.Map{} - - var err error for _, k := range nodeKeys { // split the key keys := k.GetPath() - v, err := s.Db.GetAccountValue(k) - if err != nil { - return [4]uint64{}, err + vPointer := <-accountValuesReadChan + if vPointer == nil { + return nil, fmt.Errorf("the actual error is returned by main DB thread") } - leafValueMap.Store(k, v) + v := *vPointer + leafValueMap.Store(k, &v) // find last node siblings, level := rootNode.findLastNode(keys) @@ -136,7 +196,7 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys //sanity check - new leaf should be on the right side //otherwise something went wrong if leaf0.rKey[level2] != 0 || keys[level2+level] != 1 { - return [4]uint64{}, fmt.Errorf( + return nil, fmt.Errorf( "leaf insert error. new leaf should be on the right of the old, oldLeaf: %v, newLeaf: %v", append(keys[:level+1], leaf0.rKey[level2:]...), keys, @@ -159,7 +219,7 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys jobResult := utils.NewCalcAndPrepareJobResult(s.Db) //hash, save and delete left leaf deleteFunc := func() utils.JobResult { - leftHash, err := nodeToDelFrom.node0.deleteTreeNoSave(pathToDeleteFrom, &leafValueMap, jobResult.KvMap, jobResult.LeafsKvMap) + leftHash, err := nodeToDelFrom.node0.deleteTreeNoSave(pathToDeleteFrom, leafValueMap, jobResult.KvMap, jobResult.LeafsKvMap) if err != nil { jobResult.Err = err return jobResult @@ -198,7 +258,7 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys // this is case for 1 leaf inserted to the left of the root node if len(siblings) == 0 && keys[0] == 0 { if upperNode.node0 != nil { - return [4]uint64{}, fmt.Errorf("tried to override left node") + return nil, fmt.Errorf("tried to override left node") } upperNode.node0 = newNode } else { @@ -207,7 +267,7 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys //the new leaf should be on the right side //otherwise something went wrong if upperNode.node1 != nil || keys[level] != 1 { - return [4]uint64{}, fmt.Errorf( + return nil, fmt.Errorf( "leaf insert error. new should be on the right of the found node, foundNode: %v, newLeafKey: %v", upperNode.node1, keys, @@ -228,7 +288,7 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys // get all leaf keys so we can then get all needed values and pass them // this is needed because w can't read from the db in another routine deleteFunc := func() utils.JobResult { - leftHash, err := nodeToDelFrom.node0.deleteTreeNoSave(pathToDeleteFrom, &leafValueMap, jobResult.KvMap, jobResult.LeafsKvMap) + leftHash, err := nodeToDelFrom.node0.deleteTreeNoSave(pathToDeleteFrom, leafValueMap, jobResult.KvMap, jobResult.LeafsKvMap) if err != nil { jobResult.Err = err @@ -248,79 +308,47 @@ func (s *SMT) GenerateFromKVBulk(ctx context.Context, logPrefix string, nodeKeys } } - if err := runSaveLoop(deletesWorker.GetJobResultsChannel()); err != nil { - return [4]uint64{}, err - } - insertedKeysCount++ progressChan <- uint64(totalKeysCount) + insertedKeysCount } - deletesWorker.Stop() - - wg.Wait() - - // wait and save all jobs - if err := runSaveLoop(deletesWorker.GetJobResultsChannel()); err != nil { - return [4]uint64{}, err - } s.updateDepth(maxReachedLevel) - tempTreeBuildTime := time.Since(tempTreeBuildStart) - - log.Info(fmt.Sprintf("[%s] Finished the temp tree build in %v, hashing and saving the result...", logPrefix, tempTreeBuildTime)) - - //special case where no values were inserted - if rootNode.isLeaf() { - return [4]uint64{}, nil - } - - //if the root node has only one branch, that branch should become the root node - var pathToDeleteFrom []int - if len(nodeKeys) == 1 { - if rootNode.node1 == nil { - rootNode = *rootNode.node0 - pathToDeleteFrom = append(pathToDeleteFrom, 0) - } else if rootNode.node0 == nil && utils.IsArrayUint64Empty(rootNode.leftHash[:]) { - rootNode = *rootNode.node1 - pathToDeleteFrom = append(pathToDeleteFrom, 1) - } - } - - //if the branch is a leaf, the rkey is the whole key - if rootNode.isLeaf() { - newRkey := []int{pathToDeleteFrom[0]} - pathToDeleteFrom = []int{} - newRkey = append(newRkey, rootNode.rKey...) - rootNode.rKey = newRkey - } - - finalRoot, err := rootNode.deleteTree(pathToDeleteFrom, s, &leafValueMap) - if err != nil { - return [4]uint64{}, err - } - - if err := s.setLastRoot(finalRoot); err != nil { - return [4]uint64{}, err - } - - return finalRoot, nil + return &rootNode, nil } -func runSaveLoop(jobResultsChannel chan utils.JobResult) error { - for { - select { - case result := <-jobResultsChannel: - if result.GetError() != nil { - return result.GetError() - } +func startBuildSmtLoopDbCompanionLoop(s *SMT, nodeKeys []utils.NodeKey, jobResultsChannel chan utils.JobResult, accountValuesReadChan chan *utils.NodeValue8) error { + lastReadAccountValueIndex := 0 + totalKeys := len(nodeKeys) - if err := result.Save(); err != nil { + for { + accountValuesReadChanSize := len(accountValuesReadChan) + readSize := 1024 - accountValuesReadChanSize + readLimit := lastReadAccountValueIndex + readSize + if readLimit > totalKeys { + readLimit = totalKeys + } + for ; lastReadAccountValueIndex < readLimit; lastReadAccountValueIndex++ { + v, err := s.Db.GetAccountValue(nodeKeys[lastReadAccountValueIndex]) + if err != nil { + accountValuesReadChan <- nil return err } - default: + accountValuesReadChan <- &v + } + + result, ok := <-jobResultsChannel + if !ok { return nil } + + if result.GetError() != nil { + return result.GetError() + } + + if err := result.Save(); err != nil { + return err + } } } @@ -381,19 +409,16 @@ func (n *SmtNode) deleteTreeNoSave(keyPath []int, leafValueMap *sync.Map, kvMapO if !ok { return [4]uint64{}, fmt.Errorf("value not found for key %v", k) } - accoutnValue := v.(utils.NodeValue8) + accoutnValue := v.(*utils.NodeValue8) newKey := utils.RemoveKeyBits(k, len(keyPath)) //hash and save leaf - newValH, newValHV, newLeafHash, newLeafHashV, err := createNewLeafNoSave(newKey, &accoutnValue) - if err != nil { - return [4]uint64{}, err - } - kvMapOfValuesToSave[newValH] = newValHV - kvMapOfValuesToSave[newLeafHash] = newLeafHashV - kvMapOfLeafValuesToSave[newLeafHash] = k + newValH, newValHV, newLeafHash, newLeafHashV := createNewLeafNoSave(&newKey, accoutnValue) + kvMapOfValuesToSave[*newValH] = *newValHV + kvMapOfValuesToSave[*newLeafHash] = *newLeafHashV + kvMapOfLeafValuesToSave[*newLeafHash] = k - return newLeafHash, nil + return *newLeafHash, nil } var totalHash utils.NodeValue8 @@ -425,14 +450,10 @@ func (n *SmtNode) deleteTreeNoSave(keyPath []int, leafValueMap *sync.Map, kvMapO totalHash.SetHalfValue(n.leftHash, 0) - newRoot, v, err := hashCalcAndPrepareForSave(totalHash.ToUintArray(), utils.BranchCapacity) - if err != nil { - return [4]uint64{}, err - } - - kvMapOfValuesToSave[newRoot] = v + newRoot, v := utils.HashKeyAndValueByPointers(totalHash.ToUintArrayByPointer(), &utils.BranchCapacity) + kvMapOfValuesToSave[*newRoot] = *v - return newRoot, nil + return *newRoot, nil } func (n *SmtNode) deleteTree(keyPath []int, s *SMT, leafValueMap *sync.Map) (newRoot [4]uint64, err error) { @@ -447,17 +468,9 @@ func (n *SmtNode) deleteTree(keyPath []int, s *SMT, leafValueMap *sync.Map) (new return newRoot, nil } -func createNewLeafNoSave(rkey utils.NodeKey, v *utils.NodeValue8) (newValH [4]uint64, newValHV utils.NodeValue12, newLeafHash [4]uint64, newLeafHashV utils.NodeValue12, err error) { +func createNewLeafNoSave(rkey *utils.NodeKey, v *utils.NodeValue8) (newValH *[4]uint64, newValHV *utils.NodeValue12, newLeafHash *[4]uint64, newLeafHashV *utils.NodeValue12) { //hash and save leaf - newValH, newValHV, err = hashCalcAndPrepareForSave(v.ToUintArray(), utils.BranchCapacity) - if err != nil { - return [4]uint64{}, utils.NodeValue12{}, [4]uint64{}, utils.NodeValue12{}, err - } - - newLeafHash, newLeafHashV, err = hashCalcAndPrepareForSave(utils.ConcatArrays4(rkey, newValH), utils.LeafCapacity) - if err != nil { - return [4]uint64{}, utils.NodeValue12{}, [4]uint64{}, utils.NodeValue12{}, err - } - - return newValH, newValHV, newLeafHash, newLeafHashV, nil + newValH, newValHV = utils.HashKeyAndValueByPointers(v.ToUintArrayByPointer(), &utils.BranchCapacity) + newLeafHash, newLeafHashV = utils.HashKeyAndValueByPointers(utils.ConcatArrays4ByPointers(rkey.AsUint64Pointer(), newValH), &utils.LeafCapacity) + return newValH, newValHV, newLeafHash, newLeafHashV } diff --git a/smt/pkg/utils/job_queue.go b/smt/pkg/utils/job_queue.go index 4d246df4d98..606da90a915 100644 --- a/smt/pkg/utils/job_queue.go +++ b/smt/pkg/utils/job_queue.go @@ -3,7 +3,6 @@ package utils import ( "context" "sync/atomic" - "time" ) type DB interface { @@ -78,25 +77,24 @@ func (w *Worker) GetJobResultsChannel() chan JobResult { } func (w *Worker) Stop() { - w.stopped.Store(true) + close(w.jobs) } // DoWork processes jobs from the queue (jobs channel). func (w *Worker) DoWork() { -LOOP: + defer close(w.jobResults) + for { select { case <-w.ctx.Done(): - break LOOP - // if job received. - case job := <-w.jobs: + return + case job, ok := <-w.jobs: + if !ok { + return + } + jobRes := job() w.jobResults <- jobRes - default: - if w.stopped.Load() { - break LOOP - } - time.Sleep(1 * time.Millisecond) } } } diff --git a/smt/pkg/utils/utils.go b/smt/pkg/utils/utils.go index 909e0c87b13..5c25793475b 100644 --- a/smt/pkg/utils/utils.go +++ b/smt/pkg/utils/utils.go @@ -56,6 +56,12 @@ func Hash(in [8]uint64, capacity [4]uint64) [4]uint64 { return result } +func HashByPointers(in *[8]uint64, capacity *[4]uint64) *[4]uint64 { + var result [4]uint64 = [4]uint64{0, 0, 0, 0} + hashFunc(in, capacity, &result) + return &result +} + func (nk *NodeKey) IsZero() bool { return nk[0] == 0 && nk[1] == 0 && nk[2] == 0 && nk[3] == 0 } @@ -68,6 +74,10 @@ func (nk *NodeKey) ToBigInt() *big.Int { return ArrayToScalar(nk[:]) } +func (nk *NodeKey) AsUint64Pointer() *[4]uint64 { + return (*[4]uint64)(nk) +} + func (nv *NodeValue8) IsZero() bool { if nv == nil { return true @@ -114,6 +124,22 @@ func (nv *NodeValue8) ToUintArray() [8]uint64 { return result } +func (nv *NodeValue8) ToUintArrayByPointer() *[8]uint64 { + var result [8]uint64 + + if nv != nil { + for i := 0; i < 8; i++ { + if nv[i] != nil { + result[i] = nv[i].Uint64() + } + // if nv[i] is nil, result[i] will remain as its zero value (0) + } + } + // if nv is nil, result will be an array of 8 zeros + + return &result +} + func (nv *NodeValue12) ToBigInt() *big.Int { return ArrayToScalarBig(nv[:]) } @@ -411,18 +437,28 @@ func ConcatArrays4(a, b [4]uint64) [8]uint64 { return result } -func ConcatArrays8AndCapacity(in [8]uint64, capacity [4]uint64) NodeValue12 { - var sl []uint64 - sl = append(sl, in[:]...) - sl = append(sl, capacity[:]...) +func ConcatArrays4ByPointers(a, b *[4]uint64) *[8]uint64 { + return &[8]uint64{ + a[0], a[1], a[2], a[3], + b[0], b[1], b[2], b[3], + } +} +func ConcatArrays8AndCapacityByPointers(in *[8]uint64, capacity *[4]uint64) *NodeValue12 { v := NodeValue12{} - for i, val := range sl { - b := new(big.Int) - v[i] = b.SetUint64(val) + for i, val := range in { + v[i] = new(big.Int).SetUint64(val) } + for i, val := range capacity { + v[i+8] = new(big.Int).SetUint64(val) + } + + return &v +} - return v +func HashKeyAndValueByPointers(in *[8]uint64, capacity *[4]uint64) (*[4]uint64, *NodeValue12) { + h := HashByPointers(in, capacity) + return h, ConcatArrays8AndCapacityByPointers(in, capacity) } func RemoveKeyBits(k NodeKey, nBits int) NodeKey { diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index f4c744a55b6..eb538b30741 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -67,6 +67,8 @@ var DefaultFlags = []cli.Flag{ &utils.HTTPApiFlag, &utils.WSPortFlag, &utils.WSEnabledFlag, + &utils.WSListenAddrFlag, + &utils.WSApiFlag, &utils.WsCompressionFlag, &utils.HTTPTraceFlag, &utils.HTTPDebugSingleFlag, @@ -229,7 +231,6 @@ var DefaultFlags = []cli.Flag{ &utils.DataStreamInactivityCheckInterval, &utils.WitnessFullFlag, &utils.SyncLimit, - &utils.SupportGasless, &utils.ExecutorPayloadOutput, &utils.DebugTimers, &utils.DebugNoSync, diff --git a/turbo/cli/flags.go b/turbo/cli/flags.go index 08f450151be..4f809f77b95 100644 --- a/turbo/cli/flags.go +++ b/turbo/cli/flags.go @@ -2,6 +2,7 @@ package cli import ( "fmt" + "strings" "time" "github.com/ledgerwatch/erigon-lib/common/hexutil" @@ -440,6 +441,11 @@ func setEmbeddedRpcDaemon(ctx *cli.Context, cfg *nodecfg.Config, logger log.Logg apis := ctx.String(utils.HTTPApiFlag.Name) + wsEnabled := ctx.IsSet(utils.WSEnabledFlag.Name) + wsApis := strings.Split(ctx.String(utils.WSApiFlag.Name), ",") + if wsEnabled { + log.Info("starting WS APIs", "APIs", wsApis) + } c := &httpcfg.HttpCfg{ Enabled: func() bool { if ctx.IsSet(utils.HTTPEnabledFlag.Name) { @@ -496,7 +502,9 @@ func setEmbeddedRpcDaemon(ctx *cli.Context, cfg *nodecfg.Config, logger log.Logg AllowUnprotectedTxs: ctx.Bool(utils.AllowUnprotectedTxs.Name), MaxGetProofRewindBlockCount: ctx.Int(utils.RpcMaxGetProofRewindBlockCount.Name), - OtsMaxPageSize: ctx.Uint64(utils.OtsSearchMaxCapFlag.Name), + WebSocketListenAddress: ctx.String(utils.WSListenAddrFlag.Name), + WebsocketCORSDomain: strings.Split(ctx.String(utils.WSAllowedOriginsFlag.Name), ","), + WebSocketApi: wsApis, TxPoolApiAddr: ctx.String(utils.TxpoolApiAddrFlag.Name), diff --git a/turbo/cli/flags_zkevm.go b/turbo/cli/flags_zkevm.go index e33d68515e1..af7d35fab5c 100644 --- a/turbo/cli/flags_zkevm.go +++ b/turbo/cli/flags_zkevm.go @@ -16,6 +16,10 @@ import ( "github.com/urfave/cli/v2" ) +var DeprecatedFlags = map[string]string{ + "zkevm.gasless": "zkevm.allow-free-transactions", +} + func ApplyFlagsForZkConfig(ctx *cli.Context, cfg *ethconfig.Config) { checkFlag := func(flagName string, value interface{}) { switch v := value.(type) { @@ -163,7 +167,6 @@ func ApplyFlagsForZkConfig(ctx *cli.Context, cfg *ethconfig.Config) { GasPriceFactor: ctx.Float64(utils.GasPriceFactor.Name), WitnessFull: ctx.Bool(utils.WitnessFullFlag.Name), SyncLimit: ctx.Uint64(utils.SyncLimit.Name), - Gasless: ctx.Bool(utils.SupportGasless.Name), DebugTimers: ctx.Bool(utils.DebugTimers.Name), DebugNoSync: ctx.Bool(utils.DebugNoSync.Name), DebugLimit: ctx.Uint64(utils.DebugLimit.Name), diff --git a/turbo/jsonrpc/daemon.go b/turbo/jsonrpc/daemon.go index 953a65adb98..64ea2b07ad9 100644 --- a/turbo/jsonrpc/daemon.go +++ b/turbo/jsonrpc/daemon.go @@ -41,7 +41,7 @@ func APIList(db kv.RoDB, eth rpchelper.ApiBackend, txPool txpool.TxpoolClient, r erigonImpl := NewErigonAPI(base, db, eth) txpoolImpl := NewTxPoolAPI(base, db, txPool, rawPool, rpcUrl) netImpl := NewNetAPIImpl(eth) - debugImpl := NewPrivateDebugAPI(base, db, cfg.Gascap) + debugImpl := NewPrivateDebugAPI(base, db, cfg.Gascap, ethCfg) traceImpl := NewTraceAPI(base, db, cfg) web3Impl := NewWeb3APIImpl(eth) dbImpl := NewDBAPIImpl() /* deprecated */ diff --git a/turbo/jsonrpc/debug_api.go b/turbo/jsonrpc/debug_api.go index 84ecc677e54..5205a8bc462 100644 --- a/turbo/jsonrpc/debug_api.go +++ b/turbo/jsonrpc/debug_api.go @@ -17,6 +17,7 @@ import ( "github.com/ledgerwatch/erigon/core/rawdb" "github.com/ledgerwatch/erigon/core/state" "github.com/ledgerwatch/erigon/core/types/accounts" + "github.com/ledgerwatch/erigon/eth/ethconfig" "github.com/ledgerwatch/erigon/eth/stagedsync/stages" "github.com/ledgerwatch/erigon/eth/tracers" "github.com/ledgerwatch/erigon/rlp" @@ -42,6 +43,7 @@ type PrivateDebugAPI interface { AccountAt(ctx context.Context, blockHash common.Hash, txIndex uint64, account common.Address) (*AccountResult, error) GetRawHeader(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (hexutility.Bytes, error) GetRawBlock(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (hexutility.Bytes, error) + TraceTransactionCounters(ctx context.Context, hash common.Hash, config *tracers.TraceConfig_ZkEvm, stream *jsoniter.Stream) error } // PrivateDebugAPIImpl is implementation of the PrivateDebugAPI interface based on remote Db access @@ -49,14 +51,16 @@ type PrivateDebugAPIImpl struct { *BaseAPI db kv.RoDB GasCap uint64 + config *ethconfig.Config } // NewPrivateDebugAPI returns PrivateDebugAPIImpl instance -func NewPrivateDebugAPI(base *BaseAPI, db kv.RoDB, gascap uint64) *PrivateDebugAPIImpl { +func NewPrivateDebugAPI(base *BaseAPI, db kv.RoDB, gascap uint64, config *ethconfig.Config) *PrivateDebugAPIImpl { return &PrivateDebugAPIImpl{ BaseAPI: base, db: db, GasCap: gascap, + config: config, } } diff --git a/turbo/jsonrpc/eth_call.go b/turbo/jsonrpc/eth_call.go index 28e5d6fb44b..6581143c0d5 100644 --- a/turbo/jsonrpc/eth_call.go +++ b/turbo/jsonrpc/eth_call.go @@ -385,7 +385,7 @@ func (api *APIImpl) GetProof(ctx context.Context, address libcommon.Address, sto return nil, err } if a == nil { - a = &accounts.Account{} + return nil, nil } pr, err := trie.NewProofRetainer(address, a, storageKeys, rl) if err != nil { diff --git a/turbo/jsonrpc/tracing_zkevm.go b/turbo/jsonrpc/tracing_zkevm.go index 3abc2672af2..3a0a2dd69fe 100644 --- a/turbo/jsonrpc/tracing_zkevm.go +++ b/turbo/jsonrpc/tracing_zkevm.go @@ -105,6 +105,9 @@ func (api *PrivateDebugAPIImpl) traceBlock(ctx context.Context, blockNrOrHash rp for idx, txn := range txns { stream.WriteObjectStart() + stream.WriteObjectField("txHash") + stream.WriteString(txn.Hash().Hex()) + stream.WriteMore() stream.WriteObjectField("result") select { default: @@ -351,3 +354,118 @@ func (api *PrivateDebugAPIImpl) TraceCallMany(ctx context.Context, bundles []Bun stream.WriteArrayEnd() return nil } + +// TraceTransaction implements debug_traceTransaction. Returns Geth style transaction traces. +func (api *PrivateDebugAPIImpl) TraceTransactionCounters(ctx context.Context, hash common.Hash, config *tracers.TraceConfig_ZkEvm, stream *jsoniter.Stream) error { + tx, err := api.db.BeginRo(ctx) + if err != nil { + stream.WriteNil() + return err + } + defer tx.Rollback() + chainConfig, err := api.chainConfig(ctx, tx) + if err != nil { + stream.WriteNil() + return err + } + // Retrieve the transaction and assemble its EVM context + blockNum, ok, err := api.txnLookup(ctx, tx, hash) + if err != nil { + stream.WriteNil() + return err + } + if !ok { + stream.WriteNil() + return nil + } + + // check pruning to ensure we have history at this block level + if err = api.BaseAPI.checkPruneHistory(tx, blockNum); err != nil { + stream.WriteNil() + return err + } + + // Private API returns 0 if transaction is not found. + if blockNum == 0 && chainConfig.Bor != nil { + blockNumPtr, err := rawdb.ReadBorTxLookupEntry(tx, hash) + if err != nil { + stream.WriteNil() + return err + } + if blockNumPtr == nil { + stream.WriteNil() + return nil + } + blockNum = *blockNumPtr + } + block, err := api.blockByNumberWithSenders(ctx, tx, blockNum) + if err != nil { + stream.WriteNil() + return err + } + if block == nil { + stream.WriteNil() + return nil + } + var txnIndex uint64 + var txn types.Transaction + for i, transaction := range block.Transactions() { + if transaction.Hash() == hash { + txnIndex = uint64(i) + txn = transaction + break + } + } + if txn == nil { + borTx := rawdb.ReadBorTransactionForBlock(tx, blockNum) + if err != nil { + stream.WriteNil() + return err + } + + if borTx != nil { + stream.WriteNil() + return nil + } + stream.WriteNil() + return fmt.Errorf("transaction %#x not found", hash) + } + engine := api.engine() + + txEnv, err := transactions.ComputeTxEnv_ZkEvm(ctx, engine, block, chainConfig, api._blockReader, tx, int(txnIndex), api.historyV3(tx)) + if err != nil { + stream.WriteNil() + return err + } + + // counters work + hermezDb := hermez_db.NewHermezDbReader(tx) + forkId, err := hermezDb.GetForkIdByBlockNum(blockNum) + if err != nil { + stream.WriteNil() + return err + } + + smtDepth, err := getSmtDepth(hermezDb, blockNum, config) + if err != nil { + stream.WriteNil() + return err + } + + txCounters := vm.NewTransactionCounter(txn, int(smtDepth), uint16(forkId), api.config.Zk.VirtualCountersSmtReduction, false) + batchCounters := vm.NewBatchCounterCollector(int(smtDepth), uint16(forkId), api.config.Zk.VirtualCountersSmtReduction, false, nil) + + if _, err = batchCounters.AddNewTransactionCounters(txCounters); err != nil { + stream.WriteNil() + return err + } + + // set tracer to counter tracer + if config == nil { + config = &tracers.TraceConfig_ZkEvm{} + } + config.CounterCollector = txCounters + + // Trace the transaction and return + return transactions.TraceTx(ctx, txEnv.Msg, txEnv.BlockContext, txEnv.TxContext, txEnv.Ibs, config, chainConfig, stream, api.evmCallTimeout) +} diff --git a/turbo/jsonrpc/zkevm_api.go b/turbo/jsonrpc/zkevm_api.go index 0a341686a5f..d56dad3c0b8 100644 --- a/turbo/jsonrpc/zkevm_api.go +++ b/turbo/jsonrpc/zkevm_api.go @@ -7,12 +7,14 @@ import ( "fmt" "math/big" - jsoniter "github.com/json-iterator/go" "github.com/ledgerwatch/erigon-lib/chain" "github.com/ledgerwatch/erigon-lib/common" libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/common/hexutility" "github.com/ledgerwatch/erigon-lib/kv" + "github.com/ledgerwatch/log/v3" + + zktypes "github.com/ledgerwatch/erigon/zk/types" "github.com/holiman/uint256" "github.com/ledgerwatch/erigon-lib/common/hexutil" @@ -25,7 +27,6 @@ import ( "github.com/ledgerwatch/erigon/eth/ethconfig" "github.com/ledgerwatch/erigon/eth/stagedsync" "github.com/ledgerwatch/erigon/eth/stagedsync/stages" - "github.com/ledgerwatch/erigon/eth/tracers" "github.com/ledgerwatch/erigon/rpc" smtDb "github.com/ledgerwatch/erigon/smt/pkg/db" smt "github.com/ledgerwatch/erigon/smt/pkg/smt" @@ -43,7 +44,6 @@ import ( "github.com/ledgerwatch/erigon/zk/witness" "github.com/ledgerwatch/erigon/zkevm/hex" "github.com/ledgerwatch/erigon/zkevm/jsonrpc/client" - "github.com/ledgerwatch/log/v3" ) var sha3UncleHash = common.HexToHash("0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347") @@ -69,7 +69,6 @@ type ZkEvmAPI interface { GetExitRootsByGER(ctx context.Context, globalExitRoot common.Hash) (*ZkExitRoots, error) GetL2BlockInfoTree(ctx context.Context, blockNum rpc.BlockNumberOrHash) (json.RawMessage, error) EstimateCounters(ctx context.Context, argsOrNil *zkevmRPCTransaction) (json.RawMessage, error) - TraceTransactionCounters(ctx context.Context, hash common.Hash, config *tracers.TraceConfig_ZkEvm, stream *jsoniter.Stream) error GetBatchCountersByNumber(ctx context.Context, batchNumRpc rpc.BlockNumber) (res json.RawMessage, err error) GetExitRootTable(ctx context.Context) ([]l1InfoTreeData, error) GetVersionHistory(ctx context.Context) (json.RawMessage, error) @@ -459,7 +458,6 @@ func (api *ZkEvmAPIImpl) GetBatchByNumber(ctx context.Context, batchNumber rpc.B } defer tx.Rollback() hermezDb := hermez_db.NewHermezDbReader(tx) - // use inbuilt rpc.BlockNumber type to implement the 'latest' behaviour // the highest block/batch is tied to last block synced // unless the node is still syncing - in which case 'current block' is used @@ -700,13 +698,16 @@ func (api *ZkEvmAPIImpl) GetBatchByNumber(ctx context.Context, batchNumber rpc.B batch.BatchL2Data = batchL2Data if api.l1Syncer != nil { - oldAccInputHash, err := api.l1Syncer.GetOldAccInputHash(ctx, &api.config.AddressRollup, api.config.L1RollupId, batchNo) + accInputHash, err := api.getAccInputHash(ctx, hermezDb, batchNo) if err != nil { - log.Warn("Failed to get old acc input hash", "err", err) - batch.AccInputHash = common.Hash{} + log.Error(fmt.Sprintf("failed to get acc input hash for batch %d: %v", batchNo, err)) } - batch.AccInputHash = oldAccInputHash + if accInputHash == nil { + accInputHash = &common.Hash{} + } + batch.AccInputHash = *accInputHash } + // forkid exit roots logic // if forkid < 12 then we should only set the exit roots if they have changed, otherwise 0x00..00 // if forkid >= 12 then we should always set the exit roots @@ -732,6 +733,81 @@ func (api *ZkEvmAPIImpl) GetBatchByNumber(ctx context.Context, batchNumber rpc.B return populateBatchDetails(batch) } +type SequenceReader interface { + GetRangeSequencesByBatch(batchNo uint64) (*zktypes.L1BatchInfo, *zktypes.L1BatchInfo, error) + GetForkId(batchNo uint64) (uint64, error) +} + +func (api *ZkEvmAPIImpl) getAccInputHash(ctx context.Context, db SequenceReader, batchNum uint64) (accInputHash *common.Hash, err error) { + // get batch sequence + prevSequence, batchSequence, err := db.GetRangeSequencesByBatch(batchNum) + if err != nil { + return nil, fmt.Errorf("failed to get sequence range data for batch %d: %w", batchNum, err) + } + + if prevSequence == nil || batchSequence == nil { + return nil, fmt.Errorf("failed to get sequence data for batch %d", batchNum) + } + + // get batch range for sequence + prevSequenceBatch, currentSequenceBatch := prevSequence.BatchNo, batchSequence.BatchNo + // get call data for tx + l1Transaction, _, err := api.l1Syncer.GetTransaction(batchSequence.L1TxHash) + if err != nil { + return nil, fmt.Errorf("failed to get transaction data for tx %s: %w", batchSequence.L1TxHash, err) + } + sequenceBatchesCalldata := l1Transaction.GetData() + if len(sequenceBatchesCalldata) < 10 { + return nil, fmt.Errorf("calldata for tx %s is too short", batchSequence.L1TxHash) + } + + currentBatchForkId, err := db.GetForkId(currentSequenceBatch) + if err != nil { + return nil, fmt.Errorf("failed to get fork id for batch %d: %w", currentSequenceBatch, err) + } + + prevSequenceAccinputHash, err := api.GetccInputHash(ctx, currentBatchForkId, prevSequenceBatch) + if err != nil { + return nil, fmt.Errorf("failed to get old acc input hash for batch %d: %w", prevSequenceBatch, err) + } + + decodedSequenceInteerface, err := syncer.DecodeSequenceBatchesCalldata(sequenceBatchesCalldata) + if err != nil { + return nil, fmt.Errorf("failed to decode calldata for tx %s: %w", batchSequence.L1TxHash, err) + } + + accInputHashCalcFn, totalSequenceBatches, err := syncer.GetAccInputDataCalcFunction(batchSequence.L1InfoRoot, decodedSequenceInteerface) + if err != nil { + return nil, fmt.Errorf("failed to get accInputHash calculation func: %w", err) + } + + if totalSequenceBatches == 0 || batchNum-prevSequenceBatch > uint64(totalSequenceBatches) { + return nil, fmt.Errorf("batch %d is out of range of sequence calldata", batchNum) + } + + accInputHash = &prevSequenceAccinputHash + // calculate acc input hash + for i := 0; i < int(batchNum-prevSequenceBatch); i++ { + accInputHash = accInputHashCalcFn(prevSequenceAccinputHash, i) + } + + return +} + +func (api *ZkEvmAPIImpl) GetccInputHash(ctx context.Context, currentBatchForkId, lastSequenceBatchNumber uint64) (accInputHash common.Hash, err error) { + if currentBatchForkId < uint64(chain.ForkID8Elderberry) { + accInputHash, err = api.l1Syncer.GetPreElderberryAccInputHash(ctx, &api.config.AddressRollup, lastSequenceBatchNumber) + } else { + accInputHash, err = api.l1Syncer.GetElderberryAccInputHash(ctx, &api.config.AddressRollup, api.config.L1RollupId, lastSequenceBatchNumber) + } + + if err != nil { + err = fmt.Errorf("failed to get accInputHash batch %d: %w", lastSequenceBatchNumber, err) + } + + return +} + // GetFullBlockByNumber returns a full block from the current canonical chain. If number is nil, the // latest known block is returned. func (api *ZkEvmAPIImpl) GetFullBlockByNumber(ctx context.Context, number rpc.BlockNumber, fullTx bool) (types.Block, error) { @@ -1072,9 +1148,15 @@ func (api *ZkEvmAPIImpl) GetProverInput(ctx context.Context, batchNumber uint64, return nil, err } - oldAccInputHash, err := api.l1Syncer.GetOldAccInputHash(ctx, &api.config.AddressRollup, api.config.L1RollupId, batchNumber) - if err != nil { - return nil, err + var oldAccInputHash common.Hash + if batchNumber > 0 { + oaih, err := api.getAccInputHash(ctx, hDb, batchNumber-1) + if err != nil { + return nil, err + } + oldAccInputHash = *oaih + } else { + oldAccInputHash = common.Hash{} } timestampLimit := lastBlock.Time() diff --git a/turbo/jsonrpc/zkevm_api_test.go b/turbo/jsonrpc/zkevm_api_test.go index d80d537bf3a..d10dcea61a4 100644 --- a/turbo/jsonrpc/zkevm_api_test.go +++ b/turbo/jsonrpc/zkevm_api_test.go @@ -168,7 +168,7 @@ func TestIsBlockVirtualized(t *testing.T) { err = hDB.WriteBlockBatch(uint64(i+30), 4) assert.NoError(err) } - err = hDB.WriteSequence(1, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(1, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) tx.Commit() for i := 1; i <= 40; i++ { @@ -261,9 +261,9 @@ func TestBatchNumber(t *testing.T) { err := hDB.WriteBlockBatch(uint64(i), uint64(i)) assert.NoError(err) } - err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1")) + err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1"), common.HexToHash("0x0")) assert.NoError(err) for i := 1; i <= 4; i++ { err = stages.SaveStageProgress(tx, stages.L1VerificationsBatchNo, uint64(i)) @@ -298,9 +298,9 @@ func TestVirtualBatchNumber(t *testing.T) { err := hDB.WriteBlockBatch(uint64(i), uint64(i)) assert.NoError(err) } - err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1")) + err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1"), common.HexToHash("0x0")) assert.NoError(err) for i := 1; i <= 4; i++ { err = stages.SaveStageProgress(tx, stages.L1VerificationsBatchNo, uint64(i)) @@ -335,9 +335,9 @@ func TestVerifiedBatchNumber(t *testing.T) { err := hDB.WriteBlockBatch(uint64(i), uint64(i)) assert.NoError(err) } - err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1")) + err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1"), common.HexToHash("0x0")) assert.NoError(err) for i := 1; i <= 4; i++ { err = stages.SaveStageProgress(tx, stages.L1VerificationsBatchNo, uint64(i)) @@ -419,9 +419,9 @@ func TestGetBatchByNumber(t *testing.T) { err = hDB.WriteBlockBatch(5, 2) assert.NoError(err) - err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1]) + err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1], common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(5, 2, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(5, 2, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) err = hDB.WriteForkId(1, 7) @@ -440,7 +440,7 @@ func TestGetBatchByNumber(t *testing.T) { } tx.Commit() var response []byte - accInputHash := common.HexToHash("0x1111111111111111111111111111111111111111111111111111111111111111") + accInputHash := common.HexToHash("0xd24388f39169a9187e66711e42c8da0dfd9f9089ec46c9a95d29a1f25a58234a") response = append(response, accInputHash.Bytes()...) response = append(response, common.Hash{}.Bytes()...) response = append(response, common.FromHex(fmt.Sprintf("0x%064x", 1))...) @@ -448,6 +448,23 @@ func TestGetBatchByNumber(t *testing.T) { To: &common.Address{}, Data: common.FromHex("0x25280169" + fmt.Sprintf("%064x", 1) + fmt.Sprintf("%064x", 1)), }, nil).Return(response, nil).AnyTimes() + + txByHashResponse := types.NewTransaction(uint64(0), common.HexToAddress("0x000"), uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) + txByHashResponse.Data = common.FromHex("0xdef57e5400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000066e141dd0000000000000000000000000000000000000000000000000000000000204a05000000000000000000000000148ee7daf16574cd020afa34cc658f8f3fbd280000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000050800000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000cfc0000000000000000000000000000000000000000000000000000000000000fb400000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000018020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b80b0000000300000000f9044e82674884017bf1a0830bcfc4948ff6508bdd71b535df073920c423e9eaee0b97af80b90424ec0ab6a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e0434ddf5273f71250a99c6fbcabfeca301de5f000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000001a45ae401dc0000000000000000000000000000000000000000000000000000000066e13be200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af00000000000000000000000000000000000000000000000000000000000652e10000000000000000000000000000000000000000000000000163adcee8b87f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000003d5320821bfca19fb0b5428f2c79d63bd5246f890000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13be20000000000000000000000000000000000000000000000000163adcee8b87f2000000000000000000000000000000000000000000000002e2103547d3748000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080f1f06050464bbe1899db8975029243860aae9dbc153f3d0bde4cbf423605c0f36b575d04708f9a517c2cfe3c6af0d379c30bca1097b252776609f3c2ef706d681bff0b0000000400000000f901ae82662284017bf1a08308fc58948ff6508bdd71b535df073920c423e9eaee0b97af80b90184b61d27f6000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000003d5320821bfca19fb0b5428f2c79d63bd5246f890000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13be200000000000000000000000000000000000000000000000001634a3fb8d2af5000000000000000000000000000000000000000000000002e14026ffdab72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80800fb8261fa1f177e41f88e7978b3cc48fe720a22ce153ad4bd88febf30f2bf8db3354cbb1d8a684aa733a0c9872a02c28dc350015d9ad47916a5e8d97b365ad8b1cff0b00000003000000000b0000000300000000f28231da84ee6b280082627094d20595ed0ed59d85d9359de5164b320a5c40fa6e875f9a48fae655c8840333e6b882044d80806ad649fc21c968300d2abebc5e256eafba5e069316dd680a6bb4feec0290e85b7d9831647c8d457a29b6efa64a88add3d0ab985436c7155238ed86435f30dc261bff0b00000003000000000b00000003000000000b0000000300000000f9010d821ed48401821fa88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009814ae9030c504000000000000000000000000000000000000000000000000000000000000000082044d8080f2c8fb37b8417e9a3d7245c8f428d932e87f43877e75b346c3d575a80700110b28ff4f9ac9d7882c8b61cf9929d2a20a8cb62d32aea89cbca06e3021eeaac3fd1cff0b00000003000000000b0000000300000000f903f23b8401620100830343f1941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f52e9f9451b39e2171a782aec26677586f35adc72ac984d0921cc7b9512c744e75000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000081f6b887657b679d9e23153ffcd703e1110102400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5867796855613343726552507448414d4c75314a6f47796d6d734b6a66676252464e4b5943644172364541570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004137eaeccfc1a481ec514bda2863333d34977c77f56e4033ea74cef4c22a748db0717b9d2961adbeab964a3963b682bcab163f2cec97eefd02c5df5b66a4e71b521b0000000000000000000000000000000000000000000000000000000000000082044d8080ea7294305dca446fc2918900c201f24486d75b33cafe6e2e8bf369218f229293230e8b67c0bd2b47182ab77ffbaed1d7763fc5705e306d776b0f8f8e86efd88d1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed5840166e3008307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d3e0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982adc32888842000000000000000000000000000000000000000000000000000000000000000082044d808067fffeed9f7553babaf6570c8a11233f004d0758170e5d23484c095da5ea282b08682443b3ea253139b3ac01977c0a758f081fd6cd614a24205c1d67cbd9afbf1bff0b00000003000000000b0000000300000000f902ee826181840189ad40830804df945523985926aa12ba58dc5ad00ddca99678d7227e80b902c484d61c970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d62000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000001a4c23a4c88000000000000000000000000000000000000000000000000000110d9316ec0009bdafe8da6cde01e6040b2d2187f6b67a297205ae12cbfe9485196bfa1b3a8374f9dd0dda9066451633b471b04af8ef8204abfe2693c8bf8c450bc20dcec28d300000000000000000000000063e99e508a9f2b6ed180811f80db90ce7417426c000000000000000000000000000000000000000000000000045f2a42a47981960000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000f02bbc9de6e443efdf3fc41851529c2c3b9e5e0c0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000447647691d000000000000000000000000000000000000000000000000045e1f2d2e761b0b00000000000000000000000063e99e508a9f2b6ed180811f80db90ce7417426c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000411e413bf834084915b547cc0d72d37e10a33d19426323e626c254fe8663b6984d4cc14841f43d8ca4842e10ab2fe3995cab429c30a54301522ea3a5a5272a91871b0000000000000000000000000000000000000000000000000000000000000082044d80804f5051f8a0057498cd6d2af0d1628a32348d13945f6bbdfd570b3544c7a08f8875aedee2be658959e23184a59bf6b92b43ee0fe5934f93f28b93ce4288de1f6a1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903ce82264a8405f5e1008307a120943348053b13e22b2717c742cd4a60f5040564a53080b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000d23aaa8116edf941e1aba78b113d7a670002ce4a0207020601080400030509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000023c2b0000000000000000000000000000000000000000000000000000000000023c316f00000000000000000000000000000000000000000000000000000000023c316f00000000000000000000000000000000000000000000000000000000023c5b7000000000000000000000000000000000000000000000000000000000023c7e8900000000000000000000000000000000000000000000000000000000023c828000000000000000000000000000000000000000000000000000000000023c954000000000000000000000000000000000000000000000000000000000023ca99000000000000000000000000000000000000000000000000000000000023f57ef00000000000000000000000000000000000000000000000000000000023f59fd0000000000000000000000000000000000000000000000000000000000000004650755b20d11b5cde1a5e1f721e10c74f5f078fac6800341d15be87da2e74a3c5acb65047658a523d0c57d88d94ca1d78f66ccd21b9b203f2df55700919e11bd2fbf684aea0d5dc6ef5cd78dc496afc655c627eb2e2da675143859fb439860329edfbc8fc5731ef33d3d50efcd525f27181b84a44fcf726ca066ebe622c15866000000000000000000000000000000000000000000000000000000000000000421bfca8453ac26e096cd1e78f31336665f46d385c6333d63a813a1bee82a0d97248c4d7624257e93bfbb42e7a8b901568660bea31df9cccf80f064263ac1977e495fb904f2b8477e6114f459116561463c2fb93122fffff08adf8c85aa5850f657c7fed085522823081dda81d1bd94235fc42fd1e70f70b38737760887e1ae0c82044d8080da940144b03a145e88a116e125b1a24eac784a85138a43a7bf4529d1e5fa33751fc270dd6380301802a94c1c6f1d398f5684f56ffd1d974231bcbabb1fe9ad791bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed684017eeb588307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d5c0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009824b00e503048000000000000000000000000000000000000000000000000000000000000000082044d80805a0f08064fc456e60e242cee4f20ecde976a51c7e1c1b1245922d15696c32cba65dbc28c8984d233552830250b4be646f523d65f1e686aa09b038769469d40ec1cff0b0000000300000000f8b12f840238e8a08304ac1194222228060e7efbb1d78bb5d454581910e392222286352f5cb5673bb88432accbb900000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271bb7b9b0000000000000000000000000000d4ebba85fbd618d08c6911e6bea0e514280144682044d808080e4ceead86b43aca84d560e925df839a58fc08296edf87dc44985d38e1312113a39d3f053ece00a9741ef979d9b0457a11dc7b65ad04dc117ad9a49c52987901bff0b0000000300000000f13d84016caf608304443a94ee1727f5074e747716637e1776b7f7c7133f16b18732a5492d0cfb90841249c58b82044d80801633bcf1a8f14729079a42e6e7d86f2e304924ea015e3f1ddadefe9e31869263170df9e3efeb2ce79a7a320bcbcd31acf77e4d0a33fd4945f0d6724d688b88241cff0b000000040000ae44e94d8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080317339510effaa798bc532fa32187f09b40c9b5cd12ccbeb7f7ab3fd3c157e680721490b51e44c59435ea2cd2143d71ad2b6316ae19d4055cfcea37d7a2cb9eb1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d184018715308302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e0103ff5b7f4b338a8f977b35846aa7c01ed379000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001635044eda5700000000000000000000000000000000000000000000000000000000000000014760dfebac75f07fa46b8e87d9151b673b8e33d4710293497a4a5c9524aedc8882044d8080a3566b6ff106e89842dda24f38fbc6ee0a105588e63240914f04986798835bf030b2f4d65e86d43514d0c03ee84e5c46a84fc637ac927233674c4cf7effe31101cff0b00000003000000000b0000000300000000f9010d821ed78401754e688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d7a0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982405427dd941000000000000000000000000000000000000000000000000000000000000000082044d80808cdf22284f15949ea3fbb6eeff81ee87a198722c1f8f827b1ce98ca30138b756444a20bc97269e363da23b33ee1badcfe012964ab8e73ee9c70f6f4af5ae99351bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f902ac258402625a00830494ba94b89a6778d1efe7a5b7096757a21b810cc2886fa180b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13c4b0000000000000000000000000000000000000000000000000000000000000002000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000376f2930000000000000000000000000000000000000000000000000057e3e6c76eb74600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000968980f6c8b41abeeadab481578614ad405f58890000000000000000000000000000000000000000000000000057e3e6c76eb74682044d8080388b027ca9400e25178e592726a62b4d39a6172d956bf11474ce49f65b0fa8a426f0e323ac7e8de7a4daa322ca42fa3c2cf66081047319341febcf2a8859af3b1cfff9028c208402625a008304932b94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000039bac84000000000000000000000000000000000000000000000000005b8731fffd99f800000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006ded4acd9fd87eec14f18b22e9046f000be0685a000000000000000000000000000000000000000000000000005b8731fffd99f882044d8080b53c40cb340c035c10a519f25f2de3fca0cd253015c28e7049b9d485ea98b1a5021c6938342e403283007f2ea6a9152a9089428f3fdee38461164b0fb89d690d1cfff9028c2e8402625a008305581d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000004710b280000000000000000000000000000000000000000000000000070a92a16ee367400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e3119ac2c91cf8e2ca81b54d757c166c53647a2b0000000000000000000000000000000000000000000000000070a92a16ee367482044d808008fd8af756bc9385919f74d9a9573a3581faf800c7999d51e834423a5daa4000067f947784576968c91ae28a653c76771a15035f088241705df3780d3cb9df1c1cfff9028c1e8402625a008305581d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000047054780000000000000000000000000000000000000000000000000070971273bec4a100000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000018c4dce3c0172a5322aefc459d69e85957d387890000000000000000000000000000000000000000000000000070971273bec4a182044d8080ba9906ac2e50febe56442a09ea73b14880b4f418e30f891402dedfc36e18e57b3b7ef3466f11fcd657b0d99da14c32249962f8f505656ccf48f0a5fa85946c2d1cff0b0000000300000000e97b8402d112408255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080e2aeb5078a6bdcb30be8415f3bf338183d2b725380bb85cc21596c775e414b103b7de8fceeeb38b5089d6af9f7f4862f805c332651b87bd2c444f16180db50ad1cff0b0000000300000000f8b6028402c9ee9683024b46943a23f943181408eac424116af7b7790c94cb97a58701c6bf52634000b88800000182ad69fa4f0000000000000000000000000000000000000000000000000001c6bf52634000000000000000000000000000b675ed9441dd8ac6d3a206ab61357bcd47384c6c000000000000000000000000000000000000000000000000000000000000e70800000000000000000000000000000000000000000000000000000000000000cd82044d80808493c0e815b42ccfaf9a06a6ccf16f1e445a0412aab8f360dd19929adec226d2431b3cb925d2fc60b325d59f97e35b7b52ea4ef006860596f1b9d79afcf1d0181bfff9010d821ed884016548d88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d980000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009815ae8ed77f3c000000000000000000000000000000000000000000000000000000000000000082044d80808cfb084863d1694fdd8775bf4fac4410b1b9cf98c1201ba0741106879be8d41f36ca97ecaa1eb058f23208921fcfdde1cf82299c336c2e9303c15865d9a036311bff0b0000000300000000ee8308be5e8403fcd02082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080a3271eeb3e1a9ca9fda4117e8abb72638a128fdce0cb2efb9ef2f870f60b2f672741f52279c993542e2b9d52d8961b2ce486f5498db46deb246b5916a379f8b61babf9014f8301154b84019853408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13b4200000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000007331f3647a294a90a1ca61c0000000000000000000000000000000000000000adf85b68ca582b83dd4bebe00000082044d8080b8cb2d6ac52d01ef955c17584d1abf7462b3014aedde6b0beeac237e3ff3bc104ae81fd1a2adbc78ec0681dfaf235f3ae18164c3af60a6f02dc9f6100818119f1bfff901ce82989884015445608305ea4c948ff6508bdd71b535df073920c423e9eaee0b97af80b901a4b61d27f60000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13c6d00000000000000000000000000000000000000000000000001634ada69799d20000000000000000000000000000000000000000000000000000000000df1806400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080768c51f79db3186f54b0754da1b78ab5a79b6fdf23109910fd4cd6cd9d7f3c8c22e2c8aa620d0d71b4b842da4b0742a4e67da2a0df0aaa08b3cb5d4d1a5955931cfff9012f83018d5e840154456083069df4941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000023abcb82f468e3422a7212d4ad47cc2dd39162a30000000000000000000000000000000000000000000000000000000066e13c6e00000000000000000000000000000000000000000000000001634985c6047d20000000000000000000000000000000000000000000000000000000000df17315000000000000000000000000000000000000000000000000000000000000000082044d8080e56167524cec085263787a173ce728e393d5f361abcfcb92098b68de4fb3a7bc72ae91803810eaafb610b3c66b581c91c6474b137de853eacc2c8d7b73f5b8da1bff000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d7a0b0000000300000000f86b825b2a8401764c50830d57b69498d7c628086262ea7bd83a23ccbc72f8cd10cd8480b842d43b9dcbb61e6ccfbcfef9f21e1bb5064f1cb33f0503849c0ae884bfdc14dddeb7cae95494f3684148550102d6efe114c9b6058a20aab759e064f50544590914050382044d8080eed135980b8038da4e871a8e95e5644a40cb85fc3f97c42a3b8c9aeac897dad368eff35e0c6aa77b54885fbe3528e9b9a9e5193d3142d67226825f6e2b5fd8251bfff906ae8216d4840176a36c831396f094063bac84221b5b02b92ceb740ac129db0edfedc780b90684f740f3280000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000005e4e7d7ed2800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb140000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb1400000000000000000000000098299ead1cd04fbf1659799b14a559206f3ed165000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002b4f9a0e7fd2bf6067db6994cf12e4495df938e6e90001f4a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500006437eaa0ef3549a5bb7d431be78a3d99bd360d19e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002b37eaa0ef3549a5bb7d431be78a3d99bd360d19e50001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080746ae602ceaec3387a089510db6ba15a6a45a6b60aeb564d2af783a2249308d935f550046db0988101d4d533b7d390b764e1bc7afc641fdd957f1c421e5c50491cff0b00000003000000000b0000000300000000ee8308be5f840158d94082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080fb504691bbf5c90ff09420f32385c4df07792dd1f0017568c765f1a180386bd54529e1b0819171dbced80e60b965c78a1afd887ad60450c0851fc4472a1aed711baaf8ee83019e5584019dd18083035f30945eb6b3db915d29fc624b8a0e42ac029e36a1d86b80b8c43161b7f60000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000012fb937557964d13c00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000001082044d8080bff5978438909bd3d0bf26d170678ba5ab948afebb9ed51824a16fca21bc2196068165970f68315889bcd05a63d9f7405722b2f0fdaceda25eb59c93b897e6d41cff0b0000000300000000f9028d818f840158d9408303a82b94678aa4bf4e210cf2166753e054d5b7c31cc7fa8680b902645ae401dc00000000000000000000000000000000000000000000000000000191dfe1d94000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000104b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000004786e420000000000000000000000000000000000000000000000000070ec0f4c9ee97e000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000070ec0f4c9ee97e0000000000000000000000004abf4710e38fd914212ec0d30026d0fa9d51d40d0000000000000000000000000000000000000000000000000000000082044d8080d6fefcfe30a6a3903219dbcf5937bfd3ee6ee34564e643242a790393324905217ad5bb7e3950286ec8f627314e6e18d8715ac80379c8f7d36eda1672d0bb69481cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed9840156dd708307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13db60000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8260d3d200c7d000000000000000000000000000000000000000000000000000000000000000082044d8080098be2bc098d407c1a9d7cadf5840c2c250e338538dc1ae0f5df4ed073f8a85414e47ece3ccc969f95ce9251738051c03ae40575075b9b4b4309210dcfbe44411cff0b00000003000000000b0000000300000000ee821a198401793280825be09482ce01bba0c29bf9b61dc9cfa7968b1e0891f5678702f89f754a380d8082044d8080b2c54612390fc975b7d024f6e8eed9942a73c0d2101ebb04df518e3744db33b4009c3b2e21252b7c462b71a2c34f8a40ca9f84bb30ab6fac7b692840b383dc481cab0b00000003000000000b0000000300000000f9070e8201138402d33c58831d10fc946b2c0c7be2048daa9b5527982c29f48062b34d5880b906e4b80c2f0900000000000000000000000000000000000000000000000000313282fe1a7140000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e5000000000000000000000000000000000000000000000000000000000025b4a900000000000000000000000000000000000000000000000000000000002548190000000000000000000000000000000000000000000000000000000066e1497b0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000006c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000025b4a9000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000018000000000000000000027109591b8a30c3a52256ea93e98da49ee43afa136a80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a5000000000000000000000000000000000000000000000000000000000000000100000000000000000000271007a42e9f31c1fb7c2056b040e55e35c2ea6744770000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e5000000000000000000000000000000000000000000000000000000000000000082044d808057853a22fce3f85fcdd486d18e841d491de09b35e2151168a3af8bd9352e5e616a70f07e3aad14a6760f82ccb45077001a395a1c9a5556c0d33241225108ab081bff0b00000003000000000b00000004000000000b00000003000000000b00000003000000000b0000000300000000f9010d821eda8401607a608307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13dd40000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981eaf19eb97c6000000000000000000000000000000000000000000000000000000000000000082044d8080bbaae2e5f840a60b75b397d51ffd3f6c648b7077d6d6091491237e9efb69d8c91620f7793c4dddb315cf997662a77b2c48cbbf881985c642d3cb63c4528a02b11bff0b00000003000000000b0000000300000000f02f8402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109875543df729c0000840333e82082044d8080e79b7308819654ce4d40697f7c1f044a00ec7796c73596957de663e9274d072a76e03b8eb9732d95e673501ed9cad4a63a32d33aa256caafc4f1867fb13eacc41cfff0268402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109873c6568f12e8000840333e82482044d80802cdb77771d166fa9140bd3ea0d17bdc5eeac3836d05d6144612c0434af52b5db2aeac6d0a8bdead3238ee12124dd9f387388ab5b52ab1100a1dadd6a8e9b740d1cfff01f8402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109874a9b6384488000840333e82382044d80806cd1e42d4d065497ce59e511d21e6d5819bf91ea9fa250786b757e0705f356eb5c43ae1da48a134429a5584590f1e4580d103310c3806cfde466a9c5231e35eb1cfff0218402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109873ff2e795f50000840333e82282044d808084e8d0f689fe1d5c190a4247b452a33fd6735de9d5f9f5003d8601d5b0c707d631c33cc82b2690e5df6efa0c2f44d68f62d47cd0922a94f802cdbedb115ee30a1cfff9018f830151d284018c1e408302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c201fab6ebde597669e39a9a69d724998e50b2f8000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001630804d32c10000000000000000000000000000000000000000000000000000000000000001b75f9deb5f8d72d9cd3ea0037c11ac2401d310730bc692f37ec19861105e08c582044d808002793ca3270d2bdb8a4efb0eea532dec733de8f35e5a1c3f90bf185ed69c73a973cc8df40252607608de8728eb43d5e9fccbdabc4fce80c5d4fc858a36e928ad1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea81808402625a0082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d80808805469c3fb84413a35485f506012ad1a6820b80738b3bf685b1d6175b9dfc79397f9b692337a0f633040da8401f8a5fc53852106d916911af513ff271e4aa261bff0b00000003000000000b0000000300000000f9010d821edb84017a1ce08307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13df20000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c82f0c5cacca38000000000000000000000000000000000000000000000000000000000000000082044d8080baa772220471b8149d55e5a5ac2bfbdd12c03eaeec654e08d9c74ec43b63d12a469bb9de8bf8ff2cd2edd8926daf89b887df334862e623a68cdc3b90bf7ba7391cff0b0000000300000000f84a318401681b808312c61094ee1727f5074e747716637e1776b7f7c7133f16b180a4db006a750000000000000000000000000000000000000000000000000000000008f58afa82044d80809489b2c6a4c5dc17ec3ec50d299e487c996839ed4d26bcc4c07f910dc21a53c04ff08798dea40e018cbd296ffa623776cc5382be8e8964a7383b1c8b9717ba2b1bcf00000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cc20b00000001000000000b0000000300000000f86a228401681b8082b4e5940d1e753a25ebda689453309112904807625befbe80b844095ea7b30000000000000000000000006131b5fae19ea4f9d964eac0408e4408b66337b500000000000000000000000000000000000000000000000026e055297acfc7bb82044d80802d542b44996d63d0e2ee4f8063c5c21b00ed851ab3f63911b2e0d4f9422287497b5085cca5dab841c5406c9bca6745b50a28a543431c355ee63d7e469e7b72971bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903ce821bc68405f5e1008307a12094d83729a90474d6ae09502ee3c58485cef40ac87280b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000093136a0f83405fd54b230fa9778a13300002cdfe0409010405000602070308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000038408d1790000000000000000000000000000000000000000000000000000000384669fe00000000000000000000000000000000000000000000000000000000384669fe00000000000000000000000000000000000000000000000000000000384941d490000000000000000000000000000000000000000000000000000000384f1bda900000000000000000000000000000000000000000000000000000003850842c800000000000000000000000000000000000000000000000000000003851ac5b600000000000000000000000000000000000000000000000000000003851ac5b600000000000000000000000000000000000000000000000000000003853adfd00000000000000000000000000000000000000000000000000000000385578f900000000000000000000000000000000000000000000000000000000000000004208140e5e3dac54f5eb8cd8211adb203b85cc8f48b5d7d5768ecae9622df24a03866b2325c2c74955907e637e920627241ee7d4220e6aa6fe4b474fa0a1467c4ed42c8afac6f30478534bfd8a1b58ede8bfbef3d1908c0288a743fb6aeb7c12ae89fd84ca1a67ee72ea3d922c892a66e7caa0994879cace58eaf8e30ec0b641c000000000000000000000000000000000000000000000000000000000000000469aea40a060cd08cdc062fcb2e3a8b1b45faa0ff08b58607ff6941f18a2561184328d4b3414cda5fc8a80dcd28dee321564a1c1eaffabd2601892446321625b1324fff5e231ca6e5a020a57e4b2c8b83eac3067b76fcdfe8f990509b8bd6ba882f431699ec517fa2f99ea179d76f3f872438f6d787d9e6704c52145bc16b31b082044d808039cd808d19202040e8c498c2ab13bcdf3af0b148bac34a026b1925ccf02cdd89763a910a26e0d8c91449b9d39d62aa35f116b0f303de9ddbe0adb211226be4bf1bfff9010d821edc84015d46108307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e100000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c7fc160522df2f000000000000000000000000000000000000000000000000000000000000000082044d8080bc426dda601756b4851b479be56dca7cbdcaca215314342d4e5cbefc7caeaa3b2115f87f94ec752953f052e46ffb2dea9db847ebabf21a239845e387e5d24fad1bfff86c82011484014ca44082ebf49437eaa0ef3549a5bb7d431be78a3d99bd360d19e580b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000000000000000f0719a82044d8080511a80bfb3d3116410992606d87913954e8731ed90a5131f21de84e035939b8273d0b786dc03ce855c47f5af2ca93567b0db3ed5fddb3f6cf5c19f8930e7f9d11cfff903ce8222f28405f5e1008307a120942e8932d5662ad426fe335162b233680a524395ee80b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000086e0a443f1c658191e265ab8658a37b300000a6c0405010609000708030402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000023b4b9200000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b8a3900000000000000000000000000000000000000000000000000000000023bcb6800000000000000000000000000000000000000000000000000000000023cc1da00000000000000000000000000000000000000000000000000000000023db84b00000000000000000000000000000000000000000000000000000000023db84b00000000000000000000000000000000000000000000000000000000023f6bdf00000000000000000000000000000000000000000000000000000000000000043ff63dc58a98b2caba46ba7a58cfa6b0378efd7ffd05ca878dcb191d92a850679b626656e08c2977addd9799a357347e31d4965d125bbe06a7557899cbe5a7206c636624e5636f4f3d669960a863e778fc8a1d29779990238c08bc3a3f5df2908936ae2660fed387a6272501cd4e7f16a25ef0a5c05cce014666dacfb6e85cb0000000000000000000000000000000000000000000000000000000000000000456cd47dcbb6b4c21b5c5978aa6f26fdda9fc62555429ef0a40b98205fbd86617648c9b624b5c64efe94ed0c11d54cd14a1ef04c3bb18f4d0945a8e88ec84fd62470136dc0befd1267388d059cd270f7f0a706eded9d9d4c6f4578fa869525ef45073a43bb30b1cbaa3f4affad5b05288b4e0a8f0724deba4e6024f235cd711f182044d8080bf100f793640914b3157343b839411911773ed9a2a463b79f1ae0d6295f64f3f105d96335e24c7519de149fb1767d2c21c25f7ff0718c9ac0acd017449d799141bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f870058401a17b0082bd6194555a64968e4803e27669d64e349ef3d18fca089586b1aca8f532dab844e56461ad000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000006587b69f97af1c9e91455401cd3ea5594590bbf982044d8080fccdafcb3644954a5a889c5a673c6180b646da17f832cd853a74a6c2413cd51169f1cfabe17e29cdaebbcfd961d06fb56bb2da7b4b11f7cbaf137e84ec327a9f1cfff03284015be680828d9794a06e1351e2fd2d45b5d35633ca7ecf328684a109878a6f0ad96bd73e840333e8c682044d8080f16b6fa1af75307cdea0f6fa7170d8c353bbdc1af5099bd4b4b69f1ee48a4aba2fecbab3e4eeda03128b8308f6becfd6fddee743bde4b24bc7fe32fc0c9fee2a1bff0b00000003000000000b0000000300000000f903ce8222f38405f5e1008307a120940e7197e7200a706e4b8e0ecfd39ef8c45cff142280b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000b62c61f914e58e40747a3fd731525dd20002ce3b0308090106020403070005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000003e5e21b4000000000000000000000000000000000000000000000000000000003e5e21b4000000000000000000000000000000000000000000000000000000003e5e33a8000000000000000000000000000000000000000000000000000000003e5e6e40000000000000000000000000000000000000000000000000000000003e5f4130000000000000000000000000000000000000000000000000000000003e5f4130000000000000000000000000000000000000000000000000000000003e5f5904000000000000000000000000000000000000000000000000000000003e5f5904000000000000000000000000000000000000000000000000000000003e60a0c0000000000000000000000000000000000000000000000000000000003e60a0c0000000000000000000000000000000000000000000000000000000000000000427c6181796e378ecce0eb4756eb5cb3cb22c2f5c31ec76afbb61cdfc9f96c2999ac5dc98c1619fa6401ffa39d5343d7d5b3d32c7c84f294e8caea56fbd7912240fd00d9938f0a0f896ad6a9aaaad9ec782ae47546019d0b2bd0be88287821fe235539a12cc61ddf8f127b192a2724d095088635a3acaded33c14f154ca65ead300000000000000000000000000000000000000000000000000000000000000040217a78ca7b9fc8eed7813085e982f6e8d699f8d548699c4c401f9b74f2bce452d0d3f0f47a6220d36ac59f3c8cddaf9a270e932a234e473bb8507e1a7bd5b6b33cce711f84eaeda3afd58b99e2149fd24ec6aa607bae119a4b358c204fd90b6414015a5b4d6efe234bfb3d0e3b2e1042364cce80bf3286ea367d06ad7f0e27282044d808072d67c06cd88db7a351633d59042a3909e3564f6d707240357850526ee6c561a60ce10685dec1ad08cde99aaa47a3bcbd8f7bc647e08375d873f7a2584478b391cff0b0000000400000000ee8308be6084044f35e082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080813ec45766e4b4c8838d0f69507e663a3ae1280bc1021a063d71381ecd29f84302e1bcc769c6d76488c0346c2069ad8d142fcbdeb8a15ec4f729a2a14c0515141caa0b0000000300000000f9064e82011584016fbca0831143e7941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b90624ca360ae0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000631cd561b0c80000000000000000000000000000000000000000000000000017769505dbc5db0000000000000000000000000000000000000000000000000000000066e5304f0000000000000000000000000000000000000000000000000017769505dbc5db0000000000000000000000000000000000000000000000000000000066e5304f000000000000000000000000bd72882120508518fcba2ae58e134ecead18d979000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d5640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039400c73445066cf0991b56490031d9a8241645cd8c8532c84dccfc1a95f295600000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002fa5fcc93ac9b373ef0065708330f7cac493fea70000000000000000000000000000000000000000000000000017dfac08f2f2400000000000000000000000000000000000000000000000000000000000002105000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003686f700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6a756d7065722e65786368616e676500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0719a00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001a42646478b00000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000000000000000000000000000000000000000f0719a000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000017dfac08f2f2400000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000b20237eaa0ef3549a5bb7d431be78a3d99bd360d19e501ffff01849c0ae884bfdc14dddeb7cae95494f3684148550157bffa72db682f7eb6c132dae03ff36bbeb0c45901a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03501ffff019f37552b87b68e7f169c442d595c1be7a0f03b920057bffa72db682f7eb6c132dae03ff36bbeb0c459014f9a0e7fd2bf6067db6994cf12e4495df938e6e901ffff02001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80802787b973f4d54062c810118dd824524f22139a2f95fc0c1847abfa0251e073ab71313f805daf772a06c1873d8390356030408d7cfaef18b7200e9f246c2012e41bff0b0000000300000000f9028e82393b843b9aca00830667f8943a464f746d23ab22155710f44db16dca53e0775e80b902647c39d130000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012700000010000000100000001000000127000000000000000000000010000001170000000000000000000000006119e37bd66406a1db74920ac79c15fb8411ba76c46702575bb24a61a3c6674a33b1c536418d418d7a2a5454760d0425f62a69690005804c0f4171353a8d70c267c85f228b5795422bb97e8701f57060b3afcacbda96828451185401ac923c55ed67ced54306dd4b6391546b221f111a5a62b01bc3c144011bb991df3e06a3f746ab38f98556f8e11b36c05ceb94aad204dffa5c664e9bd463791cf2b3fe4687153754968af9bcd9a70b8d25d31afef5e268e9aabb50aadf7d1ce0391fbf3eb6e6cf69572dd19bf6fc5081a462f752638d846b9d0862a6cc1dd706aadce7a16fa076ac160a7a7e59233f0659153b2efe2c60c5f302eb7cddaa4a1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008d030005804c000827500000000000000000000000003ddc189d48a792d2c6262d20aa0f9f78e88a9d470000044d0000000000000000000000006ae540f1c3a96a8628d52b416ec1bf72932f83fe0000000000000000000000000000000000000000000000000000000001c9c409000000000000000000000000d2799cd96798074f709423369bf2fea60392852a0000000000000000000000000000000000000082044d80805b9b901758bfbabee0b9f3477ea901ad9b36199c881c5fbcb1fa4d241495f353045c800c11c133aab3e1fe1dd8de12d11392a42fffef25507c70ded109ad73891bffee8308be6184014b1da082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080406d26cc0725e8e4ec416f42fd563433cafed607432c1bf19783e749e2a8ad8939ea1ad189a766c6759c4a5210377b7cf68cff953b4447bf715010dba204d3dd1cab0b00000003000000000b00000003000000000b0000000300000000f9024f830151d384016c3a308305cae894555a64968e4803e27669d64e349ef3d18fca089580b902240ddedd8400000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000001ee4c000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000662d6dda64cfc7fc21d2b1005f406e984a178d4b0000000000000000000000009478dcdb5e5c190fb37f70358585430e1bb1168e000000000000000000000000199bee3bc56add7f1a6ad1995002730de45886d60000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000015b9a6cdab510000000000000000000000000000000000000000000000000000168458403b1f00000000000000000000000000000000000000000000000000001377a57a748600000000000000000000000000000000000000000000000000000000000000039dfb46e76740a84405448ea66a1d95618c9528481cd2730100d191ce78a360a487e98381ed3d5acc9ec5f7f31382ed1c794017648b3c7d25e8a8818173a65b8e690d56cc7f2e91fb3994a585e6553c4ce62cda42398be3ba59f1bd342f43dc4f82044d8080ea85b1543ba847d93e70fb47b0750c5197ebdf75f4efa28b37da97e41e68c12a57b1de35882e372f52bf5a16179a4ac2e453025d3b4731b212be3c2ddb3354b71cfff908cc2384016fbca083053197946131b5fae19ea4f9d964eac0408e4408b66337b580b908a4e21fd0e900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f91f8300f8200f43eecf89e7229f257f085ecad50000000000000000000000000000000000000000000000000000000066e1407c00000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004063407a490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca300000000000000000000000058684788c718d0cfec837ff65adda6c8721fe1e90000000000000000000000000d1e753a25ebda689453309112904807625befbe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000026e055297acfc7bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060a4587899c58e7cc2e54303188f56acecaea4779400000000000000001388000100000000000000000000000076ae48a40000000000000000000712ecdbf54b4d00000000000000000000000048b8419b2bc0fb63ee96e3a370e30b200cc2e6720000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000f91f8300f8200f43eecf89e7229f257f085ecad500000000000000000000000000000000000000000000000026e055297acfc7bb00000000000000000000000000000000000000000000000000070f4daa5dc3780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca3000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000026e055297acfc7bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e7b22536f75726365223a22446566694c6c616d61222c22416d6f756e74496e555344223a22342e353935383138333735373437393135222c22416d6f756e744f7574555344223a22342e363531333730393136353932343332222c22526566657272616c223a22222c22466c616773223a302c22416d6f756e744f7574223a2231393931313333333438383432333137222c2254696d657374616d70223a313732363033363934302c22496e74656772697479496e666f223a7b224b65794944223a2231222c225369676e6174757265223a224968587873792f325642344f4a6366357074564f4a524472566676336c7941426173386e4e3151446e537770426b384765546b6d79637532347a4d4f58535a6b5059672b4d53394a6374336c79587745766b3679382b572b6b303643332b6b4369753337654d49484b47436c6136742f7377416b72625773337177322f474378536639325973353038754f764e6446624f5877705a6c3374794d30745833574a724c616551426c4d42466b77664f5632445168596c32716e41494e344563655a574c4a456a555865417545694a62685a39534844312b76746a4b457452355056796a4472727563476b54634d35745739523549755653554f754e6434632f39766c537269343569464234456f37316e424931624d2b446e78495837563137792b41634d6d585235336d7a685645476b59647848745a6e706f336b776f683841356751786148433678362f4a4d6e56686a5049716877673d3d227d7d00000000000000000000000000000000000082044d80802ca8348995a238faba4d03fc97638947ea65044c08547e8bb931231fb982886b1e4851515149a0b4f1e5131cf5f123de352c7172839852eef079aeb26bdcba361cff0b0000000300000000f86a0b84014b1da082b4cb94c5015b9d9161dca7e18e32f6f25c4ad850731fd480b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000098dbf0792f215d3882044d8080e1a347db720494ebbc892aefb0db8be1c1a4f61b3310d9528abde1ae2ee1cdde24efc0ecb27d55991eb644ba770a91c52ab8e69616ae78fdd3557d4c7122fec91cfff8b10784014b1da0830151b3942a66b9c88caebe9aefc4ecd7b5e7e60881f7e15c860d18c2e28000b884056b01ce00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000007ce66c50e2840000000000000000000000000000000000000000000000000000000000000000000a63727970746f72616e6b0000000000000000000000000000000000000000000082044d8080cf67643e57fe0e3d537c2c8fe40440a97de31e6606b6968a34ce382900b587c128946d1e7505038bf50427502088c8de36e7ebe911171ce1288c5bec04d91f521cff0b00000003000000000b0000000300000000ea10840c49018d830135909468c89f28d223be23967480c06057d22b3400293580845646c6b982044d808002b9b94c0a76cc3e16e09a8b9e9506f4d3f57ab9e8932717c80659bcc9837d0e631d462ca21abb98fd5a0c63877e2d59a8d332c10d30569ced47e5924f2100ef1cff0b00000003000000000b0000000300000000f9068c0c8401e915ba8307f1fc941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b906642c57e88435f1a3a9536b95a72ff7601f7df30a5b8da95a0580587d62f17457034d663d6400000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002ac8900f549d90f11aa593db90a0fb57e753b805000000000000000000000000000000000000000000000000001087372423cc6f000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000086d746f7073776170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863346639646134323361626336393237393937383338313533656131386631616266396435613938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd400000000000000000000000000000000000000000000000098dbf0792f215d3800000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084eedd56e1000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000004e438d8deb1321000000000000000000000000000000000000000000000000001390e3637ac4c8000000000000000000000000c4f9da423abc6927997838153ea18f1abf9d5a980000000000000000000000000000000000000000000000000000000000000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c459000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000987a1c083dbb854f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e42646478b000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000987a1c083dbb854f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000001087372423cc6f0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f402c5015b9d9161dca7e18e32f6f25c4ad850731fd401ffff019bc342259cceda0487e70b71a3161f002a95f0e80057bffa72db682f7eb6c132dae03ff36bbeb0c45901a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03501ffff01ca06375be938a2d6ef311dfafab7e326d55d23cc0057bffa72db682f7eb6c132dae03ff36bbeb0c459011e4a5963abfd975d8c9021ce480b42188849d41d01ffff01337af062ce32bb423010415196e315c4154d36c30157bffa72db682f7eb6c132dae03ff36bbeb0c459014f9a0e7fd2bf6067db6994cf12e4495df938e6e901ffff02001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000000000000000000000000000000000000082044d808097c0b85dae5e497dc2def38b73fa7db167176b675e1ca0b9b5fb7acdaed7d33b3b01365195f76cdb02373c4d9553f9e6093d77ef79fb4980b74383688d7a06951bfff903f22f8401c9c38083048020941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5ab9c89ffcc1119514c1b92d64eb03aa97ed8fd52866dcd07383c2c7d4af347a5000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000009e47fbb2a2a27b3b02e4a63b3ef5a3dc863c02230000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d52696a487341633572727a65414e584d735334725a68555a6b576e35386151384a6776523832786a4351374d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418824be9a966bd0478025bd02a796118c2fb8a23756cbbc2f82d61314f9c6d9d3341db0d02c63f9530b2ecc581ecec5acc10a6ff8a641d52071a0ff8421ce59701b0000000000000000000000000000000000000000000000000000000000000082044d80807034d54692cf1b649157e81c0bdf66632633f6485cdf329ceefb5d55042d38760b6da7e01b7a770f453bec69609332f517ac66c5e4b7798e75abef875a3791651cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f902d3138402625a008305aaaa947481c16e7782608ccba70029c0fd41d78aa6b56e87027ca57357c000b902a43593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13d1100000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000027ca57357c0000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000027ca57357c000000000000000000000000000000000000000000000000000000000000018d0f800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424f9a0e7fd2bf6067db6994cf12e4495df938e6e9000bb81e4a5963abfd975d8c9021ce480b42188849d41d000064a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000082044d80803baf44841d975b6bc565ace7c443e7ae7d9ddac53580a8a85ae9ed88c26907ee1e81aed1a48561a8238e7476616c026622e9e207b4a337dff4e87be321a5c4f41cff0b00000003000000000b0000000300000000f903f38190840189ad4083034cca941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53796b8092eeb16d8bd97e1af7a200666a05419e70bad6c72d92f0e2af24f0d5c000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000013988cef5721a77e9a873b9c988559abd698516a0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065a6572696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5441676266396a785343475176785a476e6576435437394c334d7258794d6d35715957687a68476d3646586b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f95331b37d73776f15d46c38bdbe349eccc9f1f7928fb41f54b8fb9fd5228843643976c760da92db0f41c7b1506e1fc66bbb01f8b2dc70e5a96ce3cd0502b5351c0000000000000000000000000000000000000000000000000000000000000082044d808081ad4be405410a00887985f909b52ceefbf5b7414500559946678f167ec95b646c37fff789b69860bb5850da757344ac27d1c45c9b8c4374d7eafbe2d3d8b9141bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ec39840175d72082520894e4edb277e41dc89ab076a1f049f4a3efa700bce88705692911fe533b8082044d808000315fc52bc3d2f4aea5fd2de0229fae82cd273efe66b698c4ea990e20b60fde5ad8c57f6f5748d6b2709cc620626f50e34a577e7b30bbc2fbfbe8342793af081caa0b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea2c840d42700b83013590948418962b8e0c95f386f89415d99883cd52226f808084fec0921482044d8080783253c33c7b79ecb24aa939f976a21069d7837a666da00eb8a2eacb5298d4457566c70d92178084f27c8538eab68e46df3d914512fdb1032ae5933071f699541bff0b0000000300000000f9014f8301154c8401b021008305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13c3100000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000733f79f5a91ea2abe3e50940000000000000000000000000000000000000000ae01687505aa45399c5393c00000082044d8080da4584b7d6fc09c1e15ad4cdc966ebede2301b221fe74a64f3b4b077c6b7d2bf2d38c74317a7901d41676c66859e0e26b28a4ce29ac544f67d8d2cb8b503e0481bff0b00000003000000000b00000003000000000b0000000300000000f903f381978401681b8083030015941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5e88a8ba0ef0f81c929520cdcdfaabfaa6b722c4048cec8c493456ad0ab0c325d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000007df220262a4c9ca1fa9b7224bc6f7f4572a892cc0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d506f336736676d4a72386d6b6467384a57764859576b4659486d4b47485777436d425175473276416a44315300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041bdf0d198c5f6ad13e9fb6c891a05b67ccced70655831525ee9febd3c21cb33595c536eb39f577fae252fb903477529ee1d4a5d15ae9731d06543a56bfe1fecdd1b0000000000000000000000000000000000000000000000000000000000000082044d80809de5af8deb33a1a58f32c6dcdac7c610ff048603e566c8cd0cb4fd54b65a38934d59fdd44897d94a3be46fca792bd7a75e88e363289921a8c1096967b30b62441cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea818b8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080612819e135e75602473c7c42e3a2fe293cf9e99ce22373be8ea63724f3381f6f746b65a1f24f8f3abf355f4c8dacdb2b96b48befa479cc96881163cc827e14841bff0b0000000300000000f903f2348401745080830343f1941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f545b5e3028d7045b7f9dea45daaa86de008257fba39d272d868c9d8edaf813fb4000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000005f9c7447129fa10af4cb51e24be323abff1759e50000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5138456f61454658787954393331636d42684653426447486168444d684d353473484b4a745a417072507168000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414b2ae38ceaeb1af116941ed4ec6eb66a86116d4d08a4920ac07d1feaa8ee607d6d5b635040118c5c37fa9f05b6c8a4cc07c3619a8c0def6821827ee9539530e81c0000000000000000000000000000000000000000000000000000000000000082044d80805aaeda75850432083fdb91bd4b910a0850c50f29c6a81e7f5661c0a0e19c2b282a15c71aeaa646bec001c6421af6b380d7321cdec496258e1a893529de2fa4621cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be62840418476082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080b7a139b28d8c5192cab1a5c55a8efcc93cebddfcdb1a0376188144df587e57b1302f1ec53be25bc03bf9fd84b1bc298006b6d0a3b4cb296342bcabd8254f9a4c1bab0b0000000300000000f8f108840174508083034de3942a66b9c88caebe9aefc4ecd7b5e7e60881f7e15c86a0285cf72142b8c4d559ccbb00000000000000000000000000000000000000000000000000000000000009dd000000000000000000000000422f746a9d5b73e25d41dcc18fc1ea09da88ee2a0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a63727970746f72616e6b0000000000000000000000000000000000000000000082044d8080463a0e84cc018410c62c0f6cb7a9055556b94cf37fb5363e004e2952831ee3a109837118f4ea90e6753e6f16dc192a72053fc655a789d15767496bcdd45e5b961cff0b0000000300000000ee8308be63840169a22082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080dcada0e0a24e607958874f9206c0a0540fa170176d694c6c1d0546eb6d1b787b4b63a62905b6a8b302168d6a12fdec6a5c89b10ddadabd6ccf3d0f099ac835271babf28231db84ee6b280082627094580b1a559eca8c875381251f291f96777ef3af89871715c995317000840333e95a82044d8080f5a183cd5ecb9ccfb91a8c22d2a14191a32c2325742e13b48b8ab6d2b1ac8af65a2dda29b70368485ae17017f0c8570850b37600fc668c6547aa69cde7e2f6721cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e90284015752a08255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080aeb52a12273e7d18d4d61292b972b9cc460236c359d0b290d7440e6a9891e8f37ef89ab59bdaed7e90a33fd03dce86ee855f91a6afe8515009b4dc2542fc315d1bff0b00000004000000000b00000003000000000b00000003000000000b0000000300000000f9010d821edd84016bb1788307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ee20000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8390bcde7c066000000000000000000000000000000000000000000000000000000000000000082044d808030d0dce5dce8bd5dac0a2de99f3a997bc9b2720b37e0c916d521614aa96b2b295d3ed3ff7c6be137f9e895f4a0736de165dc14c87878a1d8b01222026689675c1cff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031150b0000000200000000f9010d821ede84016ee5c88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e4c0000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c805935ba60ef3000000000000000000000000000000000000000000000000000000000000000082044d8080e6523db0d8d9f0fc01b8d28d354646bb37ee3a01d94299baf62a3f0513c1cd5b4706f80c68a13689d843d784ccbad2a69c049b87cf72f7a244bab58b25d3f2ad1bfff9010d821edf8401721a188307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e6a0000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c7f7976b336093000000000000000000000000000000000000000000000000000000000000000082044d80805f7ba49687fc0feb05f0fb1b46b605610f94161628bb0d78a593085bb2d6328d67d03a13c5f7b0d080fc8585f1dc01eb567f4ec6dc22fe372d0dad7b2057b3aa1bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000eb82013a8402625a0082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080a1e4294a95f81c0195243e271861ea2cda2b25132a4e4866cb58deb993128035280b82205bf5f93e6cd481ea9ce1b4408428898fc5813bd8bf58df3199de169f1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e9028402d301b68255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d80803516937610ade172676e6ab42573bbde2ba8b143b82c019640b2c41168bc7e445254048ff8978b561f0a95d2d71f4da3d8c67c7f05cc90ed9521cd01e6da0c2a1bff0b0000000400000000f903ce8226f38405f5e1008307a1209467d0809ada627ab5bd623640332a2f370b2c906f80b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000084049d6baf6f3253bbdf284da6b5d1370002ce300301000706050902030408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000005f5b5a40000000000000000000000000000000000000000000000000000000005f5b6080000000000000000000000000000000000000000000000000000000005f5b6080000000000000000000000000000000000000000000000000000000005f5cb840000000000000000000000000000000000000000000000000000000005f5ce0f0000000000000000000000000000000000000000000000000000000005f5dcbb0000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd18000000000000000000000000000000000000000000000000000000000000000420f5d5e5132ac16831c0c420b2e4348553e2835cf6b7764eefb1908997cc8501dfcf180d7ad72bf3313f016313fe7aa3a134b06b53f4f2317a74b5455878011a986cc2fd0b3eb2e32ac671e13fe59db59688a1f49fd71fc5ea1de3162975a6cd243ab73d9dfb19ed57b626487e0e8d4192de45e5084083cd1a03aeb6b004776b00000000000000000000000000000000000000000000000000000000000000046545e8567be21ffb54df1c55b30908e62cae7ab7acbd840698e425e4b4999ea36d28dd45cd30a8ed96f05762d723d83130ace27284c9bc868bb8f1ccae6726f731b09fe696a4b676a0cfdce2a8d0d58fd9d4aeb116110fe1918a8b4f403db20b35b9625924384aa070bbc25c7c24c2f2f39577af4e2bbbd2699560ee129687ad82044d8080270674afad2582de39abcfe1cb19d8243b9f6d31ac6df02257ee13e2d558e4961656fa5e782a66d6f59ff6881448d38b61fd630bffc81442ce9575081c9ea1be1cff0b00000003000000000b0000000300000000f901ef830151d4840154ba908304aaf894555a64968e4803e27669d64e349ef3d18fca089580b901c40ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000002557c000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000020000000000000000000000001757ee1ca5541182d242027a734cefb3d6a745fa0000000000000000000000008cb1d12040c282ce84f851763e2befc48a0810b10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000015705520846800000000000000000000000000000000000000000000000000001563c0e8ed6a00000000000000000000000000000000000000000000000000000000000000022bbc5cbbf99c0d37f3d2aae6daf5a4d7dfa26f8ad4ea658ceeacd1d16bea82961cb86c8ae18cd27416d0782aff31adf25117d75b85cac5c410df5b8de615c70a82044d808017f2d6241834bf9550f7264c42b27a3d05a2a8fb5315b9d82791edbaac56107a5c926d96702e5c401424c34f351eb84109cafe915de7d7d26636ea9806a814801bff0b00000003000000000b00000003000000000b0000000300000000f86b208408a4f1f8830156219468286607a1d43602d880d349187c3c48c0fd05e680b844095ea7b3000000000000000000000000c8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a100000000000000000000000000000000000000000000000585333fe46a1a1a6c82044d80806b533a403af42468742ae5f3efdc12daf9bd38dfa3059924cd35e9d2d2a377444acf354174f9ca1f414ccedd2e434e0b433ff872f60a20da007ed0f80458d5851bff0b0000000300000000f8b12784021c58208304ac1194222228060e7efbb1d78bb5d454581910e392222286119763fd5872b88432accbb9000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cbba106e000000000000000000000000000f78c3faf2046813f12fe6652ff952b2ba6ba845a82044d80808f22f2de07105da8d5d9dc8edb193fd108c8fd3c4858dc20a23e09acb3995eec3dbd05a55530b38f6b4fd7a1416914f04f13fa6c25bc4b1397a784abe13b15f71cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000eb82013b8402625a00828d4594b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080a54a20ef6241a24e66579a016490ddaa20ac5237cc3920240bea379f56c5f16519284d19c65b19253e95a448bc53b8e8674d4904eca64bfa9d6804a0b21462ec1cff0b00000003000000000b0000000300000000f903f26a840174508083030015941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5445b43df8087dc5aea1da71e16e6be5db16a5a065bb35fc5a7561c4fba8bf78d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000009cc2cb595f85c9d1c527996555e21327fb5e47440000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d51715667374e78715a51573550667737417932774a76486a445748577937624a6b567659667974754b47774400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041cf056d549f465af9b6e55e1dc4762e9790374b2bb1e47bf465dff9a977521b291acfbd54361ebf15ca703a29f98ed7de9fcc1739d17123b634f88b24e1e3f5751b0000000000000000000000000000000000000000000000000000000000000082044d8080a67e87448e21458f2e0daa72470c7b3aba821cd5b07d4128054d5ea267941bf06cd1939cada4bb72f53fdbf3f479a9eada26885bb585c42ea28031f4c04c4a2e1cff0b00000003000000000b00000003000000000b0000000300000000f903f2258402d6b0f38309105c941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f57434eed86a2209cb61008d35514b33b5b56d69aa8d6051dcbf2adda360fd7abb000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000132239919653064455f78e683c365bdcefa8bb3d0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d52663166534d787a51314b54654d5a4866657635706d736e61724a76725359784a6b7667393973334e7a4c6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004192bbfc4d495eb5a1784f3ff5109e78c2be43fed9874388b78bfa25c3224866d51712a636189146f18ec716c2ddcde6c64df64fe8f2936fc5da46ca656cff2aec1b0000000000000000000000000000000000000000000000000000000000000082044d808084ffe2036a8fa6ea7499f4346870a19b84fc74158e7aa047eb67cc820563e9df5eceae53db779c5ed39afa1177f3a62d9bec678fc3e4bf5ad4bca0a53d6fb9ee1bff0b00000003000000000b00000003000000000b0000000300000000ee81a68402625a00827b0c94009905bf008cca637185eeafe8f51bb56dd2aca7880429d069189e00008082044d80801b0200bc64259973edb845427dee669bba37b97e3ce801142133f133aa7a77e46719187d4f3d66ad9e37983725da1a3061178b2360912a0616e94c51a34bb7161caa0b0000000300000000f9010d821ee084018bbc988307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13f3c0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009832b42064d1b7000000000000000000000000000000000000000000000000000000000000000082044d8080dcd2ef6ffc64607c3e8228e4a11c5ed700b6b617bb7a7622c9a6577c7e2aff874f66acc28f4e6a4ab30d106a7a2286af17a28eb5d2402c5552d0c9520d20d6901cfff9010d821ee184018553f88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ea60000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8198f0b7fc618000000000000000000000000000000000000000000000000000000000000000082044d8080c12153878eadcd2d15c857ef2792e9fc2db5d3bd6c27ae891ab4f16a25ba7294600e03e412be6aa0a2c4f040d26eb1242d254843ccea87ed5f696ce1699258941bfff9010d821ee284016ee5c88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ec40000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c82e8c66cbf1a6000000000000000000000000000000000000000000000000000000000000000082044d8080fddf91e72906765982df34a767d163cbbd0c0b347658ab56a0a3a04cc1f14e124cc53b90924519309db15d1dd1fd2b1e575beb4bcc8cea65e68b054f9296ba4f1cfff9014f8301154d8401c445408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13ce600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731958d2d429ea51c49f3b00000000000000000000000000000000000000000adf463a3704377c3ee8d91680000082044d8080545c76198bc384464dea22db921db86fb5648d1e859861a5d0eae70a2e46b75132b3c7d6c8988a27fd2b269cf097d4199ff2d2ee0dd71d759c097df85d7c47e21cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be64840413b38082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80801b1380301ae8db0eb3f94243c29ebe663ed4dad76f4affbbd516cef3379933ee0924b271cc7c68abbe2a716e18c485712d126d9e0897e17bc99739b86a98f9601bab0b00000003000000000b0000000300000000ee8308be6584015be68082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80808912439f3a0301bb9fe59b96f6977ef1bb83487fa42628a7d614d58718ad148b07c60f18aaaf59d36f2a560b9f13057a3bb48a50a31f7772d4281bcb302fdb0a1bab0b00000004000000000b00000003000000000b00000003000000000b0000000300000000f86a0784017bf1a082b48f941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c7680000000000000000000000000000000000000000000000000000000000194b4782044d8080d06b79bc4df74c4a6ba59e8bc1e57e9c3194700dcbf8df2fc3c9fa2ef555844a0dbdcb8e23298a3dff13aecf21fc2287dbfa68df1cce01614f6659f7729ba8c51bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9044c0884017d78408304578d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13e4000000000000000000000000000000000000000000000000000000000000000030a000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708ca1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e1442700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000041d1a054cf52782e83d7b7111c466fa04e03472a9c2098b9a0dccdefb17745170c3fc27f88fa426fbdce2343c90a3662dc441e75c6ba37988ae18160ca98fa7f141c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000194b470000000000000000000000000000000000000000000000000002820037b6d0c600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b1e4a5963abfd975d8c9021ce480b42188849d41d0000644f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000019581a7c83f846f74fc66fbefef1299521c65e390000000000000000000000000000000000000000000000000002820037b6d0c682044d80801efd30d23b23d0b0fbfe93446a107c35aff67967f83b03a5a93799323fc98f5568d4c4c7bef6650609c9d1b067eedacac74d49b715b587ec4d61bc4d275fb94f1cff0b00000003000000000b0000000300000000f9011381b684017d78408307249c94f6ad3ccf71abb3e12becf6b3d2a74c963859adcd8723a0f814eb3f9db8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000b1db6eec8d8c629f9f7e28bf2680e3e264e929880000000000000000000000000000000000000000000000000000000066e141bb0000000000000000000000000000000000000000000000000023a0f814eb3f9d0000000000000000000000000000000000000000000000000000000001633e7d000000000000000000000000000000000000000000000000000000000000000082044d8080f3a405df3bdb20a750ee93584f05ab47603187da5842f402d2c9d766f50560717e471e18c695cc989d88de0aa59c4c67ca94b1093b05004db29a50d5f5751ae31bff0b0000000300000000f903ac0484017d784083077b6f94d8e1e7009802c914b0d39b31fc1759a865b727b180b90384ac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000a40c49ccbe0000000000000000000000000000000000000000000000000000000000004fe0000000000000000000000000000000000000000000000000000003a2cd4f5c670000000000000000000000000000000000000000000000000000000001805e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066e141b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084fc6f78650000000000000000000000000000000000000000000000000000000000004fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004469bc35b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf65cc37241d426970b91720e8255140ade00f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064df2ab5bb0000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000001805e64000000000000000000000000cf65cc37241d426970b91720e8255140ade00f050000000000000000000000000000000000000000000000000000000082044d8080a3d508557b59df3d77b1fa113f2223b67f82fde7ad9d9cf6f8e2b3bdd9b52a672a2f437e010cd99922806b351f71ab6896a97723f26cbd7b5781c0305b64f81a1cff0b00000003000000000b00000003000000000b0000000300000000f9010d821ee384019bc2288307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13f960000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981883f28b083b000000000000000000000000000000000000000000000000000000000000000082044d8080b5e4d0db289d0e6f61d922545bd7579bf20015b29bee82a2eb83bc9bbda09ea04b33b1f4c5f3e5aba7f5821bfa1a9f464373d9afbc99e4dcc58297a52ff062f61bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000e93a8402cdccb48255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080be4c664f330b9151f51b9471b46aaffe652d5a410fa66eeb8d1f84d72f80cbdc3cc90a5514e45f2f576ec352449eb0313c6ea9a15769a11eb2ea11d86dc6f9ca1bff0b00000004000000000b0000000300000000f9010d821ee484019bc2288307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fb40000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009834b4eb369439000000000000000000000000000000000000000000000000000000000000000082044d808075de06ec5466daebd6df45e07e32c8c4727338a259fdb82acb5feb48d3652fc838947db58b0d09a037a303b3c74274196df3c5de1142bcd2f88aabaebb2323881cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d58401a6f9408302c78894555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c788000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000796b7bf65e570f59e08ac136dcc32e8f642f683e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000016442530c6a80000000000000000000000000000000000000000000000000000000000000001e093a1bf79cf96024c9b7b7ed3a8e26c709e92dbbed7918174b100d95d49e55682044d80800977d0591c4d658fa5bd677158b390bf73e8ae5d7218f7bc4614f3eed5126eed6226f3e972b5c62ec523064f6af4787e049c34f96e41dd9d77d4d25f0d2e76161cff0b0000000300000000f9010d821ee5840193bf608307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fd20000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000098370b3e46923d000000000000000000000000000000000000000000000000000000000000000082044d80807df0dc6ae14e4160030559716f36cf546839515e3a14e78546cbab05e2107d09760212c06296915c5c1a92d990722bd3e26afeb0cf29bcc462985f9331f117981cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f901f30a840175d7208303465694678aa4bf4e210cf2166753e054d5b7c31cc7fa8687079fbc2a49e180b901c45ae401dc00000000000000000000000000000000000000000000000000000191dfea9b9b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000104b858183f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000af09364718f745b6855df11778d9b523eda1e4bc00000000000000000000000000000000000000000000000000079fbc2a49e180000000000000000000000000000000000000000000000000b55d73b977dd5698000000000000000000000000000000000000000000000000000000000000002b4f9a0e7fd2bf6067db6994cf12e4495df938e6e90009c4a2036f0538221a77a3937f1379699f44945018d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080438d26a5ab0788935cfeadd2658b8a1447d9448fba3f8bbcf8def6c0b74f77cc77c03cba29fcb4d3fdc1b913bcef92e36e10cbd8bd913da805760e2d9c5242ec1bff000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ad40b00000001000000000b00000003000000000b00000004000000000b00000003000000000b0000000300000000ee8308be66840433bea082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80806f7f1dc42b8cc34aeb9ee8206e47765be4cfdb5536272d3250950648aa4e3d5907cfece316b171d676cb399a7a75c4b11ed9ed5a3f27dd4122d8c909d4dc51a81bab0b0000000300000000f86c81b784016694e083010ec4941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000331f3a300b7115a45ba31e3428ac002267bb6d7700000000000000000000000000000000000000000000000000000000000f424082044d80805fa04ce2bc7596aa78bff65f39212d4f8c6325cbf35deb9fe4fe916b9b2858e33756e78b77457b8c39c573cd729120935a76c6a1d6bc73459a16514fa1054b5e1cff0b0000000300000000ee8308be678401945ba082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808090c0419282e01e7ccd1b49b104e6e722c161127a5197edd0bfef9447d4600a2a3e17a07b6523f4aea15c603004537da2e38cc7aec7ba9801099d516b53fbff0a1cab0b0000000300000000f8ee83019e568401e53ac083035f30945eb6b3db915d29fc624b8a0e42ac029e36a1d86b80b8c43161b7f60000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a1000000000000000000000000000000000000000000000000000ac720b1f97be20000000000000000000000000000000000000000000000000000000239000f7e000000000000000000000000000000000000000000000000000000000000001082044d8080443dbf96a2e3983c0cbb6e79cdd2a18777b63fa692b19ccfed0bd0b2ed0a6e667db137169578347abbb112cfbf718d3795e48e569f79b357a042c5f1b4837aac1bff0b00000003000000000b0000000300000000f9010d821ee68401a893688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fff0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009834b4eb369439000000000000000000000000000000000000000000000000000000000000000082044d808049b78766cf06b54ad4071fdf9f0182f50a767cae6a31f64f2379b7ab9b6ec2e65fd26b7b443ef10cffc30988b7bbc73132033d1d6e64351a47baf21fc12bee9a1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ee78401b230588307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140180000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982a06a2b59803000000000000000000000000000000000000000000000000000000000000000082044d808086d7452f41889b2e6811591fc74bae161b77d3712a76ab034c6d7634f3e0041667e2f1c34dbe96c8c6486cebbaef1f7b3cff036f05e72662317089557121c1d41cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9014f8301154e8401c61a00830596399473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13dd600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731d4964ad65b18a4655c340000000000000000000000000000000000000000adf476e7c1ddbf9c2658d5180000082044d8080ee854267d400eb90253e3ed78b0ae5ec32fe0ba653de34d80f5ce044cc0fff77498cfa898a2ca54b3b84abab13ba9fd6658f4e0f644d940d33f269a9e6d7cba31cff0b0000000300000000f9018f830151d68401d0ef708302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070637b4d8b21c764d0d9c08dd1d28b279bb2823500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000151c1d3bbe7200000000000000000000000000000000000000000000000000000000000000012a0a7392d80a1be757cdebf95b665fe0544e091c1b8fdb0ea7470aa9e0f6492082044d80809b8ab0a9bb0496a9099c6018c73ff2acaada0e299dcdae23bc20fb29fad715822cec0db8716a0edbff285acecc08b662b89a0412b629ba866e4c2abb80aab2f91bff0b0000000300000000ea4484018cba808302066e943df9e9ba39dc3ee6b6fb8556bccdfa87ee64fba680841249c58b82044d80807943273fee9a25c1549219629bd8844eaa6e9e327a7935d203e2f9d6d238a4837e3fbe0944dd0d07ccf2cdeec4e465bd25322949b697bb0efcaafe2c3c5316611bff0b0000000300000000f9010d821ee88401bbcd488307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140360000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982d87a827433e000000000000000000000000000000000000000000000000000000000000000082044d8080d03b301c79a78d1584e3c7eedaf2272a56f24adef479a8c3e045ce46ff16065d7cd5f8bd5528c8a634951d7e3f11c7c97c9d57cae43640818c7135a1a9284ae01cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea81898402625a00827b5a9400cd1fb066573ad4215aa699e580af9ef4b3a4168084372500ab82044d80801c0e2075230c09e5f074cac36419c3eda1ded5447ad6470d15caf956eeb3f4d5305e11deed13c3947e01beafb0054fa692ee7b708525bd6438bb1283d9f5633f1bff0b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ee98401a22ac88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140540000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000983735fbc7f641000000000000000000000000000000000000000000000000000000000000000082044d8080590354f8346245d29a2193f306d6473bf0786bdbafbe91df5a84e8642e3570eb3a6da19a7f13a0e834f5884633dadd4d2e432c2c2bfa3324429be9b7ad04290a1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f86b2e840bf5ba4783015de6944dd70bec5984171a75003a6186219cb99ed79cbe80b844771602f70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000482044d808026293839e8593c6b85003aa27b0a4797069ba043803164bd5209b940d39c2bad7bfc0e2c652552a2606eb57f0dc6f7426805edf84ca2ad6fdbfcd9136ff73bca1cff0b00000003000000000b0000000300000000f86c81b884016b28c083010ed6941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000c8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a10000000000000000000000000000000000000000000000000000000000b3671882044d8080ee2364f3d622e422ec2a90a92137fc5d8a51510bfe0605b11ce2474538a7e5d90afc93bd57016193b3c0a416f3a471bbe24bf08eb385bfb9635425e3f84acc7c1bff0b0000000300000000f9010d821eea84017d51308307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140720000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982a3158e2273e000000000000000000000000000000000000000000000000000000000000000082044d80801bb6d2b5470d77ae8986b29496a0565ee37380f17c51fb34da2d9b4aa9b78ab66d72906a4d0f10e0663f4560942d246c895187c4287b43f9d26bfe128b4abb671cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e94684015d6d2082a01994b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d808085262abae3391ea17e9032bf33e93d793771d42e14defe690719b53803d7085915ff9bd53ce52fb50282712974ff93950c0161b19a492c040c0606e855207f821cff0b00000003000000000b0000000300000000ee8308be6884040f1fa082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080bcbd6ba1c6cca5649a36a7e14c75a5561bac294fc4ea5cbd50e4c83a04b0039c5ab9e91f0f06c0c028f7a6aa146fa901ac23abdf57072083cb2113e5d53e7da81caa0b0000000300000000f9010c81c18402625a008303233f942a3dd3eb832af982ec71669e178424b10dca2ede80b8e4cd58657900000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e602c1920443f01cb100a57a7f894df8eb42f6600000000000000000000000000000000000000000000000098a7d9b8314c0000000000000000000000000000a2036f0538221a77a3937f1379699f44945018d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000082044d808085cf2d27dfbfd35f2e62054951ea381ca212755366c3b51fff597c6ffdff170e4bfec23bd116bc191684d77da0f186d5202128c4a7cc68187ae9746b5c8f412c1cff0b0000000300000000ee8308be6984015a5fe082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808020bdf52ff36fb31db16395c7eaa2bbff670a9dd200ea46062836d24f1b20e6e03cf5779a839573d635f939669f6d36f345a0bd444217df07950ad766e4c4efd41caa0b00000003000000000b0000000300000000f9010d821eeb84016bb1788307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140900000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982cb210d1b77d000000000000000000000000000000000000000000000000000000000000000082044d80805c32534154b68c162e322a19dcd13dd8fd1fd1183396f6b4c1e6c43609149f4566b01aed437e1992606c98b53406eae40a6b630dea0e7cda6a124ac4eef068121bfff9050d81b984015a5fe0830a10a994b83b554730d29ce4cb55bb42206c3e2c03e4a40a80b904e454e3f31b00000000000000000000000000000000000000000000000000000000000000200000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000b2829a0000000000000000000000000000000000000000000000000011b27c73a01b7d0000000000000000000000000000000000000000000000000011c9409d5f4dcd00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000440000000000000000000000000b1db6eec8d8c629f9f7e28bf2680e3e264e929880000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000066e19297afc94fb216be4efcb60b0969a606731d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd000000000000000000000000b83b554730d29ce4cb55bb42206c3e2c03e4a40a0000000000000000000000000000000000000000000000000000000000000148c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b83b554730d29ce4cb55bb42206c3e2c03e4a40a0000000000000000000000000000000000000000000000000000000066ea78b70000000000000000000000000000000000000000000000000000000000b2829a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000281e4a5963abfd975d8c9021ce480b42188849d41d4f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000e1829cfe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001240000000000000000000000000000000000000000000000000000000000000148000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080c4b8a950b6fb2fd40ef9292e2e21f16ce93551a97b61f65dbc361e1b97c7e4fe353efe7bbaa446443a57106a013415b016a5de387499d032c14384b3b85e5a4d1bff0b0000000300000000f9018f830151d7840179a7b08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001e09278590cc10fb2bd69235d2f4372fd0e1ac44000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000002bd26ff6604000000000000000000000000000000000000000000000000000000000000000018bce34245eaa4dc895284ff7b987382cd12c8b40d2f55ace41c054e6b667f19082044d8080185025c2a18ff67f6619138b44a5262ba2181151be1526f23b3787bef28350337867a681c56458160a1ee95dec4ad4c9a3c47f1dfb9a39f9b39c67ad3c6f62551cff0b00000003000000000b0000000400000000ec0e84015752a082520894e4edb277e41dc89ab076a1f049f4a3efa700bce88708d8a44d7dc33d8082044d8080e5f393baeec28606eb9e5a973614ff7a3bb17e7df7d56de1c8dc34d71ae0b50d766c5c5d0a02d04a7b4140cef33d896eba5ae9c796e18f047b7b3bb7c0e7af981babe94584015752a082a01994b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d808064019d123c2bc2e40c10f63cef99518b130d358e122504f0028f2f14085f24204f3d2f2de773ce5bb4be2eb02d7978421bdaef8a98f8d2407d3ba53e0ef406061bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821eec8401754e688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140ae0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982cb210d1b77d000000000000000000000000000000000000000000000000000000000000000082044d8080f8fc4cd3cfd4f5669ef452ef2ad8c5082f1ce1bf2f0523a52e12a916b9ad8c6c12a08dc48c171e434cc75852b7c8161b0741f0465821e8bda5fc10ffaeebdd841cff0b00000003000000000b00000003000000000b0000000300000000f12a8402625a008307489e94dfb6baa334712cbbeb26b7537f62b81c2a87b1e8871a84698758700d84e9ed3d3082044d8080c9df68b81de01a7ddf57cd4037afa1df1f031e10810bc3c23c88347bba337b20343c98d810b700b8e27ca6243277b28771d484477cbd58366d02b57f3b8aeb731bfff86a0584016387a082b49b941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000ad41c77d99e282267c1492cdefe528d7d50442530000000000000000000000000000000000000000000000000000000001805e6482044d8080bc02d6c00e37eecd89d84e5439fe5186d2b55f91e68bc952ae7803f7252afc0438bf92877c67810409bb9b40ea6d08b272f760015563aa9e052bb46ccd5e245f1bff0b00000003000000000b0000000300000000f8b133840225dda08304ac1194222228060e7efbb1d78bb5d454581910e39222228614edc04e0e0ab88432accbb900000000000000000000000000000000000000000000000000000000000000c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b48eb57e000000000000000000000000000860db06d8c758c594143686d0ef9cb52543bae0382044d80803c9ebdd5f72aed2cfa0d36b5311cba9fd9a211cf7c9260502b5b3975751b24603678ebaa584a22aefcc118b5f8983f25e0201d6152c9b7d0d9dd6c7249760a211bff0b0000000300000000f86c81ba8401607a6083010ed6941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000b5f43c2206e3cafecd62651f5fce9091a020748800000000000000000000000000000000000000000000000000000000001e848082044d8080f97d0cf4ce6c85eb1609a85f2c71839e2bb12896b7968547c085d447c99f23ac4f3af1959ed38d3fd76c379dbee00fe520c52c8ec791afe021b974d7442e9c261cff0b00000003000000000b0000000300000000f86c81bb84014b1da083010de8944f9a0e7fd2bf6067db6994cf12e4495df938e6e980b844095ea7b3000000000000000000000000b5f43c2206e3cafecd62651f5fce9091a0207488000000000000000000000000000000000000000000000000000739ecb738d98f82044d8080a78e3716c0eb3802c51e41bd1c7ca64c9a638221f07c7c06af9f6c94300b21d37ac0c2374cfce5539fe7d9c180e153b2fa10b1ccae8b727a8d4734dbd4b9287f1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f281bc840175d720830107e5944f9a0e7fd2bf6067db6994cf12e4495df938e6e9870739ecb738d98f84d0e30db082044d80801049e7b2658e6542463bbe11e60a7198f23cc761a536410d5383e00aa6f6cc68440573478137a9ce3486ff41a903bfb738c44469e56c7d1dc667ee4c18750dbd1cff0b0000000300000000f90432018402625a0083053b1f941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b90404d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000a26ed90933f9410c967efc64452681f501477ca7c7bb0efe1a8e16b8063c3ad420b4781cf348b8a0a4851fc3c2ff2553000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000807edc9cca4620e59b6919cf51b699ec6a2bde550000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d544869314d7366795965714573576178696f4e445734344a504d476d346b6e734e486567705473675668514a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023c5fc38090643b410c8c06c4c0f3246059e98ee0000000000000000000000000000000000000000000000000000000000000ce40000000000000000000000000000000000000000000000000000000000000041ecd952920c1aff799bb35cc6b1306371afbc5f683cdefb2ee2e31ae21bd48a8270797e9889904a574fa1918a3bb13fa2b28d83ed3ab567b3aceea912b8d04f7f1b0000000000000000000000000000000000000000000000000000000000000082044d8080feec2c92b7ecf47d4dbf93f7041e0082d822ea2bedafe3c6ae11d8426678fb643c29bab890f68593a4f8421415f5a68481621730b71dac5b16a41b7c31ef762c1cfff84a06840174508083074ad694ad41c77d99e282267c1492cdefe528d7d504425380a4a0712d6800000000000000000000000000000000000000000000000000000000016e360082044d808067b5300ca47a28ce2521475a6224c2fe27e4b28da3a2cab92231440d3938603724b3ee0a7fc6bca38ad52b7ca90b534e67e8d3a55ca472e3eba0ac51bd5fbc7e1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d884018c1e408302042094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000020420000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000da930060b712589736018c6d891ec57b0399db7800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000763bfbd2200000000000000000000000000000000000000000000000000000000000000000017f0ea037712c6b94793ed1db0d924ab44381912765b13d871e7eb101ac652d3982044d8080ec0c9e107850e44db65fd11d35d41ee8ddadfd9a2e989dbc619a60c52adcd2860092874af3ca89dfdd56ce708439cc6cc538ee10b7fb9023d4125f7abca62f0c1cff0b00000004000000000b00000003000000000b00000003000000000b0000000300000000e92b8401499700829f8094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d80805b33a4bea9274b6838fc8c299e7e1d463d8a9866847ed34961dfa742b1e09e7960336c7a436d7c78f8c055607e77072b8f1ddcdeea4757c9236b8dbfea38a1181bff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e080b00000000000000000b00000003000000000b00000003000000000b0000000300000000f84a0784016e36008305dc8f9468d9baa40394da2e2c1ca05d30bf33f52823ee7b80a4c5ebeaec000000000000000000000000000000000000000000000000000000000112a88082044d8080b0b78bcb15ccad6e34965bb75310d919de9c98653338a4e621bb68d4e1158bc071db0cd0eee106b2a15820242d3a30d78cab313ce696b38609712e9b97b4f2211cf6f00c840a85ad1c82fd67944f9a0e7fd2bf6067db6994cf12e4495df938e6e987131d14dce4400084d0e30db082044d808061485ee80be12c1cf4118d79c8240621c4d61342aa6e21313bcb338e0c4d3f371f1589ae7a144279671a249bf3d2514d9f39c850081cfe35070f9df8b5bc52b71cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be6a840433bea082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080ae7ad2d365c97fd210a6f105189d8f8845c7607a5304f61a75e3f95b30d0278654bd6071ea8dc8eb258293e33b8662588af561e361eeec88f2c222dab85904a21caaf9014f8301154f8401aaa2c08305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13ec600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000007322d2c4642c149072472c80000000000000000000000000000000000000000ade71ffb3551101896108d800000082044d80802d5cadf3e11640c1e52b9bceb4f465b5be3247fc0ec042d85c44575e2e71c3ac0542b94b31e12bdecca3fbfa292da254413c91cff46b7a09a6a264a4b58fa1941bff0b0000000300000000f84a0d840b405b068301519d944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000131d14dce4400082044d808005ff907a16f3f1614d5f81b3fb224f805038d423f46f7a3201533568f87cf5032028fb37a272fa727550e1dce4af167b67b51157e24de676306f97faecf6ceac1bff0b0000000300000000ef808402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a10986246139ca8000840333f38b82044d8080e1a97f847a204044e3f9e326c84f4d5369fc9bdb762c0aa38122fd4f9e5321d0660038ec1b8f5c2273ccfe875ffc274d7b809cfb2ab742631683613108c7e8501cffee8308be6b84016387a082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808086767ef08deb78094341e575335c29fa45b39ae1dfa57003b2f1b8e0f29dd57f13cd26cdd53e10c6c35df7eeecf0369bc77a701d0732dbeea119688fa09f7d021caa0b00000003000000000b00000003000000000b0000000300000000f00e840764acfe82c6ee944f9a0e7fd2bf6067db6994cf12e4495df938e6e98712dc81e31cd00084d0e30db082044d8080cbfcaa3444f14e64cb0fa9e0259f2fd1210b5425a8c23842150c77d1c9e8578d79aea37c19621cdc2d60eb47fdef1ddfb63a0dcf97dd37f639b862a80d81aab31cff0b0000000300000000f903f20a8402b900fb8309e24a941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53ae48ab8aba0990d601236bfbbeb5f26e910d68867594ac5def0ee45b27ce819000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000ec90f6634a907165e5d18a14c1dc51e32b9de8b60000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d6252327345444c614761345a33664a4278386d6b65636e59646b6b323451586443556a737253466a62745161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417ee5aac8e9e510dbe7b12d5757762ea0b0eed32189dce8ceb044ba9bd16daac61415af82e6bdac2e90d2227bfe8336c383ac24ce03af40f159412e86b49e02f71c0000000000000000000000000000000000000000000000000000000000000082044d808054c2fcd741aff604618f9331edd8de2062dc15c3ca37a0ae759881f21547c1dd491a44cf2cc85c20f72575718f39a8026b3989a1f07f4c9de324b8fbf62d03801bff0b00000003000000000b0000000300000000f84a0f840842bf86830127cf944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000012dc81e31cd00082044d80803d7108665030a686303828a8590515a325439a383cd915a8510b1ead08fdbe64726b280ca7a73a844d6ff801f53ad44480c39059472080c96b4207f2b41eeb141bff0b00000003000000000b00000004000000000b00000003000000000b0000000300000000f010840cd2e41082ec87944f9a0e7fd2bf6067db6994cf12e4495df938e6e987141476cc45400084d0e30db082044d8080bb1a5745409e78f126e0f3d301d1bbb8e829404909bda7bdba47b38a8e5cc5022975deb7d293bdb69210a4a50cb606efce11040df82ec34008b179a51447d3a41bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f84a11840b840af383014099944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000141476cc45400082044d80800f0a3bb81e483365b2f6196c60d0d97882e9d2816fbfb78689cd3850a33f7d9e0f6732a7d860fea63d323bdd924b39043a592e79fc5cb42593cf5a3722b854de1cff0b00000003000000000b0000000300000000f86a0884017d784082b49b94a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03580b844095ea7b300000000000000000000000046a15b0b27311cedf172ab29e4f4766fbe7f4364000000000000000000000000000000000000000000000000000000000112a88082044d8080325b6bc0360425e4a14b8d91cd8855d8649bf946352c4ad927a31e56d22c004731500e69af69ce8b80b06946735af113f7ea67749f57af617d5deae89eb1f3d61bff0b0000000300000000f9018f830151d98401a1f0308302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007f35a6e27c542fe3bb6bdda638abc8bc65c3c0960000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000015c7ff2eadb60000000000000000000000000000000000000000000000000000000000000001a93b38316983d650e0fdfc2642ca16b840420a6bd6962cfbf417bf5a790d681b82044d8080738091a8459376230f139c30ca51cebeb6deeab09492d46a6009f33a090953b219d8f52e737caa178042069504eb99b0554f51963c9943204724b283f347c10c1cff0b0000000300000000f00484018519608287f19465a4b8a0927c7fd899aed24356bf83810f7b9a3f871c6bf52634000084db6b524682044d808050f3c9ba5b616396e065717c29365860afd49c5e9aa275eff0f37446d3eb5e3611e8626c0be00efd62ed5d31b51cc334dd8793c6bc8c62808616faebc97cb7b71bff0b0000000300000000f112840cd321b68301312c944f9a0e7fd2bf6067db6994cf12e4495df938e6e9871382f1e51b400084d0e30db082044d80809585c9b5b7689c9abd1823e19e0f8d592f57f419f94cca0ae20ed021b68aaeb556273263752bc1e78c8508d5af41a05d2b886e07b78330d63df42177f02110621cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f84a13840891001683010317944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d000000000000000000000000000000000000000000000000001382f1e51b400082044d80802eeb9e8ba20f90a05d7584a87870c63edc5a0952fd52d1299d54a19098af421408f9882e7e62d42d0afdff81a06c4614ada1367758b701289f3aac12f5ec13e71bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f114840be4d1b6830126d3944f9a0e7fd2bf6067db6994cf12e4495df938e6e987145b3905a2500084d0e30db082044d8080ddfa4814082f9ca8947b3a9263cb97c0957bed97d3032e8fa38df43eaf7669743b15fc3cce18b60300063396898de729594c2af72e147d8dafbf7dbb3e9e745d1cff0b00000003000000000b00000003000000000b0000000300000000f84a158409de70b683013343944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000145b3905a2500082044d80800c288f5c663955ad276d8e8bed2233997f07bcaeade6992c98b05f99151c6c2a27d0a04fb3e07473e11b88176db0f5baa46dec2c48eb704e4d6bcd78467b25fe1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f1168409d2a29e830141d0944f9a0e7fd2bf6067db6994cf12e4495df938e6e98713a7531ee5c00084d0e30db082044d8080f22f024c3df0f0582d53d27586bc0b534636d4bbbdecb6cba76d31d9ec26c24a2fc8e613aa6d783ef7541ca0463908b696f7a3cac12710986820bd17613a05ee1cff0b00000004000000000b00000003000000000b000000030000ae450b0000000300000000f84a17840843742f83014a3d944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000013a7531ee5c00082044d808093acdfe33b2bf0475202506781b23511c98ddf648158adc2480626821c8462f765d5b53638bf280519dca4c3c6d1b8e62068dfab0aa3ee45702e69dd44d70e881bff0b00000003000000000b0000000300000000f9010d8263618401810e38831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e141af000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042a6800000000000000000000000000000000000000000000000000000000000000000082044d8080787ff95ee62900d9971c92e31e4a72c46ccb514a1f429be155b8bf471369fc0610e0132cde21bd011d3efc70d70cdf470af7ad9b5aaf86170803e31f29a94bd21bfff9012e8263628401810e38831e8480941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e141af000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042b949a000000000000000000000000000000000000000000000000000000000000000082044d8080812562f17bf5daeaa60ed73ad30eac5996a784b57451663ad68d2a3a1a4ceffd0e98775ae6ade38d54ffb4a21778eb2a047d280b8408451096b13019394cc5eb1cfff9010d8263638401747b78831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13bf40000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000980faec989d805000000000000000000000000000000000000000000000000000000000000000082044d8080d6ae2347276fa3cfd245d9379684454bb7f0bcc3cca6d642d827809ff5d836922ec796bffe17a15a93e05d6d62d524588b2e083a3baff8736a9ba633ae1f7cf51bfff9010d8263648401875798831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13c180000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009819595140ba78000000000000000000000000000000000000000000000000000000000000000082044d808008a9fd6bf5a08b08d9611be3a3243fdc5809a0e51aec5629bf321cf09436fc67600bd37403aa4f6155045256cd67620aa2bc7e7118c6b2dcd5f72db9c30a433e1bfff9010d8263658401600d00831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13c3c0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981383eb6618c6000000000000000000000000000000000000000000000000000000000000000082044d80809be365822aadb974a913e75d18dd5280b322409c861bfb10d545c17c72979d847b52b9ca8a4f49f5dba9016e98d2e55536a8ce32fdf06b6a13320aab4a6869821bfff9012e82636684016331b0831e8480941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13d9d000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042ebcea000000000000000000000000000000000000000000000000000000000000000082044d8080cbbc34a2b94e3d2e56260b5e0034028c2f6bc1c7306fe9a9f1956b670c027dfd70a38bd41a95f94774d84e470ea2a25a42c499e1e4b971dc91a426139f61a09e1bff0b0000000300000000ee8308be6c840453c9c082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80809fa5bd47d6b5cc939b9b27f080a9ee8477b2baf9fc9ac7b51c023ba5eab004ed22ec4afd14c073c5eb9f9a2802eac4f24ac04c34b7ef33de4ecba895e8749e141baaf901ce826cd284017143408306dcda948ff6508bdd71b535df073920c423e9eaee0b97af80b901a4b61d27f60000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e14087000000000000000000000000000000000000000000000000016348a452209ad0000000000000000000000000000000000000000000000000000000000de701c700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080aaa0ea5c36cb0e4fd0bce18e23632f9c8ea2b06b5351c2c69a2adfec23fff4a43f84b301c33c51f2744abdfab346fc91d47c8dbe1b2c91849163ea7d0dc871531cff0b0000000300000000f9010d826b8984017143408308e02294f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000098f0f120de21a90f220b0027a9c70029df9bbde40000000000000000000000000000000000000000000000000000000066e14088000000000000000000000000000000000000000000000000016348961fbb5800000000000000000000000000000000000000000000000000000000000de6fe26000000000000000000000000000000000000000000000000000000000000000082044d80809c6fef4b141e8e4a07c9cbb2511753153fcabf3a831eec7216bb4af90abb7b7d6fb5002e74953de4a87a5aada51b25c9b1b05a961546421ecdda070420f081621cff0b0000000300000000f9010e83018d5f84017143408308d82094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000023abcb82f468e3422a7212d4ad47cc2dd39162a30000000000000000000000000000000000000000000000000000000066e1408a000000000000000000000000000000000000000000000000016349e13e663f90000000000000000000000000000000000000000000000000000000000de70b11000000000000000000000000000000000000000000000000000000000000000082044d8080637884a6f0f95a88b0fee2f9bb436161c0032965d91166bea89124fe6513d31c5527771f11b4ed3cb90e8b757c9f4c9fd74c6bcdc82af2e68521ffd5e0875cea1cffee8308be6d840171434082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080c501252774527c8bd4e9fd808914868352ec182c325575824ae9e83523ba33ce46a6b82b2ebb32e4194110443e5c67ad08df9d8db9bc6fa8aea72192c1192e221baa0b0000000300000000f018840a88762382e3fa944f9a0e7fd2bf6067db6994cf12e4495df938e6e98714191a3bf5780084d0e30db082044d808076d4330b8513208b9814415391c70d0cfec79655b397fd2632d5e82c57962cb87956a8c4b93809d7904baadce5b66e8e720ea8f6ffc5c9765226b0952f7dafd01bfff901ae826749840169a22083091f30948ff6508bdd71b535df073920c423e9eaee0b97af80b90184b61d27f6000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e14090000000000000000000000000000000000000000000000000016348d202444f70000000000000000000000000000000000000000000000000000000000de6ff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80807838e9e5f7ffa45112082937cf4c13ac9a4b34d2d89c0f88a6d1e5b8fbbabe68450963e324bff7087380a48b63fd683577784f3eb7c926b9a9ec08acc1cce13f1bff0b00000003000000000b00000003000000000b0000000300000000f903f215840169a220830343e5941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5552350c0f4036746139ed62c05a8199a5364297d41a85bbdf9d08e25c0b01711000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000c2f02570540a1e49f72b83365db2aed22ee6cbad0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075068616e746f6d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d526e4b355959546b517155556361316f505241637157456f4878737847576658517670364e4c43435647705600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041303e333a0a05a77d8b21e3acd4fee5daaf7544b8b4d685934b1343ccc154afe811166033a30ae22ed0dfb9c4ccdec95eed70ac788e04d58b361f0a5f38260a011b0000000000000000000000000000000000000000000000000000000000000082044d808057a8cf819dd9e7deefa39df29b556f3298ecf2343570849e33ca211713427ed3666812d6fc31f2b1269f4d272d30c4c4d6fe42bcfd0ace89e156199a62e72e771cff0b00000003000000000b0000000300000000f90bae82244c8401650e408303e4a494d46f8e428a06789b5884df54e029e738277388d180b90b84cdd1b25d00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000740a14de1e598b81620773454588b85d6b5d4eec32573e12145ec8cd4881eba87279f5f243eb89ea9383e677c61a144f9a0e7fd2bf6067db6994cf12e4495df938e6e922072671ce2724c2d62888ce0330cd083a20623f6e1a2edccbb959c2ee656b3497c5155af15a0ceaa8b0cd940c4fe9792d12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000004138c5d370f4c6b199ed42c2e346cef963a8fdf9512270c9518698cac23166fccd4145a7fe09b7b53828ce325cacb2368e5917ccf999f0454697e0edb2333ef67c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414815d2c0438852df0d6e1f6e079682e1cdc5f56410cf9260224db24c1c2ff2ea25ea8b65b7966110962eebc47a78f4d77a8b1dd0a3855d73ca97da7e89cccfa31b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410f45357656c66529a2f7c6fca35dfc1f13f7db5cd546cc958503ecba7d9d55ca51b1682a289b9ae1daaf82ec950e0005e71c01b0bff347c68ca80999802cf0fe1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004166d8d1d855e266c5688f8a45503d9448366fea91b50d4c8ba12ebda394ef76a84d003f8bf256cafc0791d521dc3fd681710fc1e0dc49d373fe1a3be3ef9645ea1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2d31bb75fc66cbc2f75af278c95a028b6b764f0d056d65f3f50bd9d8ad857c53c229fd9cc844192595b6e8c892edd4566e32f17add3ec25102f06edeac4de4a1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f1d037092dba92c2b718f8cc6d1d0274087cc7e033e6aeffe8ef39246188a2e34ef3761e29604612724fc57bd129d9ca0b1ca246c3f7c18113cc3b8acfdfd4b91b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041aaecb7b28127e84f580d3944c59e7de10d46f2cb121f0b56364ce9d843c1fd783e28f41e1e33378f071dacd4788a44db8314174eca4757a19470cce0ef98fd5a1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000419a9ea0bf5e36016e3380ee472c85ac21cd072153f7265ac450f9c2853782cf715a8105e3826f08d47139e61146f7768af4b55b3ab485772ed6332c66150d80961b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000241a100333eefa2efc389ec836a6ff619fc1c644000000000000000000000000273035e10f106499eface385dba07135e7cc8e5400000000000000000000000055f4a1bfc655cf55ed325f2338a1dee84f754df200000000000000000000000057c96a00f9ff7b25cb5cf964f1a191be9321b8c8000000000000000000000000870cf8dd5d9c8eb1403dfd6e6a4753f4d617a53800000000000000000000000095016e36adb4e0151735ced3992a7fa54e16bd08000000000000000000000000954adc74481634b4d278c459853b4e6cc17ae8d200000000000000000000000098e9d288743839e96a8005a6b51c770bbf7788c00000000000000000000000009a66644084108a1bc23a9ccd50d6d63e53098db60000000000000000000000009a8cfacf513fb3d5e39f5952c8608e985b3dc6ef0000000000000000000000009ac5279013edfec74c5c2976fc831ad0527402e00000000000000000000000009cd5006e1bff785dad5869efd81a2c42545c9d9b000000000000000000000000a73b339c3fae27bedf7cb72d9d000b08fc899609000000000000000000000000bfa2f68bf9ad60dc3cfb1cef04730eb7fa251424000000000000000000000000c74acab8c0a340f585d008cb521d64d2554171a8000000000000000000000000cf12dd34d7597d06ff98f85d2b9483d9d5f7d952000000000000000000000000d10c833f4305e1053a64bc738c550381f48104ca000000000000000000000000f4151eebfa1b9c87dd92c8243a18b1baef8c1813000000000000000000000000f5ad7f3782e8a67bffa297684e27cf9fcc781be1000000000000000000000000f6e93eb288658de5e2e982f99d2b378b22959d1500000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000002f447e9b1e8adca8df0000000000000000000000000000000000000000000000440370c65f337c6835c0000000000000000000000000000000000000000000002c9067d217c36159ff0000000000000000000000000000000000000000000000530db71af8da0bfebd000000000000000000000000000000000000000000000051e62edada099ff54000000000000000000000000000000000000000000000001999bb4b4f342a0dbd00000000000000000000000000000000000000000000002c08f0c7601de23e6a0000000000000000000000000000000000000000000000ec1deea13ae957d41000000000000000000000000000000000000000000000011be0842d86f7e8e736e6c50000000000000000000000000000000000000000003e4b325079a76d1d368000000000000000000000000000000000000000000000394b6fd351bc3090d200000000000000000000000000000000000000000000010792503324e9fba39d000000000000000000000000000000000000000000000059fd816a8470289cecac00000000000000000000000000000000000000000000d2faebf995c3095183ab000000000000000000000000000000000000000000009158ca2eac127d67ba00000000000000000000000000000000000000000000003bda588740b8d2e76f00000000000000000000000000000000000000000000008ac2e56a51bc65072900000000000000000000000000000000000000000000004383436ecf64559db0000000000000000000000000000000000000000000000031c05fae36f04651b4000000000000000000000000000000000000000000000010250608f677cbded0000082044d80805d36d9762307593a13e91e19fb81e6c0a17830d4834e18d66c52d6411dc7b22009da393426cdda33d3b5d7385fae3ee7b625f0febf8d72c3785dc733aada5e7f1bff0b00000003000000000b0000000300000000f84a19840af6f75283015497944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000014191a3bf5780082044d8080021f1ce93bb9218374d2ea45dbd2bc8d97f6fa5aad023474b71e12f2ccc583e03ab6cf9edaf16b142da8d07b44b1811aff429a4bdf6b0af997d0707f98f295061cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f01a840b695c7082e6e8944f9a0e7fd2bf6067db6994cf12e4495df938e6e987145b679690200084d0e30db082044d80804b2eb02436c30f483e54e8af28f2f1c59db7f5d56a24c83d0b3d2c4f47065ecf68f4895fb2a2e27e0af1b416d34da70f50affc5291e02a2a13f29ae09f92ab1a1cff0b00000003000000000b00000003000000000b0000000400000000f903f3818684015d6d20830399fa941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5b38fb2ebaa1e7167ed74018ce74a588d28794f3dbe74ab6185c751c3f31a2d81000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000007e4c51597dba086fd1a07751db43836a3acd20bf0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4269746765742057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d545050343333525078526b70515170476b5831365176573558694c6e334d46643833577a37524334764a647000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041aaddceedfb48b401c31abb8555f78cf18080778613ebbcace5332467725ef3096d0aff50b740abfb1372f7511caa6e46683774e7697c2c3fb360621b0aed16761b0000000000000000000000000000000000000000000000000000000000000082044d80804858cae0f925fe74ffa06631cc0e9bb9955a839c9eaa30bdd8b11a0b7b8de9371e19d31182948a1e2d730e3f9cab2f67d1a5af4e2a62f386d8951d34f94367f41bff0b00000003000000000b00000003000000000b0000000300000000f84a1b84086ce4f483012ee7944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000145b679690200082044d80803ce9647fac84541c0f88f2635be838c489ac64d29edc0759905e1677a53a996c4ba90cf64b959dfe09642aa7a67fdaf495c1cd9cbee52efca91f26932b9506401bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f11c8409ef8bf783015963944f9a0e7fd2bf6067db6994cf12e4495df938e6e98713c0ca60f3800084d0e30db082044d80803e3309c130e2bbd0bc32bd9282681387467a68ef88003d71ef2fcba5fecce4c41cf843eb96e923daf4dddad4176d421115cf36e97ca5b794b7bb1330900ff1681bff0b0000000300000000f904351a8401d1168083040eb680870130ae43fff000b9041a60806040526040516103ba3803806103ba83398101604081905261002291610133565b813410156100765760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74206465706c6f796d656e74206665650000000000604482015260640160405180910390fd5b600080546001600160a01b0319163317815560028290556040516001600160a01b0385169134919081818185875af1925050503d80600081146100d5576040519150601f19603f3d011682016040523d82523d6000602084013e6100da565b606091505b50506040805134815260208101849052428183015290513092506001600160a01b0386169133917f21e7cd7f82cd180cc2efc8f6d34988374ee142862fb2f9a8f60192e9b3cba1f99181900360600190a4505050610174565b600080600060608486031215610147578283fd5b83516001600160a01b038116811461015d578384fd5b602085015160409095015190969495509392505050565b610237806101836000396000f3fe60806040526004361061003f5760003560e01c8063b0910a5814610044578063c0129d431461006d578063efdee94f14610077578063f7b98453146100af575b600080fd5b34801561005057600080fd5b5061005a60025481565b6040519081526020015b60405180910390f35b6100756100dc565b005b34801561008357600080fd5b50600054610097906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b3480156100bb57600080fd5b5061005a6100ca3660046101d3565b60016020526000908152604090205481565b6002543410156101285760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420676d2066656560681b604482015260640160405180910390fd5b33600090815260016020526040808220429055815490516001600160a01b039091169134919081818185875af1925050503d8060008114610185576040519150601f19603f3d011682016040523d82523d6000602084013e61018a565b606091505b505060005460405142815230925033916001600160a01b0316907ffa30e9e1a69333c24ba36197dd28ca3e0c5f35e57ddd18903b4fd4ea7d4912339060200160405180910390a4565b6000602082840312156101e4578081fd5b81356001600160a01b03811681146101fa578182fd5b939250505056fea26469706673582212205084495e17d7e67c22e09899255168827489804e496d7d6f983ad2752ca58a2764736f6c63430008040033000000000000000000000000c451b0191351ce308fdfd779d73814c910fc5ecb000000000000000000000000000000000000000000000000000130ae43fff00000000000000000000000000000000000000000000000000000001e77d399980082044d8080e753eab3daad33e5406b6e9ccf7fdd0268c3eea1b2799d1052a1a16fbc83a6e317be62f32646d8c452718d299d38228c41dd5a1dc67961dbcd542bb551b391f41bff0b00000003000000000b0000000300000000f903f23584016cb4338303977b941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5a5b86aa0e7b0c70701b8db6d1e5e8a7ee65e36fb3fac08e68c65eaee771351f0000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000006158a9ffe6404eef6a2bdf331feba141f17235870000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007696d546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5579436d583974784a4545776f7756365646633566386e76576936717a414b46424d64767a6835535a334a340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004133474e9c238d06b566181d591c630a71d9e10eeb72ca063a40dadadcd0c0f6fd4d6b0326c4943466f3b886510d4a14429e394fc1a8abc8a0e2794ef07b91ca561c0000000000000000000000000000000000000000000000000000000000000082044d808030e5d2dbbab99819c571447b15a332129be20c6d875c480cad06e720a32b11d84bf57d2fc8d9eea3820202f47268b26a94e700afdb728edb396bd7312b8d8d621bff0b0000000300000000f90139058402625a00830284788080b9012560806040526000805461ffff1916905534801561001b57600080fd5b5060fb8061002a6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80630c55699c146037578063b49004e914605b575b600080fd5b60005460449061ffff1681565b60405161ffff909116815260200160405180910390f35b60616063565b005b60008054600191908190607a90849061ffff166096565b92506101000a81548161ffff021916908361ffff160217905550565b61ffff81811683821601908082111560be57634e487b7160e01b600052601160045260246000fd5b509291505056fea2646970667358221220666c87ec501268817295a4ca1fc6e3859faf241f38dd688f145135970920009264736f6c6343000812003382044d808044a18dbe91f5ed18370200a54bfa8738d390e49046e22faf1b6320fa25a8b23450dd1c97b91e2cac7fe4618bebc997644786d82b3432cb304df14213b6a782a11bfff9010c81b88404c4b40083032174942a3dd3eb832af982ec71669e178424b10dca2ede80b8e4cd586579000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092de600f86669d5bc23fd33c4b93689d49c55aae000000000000000000000000000000000000000000000000a688906bd8b00000000000000000000000000000a2036f0538221a77a3937f1379699f44945018d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000082044d8080689c42d280e7d7a501e3b8a03727d170815bb230e407c1adbe02c056943267013fe64d7ddd8e1dd996ec63c86a17964c9982076c6f51dbe46034e05b8cf2068f1bfff8491d840bdac5d982e3d2944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000013c0ca60f3800082044d8080f0658ba891342b29cb36b03d7c7f4ef697ab9453400c9bbc07e6689f2442a27d283e986cbe0569d209a00ce4a0bb790909b20727d04e17df540cad993cffaf681cff0b0000000300000000f9018c09840178e4608308474c9446a15b0b27311cedf172ab29e4f4766fbe7f436480b90164883164560000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000000000000000000000000000000000000000000064fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc905fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcd6740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112a8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112a880000000000000000000000000cf65cc37241d426970b91720e8255140ade00f050000000000000000000000000000000000000000000000000000000066e140ce82044d8080cce7a5d5d6aadae5e27baa53001df17380db45b57e5be0ace2a6cf6b062e722e32fadbd8ab50149b54214c9542ae78c7defd5928ab2f23fde10078dfb00c3e9f1cfff9014f830115508401b59f408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13fb500000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000072f21faa37999cc861c82500000000000000000000000000000000000000000add83f3e7c6394511984a9080000082044d8080262b264f0820837db4a0fffcfe5309152b391bf1a80d105d564051c6bb5c5c644dd1e64849aadc9a6650a6d15dd17f1a0dfea656b7f190de92b7c3867d4c46b11cff0b0000000300000000f903f2038402625a008304e632941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5f1f3689562d1c0dab2e8a2cc0cb879b692ec71495e8cda15ae8d2ce622c7c6ea000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000f9bccf01d2a27b0b6f7060c238a3c499814c7290000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d597346367139725173466b42344d51453766334a35333843594748316f61696539766b5643616b573875697100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041547595cdab235f61e0e57fce4721337a52a434ab432daa2749642b01f769f773340113e8ed17a36f42e4fb82c5e8a9947fd69f29b12d76902d8b6091d7589e831c0000000000000000000000000000000000000000000000000000000000000082044d80801dafcb03a4ae839365fa5edd4e370763a965b1956859fbc950e985137707683f5cb0463918a45f865a13728c1d2785953a8820ae39ed5c5cce11c3d9f798155e1cff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000357f0b00000003000000000b00000003000000000b0000000300000000f01e8409868dda82c553944f9a0e7fd2bf6067db6994cf12e4495df938e6e98714138df7a0300084d0e30db082044d8080c3e8e282b8d2318bb3eacfb610c28212435b08a9a9a7957ccf3b7db78ccf6362259552814b9d6fadf088245eedf9894d2715ea943553730ee3a0e37de0d2bd8e1bff0b00000003000000000b0000000300000000e9068402625a0082ff7294e38fac030c30a806f1a18348cb35b1f9796b89bd8084b49004e982044d8080d4af995d1407374e10081bc81f21a015911814ec43220eb6a75ac5d347da563104c194b2dad08167c9b8018db7cb67cbd4730f7ae1ef58f508e1df803ca7738b1bff0b00000003000000000b00000003000000000b0000000300000000f8491f8407b3caf482ec15944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000014138df7a0300082044d80807a2a304783534f2b6627a011dcd5655a14f601f08f8ed1a5ceb48cfea15d246a1aa2513734725e55a1aebf47662192fb6b51f3ee33f5885df867aa9251519b951bff0b00000003000000000b0000000300000000ea1684015a5fe0830275e094c790f82bf6f8709aa4a56dc11afad7af7c2a986780843d18b91282044d80808d203c5fc7ac06efeaa4989ea373b55b32440f50b4969ed35eed578101407e2e485fbf235e553ff03b12aaa183b8ba39eefd649cba4a64d01ff298b6fbcc67331bff0b00000003000000000b0000000300000000f020840c0ac30582c5cc944f9a0e7fd2bf6067db6994cf12e4495df938e6e9871301cbf18c600084d0e30db082044d8080b2da0efc52a37be0b0abb72e2c878e2d894135e5903aa4b7510215dfc06644434894408779c15dc2e31b3c26bc9eedd420ba0b8cc62c91a40a79c93bc211b4781bffe9078402625a00829b4094e38fac030c30a806f1a18348cb35b1f9796b89bd8084b49004e982044d8080a96eb803ae5fa5e9bd6330e833372d275f55c50f2abd9a783c76011c171bb9a854f7ba60b09c1d684ed56f94254f87f6a3f064e1a1d542dbd09b67a36ea583611bff0b00000003000000000b00000003000000000b00000004000000000b0000000300000000f86c820582840175d720829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000001f399b1438a10000082044d808097103c7391adfca69c78cbba1820b0bd440608827f76f970ebabee9770d106a325407087010a8ecceaf780e93d7db2140e934a94ff35ec90a2eca49a466f852e1bff0b0000000300000000f84921840aa60ab382e3b8944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d000000000000000000000000000000000000000000000000001301cbf18c600082044d8080a93e5a2fcd9fc6e8431efecde6b5119e2ed7bdfbce535819481e7c4a8afe7afa48bb9219bd7bf591c3b4c1677320ef5961415c7192e2e564945cb87cdceb51661cff0b00000003000000000b0000000300000000ee8308be6e840175d72082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808024468cb79bb0bdcd83559601af894fea6b58b2c042c87a274da30b03304085ad289f7d82b0e6df87cfdf16b69a1671915fb2fb2779831748932db2ef39172c301caa0b00000003000000000b0000000300000000f86c82058384017d7840829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000003afb087b87690000082044d8080079b0b01fc85f171207c07f0864e86783059697bffc98962dc0573ae40c413786a55a9c8e8cb9e58d24936de95f05fa3f28cac23efb6de2f65f455652c45cd631bfff909ae82129684017d7840830993579489e830972c7b453d4715ba1d3894aa096f219f0280b9098457ffc8610000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000006ac983efafa917bf04342e3684a863c9212e1fe9642eba19e81b0eab36c223645f2b84aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000000000000000000000000000012659eafec31743a8a1b09826b378842d4b42910da64ae7c0be9774b3490711b80e76dc2d6e18b40e24de42f1bb55971bd666fdeb1a4a463c0a4154a072796517000000000000000000000000000000000000000000000000000000000000094000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae261100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000bf4f119c5bbfe0000000000000000000000000000000000000000000000000000000000000066e13ff10000000000000000000000000000000000000000000000000000000000000002afa96d133fb7ca1e775405c5ec53a83986cc81317bfa06200d34061675b76adced276e8201ff7defde2bac4a9e387413b3da71f8d1de09ebac9a5490ed0bc189000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae26110000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000007e6125df4bd46800000000000000000000000000000000000000000000000000000000000066e13ff1000000000000000000000000000000000000000000000000000000000000000283ca785cb646b1762da8d7c98b01f56e69f4ffe07463f3ece57a61331ca1817bed276e8201ff7defde2bac4a9e387413b3da71f8d1de09ebac9a5490ed0bc189000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae2611000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000ef4ebe4c98404800000000000000000000000000000000000000000000000000000000066e13ff100000000000000000000000000000000000000000000000000000000000000026957de8f52722139f85b1fc83e50f75e52000cfd5e2f6a1814eaac236579b00bfce0e08ce4fc8588953f31682cb0cbddf9b74ab8f00f2e8ff6837ebeaa953f31000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae26110000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000f3cd9dd0f7b2b000000000000000000000000000000000000000000000000000000000066e13ff1000000000000000000000000000000000000000000000000000000000000000228f70f83d2d2c2012ccc8e6d043c4421144c676e19ad77b3f5d06a55532ea2d9fce0e08ce4fc8588953f31682cb0cbddf9b74ab8f00f2e8ff6837ebeaa953f310000000000000000000000000000000000000000000000000000000000000002ff0100000000000000000000000000000000000000000000000000000000000082044d8080a928627bca2a83841e6a08cac57dc3f01cce3d139d5371895f14a66f284721a3598e5b04b9282a7b1b5abd1c4b80e125256206fa48c41c6203b40defbcfbd8e01cff0b00000004000000000b0000000300000000f122840a1b74f88301535c944f9a0e7fd2bf6067db6994cf12e4495df938e6e98712a07b108eb00084d0e30db082044d8080b672c58ef0e2fb2431dfc2e188bdaccc549afd9453f907295a9b78242cc392e20797400e2cadd16e89f6490992082c84dd9200eaf4135c3af743c8eed63212d01bffea81cd8402625a0082ef4094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080cf5c96744631e4660952c51533ff1331d8f92e6f5dfe5fc50e8ae59af5d654ba0992777ecad55c9fa7751777c9674d850059586adf1e25263c674a6affd8fbc51bff0b00000003000000000b00000003000000000b0000000300000000f86c82058484017d7840829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000001ae361fc1451c000082044d80806d429321175f5602fd6772119c4ca54dc2ebf6837a3d2c7da3cf16e92cbee35f13d4a4f4d2a454164430f73b7c646d1a9ba2589463c8c4a01fbfb57190756a461bff0b00000003000000000b0000000300000000f86c820585840186a000829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000006d499ec6c6338000082044d8080e7af27a209e255c5d8dac95f112ba887fae9d1e14a2e4bd2ab28c0db0405add0789ea99836c9f7006838a5c8a343c7910fa04fe62359c5840021a1e8ecacb5cb1bff0b0000000300000000f84a23840929944583010d17944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000012a07b108eb00082044d808070235f900cc55b78e1e6928ef4ce66827bf7fe71c143477be736d589379811ac253eaa21eeb61a16813aa811386885afe8290602dd5690383627722ba9d7e2211cfff86b188402c37cf0830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080c40b5b896d81653b619a8913d90eee62c5d619b4962ecdee41ea9832aa95020349132258d75204c62c8fc76d9f8283b1326d4ee913a0b723657c54fbfb1bb2f71bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9048c198402c7c8ea83135048946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f0900000000000000000000000000000000000000000000000000313295693672400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000a16c02000000000000000000000000000000000000000000000000000feb937a2911570000000000000000000000000000000000000000000000000000000066e14e3200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000a16c02000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080b3e971ff6fd58ceb07da1d98787e1144e20bbb3a4bc4898427f95bb1883b209b79f23b51651aa2197d379428541ad7ab7f2baed6ea46c94ee62fe302d16eb4c41cff0b00000003000000000b00000003000000000b0000000300000000ee8308be6f8401820c2082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80805c8c929f5ee6b9d6d3ee54c1745ed9009dac82133aa764d8b66f952ce4af2e0072573744d41b291cc6384aa9c9b5057a4a1d979fdab2c590ea251fcdb75fc49d1bac0b00000003000000000b0000000300000000f9018f830151da8401a8a6f08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000050b52227f968abe8cba85ec45a4bda8f65d1d1670000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000015b392fb030c00000000000000000000000000000000000000000000000000000000000000018da49930ea8edc4bf2ba83646893e29e20703a5b2534c8e97ce446e41bc6ffe682044d8080c1a1b89b29b44083c19bc4b74e77b2a9190047f3ed5ce33198f142333eb479ab19eb434a8c761191c6fe9f02162be2d0bb5e163eb2b8528d493c44413fc512671cfff86d82010584018e41208304f8d394dfb6baa334712cbbeb26b7537f62b81c2a87b1e880b8446e4bb3b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000182044d8080fc53deb3a49af4a7f3bdbe490ec121cf4b137ee3e28bce917494eabf24b148b91aeaf809a6a552b1e7bcebbb955ed6a54d004ce4fa883b0d53c9faac21cc542b1bff0b00000003000000000b00000003000000000b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f220840186a00083030009941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5e9924268a07bf7d21c823217668de1706f45cf6eedfaf6528e79c479eb926f00000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000cf6ea21f3928460e36e30150815f212fca2f9a900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5166436f4d73464e784d7274756a31507054614c444261554c586551694453626b5a63524533687839516b68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418550cca2cf3bfcec208c53cdd1cc838b0ffb5c5256bba0d4166875e47c099b175f181a3a95b5c0706963513659d182ba900782a379d0eb74715719e59a6f58c11c0000000000000000000000000000000000000000000000000000000000000082044d8080e58acba608a369d18c6d73f43366584f723671662e22cd7bb1807671b3d2f71f03a1f7a8ef7d198a54345cbb4f226888cc8867e55b6b20e231e0228d71d79cb71cfff8b12b84025317c08304ac1194222228060e7efbb1d78bb5d454581910e392222286043d112b3c31b88432accbb900000000000000000000000000000000000000000000000000000000000000e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b48eb57e000000000000000000000000000ea6e4548bb97b9237fd08bd32ad9a6f8e59eb10b82044d80808c2c47c45393f93b84a8a00f3e965a8a3a532e4d03d0da39a78f6ed20f91faf017d9d1405441a4a8b6d81421ff34ce60c607ff5843b029907fbeb58ee371f34e1cff0b0000000300000000f903f22184028dd3a78309e223941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53d6aea38052471c5a2ab59bb49640603e17c99abdaa8a597c19480f99e27963d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000673962924875bd4cbd2e0b22ed63c85cecac2e40000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d55316142655a5a6139787756357746507855734a37416d6276714a38574a784375656f4452666567595a42790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004159b0d36df5531ae9fad1f1382129122fb7cdf909728e403412134e87d1c1542a4d2a58cc08a4005b8f8dfa3a594103b3176813122f947790cd52a2fe8df5f5c41c0000000000000000000000000000000000000000000000000000000000000082044d80805c95ef7a6c28a8e2e82f28d6d894b5b9ee5171b03a1c22968ce432462eede80b24163ce4e126a85062e602cd6e83bc9fa4855353b979476e4e8a6d495d56d5f21bff0b00000003000000000b0000000300000000ea819d8401a39de0827181943f0a9f960341dc53747d43d27e4e1a2678f7983e8084753899e982044d80803e62d33d344773f096582827acedb468e005027390ecd7e427d3bfee95cc734e4932744bfea8adcf4dabaebb2115f1d742b8f346984fc496f7e7a795cb71d6f31bff0b00000003000000000b00000003000000000b0000000300000000f86e8301c9918401aa54a0830186a09465a4b8a0927c7fd899aed24356bf83810f7b9a3f80b844535b355c000000000000000000000000a703654c31dd3bc26dff3c6ec524540c602380390000000000000000000000000000000000000000000000000002659289813c0082044d80804de874ddea4656d09ad455f64143e57454f56e7191364e43bbbceabefc4ca03002f35052b4e2b6d4be7b637a6dcb4c3b37d6e536f7a5dcc64b147469ade0037c1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f8cb0c840b7f6358830a623f94c28a4ec9f09e4071e3707eaaca5c3754fa4f5faa80b8a48fb8b6c780b56aeeab2dc46113b09dd8069578d16c679cf639475dd6e0b8e60b7a3b21d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000082044d808014cb2bfb965493c5dca083a997eec444184bd9f3f79aa4c555bae2f5fe5d567058f2dc8d1eb1aa371a97d86c65095e572232021dc7a3d453c2a2ec11c955092d1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f2248402625a0083048056941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5f51a6c4d02c18d30b29fa792091edfdeeb4a51d55a18c953784a33e54d7fe50a000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000f65a8d44c6ec9823ff7be42b3cac3b457ae8d5200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d64696179665a6f6f7a676a64625374764a657a48467664325a39384e656669517736594a4144456a56554e4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041b37d89a9353bd6b5183ab63e9080c97cb5a24fc814b5fadf0d531acd6272dcdf00a568d77e7e5ef3b1821820166377891930eddcfd50fde885affcc1320f61d31b0000000000000000000000000000000000000000000000000000000000000082044d808076fb7660fdc1ef605bc860a4d1b98537f6bb3c18c507dffec61c663c14950ee06415ecdb58bfe14b8642ce2d909378beda578c5353356a559a6ae1f176eb204f1cffec0184028e2965825208944570f01acc78003c270b68217b819d783cc892f487179d7b0b84e6678082044d8080829f6ee74f6fcf2ad05e10267d898068704c651ec8c3af9bc1b06d48b721e8ed5d928a25a8942496fa4b557e61bf6e6552e5d95c53ae3d1ec9bcd843379689381baa0b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be708404c63aa082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080331d3409eb28ac0f3aa116833654fa85ebc0ce15d7d6045703ea5cabed548b2e15c7a437215b8e74d70939efc3842b0dd571788b3abd34449555b16d18c6b6c11caa0b00000003000000000b0000000400000000ee8308be7184019768e082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80804993bb9121b4238b115f0591a929482dd9ff7c2e6974e85901a475fef18636417feb9d1551cfb7d465738a2d001cb5f7ba47e65fd4c1ab2e6d67117fa835a3361caa0b00000003000000000b00000003000000000b0000000300000000f9018f830151db8401b466c08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e5cb35901d40efb3c6d38aacfb0f4b0cd5258650000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000045cb32e45f28000000000000000000000000000000000000000000000000000000000000000142b576c33464f5ecbf09fa2b1575d07772c814bcebababe6c099862cafb4fccb82044d80805dd0484cc33cf12d031a9a675192d937ebc6aa79432bdedb9190f4fe84410b6029c8935f77a6f8cc99964f47afdeb4c41790eeeb636babf8e3f034742f8c98b81cff0b00000003000000000b0000000300000000f00e840172c9e0830139f594b58f5110855fbef7a715d325d60543e7d4c1814386a758d6a38000841249c58b82044d808045d3b812f522cf8f1b5a670f65c1fe24a0806c563eb3dcd9ad2bffb3e2aceeaa0884dea66e76f89a5047243e18d3bacc1a849ec983f640a958ee410c804916741bff0b0000000300000000f382010684019768e08305576d94dfb6baa334712cbbeb26b7537f62b81c2a87b1e887254db1c224400084e9ed3d3082044d80800b1d6a122d7289631fdfb4b72e4a6a86c293afa79c1f3337c9a188badcf82dbb2efba7d16402ebaa03b0059aa68f7f3a445d2fd3425cab4179d50a9d06df0aca1bffec81a78402faf0808252089433fd1acc271574f6e5c2eb4a0ea1264251ba2119860abb620a3c008082044d8080c9a1e1b5d798f7af1ffbd19e89c74fa39119c8b261e9f84fa39d9af2c67200d43ee954e07bf11fb21588f5d62e6c5c7dd8da23de14658664a4389b4fefd13f6d1cab0b0000000300000000f903f21f8402625a0083048056941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f522f0b9754d4d2585628043451776bc2eb65ac80a097992cdd46586be7aad1739000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000033fd1acc271574f6e5c2eb4a0ea1264251ba21190000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5374533974704d3479584e42543463474437554b4a77616a4b67443363444b7971347a71764e45657248434d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414ed93ff5c116db4089def64910db6449c30e8196e78031d25816d7e4f92b119f62e583f8b2003c9b042427ace41ef3a6a1619130f2fcc00fee151d0acbc804191b0000000000000000000000000000000000000000000000000000000000000082044d80805341f33dd6e64568431b0846bbc656fdc618ce107b9812dd2bf3f2e91c44f0240c3281cd38136e751fee0902452bca959da52d667a092d2fbc70ef493af7cef81bff00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040110b00000000000000000b0000000300000000f9014f830115518401bcf240830596219473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e140a500000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731412d863de818aedc2ac00000000000000000000000000000000000000000ae12c46db9b6fc047c306c500000082044d80801d46c877c9b34d2ab10700459c548bbdd97b4c71ddaaae59eb4aa9829063a3456742ada3207659a4d8499dbb6600f91b9e7ecef2807fb739d2a63af6538555161cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f901b30f84019bfcc083039dd894b58f5110855fbef7a715d325d60543e7d4c18143870b7f8bdfda5884b901845190563600000000000000000000000090321b082c1da51d0ec59ec7d02f5b65d1c70ed3000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000b7951c00000000000000000000000090321b082c1da51d0ec59ec7d02f5b65d1c70ed300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001490321b082c1da51d0ec59ec7d02f5b65d1c70ed3000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200010000000000000000000000000000000000000000000000000000000000061a8000000000000000000000000000000000000000000000000000000000000082044d8080fc542a4b3b5caadfd5c04117a3f8512c467f8a59866aaea320aa3b5bd891f92b068e84eeb6846cea45c443f478e7c48968d14a2034cf6ea9005facf652f51ea91bff0b00000003000000000b0000000400000000f86c81d08402625a0083011108940d1e753a25ebda689453309112904807625befbe80b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c768ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080a984967c135177e8261c40769322acd476a9a79a07d7266cf441b0329b3b009533e8693879324ede3e8028f2baa8c51ea3aa1212ad5bf5c94dc49f14a2831ff61bffef808402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109863691d6afc000840333f63e82044d80803f154443bd814efa2e144586740cbb0024d5f3ea553b60c131823aa61e2be4e73adab50e89b656b3c7e4c9e2f511754dc45d14ee7894de88498f2cd23e825a501bff0b00000003000000000b00000003000000000b000000030000ae460b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9044d81d18402625a0083044f4e94b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e141e700000000000000000000000000000000000000000000000000000000000000030a080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708cdc50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e147cd00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000041ce9c062459de7685af53cae3d9c022ce609093f04ce875111314f8aa1366bfd579a369788bb5ca6b5cf908cff33ffda44e1afa0c4165caab252665bb02ece9861b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000007355b876be771900000000000000000000000000000000000000000000000000001541e01138ed100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d1e753a25ebda689453309112904807625befbe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ab07bd0ac2502a7fd0a5005b420b96f94104fcf80000000000000000000000000000000000000000000000000001541e01138ed182044d808002d7ed117ceaf8a71c9325711c8ebe173ffb02a537a631170f2bbb140ad8532b2e3f3dcec0e5c85384fbb643e3508cce4625696ffedfb0f5d16c517a11ea1bdd1bff0b00000003000000000b0000000300000000f86a808402d8fce182c16f94652a38fa87f60a122aef360eeefcaf6258eddf6a80b844095ea7b30000000000000000000000000a6b1904369fe59e002ad0713ae89d4e3df5a7cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d808096c77cebc8ba97dbcb33a46b05001e3f26206f91c497007900507d8297919a5e042728715790ea437a06e937ffb322b65031db0ba633dcbe0351a1ca78a70c991cff0b00000003000000000b0000000300000000f86b1a8402d06b49830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080005ee956dfbd7ecdf8ca2c5fa9b5a21aedb2a425d4d1568032332b5ec3e689fa1988b83c9fc83a17142953dfcfd62d2e79c15f761b013b042537a77602933ddf1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f90a6e8204ae84019a762083023cc494709944a48caf83535e43471680fda4905fb3920a80b90a44437b91160000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000c52eea00154b4ff1ebbf8ba39fde37f1ac3b9fd46575f2c29a636fa55eaa8aa86706b6d3c33a21e0e79e1647259718dac070efc40000000000000000000000000000000000000000000000000000000066e140ab00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000937596f639e540000000000000000000000000000000000000000000000000000000000000004172b3eb5cd3fc78267d5672b9ad5317286aa8f3d66e55d866dcdbc9e5d1255c6d26535ad3d1b26b4b8fbc6bfe8cc543d3dd612138909a4aeb47117f908bbb30321c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000bc6471e88d8afe936a45beb8bd20a210ebef68221998d1c5e381c1edec0feec35e8bc3c9d7cb39ace96d9279b6f9a07a7ea454240000000000000000000000000000000000000000000000000000000066e140a800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000009463846edd3200000000000000000000000000000000000000000000000000000000000000004168362b70473277d046be65bc395f0b0c8b98173b46adb4192c6f4127df5d1867494705d3ceac8368afe2ece88a7545794f4e51fd431667febdddfd66a2b152aa1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000a924847354c551c79bae7e75529364ba0449e51a39001761c965b7719e6b39822f09c891d103009d2703a4989cf7bc2e007582fc0000000000000000000000000000000000000000000000000000000066e140ac00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000945b55a7e0000000000000000000000000000000000000000000000000000000000000000000413dc56655400801a9c210ecdecebbc3da45c92de696f13b97bf5e73b6044e27366fa1e651e74e5f57d6a610791ec51a8eb5f2e8c482a5b5e22f939c0f0b1eeb391c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000c9b494d3c6ea3fd42779df9a136db10374c98d80c7dd05baff9d2948c0f215ffa84c4de82694e959f2fa7b70f2f2a1f398381e900000000000000000000000000000000000000000000000000000000066e140af00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000009455be8a47413a000000000000000000000000000000000000000000000000000000000000004152452f2785fe8cc8876e4d7c70e6656fa7d2fd5d48d1ba751829ec73a2ac5a607e300939c863047c82dc39ad2e28db75546263bf6c8fa3aa3ae7009607e8db191c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e0000000000000000000000006b56e47dccfbc82d63df3da417d26e8b1b877f0f5d7cab00186de4dd836b0e3f89da0565a5a68597e1772792cd3c63dc4505d9bb0000000000000000000000000000000000000000000000000000000066e140a700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000093a95d5afc400000000000000000000000000000000000000000000000000000000000000000418ac1031836570d4ca35d6a2cbfc9e7cc8ee5da912831a8769c87b4b5df1b74604428cea4bc23413a82b246008ae57b93c1f917ab594b6c63c60b009db44cfe871c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e400aae33f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005750fe3cc44fb71eb6dcda12a40ba96a779ff3292e4ee0b83e480607fa18a253c25dc66d59c09b65362270bd4ba318502886dd51323d42cc672bb118a2f377d937701240fd1a97e184401c372d22d78050175399403b5fde50faf03bab1c7573ac1c918bd24675fed06d7c1ca44882492b3ae0462c3b0c6e7cae84702c2d9708be6812ce7d565ac54474e619953d3b2588ad818c5b7328ec16de6304fa43badee0000000000000000000000000000000000000000000000000000000082044d8080aa51d9561dc2f3f50bc646119dc5d2288be28526b01facb218bfe12777bb470b73d45a28e9f367be9c9ab1e9823735251e7c58ab8b527dd8864c32531d9ef4431cff0b0000000300000000f8723c8401a524808301d9779454c3ef8ce719ed72c2050ee42a05aca9e9aa1e1f8701c6bf52634000b8441d7df19100000000000000000000000030280ba7411118147b835ea31029481b01284175000000000000000000000000000000000000000000000000000000000000000182044d8080c4a02d3c640f35c2628bf24777bcb8157adac99f25a33a66aa0833e12e0692ba77820fa9aa795375809f045555ba5cc8167c7891ed03506dc2c67b64ee7112be1bff0b0000000300000000f86c81d28402625a00830110e194a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03580b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c768ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d80804660394e29ceeb7d28d161134a042cb966b23c6ed12f2bf645022ada6f27fc3143c01a84374564d949e10dc0df1c9c103f78651b831bd12482d8e3442f024a881cff0b0000000300000000f9048c1b8402c9f9b583138a26946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f090000000000000000000000000000000000000000000000000031329898bf72400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000990e21000000000000000000000000000000000000000000000000000f1b8b1e74b2040000000000000000000000000000000000000000000000000000000066e14f0200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000990e21000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080c52fcc136946cb5b9089d62a52d13d661c9588fb367523e6404b34932fc651fd108b70a62f080f0a280357b74a7eabc52b5b807bee6d4ee85f85bdffdce996441bff0b0000000300000000f8cb018402c9f9b58302724d940a6b1904369fe59e002ad0713ae89d4e3df5a7cf80b8a491695586000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003148e44ea107a00000000000000000000000000000000000000000000000000031167b0f044b80000000000000000000000000000000000000000000000000000000066ea7b6882044d8080c54a7d2f5e3aaa2f9e932ea0b5c6fbdb5166c3bb4226725e8cf0c5acbb677a637ce0e52990ef54755786e983d449c7c6adc824f57fe7a50f4960fba85ec8d44c1cfff86b198402c4c487830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d80805a91813eb1f40d2394eee6ad6410d547b8189e6be17bf23c90dbc1d01ba6edff103a22f55e0986304b0d36b367e905b3a5ecbf94755bb2670b563e25b6d174921cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9048c1a8402b3d0168313849b946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f0900000000000000000000000000000000000000000000000000313298f36971400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000991c85000000000000000000000000000000000000000000000000000f1cf6bcc4e4c20000000000000000000000000000000000000000000000000000000066e14f1a00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000991c85000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080f24aed3d22f15fbcc57fafe44d53a1a9e60f4ba51291fa4f22b53e20d79ddfea5553060fbced61fca5aa4d1d333d067b1c3904ecae9d9c71c47d5693a257e8cc1bff0b00000003000000000b00000003000000000b00000003000000000b0000000400000000f9044d81d38402faf08083052a5194b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e1422900000000000000000000000000000000000000000000000000000000000000030a000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc035000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708cdfc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e1480400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000004159610a05dec35ea87031acdfdc775d81b7d21424be26f4198d7963c054b6486102f7bb552f766607a24314a4d4674ec5a8b6cae07000ecc918b6ef1b92b1dad51c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000002a055b00000000000000000000000000000000000000000000000000042ae8f761201200000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ab07bd0ac2502a7fd0a5005b420b96f94104fcf800000000000000000000000000000000000000000000000000042ae8f761201282044d8080fa6c7ff44fb469090f7f796a4dd27d3dee25540259f1b8307ce80915f329281f1643255ab2b3498b2827900ca99996c2cf60c4e2b058cab244d2783263fc07c31bff0b00000003000000000b0000000300000000ee8308be728401a6ab2082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80808cae305056836f1b109e76a38a29a95e699ca239c636e820c5221cc0bfc1ae8e08b630842cda6c38fb50cbb4676c4a61e00b01f55b68f27f51123de8cffd652e1baae96a8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080d0a9dbdd118b85ea2dd4a860354598e348085c2c448ffe77b9b9ebfc87bbd4b3416de323e24a7e3ff04007cad827b524e6054943ac7f7d51942392f1c1b9199f1bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f2028402faf0808304e5ea941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5fb2f110de3cb09ff94ef99619912ce386a0f42d2f466e7d3e480d7129bacc121000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000a703654c31dd3bc26dff3c6ec524540c602380390000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d55656151777944734138474a4858594c794248344333565564504d6f5142474c457a3648476d423152696f5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2eb6584e3d4bfdae352806a3a5f344ad70fe77bacc930a7a40b925f409ffe4f4c8a88c6e07314b8a109757251949b0932d806ef8a608b54f8dee0f447ba37381c0000000000000000000000000000000000000000000000000000000000000082044d8080f2eed7742d047224403c36decbbc5c7a6f1bf7f67057cb078633cf30c96449ac7d2a665aba4252c99bba96742960a7228167514b354f24d9a97b6f5777197bb11cff0b00000003000000000b00000003000000000b0000000300000000e93a8402faf08082ef4094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080f512c7a6222205683b9012666c5455c998de80ca017dcae80b4b8353f2d9c6e7444e694afe71445e1f73011c9416982fcd2013de37f5a6356b62d4786b2e01dd1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be738401acc5a082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80800d61afecc903851650d8243af5e3ec20654db98d9c0fe14f7cdb86d9e50f2fd7188796e923b771c47a7674636d3a9b4e14fce759226a2445a470836e8aeb1fc31babf9014f830115528401f78a408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e1415a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000072fa529d46831fa4ea1365c0000000000000000000000000000000000000000ae065f41c16c30440f13ba800000082044d80806bfcacaee014344f6c6bf79fa3af76f7baf85705a22c6b6022aa3d2275044f515e385563fc9f791dd33b51658d81b061b0e582896fd33f745f00b4208500200a1cff0b00000003000000000b0000000300000000ec038402faf080827b0c945e809a85aa182a9921edd10a4163745bb3e362848704adcdf52b50068082044d808072e2f7ccdfbf0c9967dc8d2983a80a846f075f22068fc67764df88c72dfc3f206fa80b91470d803b7f94b181278d72809f042b83b4eb3b242998ac89f12491ee1caa0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000400000000e9768402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080f7c406958a3b283f040ba8e3b99e77961e478a6849858a513f9950fe2474271660a78cdff6ac241cd222b97a27685de4da616036e123ebe6947bc531590760df1bff0b0000000300000000f86c81d48402faf080830163f89437eaa0ef3549a5bb7d431be78a3d99bd360d19e580b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c76800000000000000000000000000000000000000000000000000000000000927c082044d8080e3b16d5bfd529eaefa4d8ad988900a3ac14748b9b787645fe42498619e4b85001f4ec92e43b5ccdd3e61780fee963ddf0fbaa9b6b7bde93e6e6bbda3abed8d811cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d8263678401ab7d80831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc651188000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e143f80000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000098176ab6ed58bc000000000000000000000000000000000000000000000000000000000000000082044d8080f44f214824c6406324f3caf06ca6aad692bfbce83fb69685723885047c1978a0009f698a2561f6fd301af75d83ba928ae9718dd2d175bee9e2a70260a91980151cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be748404cace8082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80802c732f67940b07b16d4ff7c2ed509c81df86e1aa948e04a97f4c1cc90de679a07a50c2c1df215261e32b211a422ec0cc62994adcc02962b201a058db5485e0661bab0b00000003000000000b0000000300000000ee8308be75840198ef8082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080365e902ec6677c927098c294ccd1808009bd6baacd6cc18272b1f8e4a3a88a940c88b52ac0c9568948d082d6298474169873f7fa0dc09bd1db8b6be09ec6016d1cab0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f86a1384018e412082b4cb94c5015b9d9161dca7e18e32f6f25c4ad850731fd480b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000003ddd14cefbe04ae482044d808090ed685bc17c39f23da886bec59a15265f557d06b5388c26f489d199e2c9dbbd4e5964f35d8272171d695b20f1aece1e56bad6a0f93b5992ff69f774527ac2751cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9088c1484026ccc90830c45a3941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b908642c57e884ba378f2fce937d7762985fbb68cb4ae55a699ae984949e2401b561a7327abe8f00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000003f2825e0ffd694adee76c9581fe707606074aa900000000000000000000000000000000000000000000000000006b01f2257e4a2000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000086d746f7073776170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863346639646134323361626336393237393937383338313533656131386631616266396435613938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd40000000000000000000000000000000000000000000000003ddd14cefbe04ae400000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084eedd56e1000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000001fac95eaffefc40000000000000000000000000000000000000000000000000007eb257abffbf1000000000000000000000000c4f9da423abc6927997838153ea18f1abf9d5a98000000000000000000000000000000000000000000000000000000000000000000000000000000006a000f20005980200259b80c51020030400010680000000000000000000000006a000f20005980200259b80c5102003040001068000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003db57d1396205f2f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e4e3ead59e0000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e5041000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000003db57d1396205f2f0000000000000000000000000000000000000000000000000006b01f2257e4a20000000000000000000000000000000000000000000000000006c16a70441813d770acd5d9f04dc897d42ce2f295f18700000000000000000000000000f2a81500000000000000000000000000000000000000000000000000000000000000008c208b7b5625d78deb49240ef28126cbe2738098100000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000240f6ad3ccf71abb3e12becf6b3d2a74c963859adcd00000140008401000000000b00000000000000000000000000000000000000000000000000000000c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e50410000000000000000000000000000000000000000000000000000000066ea7c4c0000000000000000000000000000000000000000000000003db57d1396205f2f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003cc5015b9d9161dca7e18e32f6f25c4ad850731fd4a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0354f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000004000040000ff000007000000000000000000000000000000000000000000000000000000002e1a7d4d0000000000000000000000000000000000000000000000000006c16a704418136a000f20005980200259b80c51020030400010680000002000000000ff04000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080d8991732646a94259a6feeec42e5a4fc65fd2a806c109c58b6da6c6b9aa175a024d45fb5eb3d774b1b9a50a6ee7dd40b8104d1caec3bdbe82885a18aea9308621bff0b0000000300000000f8b12e840263c1608304ac1194222228060e7efbb1d78bb5d454581910e39222228614edc409dd73b88432accbb900000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000246139ca80000000000000000000000000000532b4600bc0667326bbec62c1f55a4e962b21a782044d8080dd3a56e7bb40299dab4d821c8860cde90383a218003cf93ada19e6ac7762fbb2248a75809c92a48152c303d8197289a58956d0318ae6d816ba67054d954ad5181cff0b0000000300000000000000000000000000000000000000") + EthermanMock.EXPECT().TransactionByHash(ctx, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97")).Return(txByHashResponse, true, nil).AnyTimes() + + storageAtResponse := []byte{} + EthermanMock.EXPECT().StorageAt(ctx, common.HexToAddress("0x000"), common.HexToHash("0xb5ad54240dc61c51d3a3e8d3f925722e010966ae263d67344c5fb60bddebddae"), nil).Return(storageAtResponse, nil).AnyTimes() + + var response2 []byte + response2 = append(response2, accInputHash.Bytes()...) + response2 = append(response2, common.Hash{}.Bytes()...) + response2 = append(response2, common.FromHex(fmt.Sprintf("0x%064x", 0))...) + EthermanMock.EXPECT().CallContract(ctx, ethereum.CallMsg{ + To: &common.Address{}, + Data: common.FromHex("0x25280169" + fmt.Sprintf("%064x", 1) + fmt.Sprintf("%064x", 0)), + }, nil).Return(response2, nil).AnyTimes() + rawBatch, err := zkEvmImpl.GetBatchByNumber(ctx, 1, nil) assert.NoError(err) var batch *rpctypes.Batch @@ -460,7 +477,7 @@ func TestGetBatchByNumber(t *testing.T) { assert.Equal(gers[len(gers)-1], batch.GlobalExitRoot) assert.Equal(mainnetExitRoots[len(mainnetExitRoots)-1], batch.MainnetExitRoot) assert.Equal(rollupExitRoots[len(rollupExitRoots)-1], batch.RollupExitRoot) - assert.Equal(common.HexToHash("0x1111111111111111111111111111111111111111111111111111111111111111"), batch.AccInputHash) + assert.Equal(common.HexToHash("0x97d1524156ccb46723e5c3c87951da9a390499ba288161d879df1dbc03d49afc"), batch.AccInputHash) assert.Equal(common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), *batch.SendSequencesTxHash) assert.Equal(rpctypes.ArgUint64(1714427009), batch.Timestamp) assert.Equal(true, batch.Closed) @@ -524,17 +541,17 @@ func TestGetBatchDataByNumber(t *testing.T) { assert.NoError(err) } - err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1]) + err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1], common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(5, 2, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(5, 2, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(6, 3, common.HexToHash("0x20ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba74"), common.HexToHash("0x10fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1")) + err = hDB.WriteSequence(6, 3, common.HexToHash("0x20ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba74"), common.HexToHash("0x10fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(7, 4, common.HexToHash("0x19ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba63"), common.HexToHash("0x20fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e2")) + err = hDB.WriteSequence(7, 4, common.HexToHash("0x19ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba63"), common.HexToHash("0x20fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e2"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(8, 5, common.HexToHash("0x18ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba52"), common.HexToHash("0x30fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e3")) + err = hDB.WriteSequence(8, 5, common.HexToHash("0x18ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba52"), common.HexToHash("0x30fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e3"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(9, 6, common.HexToHash("0x17ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba41"), common.HexToHash("0x40fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e4")) + err = hDB.WriteSequence(9, 6, common.HexToHash("0x17ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba41"), common.HexToHash("0x40fad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e4"), common.HexToHash("0x0")) assert.NoError(err) for i := 0; i < 5; i++ { err = hDB.WriteBlockBatch(uint64(i+5), uint64(i+2)) @@ -666,7 +683,7 @@ func TestGetExitRootsByGER(t *testing.T) { assert.NoError(err) } - err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1]) + err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1], common.HexToHash("0x0")) assert.NoError(err) tx.Commit() @@ -743,7 +760,7 @@ func TestLatestGlobalExitRoot(t *testing.T) { assert.NoError(err) } - err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1]) + err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1], common.HexToHash("0x0")) assert.NoError(err) tx.Commit() @@ -948,7 +965,7 @@ func TestGetFullBlockByNumber(t *testing.T) { assert.NoError(err) } - err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1]) + err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1], common.HexToHash("0x0")) assert.NoError(err) for i := 0; i < 4; i++ { @@ -1117,7 +1134,7 @@ func TestGetFullBlockByHash(t *testing.T) { assert.NoError(err) } - err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1]) + err = hDB.WriteSequence(4, 1, common.HexToHash("0x22ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba97"), stateRoots[len(stateRoots)-1], common.HexToHash("0x0")) assert.NoError(err) for i := 0; i < 4; i++ { @@ -1234,9 +1251,9 @@ func TestGetForkId(t *testing.T) { err = hDB.WriteForkId(uint64(i), uint64(i)) assert.NoError(err) } - err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1")) + err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1"), common.HexToHash("0x0")) assert.NoError(err) for i := 1; i <= 4; i++ { err = stages.SaveStageProgress(tx, stages.L1VerificationsBatchNo, uint64(i)) @@ -1276,9 +1293,9 @@ func TestGetForkIdByBatchNumber(t *testing.T) { err = hDB.WriteForkId(uint64(i), uint64(i)) assert.NoError(err) } - err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0")) + err = hDB.WriteSequence(4, 4, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0"), common.HexToHash("0x0")) assert.NoError(err) - err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1")) + err = hDB.WriteSequence(7, 7, common.HexToHash("0x21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba86"), common.HexToHash("0xcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e1"), common.HexToHash("0x0")) assert.NoError(err) for i := 1; i <= 4; i++ { err = stages.SaveStageProgress(tx, stages.L1VerificationsBatchNo, uint64(i)) diff --git a/turbo/jsonrpc/zkevm_counters.go b/turbo/jsonrpc/zkevm_counters.go index 0dbd23696c0..7d28b26ad21 100644 --- a/turbo/jsonrpc/zkevm_counters.go +++ b/turbo/jsonrpc/zkevm_counters.go @@ -6,7 +6,6 @@ import ( "fmt" "github.com/holiman/uint256" - jsoniter "github.com/json-iterator/go" "github.com/ledgerwatch/erigon-lib/chain" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/common/hexutil" @@ -24,7 +23,6 @@ import ( "github.com/ledgerwatch/erigon/core/vm" "github.com/ledgerwatch/erigon/core/vm/evmtypes" "github.com/ledgerwatch/erigon/turbo/rpchelper" - "github.com/ledgerwatch/erigon/turbo/transactions" "github.com/ledgerwatch/erigon/zk/hermez_db" ) @@ -301,116 +299,6 @@ func populateCounters(collected *vm.Counters, execResult *core.ExecutionResult, return resJson, nil } -// TraceTransaction implements debug_traceTransaction. Returns Geth style transaction traces. -func (api *ZkEvmAPIImpl) TraceTransactionCounters(ctx context.Context, hash common.Hash, config *tracers.TraceConfig_ZkEvm, stream *jsoniter.Stream) error { - tx, err := api.db.BeginRo(ctx) - if err != nil { - stream.WriteNil() - return err - } - defer tx.Rollback() - chainConfig, err := api.ethApi.chainConfig(ctx, tx) - if err != nil { - stream.WriteNil() - return err - } - // Retrieve the transaction and assemble its EVM context - blockNum, ok, err := api.ethApi.txnLookup(ctx, tx, hash) - if err != nil { - stream.WriteNil() - return err - } - if !ok { - stream.WriteNil() - return nil - } - - // check pruning to ensure we have history at this block level - if err = api.ethApi.BaseAPI.checkPruneHistory(tx, blockNum); err != nil { - stream.WriteNil() - return err - } - - // Private API returns 0 if transaction is not found. - if blockNum == 0 && chainConfig.Bor != nil { - blockNumPtr, err := rawdb.ReadBorTxLookupEntry(tx, hash) - if err != nil { - stream.WriteNil() - return err - } - if blockNumPtr == nil { - stream.WriteNil() - return nil - } - blockNum = *blockNumPtr - } - block, err := api.ethApi.blockByNumberWithSenders(ctx, tx, blockNum) - if err != nil { - stream.WriteNil() - return err - } - if block == nil { - stream.WriteNil() - return nil - } - var txnIndex uint64 - var txn types.Transaction - for i, transaction := range block.Transactions() { - if transaction.Hash() == hash { - txnIndex = uint64(i) - txn = transaction - break - } - } - if txn == nil { - borTx := rawdb.ReadBorTransactionForBlock(tx, blockNum) - if borTx != nil { - stream.WriteNil() - return nil - } - stream.WriteNil() - return fmt.Errorf("transaction %#x not found", hash) - } - engine := api.ethApi.engine() - - txEnv, err := transactions.ComputeTxEnv_ZkEvm(ctx, engine, block, chainConfig, api.ethApi._blockReader, tx, int(txnIndex), api.ethApi.historyV3(tx)) - if err != nil { - stream.WriteNil() - return err - } - - // counters work - hermezDb := hermez_db.NewHermezDbReader(tx) - forkId, err := hermezDb.GetForkIdByBlockNum(blockNum) - if err != nil { - stream.WriteNil() - return err - } - - smtDepth, err := getSmtDepth(hermezDb, blockNum, config) - if err != nil { - stream.WriteNil() - return err - } - - txCounters := vm.NewTransactionCounter(txn, int(smtDepth), uint16(forkId), api.config.Zk.VirtualCountersSmtReduction, false) - batchCounters := vm.NewBatchCounterCollector(int(smtDepth), uint16(forkId), api.config.Zk.VirtualCountersSmtReduction, false, nil) - - if _, err = batchCounters.AddNewTransactionCounters(txCounters); err != nil { - stream.WriteNil() - return err - } - - // set tracer to counter tracer - if config == nil { - config = &tracers.TraceConfig_ZkEvm{} - } - config.CounterCollector = txCounters - - // Trace the transaction and return - return transactions.TraceTx(ctx, txEnv.Msg, txEnv.BlockContext, txEnv.TxContext, txEnv.Ibs, config, chainConfig, stream, api.ethApi.evmCallTimeout) -} - func getSmtDepth(hermezDb *hermez_db.HermezDbReader, blockNum uint64, config *tracers.TraceConfig_ZkEvm) (int, error) { var smtDepth int if config != nil && config.SmtDepth != nil { diff --git a/turbo/trie/trie_root.go b/turbo/trie/trie_root.go index f04b2f7d953..92c0378cebf 100644 --- a/turbo/trie/trie_root.go +++ b/turbo/trie/trie_root.go @@ -339,21 +339,6 @@ func (r *RootHashAggregator) Receive(itemType StreamItem, hasTree bool, cutoff int, ) error { - //r.traceIf("9c3dc2561d472d125d8f87dde8f2e3758386463ade768ae1a1546d34101968bb", "00") - //if storageKey == nil { - // //if bytes.HasPrefix(accountKey, common.FromHex("08050d07")) { - // fmt.Printf("1: %d, %x, %x\n", itemType, accountKey, hash) - // //} - //} else { - // //if bytes.HasPrefix(accountKey, common.FromHex("876f5a0f54b30254d2bad26bb5a8da19cbe748fd033004095d9c96c8e667376b")) && bytes.HasPrefix(storageKey, common.FromHex("")) { - // //fmt.Printf("%x\n", storageKey) - // fmt.Printf("1: %d, %x, %x, %x\n", itemType, accountKey, storageKey, hash) - // //} - //} - // - - fmt.Printf("1: %d, %x, %x, %x\n", itemType, accountKey, storageKey, hash) - switch itemType { case StorageStreamItem: if len(r.currAccK) == 0 { diff --git a/zk/contracts/l1_abi.go b/zk/contracts/l1_abi.go index ac816a2fd15..e9b3920040c 100644 --- a/zk/contracts/l1_abi.go +++ b/zk/contracts/l1_abi.go @@ -4,11 +4,15 @@ const SequenceBatchesAbiv6_6 = "[{\"inputs\":[{\"internalType\":\"contractIPolyg const SequenceBatchesAbiv5_0 = "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_pol\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"_rollupManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesDecentralized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesNotAllowedOnEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasTokenNetworkMustBeZeroOnEther\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpiredAfterEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HugeTokenMetadataNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializeTransaction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughPOLAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyRollupManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"InitialSequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"l1InfoRoot\",\"type\":\"bytes32\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"SetForceBatchAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"UpdateEtrogSequence\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GLOBAL_EXIT_ROOT_MANAGER_L2\",\"outputs\":[{\"internalType\":\"contractIBasePolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_LIST_LEN_LEN\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_DATA_LEN_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_EFFECTIVE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SET_UP_ETROG_TX\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_R\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_S\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_V\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculatePolPerForceBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"polAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenNetwork\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_gasTokenNetwork\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_gasTokenMetadata\",\"type\":\"bytes\"}],\"name\":\"generateInitializeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"sequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedSequencer\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_trustedSequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"_lastAccInputHash\",\"type\":\"bytes32\"}],\"name\":\"initializeUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAccInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"onVerifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pol\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupManager\",\"outputs\":[{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"setForceBatchAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" const SequenceBatchesValidiumAbiElderBerry = "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_pol\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"_rollupManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesDecentralized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesNotAllowedOnEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasTokenNetworkMustBeZeroOnEther\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpiredAfterEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HugeTokenMetadataNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitSequencedBatchDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializeTransaction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTimestampSequenceInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughPOLAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyRollupManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceWithDataAvailabilityNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwitchToSameValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"InitialSequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"l1InfoRoot\",\"type\":\"bytes32\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDataAvailabilityProtocol\",\"type\":\"address\"}],\"name\":\"SetDataAvailabilityProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"SetForceBatchAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SwitchSequenceWithDataAvailability\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GLOBAL_EXIT_ROOT_MANAGER_L2\",\"outputs\":[{\"internalType\":\"contractIBasePolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_LIST_LEN_LEN\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_DATA_LEN_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_EFFECTIVE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_R\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_S\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_V\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_RANGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculatePolPerForceBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataAvailabilityProtocol\",\"outputs\":[{\"internalType\":\"contractIDataAvailabilityProtocol\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"polAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenNetwork\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_gasTokenNetwork\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_gasTokenMetadata\",\"type\":\"bytes\"}],\"name\":\"generateInitializeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"sequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSequenceWithDataAvailabilityAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAccInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"onVerifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pol\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupManager\",\"outputs\":[{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"maxSequenceTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initSequencedBatch\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"transactionsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonValidiumEtrog.ValidiumBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"maxSequenceTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initSequencedBatch\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"dataAvailabilityMessage\",\"type\":\"bytes\"}],\"name\":\"sequenceBatchesValidium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIDataAvailabilityProtocol\",\"name\":\"newDataAvailabilityProtocol\",\"type\":\"address\"}],\"name\":\"setDataAvailabilityProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"setForceBatchAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"newIsSequenceWithDataAvailabilityAllowed\",\"type\":\"bool\"}],\"name\":\"switchSequenceWithDataAvailability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" +const SequenceBatchesPreEtrogAbi = "[{\"inputs\":[{\"internalType\":\"contract IPolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Upgradeable\",\"name\":\"_matic\",\"type\":\"address\"},{\"internalType\":\"contract IVerifierRollup\",\"name\":\"_rollupVerifier\",\"type\":\"address\"},{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_forkID\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"versionBeforeUpgrade\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitBatchMustMatchCurrentForkID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyNotEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VersionAlreadyUpdated\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ActivateForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"ConsolidatePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"OverridePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storedStateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provedStateRoot\",\"type\":\"bytes32\"}],\"name\":\"ProveNonDeterministicPendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"SetMultiplierBatchFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"SetPendingStateTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"SetTrustedAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"SetTrustedAggregatorTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"SetVerifyBatchTimeTarget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"UpdateZkEVMVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatchesTrustedAggregator\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION_BEFORE_UPGRADE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequencedBatchNum\",\"type\":\"uint64\"}],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"batchNumToStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contract IPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateRewardPerBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newStateRoot\",\"type\":\"uint256\"}],\"name\":\"checkStateRootInsidePrime\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"consolidatePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maticAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forkID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getForcedBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oldStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"}],\"name\":\"getInputSnarkBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contract IPolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedSequencer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateTimeout\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trustedAggregator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"trustedAggregatorTimeout\",\"type\":\"uint64\"}],\"internalType\":\"struct PolygonZkEVM.InitializePackedParameters\",\"name\":\"initializePackedParameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"genesisRoot\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_trustedSequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isForcedBatchDisallowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"isPendingStateConsolidable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingState\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingStateConsolidated\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVerifiedBatchBeforeUpgrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"matic\",\"outputs\":[{\"internalType\":\"contract IERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiplierBatchFee\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"overridePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingStateTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingStateTransitions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"proveNonDeterministicPendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupVerifier\",\"outputs\":[{\"internalType\":\"contract IVerifierRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"struct PolygonZkEVM.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"struct PolygonZkEVM.ForcedBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"sequencedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"accInputHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequencedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"previousLastBatchSequenced\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"setMultiplierBatchFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"setPendingStateTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"setTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"setTrustedAggregatorTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"setVerifyBatchTimeTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregatorTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_versionString\",\"type\":\"string\"}],\"name\":\"updateVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifyBatchTimeTarget\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatchesTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" + const SequenceBatchesValidiumElderBerry = "db5b0ed7" +const SequenceBatchesPreEtrog = "5e9145c9" const SequenceBatchesIdv5_0 = "ecef3f99" const SequenceBatchesIdv6_6 = "def57e54" var SequenceBatchesMapping = map[string]string{ + SequenceBatchesPreEtrog: SequenceBatchesPreEtrogAbi, SequenceBatchesIdv5_0: SequenceBatchesAbiv5_0, SequenceBatchesIdv6_6: SequenceBatchesAbiv6_6, SequenceBatchesValidiumElderBerry: SequenceBatchesValidiumAbiElderBerry, diff --git a/zk/hermez_db/db.go b/zk/hermez_db/db.go index 0bdbf99ef88..573209e2309 100644 --- a/zk/hermez_db/db.go +++ b/zk/hermez_db/db.go @@ -295,6 +295,10 @@ func (db *HermezDbReader) GetSequenceByBatchNo(batchNo uint64) (*types.L1BatchIn return db.getByBatchNo(L1SEQUENCES, batchNo) } +func (db *HermezDbReader) GetRangeSequencesByBatch(batchNo uint64) (*types.L1BatchInfo, *types.L1BatchInfo, error) { + return db.getPrevAndCurrentForBatch(L1SEQUENCES, batchNo) +} + func (db *HermezDbReader) GetSequenceByBatchNoOrHighest(batchNo uint64) (*types.L1BatchInfo, error) { seq, err := db.GetSequenceByBatchNo(batchNo) if err != nil { @@ -324,25 +328,29 @@ func (db *HermezDbReader) GetSequenceByBatchNoOrHighest(batchNo uint64) (*types. } if batch > batchNo { - if len(v) != 64 { - return nil, fmt.Errorf("invalid hash length") - } - - l1TxHash := common.BytesToHash(v[:32]) - stateRoot := common.BytesToHash(v[32:64]) - - return &types.L1BatchInfo{ - BatchNo: batch, - L1BlockNo: l1Block, - StateRoot: stateRoot, - L1TxHash: l1TxHash, - }, nil + return parseL1BatchInfo(l1Block, batch, v) } } return nil, nil } +func parseL1BatchInfo(l1BlockN, batchN uint64, v []byte) (*types.L1BatchInfo, error) { + if len(v) != 96 && len(v) != 64 { + return nil, fmt.Errorf("invalid hash length") + } + l1TxHash := common.BytesToHash(v[:32]) + stateRoot := common.BytesToHash(v[32:64]) + l1InfoRoot := common.BytesToHash(v[64:]) + + return &types.L1BatchInfo{ + BatchNo: batchN, + L1BlockNo: l1BlockN, + StateRoot: stateRoot, + L1TxHash: l1TxHash, + L1InfoRoot: l1InfoRoot, + }, nil +} func (db *HermezDbReader) GetVerificationByL1Block(l1BlockNo uint64) (*types.L1BatchInfo, error) { return db.getByL1Block(L1VERIFICATIONS, l1BlockNo) } @@ -423,23 +431,62 @@ func (db *HermezDbReader) getByL1Block(table string, l1BlockNo uint64) (*types.L } if l1Block == l1BlockNo { - if len(v) != 96 && len(v) != 64 { - return nil, fmt.Errorf("invalid hash length") - } + return parseL1BatchInfo(l1Block, batchNo, v) + } + } - l1TxHash := common.BytesToHash(v[:32]) - stateRoot := common.BytesToHash(v[32:64]) + return nil, nil +} - return &types.L1BatchInfo{ - BatchNo: batchNo, - L1BlockNo: l1Block, - StateRoot: stateRoot, - L1TxHash: l1TxHash, - }, nil +func (db *HermezDbReader) getPrevAndCurrentForBatch(table string, batchNo uint64) (prev *types.L1BatchInfo, current *types.L1BatchInfo, err error) { + c, err := db.tx.Cursor(table) + if err != nil { + return + } + defer c.Close() + + var k, v []byte + for k, v, err = c.First(); k != nil; k, v, err = c.Next() { + if err != nil { + return + } + + l1Block, batch, err1 := SplitKey(k) + if err1 != nil { + err = err1 + return + } + + // found the current one + if batch >= batchNo { + current, err = parseL1BatchInfo(l1Block, batch, v) + if err != nil { + return + } + break } } - return nil, nil + k, v, err = c.Prev() + if err != nil { + return + } + if len(v) == 0 { + prev = &types.L1BatchInfo{} + return + } + + l1Block, prevBatch, err := SplitKey(k) + if err != nil { + return + } + + prev, err = parseL1BatchInfo(l1Block, prevBatch, v) + if err != nil { + return + } + + return } func (db *HermezDbReader) getByBatchNo(table string, batchNo uint64) (*types.L1BatchInfo, error) { @@ -461,24 +508,7 @@ func (db *HermezDbReader) getByBatchNo(table string, batchNo uint64) (*types.L1B } if batch == batchNo { - if len(v) != 96 && len(v) != 64 { - return nil, fmt.Errorf("invalid hash length") - } - - l1TxHash := common.BytesToHash(v[:32]) - stateRoot := common.BytesToHash(v[32:64]) - var l1InfoRoot common.Hash - if len(v) > 64 { - l1InfoRoot = common.BytesToHash(v[64:]) - } - - return &types.L1BatchInfo{ - BatchNo: batchNo, - L1BlockNo: l1Block, - StateRoot: stateRoot, - L1TxHash: l1TxHash, - L1InfoRoot: l1InfoRoot, - }, nil + return parseL1BatchInfo(l1Block, batch, v) } } @@ -522,29 +552,14 @@ func (db *HermezDbReader) getLatest(table string) (*types.L1BatchInfo, error) { if len(value) == 0 { return nil, nil } - - if len(value) != 96 && len(value) != 64 { - return nil, fmt.Errorf("invalid hash length") - } - - l1TxHash := common.BytesToHash(value[:32]) - stateRoot := common.BytesToHash(value[32:64]) - var l1InfoRoot common.Hash - if len(value) > 64 { - l1InfoRoot = common.BytesToHash(value[64:]) - } - - return &types.L1BatchInfo{ - BatchNo: batchNo, - L1BlockNo: l1BlockNo, - L1TxHash: l1TxHash, - StateRoot: stateRoot, - L1InfoRoot: l1InfoRoot, - }, nil + return parseL1BatchInfo(l1BlockNo, batchNo, value) } -func (db *HermezDb) WriteSequence(l1BlockNo, batchNo uint64, l1TxHash, stateRoot common.Hash) error { - val := append(l1TxHash.Bytes(), stateRoot.Bytes()...) +func (db *HermezDb) WriteSequence(l1BlockNo, batchNo uint64, l1TxHash, stateRoot, l1InfoRoot common.Hash) error { + val := make([]byte, 0, 96) + val = append(val, l1TxHash.Bytes()...) + val = append(val, stateRoot.Bytes()...) + val = append(val, l1InfoRoot.Bytes()...) return db.tx.Put(L1SEQUENCES, ConcatKey(l1BlockNo, batchNo), val) } @@ -560,8 +575,7 @@ func (db *HermezDb) RollbackSequences(batchNo uint64) error { break } - err = db.tx.Delete(L1SEQUENCES, ConcatKey(latestSequence.L1BlockNo, latestSequence.BatchNo)) - if err != nil { + if err = db.tx.Delete(L1SEQUENCES, ConcatKey(latestSequence.L1BlockNo, latestSequence.BatchNo)); err != nil { return err } } @@ -600,8 +614,7 @@ func (db *HermezDb) TruncateSequences(l2BlockNo uint64) error { continue } // delete seq - err = db.tx.Delete(L1SEQUENCES, ConcatKey(seq.L1BlockNo, seq.BatchNo)) - if err != nil { + if err = db.tx.Delete(L1SEQUENCES, ConcatKey(seq.L1BlockNo, seq.BatchNo)); err != nil { return err } } diff --git a/zk/hermez_db/db_test.go b/zk/hermez_db/db_test.go index 7641393d459..dd5fd4d181b 100644 --- a/zk/hermez_db/db_test.go +++ b/zk/hermez_db/db_test.go @@ -14,7 +14,7 @@ import ( ) type IHermezDb interface { - WriteSequence(uint64, uint64, common.Hash, common.Hash) error + WriteSequence(uint64, uint64, common.Hash, common.Hash, common.Hash) error WriteVerification(uint64, uint64, common.Hash, common.Hash) error } @@ -51,8 +51,8 @@ func TestGetSequenceByL1Block(t *testing.T) { defer cleanup() db := NewHermezDb(tx) - require.NoError(t, db.WriteSequence(1, 1001, common.HexToHash("0xabc"), common.HexToHash("0xabc"))) - require.NoError(t, db.WriteSequence(2, 1002, common.HexToHash("0xdef"), common.HexToHash("0xdef"))) + require.NoError(t, db.WriteSequence(1, 1001, common.HexToHash("0xabc"), common.HexToHash("0xabc"), common.HexToHash("0x0"))) + require.NoError(t, db.WriteSequence(2, 1002, common.HexToHash("0xdef"), common.HexToHash("0xdef"), common.HexToHash("0x0"))) info, err := db.GetSequenceByL1Block(1) require.NoError(t, err) @@ -72,8 +72,8 @@ func TestGetSequenceByBatchNo(t *testing.T) { defer cleanup() db := NewHermezDb(tx) - require.NoError(t, db.WriteSequence(1, 1001, common.HexToHash("0xabc"), common.HexToHash("0xabcd"))) - require.NoError(t, db.WriteSequence(2, 1002, common.HexToHash("0xdef"), common.HexToHash("0xdefg"))) + require.NoError(t, db.WriteSequence(1, 1001, common.HexToHash("0xabc"), common.HexToHash("0xabcd"), common.HexToHash("0x0"))) + require.NoError(t, db.WriteSequence(2, 1002, common.HexToHash("0xdef"), common.HexToHash("0xdefg"), common.HexToHash("0x0"))) info, err := db.GetSequenceByBatchNo(1001) require.NoError(t, err) @@ -118,7 +118,7 @@ func TestGetAndSetLatest(t *testing.T) { testCases := []struct { desc string table string - writeSequenceMethod func(IHermezDb, uint64, uint64, common.Hash, common.Hash) error + writeSequenceMethod func(IHermezDb, uint64, uint64, common.Hash, common.Hash, common.Hash) error writeVerificationMethod func(IHermezDb, uint64, uint64, common.Hash, common.Hash) error l1BlockNo uint64 batchNo uint64 @@ -138,7 +138,7 @@ func TestGetAndSetLatest(t *testing.T) { db := NewHermezDb(tx) var err error if tc.table == L1SEQUENCES { - err = tc.writeSequenceMethod(db, tc.l1BlockNo, tc.batchNo, tc.l1TxHashBytes, tc.stateRoot) + err = tc.writeSequenceMethod(db, tc.l1BlockNo, tc.batchNo, tc.l1TxHashBytes, tc.stateRoot, common.HexToHash("0x0")) } else { err = tc.writeVerificationMethod(db, tc.l1BlockNo, tc.batchNo, tc.l1TxHashBytes, tc.stateRoot) } @@ -317,7 +317,7 @@ func TestTruncateSequences(t *testing.T) { db := NewHermezDb(tx) for i := 0; i < 1000; i++ { - err := db.WriteSequence(uint64(i), uint64(i), common.HexToHash("0xabc"), common.HexToHash("0xabc")) + err := db.WriteSequence(uint64(i), uint64(i), common.HexToHash("0xabc"), common.HexToHash("0xabc"), common.HexToHash("0x0")) require.NoError(t, err) err = db.WriteBlockBatch(uint64(i), uint64(i)) require.NoError(t, err) @@ -389,7 +389,7 @@ func BenchmarkWriteSequence(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - err := db.WriteSequence(uint64(i), uint64(i+1000), common.HexToHash("0xabc"), common.HexToHash("0xabc")) + err := db.WriteSequence(uint64(i), uint64(i+1000), common.HexToHash("0xabc"), common.HexToHash("0xabc"), common.HexToHash("0x0")) if err != nil { b.Fatal(err) } @@ -417,7 +417,7 @@ func BenchmarkGetSequenceByL1Block(b *testing.B) { db := NewHermezDb(tx) for i := 0; i < 1000; i++ { - err := db.WriteSequence(uint64(i), uint64(i+1000), common.HexToHash("0xabc"), common.HexToHash("0xabc")) + err := db.WriteSequence(uint64(i), uint64(i+1000), common.HexToHash("0xabc"), common.HexToHash("0xabc"), common.HexToHash("0x0")) if err != nil { b.Fatal(err) } @@ -461,7 +461,7 @@ func BenchmarkGetSequenceByBatchNo(b *testing.B) { db := NewHermezDb(tx) for i := 0; i < 1000; i++ { - err := db.WriteSequence(uint64(i), uint64(i+1000), common.HexToHash("0xabc"), common.HexToHash("0xabc")) + err := db.WriteSequence(uint64(i), uint64(i+1000), common.HexToHash("0xabc"), common.HexToHash("0xabc"), common.HexToHash("0x0")) if err != nil { b.Fatal(err) } diff --git a/zk/stages/stage_batches.go b/zk/stages/stage_batches.go index 95647338d7e..72ac42a6814 100644 --- a/zk/stages/stage_batches.go +++ b/zk/stages/stage_batches.go @@ -308,7 +308,7 @@ LOOP: } case *types.BatchEnd: if entry.StateRoot != lastBlockRoot { - log.Warn(fmt.Sprintf("[%s] batch end state root mismatches last block's: %x, expected: %x", logPrefix, entry.StateRoot, lastBlockRoot)) + log.Debug(fmt.Sprintf("[%s] batch end state root mismatches last block's: %x, expected: %x", logPrefix, entry.StateRoot, lastBlockRoot)) } // keep a record of the last block processed when we receive the batch end if err = hermezDb.WriteBatchEnd(lastBlockHeight); err != nil { diff --git a/zk/stages/stage_l1syncer.go b/zk/stages/stage_l1syncer.go index ccf4b856b18..39da1fa22f3 100644 --- a/zk/stages/stage_l1syncer.go +++ b/zk/stages/stage_l1syncer.go @@ -142,12 +142,13 @@ Loop: info, batchLogType := parseLogType(cfg.zkCfg.L1RollupId, &l) switch batchLogType { case logSequence: + fallthrough case logSequenceEtrog: // prevent storing pre-etrog sequences for etrog rollups if batchLogType == logSequence && cfg.zkCfg.L1RollupId > 1 { continue } - if err := hermezDb.WriteSequence(info.L1BlockNo, info.BatchNo, info.L1TxHash, info.StateRoot); err != nil { + if err := hermezDb.WriteSequence(info.L1BlockNo, info.BatchNo, info.L1TxHash, info.StateRoot, info.L1InfoRoot); err != nil { funcErr = fmt.Errorf("failed to write batch info, %w", err) return funcErr } @@ -164,6 +165,7 @@ Loop: highestWrittenL1BlockNo = info.L1BlockNo } case logVerify: + fallthrough case logVerifyEtrog: // prevent storing pre-etrog verifications for etrog rollups if batchLogType == logVerify && cfg.zkCfg.L1RollupId > 1 { diff --git a/zk/stages/stage_sequence_execute.go b/zk/stages/stage_sequence_execute.go index 903051f9fc7..8c2877b8007 100644 --- a/zk/stages/stage_sequence_execute.go +++ b/zk/stages/stage_sequence_execute.go @@ -393,37 +393,56 @@ func sequencingStageStep( // Each transaction in yielded will be reevaluated at the end of each batch } - if anyOverflow { + switch anyOverflow { + case overflowCounters: + // remove the last attempted counters as we may want to continue processing this batch with other transactions + batchCounters.RemovePreviousTransactionCounters() + if batchState.isLimboRecovery() { panic("limbo transaction has already been executed once so they must not overflow counters while re-executing") } if !batchState.isL1Recovery() { - log.Info(fmt.Sprintf("[%s] overflowed adding transaction to batch", logPrefix), "batch", batchState.batchNumber, "tx-hash", txHash, "has-any-transactions-in-this-batch", batchState.hasAnyTransactionsInThisBatch) /* There are two cases when overflow could occur. - 1. The block DOES not contains any transactions. + 1. The block DOES not contain any transactions. In this case it means that a single tx overflow entire zk-counters. In this case we mark it so. Once marked it will be discarded from the tx-pool async (once the tx-pool process the creation of a new batch) + Block production then continues as normal looking for more suitable transactions NB: The tx SHOULD not be removed from yielded set, because if removed, it will be picked again on next block. That's why there is i++. It ensures that removing from yielded will start after the problematic tx 2. The block contains transactions. - In this case, we just have to remove the transaction that overflowed the zk-counters and all transactions after it, from the yielded set. - This removal will ensure that these transaction could be added in the next block(s) + In this case we make note that we have had a transaction that overflowed and continue attempting to process transactions + Once we reach the cap for these attempts we will stop producing blocks and consider the batch done */ if !batchState.hasAnyTransactionsInThisBatch { + // mark the transaction to be removed from the pool cfg.txPool.MarkForDiscardFromPendingBest(txHash) - log.Info(fmt.Sprintf("single transaction %s overflow counters", txHash)) + log.Info(fmt.Sprintf("[%s] single transaction %s cannot fit into batch", logPrefix, txHash)) + } else { + batchState.newOverflowTransaction() + log.Info(fmt.Sprintf("[%s] transaction %s overflow counters", logPrefix, txHash), "count", batchState.overflowTransactions) + if batchState.reachedOverflowTransactionLimit() { + log.Info(fmt.Sprintf("[%s] closing batch due to counters", logPrefix), "count", batchState.overflowTransactions) + runLoopBlocks = false + break LOOP_TRANSACTIONS + } } - runLoopBlocks = false - break LOOP_TRANSACTIONS + // continue on processing other transactions and skip this one + continue } if batchState.isResequence() && cfg.zk.SequencerResequenceStrict { return fmt.Errorf("strict mode enabled, but resequenced batch %d overflowed counters on block %d", batchState.batchNumber, blockNumber) } - + case overflowGas: + if batchState.isAnyRecovery() { + panic(fmt.Sprintf("block gas limit overflow in recovery block: %d", blockNumber)) + } + log.Info(fmt.Sprintf("[%s] gas overflowed adding transaction to block", logPrefix), "block", blockNumber, "tx-hash", txHash) + runLoopBlocks = false break LOOP_TRANSACTIONS + case overflowNone: } if err == nil { diff --git a/zk/stages/stage_sequence_execute_state.go b/zk/stages/stage_sequence_execute_state.go index 53d7f5ed0dc..60cb03129a6 100644 --- a/zk/stages/stage_sequence_execute_state.go +++ b/zk/stages/stage_sequence_execute_state.go @@ -16,6 +16,8 @@ import ( "github.com/ledgerwatch/erigon/zk/txpool" ) +const maximumOverflowTransactionAttempts = 5 + type BatchContext struct { ctx context.Context cfg *SequenceBlockCfg @@ -46,6 +48,7 @@ type BatchState struct { batchL1RecoveryData *BatchL1RecoveryData limboRecoveryData *LimboRecoveryData resequenceBatchJob *ResequenceBatchJob + overflowTransactions int } func newBatchState(forkId, batchNumber, blockNumber uint64, hasExecutorForThisBatch, l1Recovery bool, txPool *txpool.TxPool, resequenceBatchJob *ResequenceBatchJob) *BatchState { @@ -150,6 +153,14 @@ func (bs *BatchState) onBuiltBlock(blockNumber uint64) { bs.builtBlocks = append(bs.builtBlocks, blockNumber) } +func (bs *BatchState) newOverflowTransaction() { + bs.overflowTransactions++ +} + +func (bs *BatchState) reachedOverflowTransactionLimit() bool { + return bs.overflowTransactions >= maximumOverflowTransactionAttempts +} + // TYPE BATCH L1 RECOVERY DATA type BatchL1RecoveryData struct { recoveredBatchDataSize int diff --git a/zk/stages/stage_sequence_execute_transactions.go b/zk/stages/stage_sequence_execute_transactions.go index 5cadf4c846e..2132663eeaf 100644 --- a/zk/stages/stage_sequence_execute_transactions.go +++ b/zk/stages/stage_sequence_execute_transactions.go @@ -92,6 +92,14 @@ func extractTransactionsFromSlot(slot *types2.TxsRlp) ([]types.Transaction, erro return transactions, nil } +type overflowType uint8 + +const ( + overflowNone overflowType = iota + overflowCounters + overflowGas +) + func attemptAddTransaction( cfg SequenceBlockCfg, sdb *stageDb, @@ -104,7 +112,7 @@ func attemptAddTransaction( l1Recovery bool, forkId, l1InfoIndex uint64, blockDataSizeChecker *BlockDataChecker, -) (*types.Receipt, *core.ExecutionResult, bool, error) { +) (*types.Receipt, *core.ExecutionResult, overflowType, error) { var batchDataOverflow, overflow bool var err error @@ -115,7 +123,7 @@ func attemptAddTransaction( if blockDataSizeChecker != nil { txL2Data, err := txCounters.GetL2DataCache() if err != nil { - return nil, nil, false, err + return nil, nil, overflowNone, err } batchDataOverflow = blockDataSizeChecker.AddTransactionData(txL2Data) if batchDataOverflow { @@ -123,12 +131,12 @@ func attemptAddTransaction( } } if err != nil { - return nil, nil, false, err + return nil, nil, overflowNone, err } anyOverflow := overflow || batchDataOverflow if anyOverflow && !l1Recovery { log.Debug("Transaction preexecute overflow detected", "txHash", transaction.Hash(), "coutners", batchCounters.CombineCollectorsNoChanges().UsedAsString()) - return nil, nil, true, nil + return nil, nil, overflowCounters, nil } gasPool := new(core.GasPool).AddGas(transactionGasLimit) @@ -160,24 +168,29 @@ func attemptAddTransaction( ) if err != nil { - return nil, nil, false, err + return nil, nil, overflowNone, err } if err = txCounters.ProcessTx(ibs, execResult.ReturnData); err != nil { - return nil, nil, false, err + return nil, nil, overflowNone, err } batchCounters.UpdateExecutionAndProcessingCountersCache(txCounters) // now that we have executed we can check again for an overflow if overflow, err = batchCounters.CheckForOverflow(l1InfoIndex != 0); err != nil { - return nil, nil, false, err + return nil, nil, overflowNone, err } counters := batchCounters.CombineCollectorsNoChanges().UsedAsString() if overflow { log.Debug("Transaction overflow detected", "txHash", transaction.Hash(), "coutners", counters) ibs.RevertToSnapshot(snapshot) - return nil, nil, true, nil + return nil, nil, overflowCounters, nil + } + if gasUsed > header.GasLimit { + log.Debug("Transaction overflows block gas limit", "txHash", transaction.Hash(), "txGas", receipt.GasUsed, "blockGasUsed", header.GasUsed) + ibs.RevertToSnapshot(snapshot) + return nil, nil, overflowGas, nil } log.Debug("Transaction added", "txHash", transaction.Hash(), "coutners", counters) @@ -187,10 +200,10 @@ func attemptAddTransaction( // we need to keep hold of the effective percentage used // todo [zkevm] for now we're hard coding to the max value but we need to calc this properly if err = sdb.hermezDb.WriteEffectiveGasPricePercentage(transaction.Hash(), effectiveGasPrice); err != nil { - return nil, nil, false, err + return nil, nil, overflowNone, err } ibs.FinalizeTx(evm.ChainRules(), noop) - return receipt, execResult, false, nil + return receipt, execResult, overflowNone, nil } diff --git a/zk/syncer/decodeEtrogSequenceBatchesCallData_testdata.go b/zk/syncer/decodeEtrogSequenceBatchesCallData_testdata.go new file mode 100644 index 00000000000..c227eab2deb --- /dev/null +++ b/zk/syncer/decodeEtrogSequenceBatchesCallData_testdata.go @@ -0,0 +1,94 @@ +package syncer + +import ( + "github.com/ledgerwatch/erigon-lib/common" +) + +type decodeElderberrySequencesTestCase struct { + Input string + Expected SequenceBatchesCalldataElderberry +} + +// DecodeEtrogSequenceBatchesCallDataTestCases - test cases for the DecodeEtrogSequenceBatchesCallData function +var decodeElderberrySequenceBatchesCallDataTestCases = []decodeElderberrySequencesTestCase{ + { + Input: "0xdef57e5400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000066e141dd0000000000000000000000000000000000000000000000000000000000204a05000000000000000000000000148ee7daf16574cd020afa34cc658f8f3fbd280000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000326000000000000000000000000000000000000000000000000000000000000050800000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000cfc0000000000000000000000000000000000000000000000000000000000000fb400000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000018020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b80b0000000300000000f9044e82674884017bf1a0830bcfc4948ff6508bdd71b535df073920c423e9eaee0b97af80b90424ec0ab6a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e0434ddf5273f71250a99c6fbcabfeca301de5f000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000001a45ae401dc0000000000000000000000000000000000000000000000000000000066e13be200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af00000000000000000000000000000000000000000000000000000000000652e10000000000000000000000000000000000000000000000000163adcee8b87f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000003d5320821bfca19fb0b5428f2c79d63bd5246f890000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13be20000000000000000000000000000000000000000000000000163adcee8b87f2000000000000000000000000000000000000000000000002e2103547d3748000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080f1f06050464bbe1899db8975029243860aae9dbc153f3d0bde4cbf423605c0f36b575d04708f9a517c2cfe3c6af0d379c30bca1097b252776609f3c2ef706d681bff0b0000000400000000f901ae82662284017bf1a08308fc58948ff6508bdd71b535df073920c423e9eaee0b97af80b90184b61d27f6000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000003d5320821bfca19fb0b5428f2c79d63bd5246f890000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13be200000000000000000000000000000000000000000000000001634a3fb8d2af5000000000000000000000000000000000000000000000002e14026ffdab72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80800fb8261fa1f177e41f88e7978b3cc48fe720a22ce153ad4bd88febf30f2bf8db3354cbb1d8a684aa733a0c9872a02c28dc350015d9ad47916a5e8d97b365ad8b1cff0b00000003000000000b0000000300000000f28231da84ee6b280082627094d20595ed0ed59d85d9359de5164b320a5c40fa6e875f9a48fae655c8840333e6b882044d80806ad649fc21c968300d2abebc5e256eafba5e069316dd680a6bb4feec0290e85b7d9831647c8d457a29b6efa64a88add3d0ab985436c7155238ed86435f30dc261bff0b00000003000000000b00000003000000000b0000000300000000f9010d821ed48401821fa88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009814ae9030c504000000000000000000000000000000000000000000000000000000000000000082044d8080f2c8fb37b8417e9a3d7245c8f428d932e87f43877e75b346c3d575a80700110b28ff4f9ac9d7882c8b61cf9929d2a20a8cb62d32aea89cbca06e3021eeaac3fd1cff0b00000003000000000b0000000300000000f903f23b8401620100830343f1941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f52e9f9451b39e2171a782aec26677586f35adc72ac984d0921cc7b9512c744e75000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000081f6b887657b679d9e23153ffcd703e1110102400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5867796855613343726552507448414d4c75314a6f47796d6d734b6a66676252464e4b5943644172364541570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004137eaeccfc1a481ec514bda2863333d34977c77f56e4033ea74cef4c22a748db0717b9d2961adbeab964a3963b682bcab163f2cec97eefd02c5df5b66a4e71b521b0000000000000000000000000000000000000000000000000000000000000082044d8080ea7294305dca446fc2918900c201f24486d75b33cafe6e2e8bf369218f229293230e8b67c0bd2b47182ab77ffbaed1d7763fc5705e306d776b0f8f8e86efd88d1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed5840166e3008307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d3e0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982adc32888842000000000000000000000000000000000000000000000000000000000000000082044d808067fffeed9f7553babaf6570c8a11233f004d0758170e5d23484c095da5ea282b08682443b3ea253139b3ac01977c0a758f081fd6cd614a24205c1d67cbd9afbf1bff0b00000003000000000b0000000300000000f902ee826181840189ad40830804df945523985926aa12ba58dc5ad00ddca99678d7227e80b902c484d61c970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d62000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000001a4c23a4c88000000000000000000000000000000000000000000000000000110d9316ec0009bdafe8da6cde01e6040b2d2187f6b67a297205ae12cbfe9485196bfa1b3a8374f9dd0dda9066451633b471b04af8ef8204abfe2693c8bf8c450bc20dcec28d300000000000000000000000063e99e508a9f2b6ed180811f80db90ce7417426c000000000000000000000000000000000000000000000000045f2a42a47981960000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000f02bbc9de6e443efdf3fc41851529c2c3b9e5e0c0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000447647691d000000000000000000000000000000000000000000000000045e1f2d2e761b0b00000000000000000000000063e99e508a9f2b6ed180811f80db90ce7417426c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000411e413bf834084915b547cc0d72d37e10a33d19426323e626c254fe8663b6984d4cc14841f43d8ca4842e10ab2fe3995cab429c30a54301522ea3a5a5272a91871b0000000000000000000000000000000000000000000000000000000000000082044d80804f5051f8a0057498cd6d2af0d1628a32348d13945f6bbdfd570b3544c7a08f8875aedee2be658959e23184a59bf6b92b43ee0fe5934f93f28b93ce4288de1f6a1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903ce82264a8405f5e1008307a120943348053b13e22b2717c742cd4a60f5040564a53080b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000d23aaa8116edf941e1aba78b113d7a670002ce4a0207020601080400030509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000023c2b0000000000000000000000000000000000000000000000000000000000023c316f00000000000000000000000000000000000000000000000000000000023c316f00000000000000000000000000000000000000000000000000000000023c5b7000000000000000000000000000000000000000000000000000000000023c7e8900000000000000000000000000000000000000000000000000000000023c828000000000000000000000000000000000000000000000000000000000023c954000000000000000000000000000000000000000000000000000000000023ca99000000000000000000000000000000000000000000000000000000000023f57ef00000000000000000000000000000000000000000000000000000000023f59fd0000000000000000000000000000000000000000000000000000000000000004650755b20d11b5cde1a5e1f721e10c74f5f078fac6800341d15be87da2e74a3c5acb65047658a523d0c57d88d94ca1d78f66ccd21b9b203f2df55700919e11bd2fbf684aea0d5dc6ef5cd78dc496afc655c627eb2e2da675143859fb439860329edfbc8fc5731ef33d3d50efcd525f27181b84a44fcf726ca066ebe622c15866000000000000000000000000000000000000000000000000000000000000000421bfca8453ac26e096cd1e78f31336665f46d385c6333d63a813a1bee82a0d97248c4d7624257e93bfbb42e7a8b901568660bea31df9cccf80f064263ac1977e495fb904f2b8477e6114f459116561463c2fb93122fffff08adf8c85aa5850f657c7fed085522823081dda81d1bd94235fc42fd1e70f70b38737760887e1ae0c82044d8080da940144b03a145e88a116e125b1a24eac784a85138a43a7bf4529d1e5fa33751fc270dd6380301802a94c1c6f1d398f5684f56ffd1d974231bcbabb1fe9ad791bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed684017eeb588307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d5c0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009824b00e503048000000000000000000000000000000000000000000000000000000000000000082044d80805a0f08064fc456e60e242cee4f20ecde976a51c7e1c1b1245922d15696c32cba65dbc28c8984d233552830250b4be646f523d65f1e686aa09b038769469d40ec1cff0b0000000300000000f8b12f840238e8a08304ac1194222228060e7efbb1d78bb5d454581910e392222286352f5cb5673bb88432accbb900000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271bb7b9b0000000000000000000000000000d4ebba85fbd618d08c6911e6bea0e514280144682044d808080e4ceead86b43aca84d560e925df839a58fc08296edf87dc44985d38e1312113a39d3f053ece00a9741ef979d9b0457a11dc7b65ad04dc117ad9a49c52987901bff0b0000000300000000f13d84016caf608304443a94ee1727f5074e747716637e1776b7f7c7133f16b18732a5492d0cfb90841249c58b82044d80801633bcf1a8f14729079a42e6e7d86f2e304924ea015e3f1ddadefe9e31869263170df9e3efeb2ce79a7a320bcbcd31acf77e4d0a33fd4945f0d6724d688b88241cff0b000000040000ae44e94d8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080317339510effaa798bc532fa32187f09b40c9b5cd12ccbeb7f7ab3fd3c157e680721490b51e44c59435ea2cd2143d71ad2b6316ae19d4055cfcea37d7a2cb9eb1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d184018715308302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e0103ff5b7f4b338a8f977b35846aa7c01ed379000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001635044eda5700000000000000000000000000000000000000000000000000000000000000014760dfebac75f07fa46b8e87d9151b673b8e33d4710293497a4a5c9524aedc8882044d8080a3566b6ff106e89842dda24f38fbc6ee0a105588e63240914f04986798835bf030b2f4d65e86d43514d0c03ee84e5c46a84fc637ac927233674c4cf7effe31101cff0b00000003000000000b0000000300000000f9010d821ed78401754e688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d7a0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982405427dd941000000000000000000000000000000000000000000000000000000000000000082044d80808cdf22284f15949ea3fbb6eeff81ee87a198722c1f8f827b1ce98ca30138b756444a20bc97269e363da23b33ee1badcfe012964ab8e73ee9c70f6f4af5ae99351bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f902ac258402625a00830494ba94b89a6778d1efe7a5b7096757a21b810cc2886fa180b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13c4b0000000000000000000000000000000000000000000000000000000000000002000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000376f2930000000000000000000000000000000000000000000000000057e3e6c76eb74600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000968980f6c8b41abeeadab481578614ad405f58890000000000000000000000000000000000000000000000000057e3e6c76eb74682044d8080388b027ca9400e25178e592726a62b4d39a6172d956bf11474ce49f65b0fa8a426f0e323ac7e8de7a4daa322ca42fa3c2cf66081047319341febcf2a8859af3b1cfff9028c208402625a008304932b94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000039bac84000000000000000000000000000000000000000000000000005b8731fffd99f800000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006ded4acd9fd87eec14f18b22e9046f000be0685a000000000000000000000000000000000000000000000000005b8731fffd99f882044d8080b53c40cb340c035c10a519f25f2de3fca0cd253015c28e7049b9d485ea98b1a5021c6938342e403283007f2ea6a9152a9089428f3fdee38461164b0fb89d690d1cfff9028c2e8402625a008305581d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000004710b280000000000000000000000000000000000000000000000000070a92a16ee367400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e3119ac2c91cf8e2ca81b54d757c166c53647a2b0000000000000000000000000000000000000000000000000070a92a16ee367482044d808008fd8af756bc9385919f74d9a9573a3581faf800c7999d51e834423a5daa4000067f947784576968c91ae28a653c76771a15035f088241705df3780d3cb9df1c1cfff9028c1e8402625a008305581d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000047054780000000000000000000000000000000000000000000000000070971273bec4a100000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000018c4dce3c0172a5322aefc459d69e85957d387890000000000000000000000000000000000000000000000000070971273bec4a182044d8080ba9906ac2e50febe56442a09ea73b14880b4f418e30f891402dedfc36e18e57b3b7ef3466f11fcd657b0d99da14c32249962f8f505656ccf48f0a5fa85946c2d1cff0b0000000300000000e97b8402d112408255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080e2aeb5078a6bdcb30be8415f3bf338183d2b725380bb85cc21596c775e414b103b7de8fceeeb38b5089d6af9f7f4862f805c332651b87bd2c444f16180db50ad1cff0b0000000300000000f8b6028402c9ee9683024b46943a23f943181408eac424116af7b7790c94cb97a58701c6bf52634000b88800000182ad69fa4f0000000000000000000000000000000000000000000000000001c6bf52634000000000000000000000000000b675ed9441dd8ac6d3a206ab61357bcd47384c6c000000000000000000000000000000000000000000000000000000000000e70800000000000000000000000000000000000000000000000000000000000000cd82044d80808493c0e815b42ccfaf9a06a6ccf16f1e445a0412aab8f360dd19929adec226d2431b3cb925d2fc60b325d59f97e35b7b52ea4ef006860596f1b9d79afcf1d0181bfff9010d821ed884016548d88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d980000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009815ae8ed77f3c000000000000000000000000000000000000000000000000000000000000000082044d80808cfb084863d1694fdd8775bf4fac4410b1b9cf98c1201ba0741106879be8d41f36ca97ecaa1eb058f23208921fcfdde1cf82299c336c2e9303c15865d9a036311bff0b0000000300000000ee8308be5e8403fcd02082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080a3271eeb3e1a9ca9fda4117e8abb72638a128fdce0cb2efb9ef2f870f60b2f672741f52279c993542e2b9d52d8961b2ce486f5498db46deb246b5916a379f8b61babf9014f8301154b84019853408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13b4200000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000007331f3647a294a90a1ca61c0000000000000000000000000000000000000000adf85b68ca582b83dd4bebe00000082044d8080b8cb2d6ac52d01ef955c17584d1abf7462b3014aedde6b0beeac237e3ff3bc104ae81fd1a2adbc78ec0681dfaf235f3ae18164c3af60a6f02dc9f6100818119f1bfff901ce82989884015445608305ea4c948ff6508bdd71b535df073920c423e9eaee0b97af80b901a4b61d27f60000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13c6d00000000000000000000000000000000000000000000000001634ada69799d20000000000000000000000000000000000000000000000000000000000df1806400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080768c51f79db3186f54b0754da1b78ab5a79b6fdf23109910fd4cd6cd9d7f3c8c22e2c8aa620d0d71b4b842da4b0742a4e67da2a0df0aaa08b3cb5d4d1a5955931cfff9012f83018d5e840154456083069df4941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000023abcb82f468e3422a7212d4ad47cc2dd39162a30000000000000000000000000000000000000000000000000000000066e13c6e00000000000000000000000000000000000000000000000001634985c6047d20000000000000000000000000000000000000000000000000000000000df17315000000000000000000000000000000000000000000000000000000000000000082044d8080e56167524cec085263787a173ce728e393d5f361abcfcb92098b68de4fb3a7bc72ae91803810eaafb610b3c66b581c91c6474b137de853eacc2c8d7b73f5b8da1bff000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d7a0b0000000300000000f86b825b2a8401764c50830d57b69498d7c628086262ea7bd83a23ccbc72f8cd10cd8480b842d43b9dcbb61e6ccfbcfef9f21e1bb5064f1cb33f0503849c0ae884bfdc14dddeb7cae95494f3684148550102d6efe114c9b6058a20aab759e064f50544590914050382044d8080eed135980b8038da4e871a8e95e5644a40cb85fc3f97c42a3b8c9aeac897dad368eff35e0c6aa77b54885fbe3528e9b9a9e5193d3142d67226825f6e2b5fd8251bfff906ae8216d4840176a36c831396f094063bac84221b5b02b92ceb740ac129db0edfedc780b90684f740f3280000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000005e4e7d7ed2800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb140000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb1400000000000000000000000098299ead1cd04fbf1659799b14a559206f3ed165000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002b4f9a0e7fd2bf6067db6994cf12e4495df938e6e90001f4a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500006437eaa0ef3549a5bb7d431be78a3d99bd360d19e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002b37eaa0ef3549a5bb7d431be78a3d99bd360d19e50001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080746ae602ceaec3387a089510db6ba15a6a45a6b60aeb564d2af783a2249308d935f550046db0988101d4d533b7d390b764e1bc7afc641fdd957f1c421e5c50491cff0b00000003000000000b0000000300000000ee8308be5f840158d94082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080fb504691bbf5c90ff09420f32385c4df07792dd1f0017568c765f1a180386bd54529e1b0819171dbced80e60b965c78a1afd887ad60450c0851fc4472a1aed711baaf8ee83019e5584019dd18083035f30945eb6b3db915d29fc624b8a0e42ac029e36a1d86b80b8c43161b7f60000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000012fb937557964d13c00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000001082044d8080bff5978438909bd3d0bf26d170678ba5ab948afebb9ed51824a16fca21bc2196068165970f68315889bcd05a63d9f7405722b2f0fdaceda25eb59c93b897e6d41cff0b0000000300000000f9028d818f840158d9408303a82b94678aa4bf4e210cf2166753e054d5b7c31cc7fa8680b902645ae401dc00000000000000000000000000000000000000000000000000000191dfe1d94000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000104b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000004786e420000000000000000000000000000000000000000000000000070ec0f4c9ee97e000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000070ec0f4c9ee97e0000000000000000000000004abf4710e38fd914212ec0d30026d0fa9d51d40d0000000000000000000000000000000000000000000000000000000082044d8080d6fefcfe30a6a3903219dbcf5937bfd3ee6ee34564e643242a790393324905217ad5bb7e3950286ec8f627314e6e18d8715ac80379c8f7d36eda1672d0bb69481cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed9840156dd708307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13db60000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8260d3d200c7d000000000000000000000000000000000000000000000000000000000000000082044d8080098be2bc098d407c1a9d7cadf5840c2c250e338538dc1ae0f5df4ed073f8a85414e47ece3ccc969f95ce9251738051c03ae40575075b9b4b4309210dcfbe44411cff0b00000003000000000b0000000300000000ee821a198401793280825be09482ce01bba0c29bf9b61dc9cfa7968b1e0891f5678702f89f754a380d8082044d8080b2c54612390fc975b7d024f6e8eed9942a73c0d2101ebb04df518e3744db33b4009c3b2e21252b7c462b71a2c34f8a40ca9f84bb30ab6fac7b692840b383dc481cab0b00000003000000000b0000000300000000f9070e8201138402d33c58831d10fc946b2c0c7be2048daa9b5527982c29f48062b34d5880b906e4b80c2f0900000000000000000000000000000000000000000000000000313282fe1a7140000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e5000000000000000000000000000000000000000000000000000000000025b4a900000000000000000000000000000000000000000000000000000000002548190000000000000000000000000000000000000000000000000000000066e1497b0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000006c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000025b4a9000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000018000000000000000000027109591b8a30c3a52256ea93e98da49ee43afa136a80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a5000000000000000000000000000000000000000000000000000000000000000100000000000000000000271007a42e9f31c1fb7c2056b040e55e35c2ea6744770000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e5000000000000000000000000000000000000000000000000000000000000000082044d808057853a22fce3f85fcdd486d18e841d491de09b35e2151168a3af8bd9352e5e616a70f07e3aad14a6760f82ccb45077001a395a1c9a5556c0d33241225108ab081bff0b00000003000000000b00000004000000000b00000003000000000b00000003000000000b0000000300000000f9010d821eda8401607a608307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13dd40000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981eaf19eb97c6000000000000000000000000000000000000000000000000000000000000000082044d8080bbaae2e5f840a60b75b397d51ffd3f6c648b7077d6d6091491237e9efb69d8c91620f7793c4dddb315cf997662a77b2c48cbbf881985c642d3cb63c4528a02b11bff0b00000003000000000b0000000300000000f02f8402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109875543df729c0000840333e82082044d8080e79b7308819654ce4d40697f7c1f044a00ec7796c73596957de663e9274d072a76e03b8eb9732d95e673501ed9cad4a63a32d33aa256caafc4f1867fb13eacc41cfff0268402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109873c6568f12e8000840333e82482044d80802cdb77771d166fa9140bd3ea0d17bdc5eeac3836d05d6144612c0434af52b5db2aeac6d0a8bdead3238ee12124dd9f387388ab5b52ab1100a1dadd6a8e9b740d1cfff01f8402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109874a9b6384488000840333e82382044d80806cd1e42d4d065497ce59e511d21e6d5819bf91ea9fa250786b757e0705f356eb5c43ae1da48a134429a5584590f1e4580d103310c3806cfde466a9c5231e35eb1cfff0218402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109873ff2e795f50000840333e82282044d808084e8d0f689fe1d5c190a4247b452a33fd6735de9d5f9f5003d8601d5b0c707d631c33cc82b2690e5df6efa0c2f44d68f62d47cd0922a94f802cdbedb115ee30a1cfff9018f830151d284018c1e408302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c201fab6ebde597669e39a9a69d724998e50b2f8000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001630804d32c10000000000000000000000000000000000000000000000000000000000000001b75f9deb5f8d72d9cd3ea0037c11ac2401d310730bc692f37ec19861105e08c582044d808002793ca3270d2bdb8a4efb0eea532dec733de8f35e5a1c3f90bf185ed69c73a973cc8df40252607608de8728eb43d5e9fccbdabc4fce80c5d4fc858a36e928ad1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea81808402625a0082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d80808805469c3fb84413a35485f506012ad1a6820b80738b3bf685b1d6175b9dfc79397f9b692337a0f633040da8401f8a5fc53852106d916911af513ff271e4aa261bff0b00000003000000000b0000000300000000f9010d821edb84017a1ce08307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13df20000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c82f0c5cacca38000000000000000000000000000000000000000000000000000000000000000082044d8080baa772220471b8149d55e5a5ac2bfbdd12c03eaeec654e08d9c74ec43b63d12a469bb9de8bf8ff2cd2edd8926daf89b887df334862e623a68cdc3b90bf7ba7391cff0b0000000300000000f84a318401681b808312c61094ee1727f5074e747716637e1776b7f7c7133f16b180a4db006a750000000000000000000000000000000000000000000000000000000008f58afa82044d80809489b2c6a4c5dc17ec3ec50d299e487c996839ed4d26bcc4c07f910dc21a53c04ff08798dea40e018cbd296ffa623776cc5382be8e8964a7383b1c8b9717ba2b1bcf00000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cc20b00000001000000000b0000000300000000f86a228401681b8082b4e5940d1e753a25ebda689453309112904807625befbe80b844095ea7b30000000000000000000000006131b5fae19ea4f9d964eac0408e4408b66337b500000000000000000000000000000000000000000000000026e055297acfc7bb82044d80802d542b44996d63d0e2ee4f8063c5c21b00ed851ab3f63911b2e0d4f9422287497b5085cca5dab841c5406c9bca6745b50a28a543431c355ee63d7e469e7b72971bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903ce821bc68405f5e1008307a12094d83729a90474d6ae09502ee3c58485cef40ac87280b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000093136a0f83405fd54b230fa9778a13300002cdfe0409010405000602070308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000038408d1790000000000000000000000000000000000000000000000000000000384669fe00000000000000000000000000000000000000000000000000000000384669fe00000000000000000000000000000000000000000000000000000000384941d490000000000000000000000000000000000000000000000000000000384f1bda900000000000000000000000000000000000000000000000000000003850842c800000000000000000000000000000000000000000000000000000003851ac5b600000000000000000000000000000000000000000000000000000003851ac5b600000000000000000000000000000000000000000000000000000003853adfd00000000000000000000000000000000000000000000000000000000385578f900000000000000000000000000000000000000000000000000000000000000004208140e5e3dac54f5eb8cd8211adb203b85cc8f48b5d7d5768ecae9622df24a03866b2325c2c74955907e637e920627241ee7d4220e6aa6fe4b474fa0a1467c4ed42c8afac6f30478534bfd8a1b58ede8bfbef3d1908c0288a743fb6aeb7c12ae89fd84ca1a67ee72ea3d922c892a66e7caa0994879cace58eaf8e30ec0b641c000000000000000000000000000000000000000000000000000000000000000469aea40a060cd08cdc062fcb2e3a8b1b45faa0ff08b58607ff6941f18a2561184328d4b3414cda5fc8a80dcd28dee321564a1c1eaffabd2601892446321625b1324fff5e231ca6e5a020a57e4b2c8b83eac3067b76fcdfe8f990509b8bd6ba882f431699ec517fa2f99ea179d76f3f872438f6d787d9e6704c52145bc16b31b082044d808039cd808d19202040e8c498c2ab13bcdf3af0b148bac34a026b1925ccf02cdd89763a910a26e0d8c91449b9d39d62aa35f116b0f303de9ddbe0adb211226be4bf1bfff9010d821edc84015d46108307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e100000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c7fc160522df2f000000000000000000000000000000000000000000000000000000000000000082044d8080bc426dda601756b4851b479be56dca7cbdcaca215314342d4e5cbefc7caeaa3b2115f87f94ec752953f052e46ffb2dea9db847ebabf21a239845e387e5d24fad1bfff86c82011484014ca44082ebf49437eaa0ef3549a5bb7d431be78a3d99bd360d19e580b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000000000000000f0719a82044d8080511a80bfb3d3116410992606d87913954e8731ed90a5131f21de84e035939b8273d0b786dc03ce855c47f5af2ca93567b0db3ed5fddb3f6cf5c19f8930e7f9d11cfff903ce8222f28405f5e1008307a120942e8932d5662ad426fe335162b233680a524395ee80b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000086e0a443f1c658191e265ab8658a37b300000a6c0405010609000708030402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000023b4b9200000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b8a3900000000000000000000000000000000000000000000000000000000023bcb6800000000000000000000000000000000000000000000000000000000023cc1da00000000000000000000000000000000000000000000000000000000023db84b00000000000000000000000000000000000000000000000000000000023db84b00000000000000000000000000000000000000000000000000000000023f6bdf00000000000000000000000000000000000000000000000000000000000000043ff63dc58a98b2caba46ba7a58cfa6b0378efd7ffd05ca878dcb191d92a850679b626656e08c2977addd9799a357347e31d4965d125bbe06a7557899cbe5a7206c636624e5636f4f3d669960a863e778fc8a1d29779990238c08bc3a3f5df2908936ae2660fed387a6272501cd4e7f16a25ef0a5c05cce014666dacfb6e85cb0000000000000000000000000000000000000000000000000000000000000000456cd47dcbb6b4c21b5c5978aa6f26fdda9fc62555429ef0a40b98205fbd86617648c9b624b5c64efe94ed0c11d54cd14a1ef04c3bb18f4d0945a8e88ec84fd62470136dc0befd1267388d059cd270f7f0a706eded9d9d4c6f4578fa869525ef45073a43bb30b1cbaa3f4affad5b05288b4e0a8f0724deba4e6024f235cd711f182044d8080bf100f793640914b3157343b839411911773ed9a2a463b79f1ae0d6295f64f3f105d96335e24c7519de149fb1767d2c21c25f7ff0718c9ac0acd017449d799141bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f870058401a17b0082bd6194555a64968e4803e27669d64e349ef3d18fca089586b1aca8f532dab844e56461ad000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000006587b69f97af1c9e91455401cd3ea5594590bbf982044d8080fccdafcb3644954a5a889c5a673c6180b646da17f832cd853a74a6c2413cd51169f1cfabe17e29cdaebbcfd961d06fb56bb2da7b4b11f7cbaf137e84ec327a9f1cfff03284015be680828d9794a06e1351e2fd2d45b5d35633ca7ecf328684a109878a6f0ad96bd73e840333e8c682044d8080f16b6fa1af75307cdea0f6fa7170d8c353bbdc1af5099bd4b4b69f1ee48a4aba2fecbab3e4eeda03128b8308f6becfd6fddee743bde4b24bc7fe32fc0c9fee2a1bff0b00000003000000000b0000000300000000f903ce8222f38405f5e1008307a120940e7197e7200a706e4b8e0ecfd39ef8c45cff142280b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000b62c61f914e58e40747a3fd731525dd20002ce3b0308090106020403070005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000003e5e21b4000000000000000000000000000000000000000000000000000000003e5e21b4000000000000000000000000000000000000000000000000000000003e5e33a8000000000000000000000000000000000000000000000000000000003e5e6e40000000000000000000000000000000000000000000000000000000003e5f4130000000000000000000000000000000000000000000000000000000003e5f4130000000000000000000000000000000000000000000000000000000003e5f5904000000000000000000000000000000000000000000000000000000003e5f5904000000000000000000000000000000000000000000000000000000003e60a0c0000000000000000000000000000000000000000000000000000000003e60a0c0000000000000000000000000000000000000000000000000000000000000000427c6181796e378ecce0eb4756eb5cb3cb22c2f5c31ec76afbb61cdfc9f96c2999ac5dc98c1619fa6401ffa39d5343d7d5b3d32c7c84f294e8caea56fbd7912240fd00d9938f0a0f896ad6a9aaaad9ec782ae47546019d0b2bd0be88287821fe235539a12cc61ddf8f127b192a2724d095088635a3acaded33c14f154ca65ead300000000000000000000000000000000000000000000000000000000000000040217a78ca7b9fc8eed7813085e982f6e8d699f8d548699c4c401f9b74f2bce452d0d3f0f47a6220d36ac59f3c8cddaf9a270e932a234e473bb8507e1a7bd5b6b33cce711f84eaeda3afd58b99e2149fd24ec6aa607bae119a4b358c204fd90b6414015a5b4d6efe234bfb3d0e3b2e1042364cce80bf3286ea367d06ad7f0e27282044d808072d67c06cd88db7a351633d59042a3909e3564f6d707240357850526ee6c561a60ce10685dec1ad08cde99aaa47a3bcbd8f7bc647e08375d873f7a2584478b391cff0b0000000400000000ee8308be6084044f35e082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080813ec45766e4b4c8838d0f69507e663a3ae1280bc1021a063d71381ecd29f84302e1bcc769c6d76488c0346c2069ad8d142fcbdeb8a15ec4f729a2a14c0515141caa0b0000000300000000f9064e82011584016fbca0831143e7941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b90624ca360ae0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000631cd561b0c80000000000000000000000000000000000000000000000000017769505dbc5db0000000000000000000000000000000000000000000000000000000066e5304f0000000000000000000000000000000000000000000000000017769505dbc5db0000000000000000000000000000000000000000000000000000000066e5304f000000000000000000000000bd72882120508518fcba2ae58e134ecead18d979000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d5640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039400c73445066cf0991b56490031d9a8241645cd8c8532c84dccfc1a95f295600000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002fa5fcc93ac9b373ef0065708330f7cac493fea70000000000000000000000000000000000000000000000000017dfac08f2f2400000000000000000000000000000000000000000000000000000000000002105000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003686f700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6a756d7065722e65786368616e676500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0719a00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001a42646478b00000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000000000000000000000000000000000000000f0719a000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000017dfac08f2f2400000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000b20237eaa0ef3549a5bb7d431be78a3d99bd360d19e501ffff01849c0ae884bfdc14dddeb7cae95494f3684148550157bffa72db682f7eb6c132dae03ff36bbeb0c45901a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03501ffff019f37552b87b68e7f169c442d595c1be7a0f03b920057bffa72db682f7eb6c132dae03ff36bbeb0c459014f9a0e7fd2bf6067db6994cf12e4495df938e6e901ffff02001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80802787b973f4d54062c810118dd824524f22139a2f95fc0c1847abfa0251e073ab71313f805daf772a06c1873d8390356030408d7cfaef18b7200e9f246c2012e41bff0b0000000300000000f9028e82393b843b9aca00830667f8943a464f746d23ab22155710f44db16dca53e0775e80b902647c39d130000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012700000010000000100000001000000127000000000000000000000010000001170000000000000000000000006119e37bd66406a1db74920ac79c15fb8411ba76c46702575bb24a61a3c6674a33b1c536418d418d7a2a5454760d0425f62a69690005804c0f4171353a8d70c267c85f228b5795422bb97e8701f57060b3afcacbda96828451185401ac923c55ed67ced54306dd4b6391546b221f111a5a62b01bc3c144011bb991df3e06a3f746ab38f98556f8e11b36c05ceb94aad204dffa5c664e9bd463791cf2b3fe4687153754968af9bcd9a70b8d25d31afef5e268e9aabb50aadf7d1ce0391fbf3eb6e6cf69572dd19bf6fc5081a462f752638d846b9d0862a6cc1dd706aadce7a16fa076ac160a7a7e59233f0659153b2efe2c60c5f302eb7cddaa4a1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008d030005804c000827500000000000000000000000003ddc189d48a792d2c6262d20aa0f9f78e88a9d470000044d0000000000000000000000006ae540f1c3a96a8628d52b416ec1bf72932f83fe0000000000000000000000000000000000000000000000000000000001c9c409000000000000000000000000d2799cd96798074f709423369bf2fea60392852a0000000000000000000000000000000000000082044d80805b9b901758bfbabee0b9f3477ea901ad9b36199c881c5fbcb1fa4d241495f353045c800c11c133aab3e1fe1dd8de12d11392a42fffef25507c70ded109ad73891bffee8308be6184014b1da082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080406d26cc0725e8e4ec416f42fd563433cafed607432c1bf19783e749e2a8ad8939ea1ad189a766c6759c4a5210377b7cf68cff953b4447bf715010dba204d3dd1cab0b00000003000000000b00000003000000000b0000000300000000f9024f830151d384016c3a308305cae894555a64968e4803e27669d64e349ef3d18fca089580b902240ddedd8400000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000001ee4c000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000662d6dda64cfc7fc21d2b1005f406e984a178d4b0000000000000000000000009478dcdb5e5c190fb37f70358585430e1bb1168e000000000000000000000000199bee3bc56add7f1a6ad1995002730de45886d60000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000015b9a6cdab510000000000000000000000000000000000000000000000000000168458403b1f00000000000000000000000000000000000000000000000000001377a57a748600000000000000000000000000000000000000000000000000000000000000039dfb46e76740a84405448ea66a1d95618c9528481cd2730100d191ce78a360a487e98381ed3d5acc9ec5f7f31382ed1c794017648b3c7d25e8a8818173a65b8e690d56cc7f2e91fb3994a585e6553c4ce62cda42398be3ba59f1bd342f43dc4f82044d8080ea85b1543ba847d93e70fb47b0750c5197ebdf75f4efa28b37da97e41e68c12a57b1de35882e372f52bf5a16179a4ac2e453025d3b4731b212be3c2ddb3354b71cfff908cc2384016fbca083053197946131b5fae19ea4f9d964eac0408e4408b66337b580b908a4e21fd0e900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f91f8300f8200f43eecf89e7229f257f085ecad50000000000000000000000000000000000000000000000000000000066e1407c00000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004063407a490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca300000000000000000000000058684788c718d0cfec837ff65adda6c8721fe1e90000000000000000000000000d1e753a25ebda689453309112904807625befbe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000026e055297acfc7bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060a4587899c58e7cc2e54303188f56acecaea4779400000000000000001388000100000000000000000000000076ae48a40000000000000000000712ecdbf54b4d00000000000000000000000048b8419b2bc0fb63ee96e3a370e30b200cc2e6720000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000f91f8300f8200f43eecf89e7229f257f085ecad500000000000000000000000000000000000000000000000026e055297acfc7bb00000000000000000000000000000000000000000000000000070f4daa5dc3780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca3000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000026e055297acfc7bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e7b22536f75726365223a22446566694c6c616d61222c22416d6f756e74496e555344223a22342e353935383138333735373437393135222c22416d6f756e744f7574555344223a22342e363531333730393136353932343332222c22526566657272616c223a22222c22466c616773223a302c22416d6f756e744f7574223a2231393931313333333438383432333137222c2254696d657374616d70223a313732363033363934302c22496e74656772697479496e666f223a7b224b65794944223a2231222c225369676e6174757265223a224968587873792f325642344f4a6366357074564f4a524472566676336c7941426173386e4e3151446e537770426b384765546b6d79637532347a4d4f58535a6b5059672b4d53394a6374336c79587745766b3679382b572b6b303643332b6b4369753337654d49484b47436c6136742f7377416b72625773337177322f474378536639325973353038754f764e6446624f5877705a6c3374794d30745833574a724c616551426c4d42466b77664f5632445168596c32716e41494e344563655a574c4a456a555865417545694a62685a39534844312b76746a4b457452355056796a4472727563476b54634d35745739523549755653554f754e6434632f39766c537269343569464234456f37316e424931624d2b446e78495837563137792b41634d6d585235336d7a685645476b59647848745a6e706f336b776f683841356751786148433678362f4a4d6e56686a5049716877673d3d227d7d00000000000000000000000000000000000082044d80802ca8348995a238faba4d03fc97638947ea65044c08547e8bb931231fb982886b1e4851515149a0b4f1e5131cf5f123de352c7172839852eef079aeb26bdcba361cff0b0000000300000000f86a0b84014b1da082b4cb94c5015b9d9161dca7e18e32f6f25c4ad850731fd480b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000098dbf0792f215d3882044d8080e1a347db720494ebbc892aefb0db8be1c1a4f61b3310d9528abde1ae2ee1cdde24efc0ecb27d55991eb644ba770a91c52ab8e69616ae78fdd3557d4c7122fec91cfff8b10784014b1da0830151b3942a66b9c88caebe9aefc4ecd7b5e7e60881f7e15c860d18c2e28000b884056b01ce00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000007ce66c50e2840000000000000000000000000000000000000000000000000000000000000000000a63727970746f72616e6b0000000000000000000000000000000000000000000082044d8080cf67643e57fe0e3d537c2c8fe40440a97de31e6606b6968a34ce382900b587c128946d1e7505038bf50427502088c8de36e7ebe911171ce1288c5bec04d91f521cff0b00000003000000000b0000000300000000ea10840c49018d830135909468c89f28d223be23967480c06057d22b3400293580845646c6b982044d808002b9b94c0a76cc3e16e09a8b9e9506f4d3f57ab9e8932717c80659bcc9837d0e631d462ca21abb98fd5a0c63877e2d59a8d332c10d30569ced47e5924f2100ef1cff0b00000003000000000b0000000300000000f9068c0c8401e915ba8307f1fc941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b906642c57e88435f1a3a9536b95a72ff7601f7df30a5b8da95a0580587d62f17457034d663d6400000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002ac8900f549d90f11aa593db90a0fb57e753b805000000000000000000000000000000000000000000000000001087372423cc6f000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000086d746f7073776170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863346639646134323361626336393237393937383338313533656131386631616266396435613938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd400000000000000000000000000000000000000000000000098dbf0792f215d3800000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084eedd56e1000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000004e438d8deb1321000000000000000000000000000000000000000000000000001390e3637ac4c8000000000000000000000000c4f9da423abc6927997838153ea18f1abf9d5a980000000000000000000000000000000000000000000000000000000000000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c459000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000987a1c083dbb854f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e42646478b000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000987a1c083dbb854f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000001087372423cc6f0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f402c5015b9d9161dca7e18e32f6f25c4ad850731fd401ffff019bc342259cceda0487e70b71a3161f002a95f0e80057bffa72db682f7eb6c132dae03ff36bbeb0c45901a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03501ffff01ca06375be938a2d6ef311dfafab7e326d55d23cc0057bffa72db682f7eb6c132dae03ff36bbeb0c459011e4a5963abfd975d8c9021ce480b42188849d41d01ffff01337af062ce32bb423010415196e315c4154d36c30157bffa72db682f7eb6c132dae03ff36bbeb0c459014f9a0e7fd2bf6067db6994cf12e4495df938e6e901ffff02001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000000000000000000000000000000000000082044d808097c0b85dae5e497dc2def38b73fa7db167176b675e1ca0b9b5fb7acdaed7d33b3b01365195f76cdb02373c4d9553f9e6093d77ef79fb4980b74383688d7a06951bfff903f22f8401c9c38083048020941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5ab9c89ffcc1119514c1b92d64eb03aa97ed8fd52866dcd07383c2c7d4af347a5000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000009e47fbb2a2a27b3b02e4a63b3ef5a3dc863c02230000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d52696a487341633572727a65414e584d735334725a68555a6b576e35386151384a6776523832786a4351374d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418824be9a966bd0478025bd02a796118c2fb8a23756cbbc2f82d61314f9c6d9d3341db0d02c63f9530b2ecc581ecec5acc10a6ff8a641d52071a0ff8421ce59701b0000000000000000000000000000000000000000000000000000000000000082044d80807034d54692cf1b649157e81c0bdf66632633f6485cdf329ceefb5d55042d38760b6da7e01b7a770f453bec69609332f517ac66c5e4b7798e75abef875a3791651cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f902d3138402625a008305aaaa947481c16e7782608ccba70029c0fd41d78aa6b56e87027ca57357c000b902a43593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13d1100000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000027ca57357c0000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000027ca57357c000000000000000000000000000000000000000000000000000000000000018d0f800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424f9a0e7fd2bf6067db6994cf12e4495df938e6e9000bb81e4a5963abfd975d8c9021ce480b42188849d41d000064a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000082044d80803baf44841d975b6bc565ace7c443e7ae7d9ddac53580a8a85ae9ed88c26907ee1e81aed1a48561a8238e7476616c026622e9e207b4a337dff4e87be321a5c4f41cff0b00000003000000000b0000000300000000f903f38190840189ad4083034cca941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53796b8092eeb16d8bd97e1af7a200666a05419e70bad6c72d92f0e2af24f0d5c000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000013988cef5721a77e9a873b9c988559abd698516a0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065a6572696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5441676266396a785343475176785a476e6576435437394c334d7258794d6d35715957687a68476d3646586b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f95331b37d73776f15d46c38bdbe349eccc9f1f7928fb41f54b8fb9fd5228843643976c760da92db0f41c7b1506e1fc66bbb01f8b2dc70e5a96ce3cd0502b5351c0000000000000000000000000000000000000000000000000000000000000082044d808081ad4be405410a00887985f909b52ceefbf5b7414500559946678f167ec95b646c37fff789b69860bb5850da757344ac27d1c45c9b8c4374d7eafbe2d3d8b9141bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ec39840175d72082520894e4edb277e41dc89ab076a1f049f4a3efa700bce88705692911fe533b8082044d808000315fc52bc3d2f4aea5fd2de0229fae82cd273efe66b698c4ea990e20b60fde5ad8c57f6f5748d6b2709cc620626f50e34a577e7b30bbc2fbfbe8342793af081caa0b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea2c840d42700b83013590948418962b8e0c95f386f89415d99883cd52226f808084fec0921482044d8080783253c33c7b79ecb24aa939f976a21069d7837a666da00eb8a2eacb5298d4457566c70d92178084f27c8538eab68e46df3d914512fdb1032ae5933071f699541bff0b0000000300000000f9014f8301154c8401b021008305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13c3100000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000733f79f5a91ea2abe3e50940000000000000000000000000000000000000000ae01687505aa45399c5393c00000082044d8080da4584b7d6fc09c1e15ad4cdc966ebede2301b221fe74a64f3b4b077c6b7d2bf2d38c74317a7901d41676c66859e0e26b28a4ce29ac544f67d8d2cb8b503e0481bff0b00000003000000000b00000003000000000b0000000300000000f903f381978401681b8083030015941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5e88a8ba0ef0f81c929520cdcdfaabfaa6b722c4048cec8c493456ad0ab0c325d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000007df220262a4c9ca1fa9b7224bc6f7f4572a892cc0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d506f336736676d4a72386d6b6467384a57764859576b4659486d4b47485777436d425175473276416a44315300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041bdf0d198c5f6ad13e9fb6c891a05b67ccced70655831525ee9febd3c21cb33595c536eb39f577fae252fb903477529ee1d4a5d15ae9731d06543a56bfe1fecdd1b0000000000000000000000000000000000000000000000000000000000000082044d80809de5af8deb33a1a58f32c6dcdac7c610ff048603e566c8cd0cb4fd54b65a38934d59fdd44897d94a3be46fca792bd7a75e88e363289921a8c1096967b30b62441cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea818b8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080612819e135e75602473c7c42e3a2fe293cf9e99ce22373be8ea63724f3381f6f746b65a1f24f8f3abf355f4c8dacdb2b96b48befa479cc96881163cc827e14841bff0b0000000300000000f903f2348401745080830343f1941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f545b5e3028d7045b7f9dea45daaa86de008257fba39d272d868c9d8edaf813fb4000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000005f9c7447129fa10af4cb51e24be323abff1759e50000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5138456f61454658787954393331636d42684653426447486168444d684d353473484b4a745a417072507168000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414b2ae38ceaeb1af116941ed4ec6eb66a86116d4d08a4920ac07d1feaa8ee607d6d5b635040118c5c37fa9f05b6c8a4cc07c3619a8c0def6821827ee9539530e81c0000000000000000000000000000000000000000000000000000000000000082044d80805aaeda75850432083fdb91bd4b910a0850c50f29c6a81e7f5661c0a0e19c2b282a15c71aeaa646bec001c6421af6b380d7321cdec496258e1a893529de2fa4621cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be62840418476082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080b7a139b28d8c5192cab1a5c55a8efcc93cebddfcdb1a0376188144df587e57b1302f1ec53be25bc03bf9fd84b1bc298006b6d0a3b4cb296342bcabd8254f9a4c1bab0b0000000300000000f8f108840174508083034de3942a66b9c88caebe9aefc4ecd7b5e7e60881f7e15c86a0285cf72142b8c4d559ccbb00000000000000000000000000000000000000000000000000000000000009dd000000000000000000000000422f746a9d5b73e25d41dcc18fc1ea09da88ee2a0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a63727970746f72616e6b0000000000000000000000000000000000000000000082044d8080463a0e84cc018410c62c0f6cb7a9055556b94cf37fb5363e004e2952831ee3a109837118f4ea90e6753e6f16dc192a72053fc655a789d15767496bcdd45e5b961cff0b0000000300000000ee8308be63840169a22082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080dcada0e0a24e607958874f9206c0a0540fa170176d694c6c1d0546eb6d1b787b4b63a62905b6a8b302168d6a12fdec6a5c89b10ddadabd6ccf3d0f099ac835271babf28231db84ee6b280082627094580b1a559eca8c875381251f291f96777ef3af89871715c995317000840333e95a82044d8080f5a183cd5ecb9ccfb91a8c22d2a14191a32c2325742e13b48b8ab6d2b1ac8af65a2dda29b70368485ae17017f0c8570850b37600fc668c6547aa69cde7e2f6721cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e90284015752a08255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080aeb52a12273e7d18d4d61292b972b9cc460236c359d0b290d7440e6a9891e8f37ef89ab59bdaed7e90a33fd03dce86ee855f91a6afe8515009b4dc2542fc315d1bff0b00000004000000000b00000003000000000b00000003000000000b0000000300000000f9010d821edd84016bb1788307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ee20000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8390bcde7c066000000000000000000000000000000000000000000000000000000000000000082044d808030d0dce5dce8bd5dac0a2de99f3a997bc9b2720b37e0c916d521614aa96b2b295d3ed3ff7c6be137f9e895f4a0736de165dc14c87878a1d8b01222026689675c1cff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031150b0000000200000000f9010d821ede84016ee5c88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e4c0000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c805935ba60ef3000000000000000000000000000000000000000000000000000000000000000082044d8080e6523db0d8d9f0fc01b8d28d354646bb37ee3a01d94299baf62a3f0513c1cd5b4706f80c68a13689d843d784ccbad2a69c049b87cf72f7a244bab58b25d3f2ad1bfff9010d821edf8401721a188307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e6a0000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c7f7976b336093000000000000000000000000000000000000000000000000000000000000000082044d80805f7ba49687fc0feb05f0fb1b46b605610f94161628bb0d78a593085bb2d6328d67d03a13c5f7b0d080fc8585f1dc01eb567f4ec6dc22fe372d0dad7b2057b3aa1bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000eb82013a8402625a0082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080a1e4294a95f81c0195243e271861ea2cda2b25132a4e4866cb58deb993128035280b82205bf5f93e6cd481ea9ce1b4408428898fc5813bd8bf58df3199de169f1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e9028402d301b68255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d80803516937610ade172676e6ab42573bbde2ba8b143b82c019640b2c41168bc7e445254048ff8978b561f0a95d2d71f4da3d8c67c7f05cc90ed9521cd01e6da0c2a1bff0b0000000400000000f903ce8226f38405f5e1008307a1209467d0809ada627ab5bd623640332a2f370b2c906f80b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000084049d6baf6f3253bbdf284da6b5d1370002ce300301000706050902030408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000005f5b5a40000000000000000000000000000000000000000000000000000000005f5b6080000000000000000000000000000000000000000000000000000000005f5b6080000000000000000000000000000000000000000000000000000000005f5cb840000000000000000000000000000000000000000000000000000000005f5ce0f0000000000000000000000000000000000000000000000000000000005f5dcbb0000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd18000000000000000000000000000000000000000000000000000000000000000420f5d5e5132ac16831c0c420b2e4348553e2835cf6b7764eefb1908997cc8501dfcf180d7ad72bf3313f016313fe7aa3a134b06b53f4f2317a74b5455878011a986cc2fd0b3eb2e32ac671e13fe59db59688a1f49fd71fc5ea1de3162975a6cd243ab73d9dfb19ed57b626487e0e8d4192de45e5084083cd1a03aeb6b004776b00000000000000000000000000000000000000000000000000000000000000046545e8567be21ffb54df1c55b30908e62cae7ab7acbd840698e425e4b4999ea36d28dd45cd30a8ed96f05762d723d83130ace27284c9bc868bb8f1ccae6726f731b09fe696a4b676a0cfdce2a8d0d58fd9d4aeb116110fe1918a8b4f403db20b35b9625924384aa070bbc25c7c24c2f2f39577af4e2bbbd2699560ee129687ad82044d8080270674afad2582de39abcfe1cb19d8243b9f6d31ac6df02257ee13e2d558e4961656fa5e782a66d6f59ff6881448d38b61fd630bffc81442ce9575081c9ea1be1cff0b00000003000000000b0000000300000000f901ef830151d4840154ba908304aaf894555a64968e4803e27669d64e349ef3d18fca089580b901c40ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000002557c000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000020000000000000000000000001757ee1ca5541182d242027a734cefb3d6a745fa0000000000000000000000008cb1d12040c282ce84f851763e2befc48a0810b10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000015705520846800000000000000000000000000000000000000000000000000001563c0e8ed6a00000000000000000000000000000000000000000000000000000000000000022bbc5cbbf99c0d37f3d2aae6daf5a4d7dfa26f8ad4ea658ceeacd1d16bea82961cb86c8ae18cd27416d0782aff31adf25117d75b85cac5c410df5b8de615c70a82044d808017f2d6241834bf9550f7264c42b27a3d05a2a8fb5315b9d82791edbaac56107a5c926d96702e5c401424c34f351eb84109cafe915de7d7d26636ea9806a814801bff0b00000003000000000b00000003000000000b0000000300000000f86b208408a4f1f8830156219468286607a1d43602d880d349187c3c48c0fd05e680b844095ea7b3000000000000000000000000c8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a100000000000000000000000000000000000000000000000585333fe46a1a1a6c82044d80806b533a403af42468742ae5f3efdc12daf9bd38dfa3059924cd35e9d2d2a377444acf354174f9ca1f414ccedd2e434e0b433ff872f60a20da007ed0f80458d5851bff0b0000000300000000f8b12784021c58208304ac1194222228060e7efbb1d78bb5d454581910e392222286119763fd5872b88432accbb9000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cbba106e000000000000000000000000000f78c3faf2046813f12fe6652ff952b2ba6ba845a82044d80808f22f2de07105da8d5d9dc8edb193fd108c8fd3c4858dc20a23e09acb3995eec3dbd05a55530b38f6b4fd7a1416914f04f13fa6c25bc4b1397a784abe13b15f71cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000eb82013b8402625a00828d4594b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080a54a20ef6241a24e66579a016490ddaa20ac5237cc3920240bea379f56c5f16519284d19c65b19253e95a448bc53b8e8674d4904eca64bfa9d6804a0b21462ec1cff0b00000003000000000b0000000300000000f903f26a840174508083030015941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5445b43df8087dc5aea1da71e16e6be5db16a5a065bb35fc5a7561c4fba8bf78d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000009cc2cb595f85c9d1c527996555e21327fb5e47440000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d51715667374e78715a51573550667737417932774a76486a445748577937624a6b567659667974754b47774400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041cf056d549f465af9b6e55e1dc4762e9790374b2bb1e47bf465dff9a977521b291acfbd54361ebf15ca703a29f98ed7de9fcc1739d17123b634f88b24e1e3f5751b0000000000000000000000000000000000000000000000000000000000000082044d8080a67e87448e21458f2e0daa72470c7b3aba821cd5b07d4128054d5ea267941bf06cd1939cada4bb72f53fdbf3f479a9eada26885bb585c42ea28031f4c04c4a2e1cff0b00000003000000000b00000003000000000b0000000300000000f903f2258402d6b0f38309105c941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f57434eed86a2209cb61008d35514b33b5b56d69aa8d6051dcbf2adda360fd7abb000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000132239919653064455f78e683c365bdcefa8bb3d0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d52663166534d787a51314b54654d5a4866657635706d736e61724a76725359784a6b7667393973334e7a4c6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004192bbfc4d495eb5a1784f3ff5109e78c2be43fed9874388b78bfa25c3224866d51712a636189146f18ec716c2ddcde6c64df64fe8f2936fc5da46ca656cff2aec1b0000000000000000000000000000000000000000000000000000000000000082044d808084ffe2036a8fa6ea7499f4346870a19b84fc74158e7aa047eb67cc820563e9df5eceae53db779c5ed39afa1177f3a62d9bec678fc3e4bf5ad4bca0a53d6fb9ee1bff0b00000003000000000b00000003000000000b0000000300000000ee81a68402625a00827b0c94009905bf008cca637185eeafe8f51bb56dd2aca7880429d069189e00008082044d80801b0200bc64259973edb845427dee669bba37b97e3ce801142133f133aa7a77e46719187d4f3d66ad9e37983725da1a3061178b2360912a0616e94c51a34bb7161caa0b0000000300000000f9010d821ee084018bbc988307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13f3c0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009832b42064d1b7000000000000000000000000000000000000000000000000000000000000000082044d8080dcd2ef6ffc64607c3e8228e4a11c5ed700b6b617bb7a7622c9a6577c7e2aff874f66acc28f4e6a4ab30d106a7a2286af17a28eb5d2402c5552d0c9520d20d6901cfff9010d821ee184018553f88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ea60000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8198f0b7fc618000000000000000000000000000000000000000000000000000000000000000082044d8080c12153878eadcd2d15c857ef2792e9fc2db5d3bd6c27ae891ab4f16a25ba7294600e03e412be6aa0a2c4f040d26eb1242d254843ccea87ed5f696ce1699258941bfff9010d821ee284016ee5c88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ec40000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c82e8c66cbf1a6000000000000000000000000000000000000000000000000000000000000000082044d8080fddf91e72906765982df34a767d163cbbd0c0b347658ab56a0a3a04cc1f14e124cc53b90924519309db15d1dd1fd2b1e575beb4bcc8cea65e68b054f9296ba4f1cfff9014f8301154d8401c445408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13ce600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731958d2d429ea51c49f3b00000000000000000000000000000000000000000adf463a3704377c3ee8d91680000082044d8080545c76198bc384464dea22db921db86fb5648d1e859861a5d0eae70a2e46b75132b3c7d6c8988a27fd2b269cf097d4199ff2d2ee0dd71d759c097df85d7c47e21cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be64840413b38082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80801b1380301ae8db0eb3f94243c29ebe663ed4dad76f4affbbd516cef3379933ee0924b271cc7c68abbe2a716e18c485712d126d9e0897e17bc99739b86a98f9601bab0b00000003000000000b0000000300000000ee8308be6584015be68082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80808912439f3a0301bb9fe59b96f6977ef1bb83487fa42628a7d614d58718ad148b07c60f18aaaf59d36f2a560b9f13057a3bb48a50a31f7772d4281bcb302fdb0a1bab0b00000004000000000b00000003000000000b00000003000000000b0000000300000000f86a0784017bf1a082b48f941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c7680000000000000000000000000000000000000000000000000000000000194b4782044d8080d06b79bc4df74c4a6ba59e8bc1e57e9c3194700dcbf8df2fc3c9fa2ef555844a0dbdcb8e23298a3dff13aecf21fc2287dbfa68df1cce01614f6659f7729ba8c51bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9044c0884017d78408304578d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13e4000000000000000000000000000000000000000000000000000000000000000030a000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708ca1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e1442700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000041d1a054cf52782e83d7b7111c466fa04e03472a9c2098b9a0dccdefb17745170c3fc27f88fa426fbdce2343c90a3662dc441e75c6ba37988ae18160ca98fa7f141c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000194b470000000000000000000000000000000000000000000000000002820037b6d0c600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b1e4a5963abfd975d8c9021ce480b42188849d41d0000644f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000019581a7c83f846f74fc66fbefef1299521c65e390000000000000000000000000000000000000000000000000002820037b6d0c682044d80801efd30d23b23d0b0fbfe93446a107c35aff67967f83b03a5a93799323fc98f5568d4c4c7bef6650609c9d1b067eedacac74d49b715b587ec4d61bc4d275fb94f1cff0b00000003000000000b0000000300000000f9011381b684017d78408307249c94f6ad3ccf71abb3e12becf6b3d2a74c963859adcd8723a0f814eb3f9db8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000b1db6eec8d8c629f9f7e28bf2680e3e264e929880000000000000000000000000000000000000000000000000000000066e141bb0000000000000000000000000000000000000000000000000023a0f814eb3f9d0000000000000000000000000000000000000000000000000000000001633e7d000000000000000000000000000000000000000000000000000000000000000082044d8080f3a405df3bdb20a750ee93584f05ab47603187da5842f402d2c9d766f50560717e471e18c695cc989d88de0aa59c4c67ca94b1093b05004db29a50d5f5751ae31bff0b0000000300000000f903ac0484017d784083077b6f94d8e1e7009802c914b0d39b31fc1759a865b727b180b90384ac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000a40c49ccbe0000000000000000000000000000000000000000000000000000000000004fe0000000000000000000000000000000000000000000000000000003a2cd4f5c670000000000000000000000000000000000000000000000000000000001805e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066e141b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084fc6f78650000000000000000000000000000000000000000000000000000000000004fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004469bc35b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf65cc37241d426970b91720e8255140ade00f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064df2ab5bb0000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000001805e64000000000000000000000000cf65cc37241d426970b91720e8255140ade00f050000000000000000000000000000000000000000000000000000000082044d8080a3d508557b59df3d77b1fa113f2223b67f82fde7ad9d9cf6f8e2b3bdd9b52a672a2f437e010cd99922806b351f71ab6896a97723f26cbd7b5781c0305b64f81a1cff0b00000003000000000b00000003000000000b0000000300000000f9010d821ee384019bc2288307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13f960000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981883f28b083b000000000000000000000000000000000000000000000000000000000000000082044d8080b5e4d0db289d0e6f61d922545bd7579bf20015b29bee82a2eb83bc9bbda09ea04b33b1f4c5f3e5aba7f5821bfa1a9f464373d9afbc99e4dcc58297a52ff062f61bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000e93a8402cdccb48255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080be4c664f330b9151f51b9471b46aaffe652d5a410fa66eeb8d1f84d72f80cbdc3cc90a5514e45f2f576ec352449eb0313c6ea9a15769a11eb2ea11d86dc6f9ca1bff0b00000004000000000b0000000300000000f9010d821ee484019bc2288307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fb40000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009834b4eb369439000000000000000000000000000000000000000000000000000000000000000082044d808075de06ec5466daebd6df45e07e32c8c4727338a259fdb82acb5feb48d3652fc838947db58b0d09a037a303b3c74274196df3c5de1142bcd2f88aabaebb2323881cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d58401a6f9408302c78894555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c788000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000796b7bf65e570f59e08ac136dcc32e8f642f683e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000016442530c6a80000000000000000000000000000000000000000000000000000000000000001e093a1bf79cf96024c9b7b7ed3a8e26c709e92dbbed7918174b100d95d49e55682044d80800977d0591c4d658fa5bd677158b390bf73e8ae5d7218f7bc4614f3eed5126eed6226f3e972b5c62ec523064f6af4787e049c34f96e41dd9d77d4d25f0d2e76161cff0b0000000300000000f9010d821ee5840193bf608307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fd20000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000098370b3e46923d000000000000000000000000000000000000000000000000000000000000000082044d80807df0dc6ae14e4160030559716f36cf546839515e3a14e78546cbab05e2107d09760212c06296915c5c1a92d990722bd3e26afeb0cf29bcc462985f9331f117981cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f901f30a840175d7208303465694678aa4bf4e210cf2166753e054d5b7c31cc7fa8687079fbc2a49e180b901c45ae401dc00000000000000000000000000000000000000000000000000000191dfea9b9b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000104b858183f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000af09364718f745b6855df11778d9b523eda1e4bc00000000000000000000000000000000000000000000000000079fbc2a49e180000000000000000000000000000000000000000000000000b55d73b977dd5698000000000000000000000000000000000000000000000000000000000000002b4f9a0e7fd2bf6067db6994cf12e4495df938e6e90009c4a2036f0538221a77a3937f1379699f44945018d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080438d26a5ab0788935cfeadd2658b8a1447d9448fba3f8bbcf8def6c0b74f77cc77c03cba29fcb4d3fdc1b913bcef92e36e10cbd8bd913da805760e2d9c5242ec1bff000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ad40b00000001000000000b00000003000000000b00000004000000000b00000003000000000b0000000300000000ee8308be66840433bea082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80806f7f1dc42b8cc34aeb9ee8206e47765be4cfdb5536272d3250950648aa4e3d5907cfece316b171d676cb399a7a75c4b11ed9ed5a3f27dd4122d8c909d4dc51a81bab0b0000000300000000f86c81b784016694e083010ec4941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000331f3a300b7115a45ba31e3428ac002267bb6d7700000000000000000000000000000000000000000000000000000000000f424082044d80805fa04ce2bc7596aa78bff65f39212d4f8c6325cbf35deb9fe4fe916b9b2858e33756e78b77457b8c39c573cd729120935a76c6a1d6bc73459a16514fa1054b5e1cff0b0000000300000000ee8308be678401945ba082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808090c0419282e01e7ccd1b49b104e6e722c161127a5197edd0bfef9447d4600a2a3e17a07b6523f4aea15c603004537da2e38cc7aec7ba9801099d516b53fbff0a1cab0b0000000300000000f8ee83019e568401e53ac083035f30945eb6b3db915d29fc624b8a0e42ac029e36a1d86b80b8c43161b7f60000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a1000000000000000000000000000000000000000000000000000ac720b1f97be20000000000000000000000000000000000000000000000000000000239000f7e000000000000000000000000000000000000000000000000000000000000001082044d8080443dbf96a2e3983c0cbb6e79cdd2a18777b63fa692b19ccfed0bd0b2ed0a6e667db137169578347abbb112cfbf718d3795e48e569f79b357a042c5f1b4837aac1bff0b00000003000000000b0000000300000000f9010d821ee68401a893688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fff0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009834b4eb369439000000000000000000000000000000000000000000000000000000000000000082044d808049b78766cf06b54ad4071fdf9f0182f50a767cae6a31f64f2379b7ab9b6ec2e65fd26b7b443ef10cffc30988b7bbc73132033d1d6e64351a47baf21fc12bee9a1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ee78401b230588307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140180000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982a06a2b59803000000000000000000000000000000000000000000000000000000000000000082044d808086d7452f41889b2e6811591fc74bae161b77d3712a76ab034c6d7634f3e0041667e2f1c34dbe96c8c6486cebbaef1f7b3cff036f05e72662317089557121c1d41cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9014f8301154e8401c61a00830596399473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13dd600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731d4964ad65b18a4655c340000000000000000000000000000000000000000adf476e7c1ddbf9c2658d5180000082044d8080ee854267d400eb90253e3ed78b0ae5ec32fe0ba653de34d80f5ce044cc0fff77498cfa898a2ca54b3b84abab13ba9fd6658f4e0f644d940d33f269a9e6d7cba31cff0b0000000300000000f9018f830151d68401d0ef708302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070637b4d8b21c764d0d9c08dd1d28b279bb2823500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000151c1d3bbe7200000000000000000000000000000000000000000000000000000000000000012a0a7392d80a1be757cdebf95b665fe0544e091c1b8fdb0ea7470aa9e0f6492082044d80809b8ab0a9bb0496a9099c6018c73ff2acaada0e299dcdae23bc20fb29fad715822cec0db8716a0edbff285acecc08b662b89a0412b629ba866e4c2abb80aab2f91bff0b0000000300000000ea4484018cba808302066e943df9e9ba39dc3ee6b6fb8556bccdfa87ee64fba680841249c58b82044d80807943273fee9a25c1549219629bd8844eaa6e9e327a7935d203e2f9d6d238a4837e3fbe0944dd0d07ccf2cdeec4e465bd25322949b697bb0efcaafe2c3c5316611bff0b0000000300000000f9010d821ee88401bbcd488307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140360000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982d87a827433e000000000000000000000000000000000000000000000000000000000000000082044d8080d03b301c79a78d1584e3c7eedaf2272a56f24adef479a8c3e045ce46ff16065d7cd5f8bd5528c8a634951d7e3f11c7c97c9d57cae43640818c7135a1a9284ae01cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea81898402625a00827b5a9400cd1fb066573ad4215aa699e580af9ef4b3a4168084372500ab82044d80801c0e2075230c09e5f074cac36419c3eda1ded5447ad6470d15caf956eeb3f4d5305e11deed13c3947e01beafb0054fa692ee7b708525bd6438bb1283d9f5633f1bff0b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ee98401a22ac88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140540000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000983735fbc7f641000000000000000000000000000000000000000000000000000000000000000082044d8080590354f8346245d29a2193f306d6473bf0786bdbafbe91df5a84e8642e3570eb3a6da19a7f13a0e834f5884633dadd4d2e432c2c2bfa3324429be9b7ad04290a1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f86b2e840bf5ba4783015de6944dd70bec5984171a75003a6186219cb99ed79cbe80b844771602f70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000482044d808026293839e8593c6b85003aa27b0a4797069ba043803164bd5209b940d39c2bad7bfc0e2c652552a2606eb57f0dc6f7426805edf84ca2ad6fdbfcd9136ff73bca1cff0b00000003000000000b0000000300000000f86c81b884016b28c083010ed6941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000c8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a10000000000000000000000000000000000000000000000000000000000b3671882044d8080ee2364f3d622e422ec2a90a92137fc5d8a51510bfe0605b11ce2474538a7e5d90afc93bd57016193b3c0a416f3a471bbe24bf08eb385bfb9635425e3f84acc7c1bff0b0000000300000000f9010d821eea84017d51308307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140720000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982a3158e2273e000000000000000000000000000000000000000000000000000000000000000082044d80801bb6d2b5470d77ae8986b29496a0565ee37380f17c51fb34da2d9b4aa9b78ab66d72906a4d0f10e0663f4560942d246c895187c4287b43f9d26bfe128b4abb671cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e94684015d6d2082a01994b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d808085262abae3391ea17e9032bf33e93d793771d42e14defe690719b53803d7085915ff9bd53ce52fb50282712974ff93950c0161b19a492c040c0606e855207f821cff0b00000003000000000b0000000300000000ee8308be6884040f1fa082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080bcbd6ba1c6cca5649a36a7e14c75a5561bac294fc4ea5cbd50e4c83a04b0039c5ab9e91f0f06c0c028f7a6aa146fa901ac23abdf57072083cb2113e5d53e7da81caa0b0000000300000000f9010c81c18402625a008303233f942a3dd3eb832af982ec71669e178424b10dca2ede80b8e4cd58657900000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e602c1920443f01cb100a57a7f894df8eb42f6600000000000000000000000000000000000000000000000098a7d9b8314c0000000000000000000000000000a2036f0538221a77a3937f1379699f44945018d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000082044d808085cf2d27dfbfd35f2e62054951ea381ca212755366c3b51fff597c6ffdff170e4bfec23bd116bc191684d77da0f186d5202128c4a7cc68187ae9746b5c8f412c1cff0b0000000300000000ee8308be6984015a5fe082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808020bdf52ff36fb31db16395c7eaa2bbff670a9dd200ea46062836d24f1b20e6e03cf5779a839573d635f939669f6d36f345a0bd444217df07950ad766e4c4efd41caa0b00000003000000000b0000000300000000f9010d821eeb84016bb1788307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140900000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982cb210d1b77d000000000000000000000000000000000000000000000000000000000000000082044d80805c32534154b68c162e322a19dcd13dd8fd1fd1183396f6b4c1e6c43609149f4566b01aed437e1992606c98b53406eae40a6b630dea0e7cda6a124ac4eef068121bfff9050d81b984015a5fe0830a10a994b83b554730d29ce4cb55bb42206c3e2c03e4a40a80b904e454e3f31b00000000000000000000000000000000000000000000000000000000000000200000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000b2829a0000000000000000000000000000000000000000000000000011b27c73a01b7d0000000000000000000000000000000000000000000000000011c9409d5f4dcd00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000440000000000000000000000000b1db6eec8d8c629f9f7e28bf2680e3e264e929880000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000066e19297afc94fb216be4efcb60b0969a606731d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd000000000000000000000000b83b554730d29ce4cb55bb42206c3e2c03e4a40a0000000000000000000000000000000000000000000000000000000000000148c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b83b554730d29ce4cb55bb42206c3e2c03e4a40a0000000000000000000000000000000000000000000000000000000066ea78b70000000000000000000000000000000000000000000000000000000000b2829a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000281e4a5963abfd975d8c9021ce480b42188849d41d4f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000e1829cfe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001240000000000000000000000000000000000000000000000000000000000000148000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080c4b8a950b6fb2fd40ef9292e2e21f16ce93551a97b61f65dbc361e1b97c7e4fe353efe7bbaa446443a57106a013415b016a5de387499d032c14384b3b85e5a4d1bff0b0000000300000000f9018f830151d7840179a7b08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001e09278590cc10fb2bd69235d2f4372fd0e1ac44000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000002bd26ff6604000000000000000000000000000000000000000000000000000000000000000018bce34245eaa4dc895284ff7b987382cd12c8b40d2f55ace41c054e6b667f19082044d8080185025c2a18ff67f6619138b44a5262ba2181151be1526f23b3787bef28350337867a681c56458160a1ee95dec4ad4c9a3c47f1dfb9a39f9b39c67ad3c6f62551cff0b00000003000000000b0000000400000000ec0e84015752a082520894e4edb277e41dc89ab076a1f049f4a3efa700bce88708d8a44d7dc33d8082044d8080e5f393baeec28606eb9e5a973614ff7a3bb17e7df7d56de1c8dc34d71ae0b50d766c5c5d0a02d04a7b4140cef33d896eba5ae9c796e18f047b7b3bb7c0e7af981babe94584015752a082a01994b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d808064019d123c2bc2e40c10f63cef99518b130d358e122504f0028f2f14085f24204f3d2f2de773ce5bb4be2eb02d7978421bdaef8a98f8d2407d3ba53e0ef406061bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821eec8401754e688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140ae0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982cb210d1b77d000000000000000000000000000000000000000000000000000000000000000082044d8080f8fc4cd3cfd4f5669ef452ef2ad8c5082f1ce1bf2f0523a52e12a916b9ad8c6c12a08dc48c171e434cc75852b7c8161b0741f0465821e8bda5fc10ffaeebdd841cff0b00000003000000000b00000003000000000b0000000300000000f12a8402625a008307489e94dfb6baa334712cbbeb26b7537f62b81c2a87b1e8871a84698758700d84e9ed3d3082044d8080c9df68b81de01a7ddf57cd4037afa1df1f031e10810bc3c23c88347bba337b20343c98d810b700b8e27ca6243277b28771d484477cbd58366d02b57f3b8aeb731bfff86a0584016387a082b49b941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000ad41c77d99e282267c1492cdefe528d7d50442530000000000000000000000000000000000000000000000000000000001805e6482044d8080bc02d6c00e37eecd89d84e5439fe5186d2b55f91e68bc952ae7803f7252afc0438bf92877c67810409bb9b40ea6d08b272f760015563aa9e052bb46ccd5e245f1bff0b00000003000000000b0000000300000000f8b133840225dda08304ac1194222228060e7efbb1d78bb5d454581910e39222228614edc04e0e0ab88432accbb900000000000000000000000000000000000000000000000000000000000000c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b48eb57e000000000000000000000000000860db06d8c758c594143686d0ef9cb52543bae0382044d80803c9ebdd5f72aed2cfa0d36b5311cba9fd9a211cf7c9260502b5b3975751b24603678ebaa584a22aefcc118b5f8983f25e0201d6152c9b7d0d9dd6c7249760a211bff0b0000000300000000f86c81ba8401607a6083010ed6941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000b5f43c2206e3cafecd62651f5fce9091a020748800000000000000000000000000000000000000000000000000000000001e848082044d8080f97d0cf4ce6c85eb1609a85f2c71839e2bb12896b7968547c085d447c99f23ac4f3af1959ed38d3fd76c379dbee00fe520c52c8ec791afe021b974d7442e9c261cff0b00000003000000000b0000000300000000f86c81bb84014b1da083010de8944f9a0e7fd2bf6067db6994cf12e4495df938e6e980b844095ea7b3000000000000000000000000b5f43c2206e3cafecd62651f5fce9091a0207488000000000000000000000000000000000000000000000000000739ecb738d98f82044d8080a78e3716c0eb3802c51e41bd1c7ca64c9a638221f07c7c06af9f6c94300b21d37ac0c2374cfce5539fe7d9c180e153b2fa10b1ccae8b727a8d4734dbd4b9287f1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f281bc840175d720830107e5944f9a0e7fd2bf6067db6994cf12e4495df938e6e9870739ecb738d98f84d0e30db082044d80801049e7b2658e6542463bbe11e60a7198f23cc761a536410d5383e00aa6f6cc68440573478137a9ce3486ff41a903bfb738c44469e56c7d1dc667ee4c18750dbd1cff0b0000000300000000f90432018402625a0083053b1f941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b90404d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000a26ed90933f9410c967efc64452681f501477ca7c7bb0efe1a8e16b8063c3ad420b4781cf348b8a0a4851fc3c2ff2553000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000807edc9cca4620e59b6919cf51b699ec6a2bde550000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d544869314d7366795965714573576178696f4e445734344a504d476d346b6e734e486567705473675668514a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023c5fc38090643b410c8c06c4c0f3246059e98ee0000000000000000000000000000000000000000000000000000000000000ce40000000000000000000000000000000000000000000000000000000000000041ecd952920c1aff799bb35cc6b1306371afbc5f683cdefb2ee2e31ae21bd48a8270797e9889904a574fa1918a3bb13fa2b28d83ed3ab567b3aceea912b8d04f7f1b0000000000000000000000000000000000000000000000000000000000000082044d8080feec2c92b7ecf47d4dbf93f7041e0082d822ea2bedafe3c6ae11d8426678fb643c29bab890f68593a4f8421415f5a68481621730b71dac5b16a41b7c31ef762c1cfff84a06840174508083074ad694ad41c77d99e282267c1492cdefe528d7d504425380a4a0712d6800000000000000000000000000000000000000000000000000000000016e360082044d808067b5300ca47a28ce2521475a6224c2fe27e4b28da3a2cab92231440d3938603724b3ee0a7fc6bca38ad52b7ca90b534e67e8d3a55ca472e3eba0ac51bd5fbc7e1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d884018c1e408302042094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000020420000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000da930060b712589736018c6d891ec57b0399db7800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000763bfbd2200000000000000000000000000000000000000000000000000000000000000000017f0ea037712c6b94793ed1db0d924ab44381912765b13d871e7eb101ac652d3982044d8080ec0c9e107850e44db65fd11d35d41ee8ddadfd9a2e989dbc619a60c52adcd2860092874af3ca89dfdd56ce708439cc6cc538ee10b7fb9023d4125f7abca62f0c1cff0b00000004000000000b00000003000000000b00000003000000000b0000000300000000e92b8401499700829f8094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d80805b33a4bea9274b6838fc8c299e7e1d463d8a9866847ed34961dfa742b1e09e7960336c7a436d7c78f8c055607e77072b8f1ddcdeea4757c9236b8dbfea38a1181bff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e080b00000000000000000b00000003000000000b00000003000000000b0000000300000000f84a0784016e36008305dc8f9468d9baa40394da2e2c1ca05d30bf33f52823ee7b80a4c5ebeaec000000000000000000000000000000000000000000000000000000000112a88082044d8080b0b78bcb15ccad6e34965bb75310d919de9c98653338a4e621bb68d4e1158bc071db0cd0eee106b2a15820242d3a30d78cab313ce696b38609712e9b97b4f2211cf6f00c840a85ad1c82fd67944f9a0e7fd2bf6067db6994cf12e4495df938e6e987131d14dce4400084d0e30db082044d808061485ee80be12c1cf4118d79c8240621c4d61342aa6e21313bcb338e0c4d3f371f1589ae7a144279671a249bf3d2514d9f39c850081cfe35070f9df8b5bc52b71cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be6a840433bea082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080ae7ad2d365c97fd210a6f105189d8f8845c7607a5304f61a75e3f95b30d0278654bd6071ea8dc8eb258293e33b8662588af561e361eeec88f2c222dab85904a21caaf9014f8301154f8401aaa2c08305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13ec600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000007322d2c4642c149072472c80000000000000000000000000000000000000000ade71ffb3551101896108d800000082044d80802d5cadf3e11640c1e52b9bceb4f465b5be3247fc0ec042d85c44575e2e71c3ac0542b94b31e12bdecca3fbfa292da254413c91cff46b7a09a6a264a4b58fa1941bff0b0000000300000000f84a0d840b405b068301519d944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000131d14dce4400082044d808005ff907a16f3f1614d5f81b3fb224f805038d423f46f7a3201533568f87cf5032028fb37a272fa727550e1dce4af167b67b51157e24de676306f97faecf6ceac1bff0b0000000300000000ef808402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a10986246139ca8000840333f38b82044d8080e1a97f847a204044e3f9e326c84f4d5369fc9bdb762c0aa38122fd4f9e5321d0660038ec1b8f5c2273ccfe875ffc274d7b809cfb2ab742631683613108c7e8501cffee8308be6b84016387a082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808086767ef08deb78094341e575335c29fa45b39ae1dfa57003b2f1b8e0f29dd57f13cd26cdd53e10c6c35df7eeecf0369bc77a701d0732dbeea119688fa09f7d021caa0b00000003000000000b00000003000000000b0000000300000000f00e840764acfe82c6ee944f9a0e7fd2bf6067db6994cf12e4495df938e6e98712dc81e31cd00084d0e30db082044d8080cbfcaa3444f14e64cb0fa9e0259f2fd1210b5425a8c23842150c77d1c9e8578d79aea37c19621cdc2d60eb47fdef1ddfb63a0dcf97dd37f639b862a80d81aab31cff0b0000000300000000f903f20a8402b900fb8309e24a941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53ae48ab8aba0990d601236bfbbeb5f26e910d68867594ac5def0ee45b27ce819000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000ec90f6634a907165e5d18a14c1dc51e32b9de8b60000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d6252327345444c614761345a33664a4278386d6b65636e59646b6b323451586443556a737253466a62745161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417ee5aac8e9e510dbe7b12d5757762ea0b0eed32189dce8ceb044ba9bd16daac61415af82e6bdac2e90d2227bfe8336c383ac24ce03af40f159412e86b49e02f71c0000000000000000000000000000000000000000000000000000000000000082044d808054c2fcd741aff604618f9331edd8de2062dc15c3ca37a0ae759881f21547c1dd491a44cf2cc85c20f72575718f39a8026b3989a1f07f4c9de324b8fbf62d03801bff0b00000003000000000b0000000300000000f84a0f840842bf86830127cf944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000012dc81e31cd00082044d80803d7108665030a686303828a8590515a325439a383cd915a8510b1ead08fdbe64726b280ca7a73a844d6ff801f53ad44480c39059472080c96b4207f2b41eeb141bff0b00000003000000000b00000004000000000b00000003000000000b0000000300000000f010840cd2e41082ec87944f9a0e7fd2bf6067db6994cf12e4495df938e6e987141476cc45400084d0e30db082044d8080bb1a5745409e78f126e0f3d301d1bbb8e829404909bda7bdba47b38a8e5cc5022975deb7d293bdb69210a4a50cb606efce11040df82ec34008b179a51447d3a41bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f84a11840b840af383014099944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000141476cc45400082044d80800f0a3bb81e483365b2f6196c60d0d97882e9d2816fbfb78689cd3850a33f7d9e0f6732a7d860fea63d323bdd924b39043a592e79fc5cb42593cf5a3722b854de1cff0b00000003000000000b0000000300000000f86a0884017d784082b49b94a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03580b844095ea7b300000000000000000000000046a15b0b27311cedf172ab29e4f4766fbe7f4364000000000000000000000000000000000000000000000000000000000112a88082044d8080325b6bc0360425e4a14b8d91cd8855d8649bf946352c4ad927a31e56d22c004731500e69af69ce8b80b06946735af113f7ea67749f57af617d5deae89eb1f3d61bff0b0000000300000000f9018f830151d98401a1f0308302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007f35a6e27c542fe3bb6bdda638abc8bc65c3c0960000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000015c7ff2eadb60000000000000000000000000000000000000000000000000000000000000001a93b38316983d650e0fdfc2642ca16b840420a6bd6962cfbf417bf5a790d681b82044d8080738091a8459376230f139c30ca51cebeb6deeab09492d46a6009f33a090953b219d8f52e737caa178042069504eb99b0554f51963c9943204724b283f347c10c1cff0b0000000300000000f00484018519608287f19465a4b8a0927c7fd899aed24356bf83810f7b9a3f871c6bf52634000084db6b524682044d808050f3c9ba5b616396e065717c29365860afd49c5e9aa275eff0f37446d3eb5e3611e8626c0be00efd62ed5d31b51cc334dd8793c6bc8c62808616faebc97cb7b71bff0b0000000300000000f112840cd321b68301312c944f9a0e7fd2bf6067db6994cf12e4495df938e6e9871382f1e51b400084d0e30db082044d80809585c9b5b7689c9abd1823e19e0f8d592f57f419f94cca0ae20ed021b68aaeb556273263752bc1e78c8508d5af41a05d2b886e07b78330d63df42177f02110621cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f84a13840891001683010317944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d000000000000000000000000000000000000000000000000001382f1e51b400082044d80802eeb9e8ba20f90a05d7584a87870c63edc5a0952fd52d1299d54a19098af421408f9882e7e62d42d0afdff81a06c4614ada1367758b701289f3aac12f5ec13e71bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f114840be4d1b6830126d3944f9a0e7fd2bf6067db6994cf12e4495df938e6e987145b3905a2500084d0e30db082044d8080ddfa4814082f9ca8947b3a9263cb97c0957bed97d3032e8fa38df43eaf7669743b15fc3cce18b60300063396898de729594c2af72e147d8dafbf7dbb3e9e745d1cff0b00000003000000000b00000003000000000b0000000300000000f84a158409de70b683013343944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000145b3905a2500082044d80800c288f5c663955ad276d8e8bed2233997f07bcaeade6992c98b05f99151c6c2a27d0a04fb3e07473e11b88176db0f5baa46dec2c48eb704e4d6bcd78467b25fe1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f1168409d2a29e830141d0944f9a0e7fd2bf6067db6994cf12e4495df938e6e98713a7531ee5c00084d0e30db082044d8080f22f024c3df0f0582d53d27586bc0b534636d4bbbdecb6cba76d31d9ec26c24a2fc8e613aa6d783ef7541ca0463908b696f7a3cac12710986820bd17613a05ee1cff0b00000004000000000b00000003000000000b000000030000ae450b0000000300000000f84a17840843742f83014a3d944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000013a7531ee5c00082044d808093acdfe33b2bf0475202506781b23511c98ddf648158adc2480626821c8462f765d5b53638bf280519dca4c3c6d1b8e62068dfab0aa3ee45702e69dd44d70e881bff0b00000003000000000b0000000300000000f9010d8263618401810e38831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e141af000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042a6800000000000000000000000000000000000000000000000000000000000000000082044d8080787ff95ee62900d9971c92e31e4a72c46ccb514a1f429be155b8bf471369fc0610e0132cde21bd011d3efc70d70cdf470af7ad9b5aaf86170803e31f29a94bd21bfff9012e8263628401810e38831e8480941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e141af000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042b949a000000000000000000000000000000000000000000000000000000000000000082044d8080812562f17bf5daeaa60ed73ad30eac5996a784b57451663ad68d2a3a1a4ceffd0e98775ae6ade38d54ffb4a21778eb2a047d280b8408451096b13019394cc5eb1cfff9010d8263638401747b78831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13bf40000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000980faec989d805000000000000000000000000000000000000000000000000000000000000000082044d8080d6ae2347276fa3cfd245d9379684454bb7f0bcc3cca6d642d827809ff5d836922ec796bffe17a15a93e05d6d62d524588b2e083a3baff8736a9ba633ae1f7cf51bfff9010d8263648401875798831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13c180000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009819595140ba78000000000000000000000000000000000000000000000000000000000000000082044d808008a9fd6bf5a08b08d9611be3a3243fdc5809a0e51aec5629bf321cf09436fc67600bd37403aa4f6155045256cd67620aa2bc7e7118c6b2dcd5f72db9c30a433e1bfff9010d8263658401600d00831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13c3c0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981383eb6618c6000000000000000000000000000000000000000000000000000000000000000082044d80809be365822aadb974a913e75d18dd5280b322409c861bfb10d545c17c72979d847b52b9ca8a4f49f5dba9016e98d2e55536a8ce32fdf06b6a13320aab4a6869821bfff9012e82636684016331b0831e8480941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13d9d000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042ebcea000000000000000000000000000000000000000000000000000000000000000082044d8080cbbc34a2b94e3d2e56260b5e0034028c2f6bc1c7306fe9a9f1956b670c027dfd70a38bd41a95f94774d84e470ea2a25a42c499e1e4b971dc91a426139f61a09e1bff0b0000000300000000ee8308be6c840453c9c082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80809fa5bd47d6b5cc939b9b27f080a9ee8477b2baf9fc9ac7b51c023ba5eab004ed22ec4afd14c073c5eb9f9a2802eac4f24ac04c34b7ef33de4ecba895e8749e141baaf901ce826cd284017143408306dcda948ff6508bdd71b535df073920c423e9eaee0b97af80b901a4b61d27f60000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e14087000000000000000000000000000000000000000000000000016348a452209ad0000000000000000000000000000000000000000000000000000000000de701c700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080aaa0ea5c36cb0e4fd0bce18e23632f9c8ea2b06b5351c2c69a2adfec23fff4a43f84b301c33c51f2744abdfab346fc91d47c8dbe1b2c91849163ea7d0dc871531cff0b0000000300000000f9010d826b8984017143408308e02294f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000098f0f120de21a90f220b0027a9c70029df9bbde40000000000000000000000000000000000000000000000000000000066e14088000000000000000000000000000000000000000000000000016348961fbb5800000000000000000000000000000000000000000000000000000000000de6fe26000000000000000000000000000000000000000000000000000000000000000082044d80809c6fef4b141e8e4a07c9cbb2511753153fcabf3a831eec7216bb4af90abb7b7d6fb5002e74953de4a87a5aada51b25c9b1b05a961546421ecdda070420f081621cff0b0000000300000000f9010e83018d5f84017143408308d82094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000023abcb82f468e3422a7212d4ad47cc2dd39162a30000000000000000000000000000000000000000000000000000000066e1408a000000000000000000000000000000000000000000000000016349e13e663f90000000000000000000000000000000000000000000000000000000000de70b11000000000000000000000000000000000000000000000000000000000000000082044d8080637884a6f0f95a88b0fee2f9bb436161c0032965d91166bea89124fe6513d31c5527771f11b4ed3cb90e8b757c9f4c9fd74c6bcdc82af2e68521ffd5e0875cea1cffee8308be6d840171434082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080c501252774527c8bd4e9fd808914868352ec182c325575824ae9e83523ba33ce46a6b82b2ebb32e4194110443e5c67ad08df9d8db9bc6fa8aea72192c1192e221baa0b0000000300000000f018840a88762382e3fa944f9a0e7fd2bf6067db6994cf12e4495df938e6e98714191a3bf5780084d0e30db082044d808076d4330b8513208b9814415391c70d0cfec79655b397fd2632d5e82c57962cb87956a8c4b93809d7904baadce5b66e8e720ea8f6ffc5c9765226b0952f7dafd01bfff901ae826749840169a22083091f30948ff6508bdd71b535df073920c423e9eaee0b97af80b90184b61d27f6000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e14090000000000000000000000000000000000000000000000000016348d202444f70000000000000000000000000000000000000000000000000000000000de6ff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80807838e9e5f7ffa45112082937cf4c13ac9a4b34d2d89c0f88a6d1e5b8fbbabe68450963e324bff7087380a48b63fd683577784f3eb7c926b9a9ec08acc1cce13f1bff0b00000003000000000b00000003000000000b0000000300000000f903f215840169a220830343e5941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5552350c0f4036746139ed62c05a8199a5364297d41a85bbdf9d08e25c0b01711000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000c2f02570540a1e49f72b83365db2aed22ee6cbad0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075068616e746f6d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d526e4b355959546b517155556361316f505241637157456f4878737847576658517670364e4c43435647705600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041303e333a0a05a77d8b21e3acd4fee5daaf7544b8b4d685934b1343ccc154afe811166033a30ae22ed0dfb9c4ccdec95eed70ac788e04d58b361f0a5f38260a011b0000000000000000000000000000000000000000000000000000000000000082044d808057a8cf819dd9e7deefa39df29b556f3298ecf2343570849e33ca211713427ed3666812d6fc31f2b1269f4d272d30c4c4d6fe42bcfd0ace89e156199a62e72e771cff0b00000003000000000b0000000300000000f90bae82244c8401650e408303e4a494d46f8e428a06789b5884df54e029e738277388d180b90b84cdd1b25d00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000740a14de1e598b81620773454588b85d6b5d4eec32573e12145ec8cd4881eba87279f5f243eb89ea9383e677c61a144f9a0e7fd2bf6067db6994cf12e4495df938e6e922072671ce2724c2d62888ce0330cd083a20623f6e1a2edccbb959c2ee656b3497c5155af15a0ceaa8b0cd940c4fe9792d12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000004138c5d370f4c6b199ed42c2e346cef963a8fdf9512270c9518698cac23166fccd4145a7fe09b7b53828ce325cacb2368e5917ccf999f0454697e0edb2333ef67c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414815d2c0438852df0d6e1f6e079682e1cdc5f56410cf9260224db24c1c2ff2ea25ea8b65b7966110962eebc47a78f4d77a8b1dd0a3855d73ca97da7e89cccfa31b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410f45357656c66529a2f7c6fca35dfc1f13f7db5cd546cc958503ecba7d9d55ca51b1682a289b9ae1daaf82ec950e0005e71c01b0bff347c68ca80999802cf0fe1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004166d8d1d855e266c5688f8a45503d9448366fea91b50d4c8ba12ebda394ef76a84d003f8bf256cafc0791d521dc3fd681710fc1e0dc49d373fe1a3be3ef9645ea1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2d31bb75fc66cbc2f75af278c95a028b6b764f0d056d65f3f50bd9d8ad857c53c229fd9cc844192595b6e8c892edd4566e32f17add3ec25102f06edeac4de4a1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f1d037092dba92c2b718f8cc6d1d0274087cc7e033e6aeffe8ef39246188a2e34ef3761e29604612724fc57bd129d9ca0b1ca246c3f7c18113cc3b8acfdfd4b91b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041aaecb7b28127e84f580d3944c59e7de10d46f2cb121f0b56364ce9d843c1fd783e28f41e1e33378f071dacd4788a44db8314174eca4757a19470cce0ef98fd5a1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000419a9ea0bf5e36016e3380ee472c85ac21cd072153f7265ac450f9c2853782cf715a8105e3826f08d47139e61146f7768af4b55b3ab485772ed6332c66150d80961b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000241a100333eefa2efc389ec836a6ff619fc1c644000000000000000000000000273035e10f106499eface385dba07135e7cc8e5400000000000000000000000055f4a1bfc655cf55ed325f2338a1dee84f754df200000000000000000000000057c96a00f9ff7b25cb5cf964f1a191be9321b8c8000000000000000000000000870cf8dd5d9c8eb1403dfd6e6a4753f4d617a53800000000000000000000000095016e36adb4e0151735ced3992a7fa54e16bd08000000000000000000000000954adc74481634b4d278c459853b4e6cc17ae8d200000000000000000000000098e9d288743839e96a8005a6b51c770bbf7788c00000000000000000000000009a66644084108a1bc23a9ccd50d6d63e53098db60000000000000000000000009a8cfacf513fb3d5e39f5952c8608e985b3dc6ef0000000000000000000000009ac5279013edfec74c5c2976fc831ad0527402e00000000000000000000000009cd5006e1bff785dad5869efd81a2c42545c9d9b000000000000000000000000a73b339c3fae27bedf7cb72d9d000b08fc899609000000000000000000000000bfa2f68bf9ad60dc3cfb1cef04730eb7fa251424000000000000000000000000c74acab8c0a340f585d008cb521d64d2554171a8000000000000000000000000cf12dd34d7597d06ff98f85d2b9483d9d5f7d952000000000000000000000000d10c833f4305e1053a64bc738c550381f48104ca000000000000000000000000f4151eebfa1b9c87dd92c8243a18b1baef8c1813000000000000000000000000f5ad7f3782e8a67bffa297684e27cf9fcc781be1000000000000000000000000f6e93eb288658de5e2e982f99d2b378b22959d1500000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000002f447e9b1e8adca8df0000000000000000000000000000000000000000000000440370c65f337c6835c0000000000000000000000000000000000000000000002c9067d217c36159ff0000000000000000000000000000000000000000000000530db71af8da0bfebd000000000000000000000000000000000000000000000051e62edada099ff54000000000000000000000000000000000000000000000001999bb4b4f342a0dbd00000000000000000000000000000000000000000000002c08f0c7601de23e6a0000000000000000000000000000000000000000000000ec1deea13ae957d41000000000000000000000000000000000000000000000011be0842d86f7e8e736e6c50000000000000000000000000000000000000000003e4b325079a76d1d368000000000000000000000000000000000000000000000394b6fd351bc3090d200000000000000000000000000000000000000000000010792503324e9fba39d000000000000000000000000000000000000000000000059fd816a8470289cecac00000000000000000000000000000000000000000000d2faebf995c3095183ab000000000000000000000000000000000000000000009158ca2eac127d67ba00000000000000000000000000000000000000000000003bda588740b8d2e76f00000000000000000000000000000000000000000000008ac2e56a51bc65072900000000000000000000000000000000000000000000004383436ecf64559db0000000000000000000000000000000000000000000000031c05fae36f04651b4000000000000000000000000000000000000000000000010250608f677cbded0000082044d80805d36d9762307593a13e91e19fb81e6c0a17830d4834e18d66c52d6411dc7b22009da393426cdda33d3b5d7385fae3ee7b625f0febf8d72c3785dc733aada5e7f1bff0b00000003000000000b0000000300000000f84a19840af6f75283015497944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000014191a3bf5780082044d8080021f1ce93bb9218374d2ea45dbd2bc8d97f6fa5aad023474b71e12f2ccc583e03ab6cf9edaf16b142da8d07b44b1811aff429a4bdf6b0af997d0707f98f295061cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f01a840b695c7082e6e8944f9a0e7fd2bf6067db6994cf12e4495df938e6e987145b679690200084d0e30db082044d80804b2eb02436c30f483e54e8af28f2f1c59db7f5d56a24c83d0b3d2c4f47065ecf68f4895fb2a2e27e0af1b416d34da70f50affc5291e02a2a13f29ae09f92ab1a1cff0b00000003000000000b00000003000000000b0000000400000000f903f3818684015d6d20830399fa941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5b38fb2ebaa1e7167ed74018ce74a588d28794f3dbe74ab6185c751c3f31a2d81000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000007e4c51597dba086fd1a07751db43836a3acd20bf0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4269746765742057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d545050343333525078526b70515170476b5831365176573558694c6e334d46643833577a37524334764a647000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041aaddceedfb48b401c31abb8555f78cf18080778613ebbcace5332467725ef3096d0aff50b740abfb1372f7511caa6e46683774e7697c2c3fb360621b0aed16761b0000000000000000000000000000000000000000000000000000000000000082044d80804858cae0f925fe74ffa06631cc0e9bb9955a839c9eaa30bdd8b11a0b7b8de9371e19d31182948a1e2d730e3f9cab2f67d1a5af4e2a62f386d8951d34f94367f41bff0b00000003000000000b00000003000000000b0000000300000000f84a1b84086ce4f483012ee7944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000145b679690200082044d80803ce9647fac84541c0f88f2635be838c489ac64d29edc0759905e1677a53a996c4ba90cf64b959dfe09642aa7a67fdaf495c1cd9cbee52efca91f26932b9506401bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f11c8409ef8bf783015963944f9a0e7fd2bf6067db6994cf12e4495df938e6e98713c0ca60f3800084d0e30db082044d80803e3309c130e2bbd0bc32bd9282681387467a68ef88003d71ef2fcba5fecce4c41cf843eb96e923daf4dddad4176d421115cf36e97ca5b794b7bb1330900ff1681bff0b0000000300000000f904351a8401d1168083040eb680870130ae43fff000b9041a60806040526040516103ba3803806103ba83398101604081905261002291610133565b813410156100765760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74206465706c6f796d656e74206665650000000000604482015260640160405180910390fd5b600080546001600160a01b0319163317815560028290556040516001600160a01b0385169134919081818185875af1925050503d80600081146100d5576040519150601f19603f3d011682016040523d82523d6000602084013e6100da565b606091505b50506040805134815260208101849052428183015290513092506001600160a01b0386169133917f21e7cd7f82cd180cc2efc8f6d34988374ee142862fb2f9a8f60192e9b3cba1f99181900360600190a4505050610174565b600080600060608486031215610147578283fd5b83516001600160a01b038116811461015d578384fd5b602085015160409095015190969495509392505050565b610237806101836000396000f3fe60806040526004361061003f5760003560e01c8063b0910a5814610044578063c0129d431461006d578063efdee94f14610077578063f7b98453146100af575b600080fd5b34801561005057600080fd5b5061005a60025481565b6040519081526020015b60405180910390f35b6100756100dc565b005b34801561008357600080fd5b50600054610097906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b3480156100bb57600080fd5b5061005a6100ca3660046101d3565b60016020526000908152604090205481565b6002543410156101285760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420676d2066656560681b604482015260640160405180910390fd5b33600090815260016020526040808220429055815490516001600160a01b039091169134919081818185875af1925050503d8060008114610185576040519150601f19603f3d011682016040523d82523d6000602084013e61018a565b606091505b505060005460405142815230925033916001600160a01b0316907ffa30e9e1a69333c24ba36197dd28ca3e0c5f35e57ddd18903b4fd4ea7d4912339060200160405180910390a4565b6000602082840312156101e4578081fd5b81356001600160a01b03811681146101fa578182fd5b939250505056fea26469706673582212205084495e17d7e67c22e09899255168827489804e496d7d6f983ad2752ca58a2764736f6c63430008040033000000000000000000000000c451b0191351ce308fdfd779d73814c910fc5ecb000000000000000000000000000000000000000000000000000130ae43fff00000000000000000000000000000000000000000000000000000001e77d399980082044d8080e753eab3daad33e5406b6e9ccf7fdd0268c3eea1b2799d1052a1a16fbc83a6e317be62f32646d8c452718d299d38228c41dd5a1dc67961dbcd542bb551b391f41bff0b00000003000000000b0000000300000000f903f23584016cb4338303977b941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5a5b86aa0e7b0c70701b8db6d1e5e8a7ee65e36fb3fac08e68c65eaee771351f0000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000006158a9ffe6404eef6a2bdf331feba141f17235870000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007696d546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5579436d583974784a4545776f7756365646633566386e76576936717a414b46424d64767a6835535a334a340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004133474e9c238d06b566181d591c630a71d9e10eeb72ca063a40dadadcd0c0f6fd4d6b0326c4943466f3b886510d4a14429e394fc1a8abc8a0e2794ef07b91ca561c0000000000000000000000000000000000000000000000000000000000000082044d808030e5d2dbbab99819c571447b15a332129be20c6d875c480cad06e720a32b11d84bf57d2fc8d9eea3820202f47268b26a94e700afdb728edb396bd7312b8d8d621bff0b0000000300000000f90139058402625a00830284788080b9012560806040526000805461ffff1916905534801561001b57600080fd5b5060fb8061002a6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80630c55699c146037578063b49004e914605b575b600080fd5b60005460449061ffff1681565b60405161ffff909116815260200160405180910390f35b60616063565b005b60008054600191908190607a90849061ffff166096565b92506101000a81548161ffff021916908361ffff160217905550565b61ffff81811683821601908082111560be57634e487b7160e01b600052601160045260246000fd5b509291505056fea2646970667358221220666c87ec501268817295a4ca1fc6e3859faf241f38dd688f145135970920009264736f6c6343000812003382044d808044a18dbe91f5ed18370200a54bfa8738d390e49046e22faf1b6320fa25a8b23450dd1c97b91e2cac7fe4618bebc997644786d82b3432cb304df14213b6a782a11bfff9010c81b88404c4b40083032174942a3dd3eb832af982ec71669e178424b10dca2ede80b8e4cd586579000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092de600f86669d5bc23fd33c4b93689d49c55aae000000000000000000000000000000000000000000000000a688906bd8b00000000000000000000000000000a2036f0538221a77a3937f1379699f44945018d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000082044d8080689c42d280e7d7a501e3b8a03727d170815bb230e407c1adbe02c056943267013fe64d7ddd8e1dd996ec63c86a17964c9982076c6f51dbe46034e05b8cf2068f1bfff8491d840bdac5d982e3d2944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000013c0ca60f3800082044d8080f0658ba891342b29cb36b03d7c7f4ef697ab9453400c9bbc07e6689f2442a27d283e986cbe0569d209a00ce4a0bb790909b20727d04e17df540cad993cffaf681cff0b0000000300000000f9018c09840178e4608308474c9446a15b0b27311cedf172ab29e4f4766fbe7f436480b90164883164560000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000000000000000000000000000000000000000000064fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc905fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcd6740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112a8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112a880000000000000000000000000cf65cc37241d426970b91720e8255140ade00f050000000000000000000000000000000000000000000000000000000066e140ce82044d8080cce7a5d5d6aadae5e27baa53001df17380db45b57e5be0ace2a6cf6b062e722e32fadbd8ab50149b54214c9542ae78c7defd5928ab2f23fde10078dfb00c3e9f1cfff9014f830115508401b59f408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13fb500000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000072f21faa37999cc861c82500000000000000000000000000000000000000000add83f3e7c6394511984a9080000082044d8080262b264f0820837db4a0fffcfe5309152b391bf1a80d105d564051c6bb5c5c644dd1e64849aadc9a6650a6d15dd17f1a0dfea656b7f190de92b7c3867d4c46b11cff0b0000000300000000f903f2038402625a008304e632941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5f1f3689562d1c0dab2e8a2cc0cb879b692ec71495e8cda15ae8d2ce622c7c6ea000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000f9bccf01d2a27b0b6f7060c238a3c499814c7290000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d597346367139725173466b42344d51453766334a35333843594748316f61696539766b5643616b573875697100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041547595cdab235f61e0e57fce4721337a52a434ab432daa2749642b01f769f773340113e8ed17a36f42e4fb82c5e8a9947fd69f29b12d76902d8b6091d7589e831c0000000000000000000000000000000000000000000000000000000000000082044d80801dafcb03a4ae839365fa5edd4e370763a965b1956859fbc950e985137707683f5cb0463918a45f865a13728c1d2785953a8820ae39ed5c5cce11c3d9f798155e1cff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000357f0b00000003000000000b00000003000000000b0000000300000000f01e8409868dda82c553944f9a0e7fd2bf6067db6994cf12e4495df938e6e98714138df7a0300084d0e30db082044d8080c3e8e282b8d2318bb3eacfb610c28212435b08a9a9a7957ccf3b7db78ccf6362259552814b9d6fadf088245eedf9894d2715ea943553730ee3a0e37de0d2bd8e1bff0b00000003000000000b0000000300000000e9068402625a0082ff7294e38fac030c30a806f1a18348cb35b1f9796b89bd8084b49004e982044d8080d4af995d1407374e10081bc81f21a015911814ec43220eb6a75ac5d347da563104c194b2dad08167c9b8018db7cb67cbd4730f7ae1ef58f508e1df803ca7738b1bff0b00000003000000000b00000003000000000b0000000300000000f8491f8407b3caf482ec15944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000014138df7a0300082044d80807a2a304783534f2b6627a011dcd5655a14f601f08f8ed1a5ceb48cfea15d246a1aa2513734725e55a1aebf47662192fb6b51f3ee33f5885df867aa9251519b951bff0b00000003000000000b0000000300000000ea1684015a5fe0830275e094c790f82bf6f8709aa4a56dc11afad7af7c2a986780843d18b91282044d80808d203c5fc7ac06efeaa4989ea373b55b32440f50b4969ed35eed578101407e2e485fbf235e553ff03b12aaa183b8ba39eefd649cba4a64d01ff298b6fbcc67331bff0b00000003000000000b0000000300000000f020840c0ac30582c5cc944f9a0e7fd2bf6067db6994cf12e4495df938e6e9871301cbf18c600084d0e30db082044d8080b2da0efc52a37be0b0abb72e2c878e2d894135e5903aa4b7510215dfc06644434894408779c15dc2e31b3c26bc9eedd420ba0b8cc62c91a40a79c93bc211b4781bffe9078402625a00829b4094e38fac030c30a806f1a18348cb35b1f9796b89bd8084b49004e982044d8080a96eb803ae5fa5e9bd6330e833372d275f55c50f2abd9a783c76011c171bb9a854f7ba60b09c1d684ed56f94254f87f6a3f064e1a1d542dbd09b67a36ea583611bff0b00000003000000000b00000003000000000b00000004000000000b0000000300000000f86c820582840175d720829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000001f399b1438a10000082044d808097103c7391adfca69c78cbba1820b0bd440608827f76f970ebabee9770d106a325407087010a8ecceaf780e93d7db2140e934a94ff35ec90a2eca49a466f852e1bff0b0000000300000000f84921840aa60ab382e3b8944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d000000000000000000000000000000000000000000000000001301cbf18c600082044d8080a93e5a2fcd9fc6e8431efecde6b5119e2ed7bdfbce535819481e7c4a8afe7afa48bb9219bd7bf591c3b4c1677320ef5961415c7192e2e564945cb87cdceb51661cff0b00000003000000000b0000000300000000ee8308be6e840175d72082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808024468cb79bb0bdcd83559601af894fea6b58b2c042c87a274da30b03304085ad289f7d82b0e6df87cfdf16b69a1671915fb2fb2779831748932db2ef39172c301caa0b00000003000000000b0000000300000000f86c82058384017d7840829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000003afb087b87690000082044d8080079b0b01fc85f171207c07f0864e86783059697bffc98962dc0573ae40c413786a55a9c8e8cb9e58d24936de95f05fa3f28cac23efb6de2f65f455652c45cd631bfff909ae82129684017d7840830993579489e830972c7b453d4715ba1d3894aa096f219f0280b9098457ffc8610000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000006ac983efafa917bf04342e3684a863c9212e1fe9642eba19e81b0eab36c223645f2b84aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000000000000000000000000000012659eafec31743a8a1b09826b378842d4b42910da64ae7c0be9774b3490711b80e76dc2d6e18b40e24de42f1bb55971bd666fdeb1a4a463c0a4154a072796517000000000000000000000000000000000000000000000000000000000000094000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae261100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000bf4f119c5bbfe0000000000000000000000000000000000000000000000000000000000000066e13ff10000000000000000000000000000000000000000000000000000000000000002afa96d133fb7ca1e775405c5ec53a83986cc81317bfa06200d34061675b76adced276e8201ff7defde2bac4a9e387413b3da71f8d1de09ebac9a5490ed0bc189000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae26110000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000007e6125df4bd46800000000000000000000000000000000000000000000000000000000000066e13ff1000000000000000000000000000000000000000000000000000000000000000283ca785cb646b1762da8d7c98b01f56e69f4ffe07463f3ece57a61331ca1817bed276e8201ff7defde2bac4a9e387413b3da71f8d1de09ebac9a5490ed0bc189000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae2611000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000ef4ebe4c98404800000000000000000000000000000000000000000000000000000000066e13ff100000000000000000000000000000000000000000000000000000000000000026957de8f52722139f85b1fc83e50f75e52000cfd5e2f6a1814eaac236579b00bfce0e08ce4fc8588953f31682cb0cbddf9b74ab8f00f2e8ff6837ebeaa953f31000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae26110000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000f3cd9dd0f7b2b000000000000000000000000000000000000000000000000000000000066e13ff1000000000000000000000000000000000000000000000000000000000000000228f70f83d2d2c2012ccc8e6d043c4421144c676e19ad77b3f5d06a55532ea2d9fce0e08ce4fc8588953f31682cb0cbddf9b74ab8f00f2e8ff6837ebeaa953f310000000000000000000000000000000000000000000000000000000000000002ff0100000000000000000000000000000000000000000000000000000000000082044d8080a928627bca2a83841e6a08cac57dc3f01cce3d139d5371895f14a66f284721a3598e5b04b9282a7b1b5abd1c4b80e125256206fa48c41c6203b40defbcfbd8e01cff0b00000004000000000b0000000300000000f122840a1b74f88301535c944f9a0e7fd2bf6067db6994cf12e4495df938e6e98712a07b108eb00084d0e30db082044d8080b672c58ef0e2fb2431dfc2e188bdaccc549afd9453f907295a9b78242cc392e20797400e2cadd16e89f6490992082c84dd9200eaf4135c3af743c8eed63212d01bffea81cd8402625a0082ef4094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080cf5c96744631e4660952c51533ff1331d8f92e6f5dfe5fc50e8ae59af5d654ba0992777ecad55c9fa7751777c9674d850059586adf1e25263c674a6affd8fbc51bff0b00000003000000000b00000003000000000b0000000300000000f86c82058484017d7840829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000001ae361fc1451c000082044d80806d429321175f5602fd6772119c4ca54dc2ebf6837a3d2c7da3cf16e92cbee35f13d4a4f4d2a454164430f73b7c646d1a9ba2589463c8c4a01fbfb57190756a461bff0b00000003000000000b0000000300000000f86c820585840186a000829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000006d499ec6c6338000082044d8080e7af27a209e255c5d8dac95f112ba887fae9d1e14a2e4bd2ab28c0db0405add0789ea99836c9f7006838a5c8a343c7910fa04fe62359c5840021a1e8ecacb5cb1bff0b0000000300000000f84a23840929944583010d17944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000012a07b108eb00082044d808070235f900cc55b78e1e6928ef4ce66827bf7fe71c143477be736d589379811ac253eaa21eeb61a16813aa811386885afe8290602dd5690383627722ba9d7e2211cfff86b188402c37cf0830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080c40b5b896d81653b619a8913d90eee62c5d619b4962ecdee41ea9832aa95020349132258d75204c62c8fc76d9f8283b1326d4ee913a0b723657c54fbfb1bb2f71bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9048c198402c7c8ea83135048946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f0900000000000000000000000000000000000000000000000000313295693672400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000a16c02000000000000000000000000000000000000000000000000000feb937a2911570000000000000000000000000000000000000000000000000000000066e14e3200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000a16c02000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080b3e971ff6fd58ceb07da1d98787e1144e20bbb3a4bc4898427f95bb1883b209b79f23b51651aa2197d379428541ad7ab7f2baed6ea46c94ee62fe302d16eb4c41cff0b00000003000000000b00000003000000000b0000000300000000ee8308be6f8401820c2082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80805c8c929f5ee6b9d6d3ee54c1745ed9009dac82133aa764d8b66f952ce4af2e0072573744d41b291cc6384aa9c9b5057a4a1d979fdab2c590ea251fcdb75fc49d1bac0b00000003000000000b0000000300000000f9018f830151da8401a8a6f08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000050b52227f968abe8cba85ec45a4bda8f65d1d1670000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000015b392fb030c00000000000000000000000000000000000000000000000000000000000000018da49930ea8edc4bf2ba83646893e29e20703a5b2534c8e97ce446e41bc6ffe682044d8080c1a1b89b29b44083c19bc4b74e77b2a9190047f3ed5ce33198f142333eb479ab19eb434a8c761191c6fe9f02162be2d0bb5e163eb2b8528d493c44413fc512671cfff86d82010584018e41208304f8d394dfb6baa334712cbbeb26b7537f62b81c2a87b1e880b8446e4bb3b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000182044d8080fc53deb3a49af4a7f3bdbe490ec121cf4b137ee3e28bce917494eabf24b148b91aeaf809a6a552b1e7bcebbb955ed6a54d004ce4fa883b0d53c9faac21cc542b1bff0b00000003000000000b00000003000000000b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f220840186a00083030009941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5e9924268a07bf7d21c823217668de1706f45cf6eedfaf6528e79c479eb926f00000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000cf6ea21f3928460e36e30150815f212fca2f9a900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5166436f4d73464e784d7274756a31507054614c444261554c586551694453626b5a63524533687839516b68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418550cca2cf3bfcec208c53cdd1cc838b0ffb5c5256bba0d4166875e47c099b175f181a3a95b5c0706963513659d182ba900782a379d0eb74715719e59a6f58c11c0000000000000000000000000000000000000000000000000000000000000082044d8080e58acba608a369d18c6d73f43366584f723671662e22cd7bb1807671b3d2f71f03a1f7a8ef7d198a54345cbb4f226888cc8867e55b6b20e231e0228d71d79cb71cfff8b12b84025317c08304ac1194222228060e7efbb1d78bb5d454581910e392222286043d112b3c31b88432accbb900000000000000000000000000000000000000000000000000000000000000e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b48eb57e000000000000000000000000000ea6e4548bb97b9237fd08bd32ad9a6f8e59eb10b82044d80808c2c47c45393f93b84a8a00f3e965a8a3a532e4d03d0da39a78f6ed20f91faf017d9d1405441a4a8b6d81421ff34ce60c607ff5843b029907fbeb58ee371f34e1cff0b0000000300000000f903f22184028dd3a78309e223941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53d6aea38052471c5a2ab59bb49640603e17c99abdaa8a597c19480f99e27963d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000673962924875bd4cbd2e0b22ed63c85cecac2e40000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d55316142655a5a6139787756357746507855734a37416d6276714a38574a784375656f4452666567595a42790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004159b0d36df5531ae9fad1f1382129122fb7cdf909728e403412134e87d1c1542a4d2a58cc08a4005b8f8dfa3a594103b3176813122f947790cd52a2fe8df5f5c41c0000000000000000000000000000000000000000000000000000000000000082044d80805c95ef7a6c28a8e2e82f28d6d894b5b9ee5171b03a1c22968ce432462eede80b24163ce4e126a85062e602cd6e83bc9fa4855353b979476e4e8a6d495d56d5f21bff0b00000003000000000b0000000300000000ea819d8401a39de0827181943f0a9f960341dc53747d43d27e4e1a2678f7983e8084753899e982044d80803e62d33d344773f096582827acedb468e005027390ecd7e427d3bfee95cc734e4932744bfea8adcf4dabaebb2115f1d742b8f346984fc496f7e7a795cb71d6f31bff0b00000003000000000b00000003000000000b0000000300000000f86e8301c9918401aa54a0830186a09465a4b8a0927c7fd899aed24356bf83810f7b9a3f80b844535b355c000000000000000000000000a703654c31dd3bc26dff3c6ec524540c602380390000000000000000000000000000000000000000000000000002659289813c0082044d80804de874ddea4656d09ad455f64143e57454f56e7191364e43bbbceabefc4ca03002f35052b4e2b6d4be7b637a6dcb4c3b37d6e536f7a5dcc64b147469ade0037c1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f8cb0c840b7f6358830a623f94c28a4ec9f09e4071e3707eaaca5c3754fa4f5faa80b8a48fb8b6c780b56aeeab2dc46113b09dd8069578d16c679cf639475dd6e0b8e60b7a3b21d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000082044d808014cb2bfb965493c5dca083a997eec444184bd9f3f79aa4c555bae2f5fe5d567058f2dc8d1eb1aa371a97d86c65095e572232021dc7a3d453c2a2ec11c955092d1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f2248402625a0083048056941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5f51a6c4d02c18d30b29fa792091edfdeeb4a51d55a18c953784a33e54d7fe50a000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000f65a8d44c6ec9823ff7be42b3cac3b457ae8d5200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d64696179665a6f6f7a676a64625374764a657a48467664325a39384e656669517736594a4144456a56554e4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041b37d89a9353bd6b5183ab63e9080c97cb5a24fc814b5fadf0d531acd6272dcdf00a568d77e7e5ef3b1821820166377891930eddcfd50fde885affcc1320f61d31b0000000000000000000000000000000000000000000000000000000000000082044d808076fb7660fdc1ef605bc860a4d1b98537f6bb3c18c507dffec61c663c14950ee06415ecdb58bfe14b8642ce2d909378beda578c5353356a559a6ae1f176eb204f1cffec0184028e2965825208944570f01acc78003c270b68217b819d783cc892f487179d7b0b84e6678082044d8080829f6ee74f6fcf2ad05e10267d898068704c651ec8c3af9bc1b06d48b721e8ed5d928a25a8942496fa4b557e61bf6e6552e5d95c53ae3d1ec9bcd843379689381baa0b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be708404c63aa082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080331d3409eb28ac0f3aa116833654fa85ebc0ce15d7d6045703ea5cabed548b2e15c7a437215b8e74d70939efc3842b0dd571788b3abd34449555b16d18c6b6c11caa0b00000003000000000b0000000400000000ee8308be7184019768e082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80804993bb9121b4238b115f0591a929482dd9ff7c2e6974e85901a475fef18636417feb9d1551cfb7d465738a2d001cb5f7ba47e65fd4c1ab2e6d67117fa835a3361caa0b00000003000000000b00000003000000000b0000000300000000f9018f830151db8401b466c08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e5cb35901d40efb3c6d38aacfb0f4b0cd5258650000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000045cb32e45f28000000000000000000000000000000000000000000000000000000000000000142b576c33464f5ecbf09fa2b1575d07772c814bcebababe6c099862cafb4fccb82044d80805dd0484cc33cf12d031a9a675192d937ebc6aa79432bdedb9190f4fe84410b6029c8935f77a6f8cc99964f47afdeb4c41790eeeb636babf8e3f034742f8c98b81cff0b00000003000000000b0000000300000000f00e840172c9e0830139f594b58f5110855fbef7a715d325d60543e7d4c1814386a758d6a38000841249c58b82044d808045d3b812f522cf8f1b5a670f65c1fe24a0806c563eb3dcd9ad2bffb3e2aceeaa0884dea66e76f89a5047243e18d3bacc1a849ec983f640a958ee410c804916741bff0b0000000300000000f382010684019768e08305576d94dfb6baa334712cbbeb26b7537f62b81c2a87b1e887254db1c224400084e9ed3d3082044d80800b1d6a122d7289631fdfb4b72e4a6a86c293afa79c1f3337c9a188badcf82dbb2efba7d16402ebaa03b0059aa68f7f3a445d2fd3425cab4179d50a9d06df0aca1bffec81a78402faf0808252089433fd1acc271574f6e5c2eb4a0ea1264251ba2119860abb620a3c008082044d8080c9a1e1b5d798f7af1ffbd19e89c74fa39119c8b261e9f84fa39d9af2c67200d43ee954e07bf11fb21588f5d62e6c5c7dd8da23de14658664a4389b4fefd13f6d1cab0b0000000300000000f903f21f8402625a0083048056941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f522f0b9754d4d2585628043451776bc2eb65ac80a097992cdd46586be7aad1739000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000033fd1acc271574f6e5c2eb4a0ea1264251ba21190000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5374533974704d3479584e42543463474437554b4a77616a4b67443363444b7971347a71764e45657248434d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414ed93ff5c116db4089def64910db6449c30e8196e78031d25816d7e4f92b119f62e583f8b2003c9b042427ace41ef3a6a1619130f2fcc00fee151d0acbc804191b0000000000000000000000000000000000000000000000000000000000000082044d80805341f33dd6e64568431b0846bbc656fdc618ce107b9812dd2bf3f2e91c44f0240c3281cd38136e751fee0902452bca959da52d667a092d2fbc70ef493af7cef81bff00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040110b00000000000000000b0000000300000000f9014f830115518401bcf240830596219473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e140a500000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731412d863de818aedc2ac00000000000000000000000000000000000000000ae12c46db9b6fc047c306c500000082044d80801d46c877c9b34d2ab10700459c548bbdd97b4c71ddaaae59eb4aa9829063a3456742ada3207659a4d8499dbb6600f91b9e7ecef2807fb739d2a63af6538555161cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f901b30f84019bfcc083039dd894b58f5110855fbef7a715d325d60543e7d4c18143870b7f8bdfda5884b901845190563600000000000000000000000090321b082c1da51d0ec59ec7d02f5b65d1c70ed3000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000b7951c00000000000000000000000090321b082c1da51d0ec59ec7d02f5b65d1c70ed300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001490321b082c1da51d0ec59ec7d02f5b65d1c70ed3000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200010000000000000000000000000000000000000000000000000000000000061a8000000000000000000000000000000000000000000000000000000000000082044d8080fc542a4b3b5caadfd5c04117a3f8512c467f8a59866aaea320aa3b5bd891f92b068e84eeb6846cea45c443f478e7c48968d14a2034cf6ea9005facf652f51ea91bff0b00000003000000000b0000000400000000f86c81d08402625a0083011108940d1e753a25ebda689453309112904807625befbe80b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c768ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080a984967c135177e8261c40769322acd476a9a79a07d7266cf441b0329b3b009533e8693879324ede3e8028f2baa8c51ea3aa1212ad5bf5c94dc49f14a2831ff61bffef808402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109863691d6afc000840333f63e82044d80803f154443bd814efa2e144586740cbb0024d5f3ea553b60c131823aa61e2be4e73adab50e89b656b3c7e4c9e2f511754dc45d14ee7894de88498f2cd23e825a501bff0b00000003000000000b00000003000000000b000000030000ae460b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9044d81d18402625a0083044f4e94b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e141e700000000000000000000000000000000000000000000000000000000000000030a080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708cdc50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e147cd00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000041ce9c062459de7685af53cae3d9c022ce609093f04ce875111314f8aa1366bfd579a369788bb5ca6b5cf908cff33ffda44e1afa0c4165caab252665bb02ece9861b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000007355b876be771900000000000000000000000000000000000000000000000000001541e01138ed100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d1e753a25ebda689453309112904807625befbe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ab07bd0ac2502a7fd0a5005b420b96f94104fcf80000000000000000000000000000000000000000000000000001541e01138ed182044d808002d7ed117ceaf8a71c9325711c8ebe173ffb02a537a631170f2bbb140ad8532b2e3f3dcec0e5c85384fbb643e3508cce4625696ffedfb0f5d16c517a11ea1bdd1bff0b00000003000000000b0000000300000000f86a808402d8fce182c16f94652a38fa87f60a122aef360eeefcaf6258eddf6a80b844095ea7b30000000000000000000000000a6b1904369fe59e002ad0713ae89d4e3df5a7cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d808096c77cebc8ba97dbcb33a46b05001e3f26206f91c497007900507d8297919a5e042728715790ea437a06e937ffb322b65031db0ba633dcbe0351a1ca78a70c991cff0b00000003000000000b0000000300000000f86b1a8402d06b49830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080005ee956dfbd7ecdf8ca2c5fa9b5a21aedb2a425d4d1568032332b5ec3e689fa1988b83c9fc83a17142953dfcfd62d2e79c15f761b013b042537a77602933ddf1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f90a6e8204ae84019a762083023cc494709944a48caf83535e43471680fda4905fb3920a80b90a44437b91160000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000c52eea00154b4ff1ebbf8ba39fde37f1ac3b9fd46575f2c29a636fa55eaa8aa86706b6d3c33a21e0e79e1647259718dac070efc40000000000000000000000000000000000000000000000000000000066e140ab00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000937596f639e540000000000000000000000000000000000000000000000000000000000000004172b3eb5cd3fc78267d5672b9ad5317286aa8f3d66e55d866dcdbc9e5d1255c6d26535ad3d1b26b4b8fbc6bfe8cc543d3dd612138909a4aeb47117f908bbb30321c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000bc6471e88d8afe936a45beb8bd20a210ebef68221998d1c5e381c1edec0feec35e8bc3c9d7cb39ace96d9279b6f9a07a7ea454240000000000000000000000000000000000000000000000000000000066e140a800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000009463846edd3200000000000000000000000000000000000000000000000000000000000000004168362b70473277d046be65bc395f0b0c8b98173b46adb4192c6f4127df5d1867494705d3ceac8368afe2ece88a7545794f4e51fd431667febdddfd66a2b152aa1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000a924847354c551c79bae7e75529364ba0449e51a39001761c965b7719e6b39822f09c891d103009d2703a4989cf7bc2e007582fc0000000000000000000000000000000000000000000000000000000066e140ac00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000945b55a7e0000000000000000000000000000000000000000000000000000000000000000000413dc56655400801a9c210ecdecebbc3da45c92de696f13b97bf5e73b6044e27366fa1e651e74e5f57d6a610791ec51a8eb5f2e8c482a5b5e22f939c0f0b1eeb391c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000c9b494d3c6ea3fd42779df9a136db10374c98d80c7dd05baff9d2948c0f215ffa84c4de82694e959f2fa7b70f2f2a1f398381e900000000000000000000000000000000000000000000000000000000066e140af00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000009455be8a47413a000000000000000000000000000000000000000000000000000000000000004152452f2785fe8cc8876e4d7c70e6656fa7d2fd5d48d1ba751829ec73a2ac5a607e300939c863047c82dc39ad2e28db75546263bf6c8fa3aa3ae7009607e8db191c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e0000000000000000000000006b56e47dccfbc82d63df3da417d26e8b1b877f0f5d7cab00186de4dd836b0e3f89da0565a5a68597e1772792cd3c63dc4505d9bb0000000000000000000000000000000000000000000000000000000066e140a700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000093a95d5afc400000000000000000000000000000000000000000000000000000000000000000418ac1031836570d4ca35d6a2cbfc9e7cc8ee5da912831a8769c87b4b5df1b74604428cea4bc23413a82b246008ae57b93c1f917ab594b6c63c60b009db44cfe871c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e400aae33f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005750fe3cc44fb71eb6dcda12a40ba96a779ff3292e4ee0b83e480607fa18a253c25dc66d59c09b65362270bd4ba318502886dd51323d42cc672bb118a2f377d937701240fd1a97e184401c372d22d78050175399403b5fde50faf03bab1c7573ac1c918bd24675fed06d7c1ca44882492b3ae0462c3b0c6e7cae84702c2d9708be6812ce7d565ac54474e619953d3b2588ad818c5b7328ec16de6304fa43badee0000000000000000000000000000000000000000000000000000000082044d8080aa51d9561dc2f3f50bc646119dc5d2288be28526b01facb218bfe12777bb470b73d45a28e9f367be9c9ab1e9823735251e7c58ab8b527dd8864c32531d9ef4431cff0b0000000300000000f8723c8401a524808301d9779454c3ef8ce719ed72c2050ee42a05aca9e9aa1e1f8701c6bf52634000b8441d7df19100000000000000000000000030280ba7411118147b835ea31029481b01284175000000000000000000000000000000000000000000000000000000000000000182044d8080c4a02d3c640f35c2628bf24777bcb8157adac99f25a33a66aa0833e12e0692ba77820fa9aa795375809f045555ba5cc8167c7891ed03506dc2c67b64ee7112be1bff0b0000000300000000f86c81d28402625a00830110e194a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03580b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c768ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d80804660394e29ceeb7d28d161134a042cb966b23c6ed12f2bf645022ada6f27fc3143c01a84374564d949e10dc0df1c9c103f78651b831bd12482d8e3442f024a881cff0b0000000300000000f9048c1b8402c9f9b583138a26946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f090000000000000000000000000000000000000000000000000031329898bf72400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000990e21000000000000000000000000000000000000000000000000000f1b8b1e74b2040000000000000000000000000000000000000000000000000000000066e14f0200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000990e21000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080c52fcc136946cb5b9089d62a52d13d661c9588fb367523e6404b34932fc651fd108b70a62f080f0a280357b74a7eabc52b5b807bee6d4ee85f85bdffdce996441bff0b0000000300000000f8cb018402c9f9b58302724d940a6b1904369fe59e002ad0713ae89d4e3df5a7cf80b8a491695586000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003148e44ea107a00000000000000000000000000000000000000000000000000031167b0f044b80000000000000000000000000000000000000000000000000000000066ea7b6882044d8080c54a7d2f5e3aaa2f9e932ea0b5c6fbdb5166c3bb4226725e8cf0c5acbb677a637ce0e52990ef54755786e983d449c7c6adc824f57fe7a50f4960fba85ec8d44c1cfff86b198402c4c487830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d80805a91813eb1f40d2394eee6ad6410d547b8189e6be17bf23c90dbc1d01ba6edff103a22f55e0986304b0d36b367e905b3a5ecbf94755bb2670b563e25b6d174921cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9048c1a8402b3d0168313849b946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f0900000000000000000000000000000000000000000000000000313298f36971400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000991c85000000000000000000000000000000000000000000000000000f1cf6bcc4e4c20000000000000000000000000000000000000000000000000000000066e14f1a00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000991c85000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080f24aed3d22f15fbcc57fafe44d53a1a9e60f4ba51291fa4f22b53e20d79ddfea5553060fbced61fca5aa4d1d333d067b1c3904ecae9d9c71c47d5693a257e8cc1bff0b00000003000000000b00000003000000000b00000003000000000b0000000400000000f9044d81d38402faf08083052a5194b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e1422900000000000000000000000000000000000000000000000000000000000000030a000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc035000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708cdfc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e1480400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000004159610a05dec35ea87031acdfdc775d81b7d21424be26f4198d7963c054b6486102f7bb552f766607a24314a4d4674ec5a8b6cae07000ecc918b6ef1b92b1dad51c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000002a055b00000000000000000000000000000000000000000000000000042ae8f761201200000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ab07bd0ac2502a7fd0a5005b420b96f94104fcf800000000000000000000000000000000000000000000000000042ae8f761201282044d8080fa6c7ff44fb469090f7f796a4dd27d3dee25540259f1b8307ce80915f329281f1643255ab2b3498b2827900ca99996c2cf60c4e2b058cab244d2783263fc07c31bff0b00000003000000000b0000000300000000ee8308be728401a6ab2082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80808cae305056836f1b109e76a38a29a95e699ca239c636e820c5221cc0bfc1ae8e08b630842cda6c38fb50cbb4676c4a61e00b01f55b68f27f51123de8cffd652e1baae96a8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080d0a9dbdd118b85ea2dd4a860354598e348085c2c448ffe77b9b9ebfc87bbd4b3416de323e24a7e3ff04007cad827b524e6054943ac7f7d51942392f1c1b9199f1bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f2028402faf0808304e5ea941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5fb2f110de3cb09ff94ef99619912ce386a0f42d2f466e7d3e480d7129bacc121000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000a703654c31dd3bc26dff3c6ec524540c602380390000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d55656151777944734138474a4858594c794248344333565564504d6f5142474c457a3648476d423152696f5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2eb6584e3d4bfdae352806a3a5f344ad70fe77bacc930a7a40b925f409ffe4f4c8a88c6e07314b8a109757251949b0932d806ef8a608b54f8dee0f447ba37381c0000000000000000000000000000000000000000000000000000000000000082044d8080f2eed7742d047224403c36decbbc5c7a6f1bf7f67057cb078633cf30c96449ac7d2a665aba4252c99bba96742960a7228167514b354f24d9a97b6f5777197bb11cff0b00000003000000000b00000003000000000b0000000300000000e93a8402faf08082ef4094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080f512c7a6222205683b9012666c5455c998de80ca017dcae80b4b8353f2d9c6e7444e694afe71445e1f73011c9416982fcd2013de37f5a6356b62d4786b2e01dd1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be738401acc5a082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80800d61afecc903851650d8243af5e3ec20654db98d9c0fe14f7cdb86d9e50f2fd7188796e923b771c47a7674636d3a9b4e14fce759226a2445a470836e8aeb1fc31babf9014f830115528401f78a408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e1415a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000072fa529d46831fa4ea1365c0000000000000000000000000000000000000000ae065f41c16c30440f13ba800000082044d80806bfcacaee014344f6c6bf79fa3af76f7baf85705a22c6b6022aa3d2275044f515e385563fc9f791dd33b51658d81b061b0e582896fd33f745f00b4208500200a1cff0b00000003000000000b0000000300000000ec038402faf080827b0c945e809a85aa182a9921edd10a4163745bb3e362848704adcdf52b50068082044d808072e2f7ccdfbf0c9967dc8d2983a80a846f075f22068fc67764df88c72dfc3f206fa80b91470d803b7f94b181278d72809f042b83b4eb3b242998ac89f12491ee1caa0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000400000000e9768402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080f7c406958a3b283f040ba8e3b99e77961e478a6849858a513f9950fe2474271660a78cdff6ac241cd222b97a27685de4da616036e123ebe6947bc531590760df1bff0b0000000300000000f86c81d48402faf080830163f89437eaa0ef3549a5bb7d431be78a3d99bd360d19e580b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c76800000000000000000000000000000000000000000000000000000000000927c082044d8080e3b16d5bfd529eaefa4d8ad988900a3ac14748b9b787645fe42498619e4b85001f4ec92e43b5ccdd3e61780fee963ddf0fbaa9b6b7bde93e6e6bbda3abed8d811cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d8263678401ab7d80831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc651188000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e143f80000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000098176ab6ed58bc000000000000000000000000000000000000000000000000000000000000000082044d8080f44f214824c6406324f3caf06ca6aad692bfbce83fb69685723885047c1978a0009f698a2561f6fd301af75d83ba928ae9718dd2d175bee9e2a70260a91980151cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be748404cace8082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80802c732f67940b07b16d4ff7c2ed509c81df86e1aa948e04a97f4c1cc90de679a07a50c2c1df215261e32b211a422ec0cc62994adcc02962b201a058db5485e0661bab0b00000003000000000b0000000300000000ee8308be75840198ef8082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080365e902ec6677c927098c294ccd1808009bd6baacd6cc18272b1f8e4a3a88a940c88b52ac0c9568948d082d6298474169873f7fa0dc09bd1db8b6be09ec6016d1cab0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f86a1384018e412082b4cb94c5015b9d9161dca7e18e32f6f25c4ad850731fd480b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000003ddd14cefbe04ae482044d808090ed685bc17c39f23da886bec59a15265f557d06b5388c26f489d199e2c9dbbd4e5964f35d8272171d695b20f1aece1e56bad6a0f93b5992ff69f774527ac2751cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9088c1484026ccc90830c45a3941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b908642c57e884ba378f2fce937d7762985fbb68cb4ae55a699ae984949e2401b561a7327abe8f00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000003f2825e0ffd694adee76c9581fe707606074aa900000000000000000000000000000000000000000000000000006b01f2257e4a2000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000086d746f7073776170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863346639646134323361626336393237393937383338313533656131386631616266396435613938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd40000000000000000000000000000000000000000000000003ddd14cefbe04ae400000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084eedd56e1000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000001fac95eaffefc40000000000000000000000000000000000000000000000000007eb257abffbf1000000000000000000000000c4f9da423abc6927997838153ea18f1abf9d5a98000000000000000000000000000000000000000000000000000000000000000000000000000000006a000f20005980200259b80c51020030400010680000000000000000000000006a000f20005980200259b80c5102003040001068000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003db57d1396205f2f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e4e3ead59e0000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e5041000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000003db57d1396205f2f0000000000000000000000000000000000000000000000000006b01f2257e4a20000000000000000000000000000000000000000000000000006c16a70441813d770acd5d9f04dc897d42ce2f295f18700000000000000000000000000f2a81500000000000000000000000000000000000000000000000000000000000000008c208b7b5625d78deb49240ef28126cbe2738098100000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000240f6ad3ccf71abb3e12becf6b3d2a74c963859adcd00000140008401000000000b00000000000000000000000000000000000000000000000000000000c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e50410000000000000000000000000000000000000000000000000000000066ea7c4c0000000000000000000000000000000000000000000000003db57d1396205f2f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003cc5015b9d9161dca7e18e32f6f25c4ad850731fd4a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0354f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000004000040000ff000007000000000000000000000000000000000000000000000000000000002e1a7d4d0000000000000000000000000000000000000000000000000006c16a704418136a000f20005980200259b80c51020030400010680000002000000000ff04000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080d8991732646a94259a6feeec42e5a4fc65fd2a806c109c58b6da6c6b9aa175a024d45fb5eb3d774b1b9a50a6ee7dd40b8104d1caec3bdbe82885a18aea9308621bff0b0000000300000000f8b12e840263c1608304ac1194222228060e7efbb1d78bb5d454581910e39222228614edc409dd73b88432accbb900000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000246139ca80000000000000000000000000000532b4600bc0667326bbec62c1f55a4e962b21a782044d8080dd3a56e7bb40299dab4d821c8860cde90383a218003cf93ada19e6ac7762fbb2248a75809c92a48152c303d8197289a58956d0318ae6d816ba67054d954ad5181cff0b0000000300000000000000000000000000000000000000", + Expected: SequenceBatchesCalldataElderberry{ + Batches: []SequencedBatchElderberry{ + { + Transactions: common.FromHex("0x0b0000000300000000f9044e82674884017bf1a0830bcfc4948ff6508bdd71b535df073920c423e9eaee0b97af80b90424ec0ab6a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e0434ddf5273f71250a99c6fbcabfeca301de5f000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000001a45ae401dc0000000000000000000000000000000000000000000000000000000066e13be200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af00000000000000000000000000000000000000000000000000000000000652e10000000000000000000000000000000000000000000000000163adcee8b87f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000003d5320821bfca19fb0b5428f2c79d63bd5246f890000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13be20000000000000000000000000000000000000000000000000163adcee8b87f2000000000000000000000000000000000000000000000002e2103547d3748000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080f1f06050464bbe1899db8975029243860aae9dbc153f3d0bde4cbf423605c0f36b575d04708f9a517c2cfe3c6af0d379c30bca1097b252776609f3c2ef706d681bff0b0000000400000000f901ae82662284017bf1a08308fc58948ff6508bdd71b535df073920c423e9eaee0b97af80b90184b61d27f6000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000003d5320821bfca19fb0b5428f2c79d63bd5246f890000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13be200000000000000000000000000000000000000000000000001634a3fb8d2af5000000000000000000000000000000000000000000000002e14026ffdab72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80800fb8261fa1f177e41f88e7978b3cc48fe720a22ce153ad4bd88febf30f2bf8db3354cbb1d8a684aa733a0c9872a02c28dc350015d9ad47916a5e8d97b365ad8b1cff0b00000003000000000b0000000300000000f28231da84ee6b280082627094d20595ed0ed59d85d9359de5164b320a5c40fa6e875f9a48fae655c8840333e6b882044d80806ad649fc21c968300d2abebc5e256eafba5e069316dd680a6bb4feec0290e85b7d9831647c8d457a29b6efa64a88add3d0ab985436c7155238ed86435f30dc261bff0b00000003000000000b00000003000000000b0000000300000000f9010d821ed48401821fa88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009814ae9030c504000000000000000000000000000000000000000000000000000000000000000082044d8080f2c8fb37b8417e9a3d7245c8f428d932e87f43877e75b346c3d575a80700110b28ff4f9ac9d7882c8b61cf9929d2a20a8cb62d32aea89cbca06e3021eeaac3fd1cff0b00000003000000000b0000000300000000f903f23b8401620100830343f1941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f52e9f9451b39e2171a782aec26677586f35adc72ac984d0921cc7b9512c744e75000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000081f6b887657b679d9e23153ffcd703e1110102400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5867796855613343726552507448414d4c75314a6f47796d6d734b6a66676252464e4b5943644172364541570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004137eaeccfc1a481ec514bda2863333d34977c77f56e4033ea74cef4c22a748db0717b9d2961adbeab964a3963b682bcab163f2cec97eefd02c5df5b66a4e71b521b0000000000000000000000000000000000000000000000000000000000000082044d8080ea7294305dca446fc2918900c201f24486d75b33cafe6e2e8bf369218f229293230e8b67c0bd2b47182ab77ffbaed1d7763fc5705e306d776b0f8f8e86efd88d1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed5840166e3008307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d3e0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982adc32888842000000000000000000000000000000000000000000000000000000000000000082044d808067fffeed9f7553babaf6570c8a11233f004d0758170e5d23484c095da5ea282b08682443b3ea253139b3ac01977c0a758f081fd6cd614a24205c1d67cbd9afbf1bff0b00000003000000000b0000000300000000f902ee826181840189ad40830804df945523985926aa12ba58dc5ad00ddca99678d7227e80b902c484d61c970000000000000000000000000000000000000000000000000000000000000060000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d62000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000001a4c23a4c88000000000000000000000000000000000000000000000000000110d9316ec0009bdafe8da6cde01e6040b2d2187f6b67a297205ae12cbfe9485196bfa1b3a8374f9dd0dda9066451633b471b04af8ef8204abfe2693c8bf8c450bc20dcec28d300000000000000000000000063e99e508a9f2b6ed180811f80db90ce7417426c000000000000000000000000000000000000000000000000045f2a42a47981960000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000f02bbc9de6e443efdf3fc41851529c2c3b9e5e0c0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000447647691d000000000000000000000000000000000000000000000000045e1f2d2e761b0b00000000000000000000000063e99e508a9f2b6ed180811f80db90ce7417426c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000411e413bf834084915b547cc0d72d37e10a33d19426323e626c254fe8663b6984d4cc14841f43d8ca4842e10ab2fe3995cab429c30a54301522ea3a5a5272a91871b0000000000000000000000000000000000000000000000000000000000000082044d80804f5051f8a0057498cd6d2af0d1628a32348d13945f6bbdfd570b3544c7a08f8875aedee2be658959e23184a59bf6b92b43ee0fe5934f93f28b93ce4288de1f6a1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903ce82264a8405f5e1008307a120943348053b13e22b2717c742cd4a60f5040564a53080b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000d23aaa8116edf941e1aba78b113d7a670002ce4a0207020601080400030509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000023c2b0000000000000000000000000000000000000000000000000000000000023c316f00000000000000000000000000000000000000000000000000000000023c316f00000000000000000000000000000000000000000000000000000000023c5b7000000000000000000000000000000000000000000000000000000000023c7e8900000000000000000000000000000000000000000000000000000000023c828000000000000000000000000000000000000000000000000000000000023c954000000000000000000000000000000000000000000000000000000000023ca99000000000000000000000000000000000000000000000000000000000023f57ef00000000000000000000000000000000000000000000000000000000023f59fd0000000000000000000000000000000000000000000000000000000000000004650755b20d11b5cde1a5e1f721e10c74f5f078fac6800341d15be87da2e74a3c5acb65047658a523d0c57d88d94ca1d78f66ccd21b9b203f2df55700919e11bd2fbf684aea0d5dc6ef5cd78dc496afc655c627eb2e2da675143859fb439860329edfbc8fc5731ef33d3d50efcd525f27181b84a44fcf726ca066ebe622c15866000000000000000000000000000000000000000000000000000000000000000421bfca8453ac26e096cd1e78f31336665f46d385c6333d63a813a1bee82a0d97248c4d7624257e93bfbb42e7a8b901568660bea31df9cccf80f064263ac1977e495fb904f2b8477e6114f459116561463c2fb93122fffff08adf8c85aa5850f657c7fed085522823081dda81d1bd94235fc42fd1e70f70b38737760887e1ae0c82044d8080da940144b03a145e88a116e125b1a24eac784a85138a43a7bf4529d1e5fa33751fc270dd6380301802a94c1c6f1d398f5684f56ffd1d974231bcbabb1fe9ad791bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed684017eeb588307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d5c0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009824b00e503048000000000000000000000000000000000000000000000000000000000000000082044d80805a0f08064fc456e60e242cee4f20ecde976a51c7e1c1b1245922d15696c32cba65dbc28c8984d233552830250b4be646f523d65f1e686aa09b038769469d40ec1cff0b0000000300000000f8b12f840238e8a08304ac1194222228060e7efbb1d78bb5d454581910e392222286352f5cb5673bb88432accbb900000000000000000000000000000000000000000000000000000000000000af00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271bb7b9b0000000000000000000000000000d4ebba85fbd618d08c6911e6bea0e514280144682044d808080e4ceead86b43aca84d560e925df839a58fc08296edf87dc44985d38e1312113a39d3f053ece00a9741ef979d9b0457a11dc7b65ad04dc117ad9a49c52987901bff0b0000000300000000f13d84016caf608304443a94ee1727f5074e747716637e1776b7f7c7133f16b18732a5492d0cfb90841249c58b82044d80801633bcf1a8f14729079a42e6e7d86f2e304924ea015e3f1ddadefe9e31869263170df9e3efeb2ce79a7a320bcbcd31acf77e4d0a33fd4945f0d6724d688b88241cff0b000000040000ae44e94d8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080317339510effaa798bc532fa32187f09b40c9b5cd12ccbeb7f7ab3fd3c157e680721490b51e44c59435ea2cd2143d71ad2b6316ae19d4055cfcea37d7a2cb9eb1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d184018715308302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e0103ff5b7f4b338a8f977b35846aa7c01ed379000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001635044eda5700000000000000000000000000000000000000000000000000000000000000014760dfebac75f07fa46b8e87d9151b673b8e33d4710293497a4a5c9524aedc8882044d8080a3566b6ff106e89842dda24f38fbc6ee0a105588e63240914f04986798835bf030b2f4d65e86d43514d0c03ee84e5c46a84fc637ac927233674c4cf7effe31101cff0b00000003000000000b0000000300000000f9010d821ed78401754e688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d7a0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982405427dd941000000000000000000000000000000000000000000000000000000000000000082044d80808cdf22284f15949ea3fbb6eeff81ee87a198722c1f8f827b1ce98ca30138b756444a20bc97269e363da23b33ee1badcfe012964ab8e73ee9c70f6f4af5ae99351bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f902ac258402625a00830494ba94b89a6778d1efe7a5b7096757a21b810cc2886fa180b902843593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13c4b0000000000000000000000000000000000000000000000000000000000000002000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000376f2930000000000000000000000000000000000000000000000000057e3e6c76eb74600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000968980f6c8b41abeeadab481578614ad405f58890000000000000000000000000000000000000000000000000057e3e6c76eb74682044d8080388b027ca9400e25178e592726a62b4d39a6172d956bf11474ce49f65b0fa8a426f0e323ac7e8de7a4daa322ca42fa3c2cf66081047319341febcf2a8859af3b1cfff9028c208402625a008304932b94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000039bac84000000000000000000000000000000000000000000000000005b8731fffd99f800000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006ded4acd9fd87eec14f18b22e9046f000be0685a000000000000000000000000000000000000000000000000005b8731fffd99f882044d8080b53c40cb340c035c10a519f25f2de3fca0cd253015c28e7049b9d485ea98b1a5021c6938342e403283007f2ea6a9152a9089428f3fdee38461164b0fb89d690d1cfff9028c2e8402625a008305581d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000004710b280000000000000000000000000000000000000000000000000070a92a16ee367400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e3119ac2c91cf8e2ca81b54d757c166c53647a2b0000000000000000000000000000000000000000000000000070a92a16ee367482044d808008fd8af756bc9385919f74d9a9573a3581faf800c7999d51e834423a5daa4000067f947784576968c91ae28a653c76771a15035f088241705df3780d3cb9df1c1cfff9028c1e8402625a008305581d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b9026424856bc3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000047054780000000000000000000000000000000000000000000000000070971273bec4a100000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000018c4dce3c0172a5322aefc459d69e85957d387890000000000000000000000000000000000000000000000000070971273bec4a182044d8080ba9906ac2e50febe56442a09ea73b14880b4f418e30f891402dedfc36e18e57b3b7ef3466f11fcd657b0d99da14c32249962f8f505656ccf48f0a5fa85946c2d1cff0b0000000300000000e97b8402d112408255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080e2aeb5078a6bdcb30be8415f3bf338183d2b725380bb85cc21596c775e414b103b7de8fceeeb38b5089d6af9f7f4862f805c332651b87bd2c444f16180db50ad1cff0b0000000300000000f8b6028402c9ee9683024b46943a23f943181408eac424116af7b7790c94cb97a58701c6bf52634000b88800000182ad69fa4f0000000000000000000000000000000000000000000000000001c6bf52634000000000000000000000000000b675ed9441dd8ac6d3a206ab61357bcd47384c6c000000000000000000000000000000000000000000000000000000000000e70800000000000000000000000000000000000000000000000000000000000000cd82044d80808493c0e815b42ccfaf9a06a6ccf16f1e445a0412aab8f360dd19929adec226d2431b3cb925d2fc60b325d59f97e35b7b52ea4ef006860596f1b9d79afcf1d0181bfff9010d821ed884016548d88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13d980000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009815ae8ed77f3c000000000000000000000000000000000000000000000000000000000000000082044d80808cfb084863d1694fdd8775bf4fac4410b1b9cf98c1201ba0741106879be8d41f36ca97ecaa1eb058f23208921fcfdde1cf82299c336c2e9303c15865d9a036311bff0b0000000300000000ee8308be5e8403fcd02082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080a3271eeb3e1a9ca9fda4117e8abb72638a128fdce0cb2efb9ef2f870f60b2f672741f52279c993542e2b9d52d8961b2ce486f5498db46deb246b5916a379f8b61babf9014f8301154b84019853408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13b4200000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000007331f3647a294a90a1ca61c0000000000000000000000000000000000000000adf85b68ca582b83dd4bebe00000082044d8080b8cb2d6ac52d01ef955c17584d1abf7462b3014aedde6b0beeac237e3ff3bc104ae81fd1a2adbc78ec0681dfaf235f3ae18164c3af60a6f02dc9f6100818119f1bfff901ce82989884015445608305ea4c948ff6508bdd71b535df073920c423e9eaee0b97af80b901a4b61d27f60000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e13c6d00000000000000000000000000000000000000000000000001634ada69799d20000000000000000000000000000000000000000000000000000000000df1806400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080768c51f79db3186f54b0754da1b78ab5a79b6fdf23109910fd4cd6cd9d7f3c8c22e2c8aa620d0d71b4b842da4b0742a4e67da2a0df0aaa08b3cb5d4d1a5955931cfff9012f83018d5e840154456083069df4941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000023abcb82f468e3422a7212d4ad47cc2dd39162a30000000000000000000000000000000000000000000000000000000066e13c6e00000000000000000000000000000000000000000000000001634985c6047d20000000000000000000000000000000000000000000000000000000000df17315000000000000000000000000000000000000000000000000000000000000000082044d8080e56167524cec085263787a173ce728e393d5f361abcfcb92098b68de4fb3a7bc72ae91803810eaafb610b3c66b581c91c6474b137de853eacc2c8d7b73f5b8da1bff"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b0000000300000000f86b825b2a8401764c50830d57b69498d7c628086262ea7bd83a23ccbc72f8cd10cd8480b842d43b9dcbb61e6ccfbcfef9f21e1bb5064f1cb33f0503849c0ae884bfdc14dddeb7cae95494f3684148550102d6efe114c9b6058a20aab759e064f50544590914050382044d8080eed135980b8038da4e871a8e95e5644a40cb85fc3f97c42a3b8c9aeac897dad368eff35e0c6aa77b54885fbe3528e9b9a9e5193d3142d67226825f6e2b5fd8251bfff906ae8216d4840176a36c831396f094063bac84221b5b02b92ceb740ac129db0edfedc780b90684f740f3280000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000005e4e7d7ed2800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000d63b7691dd98fa89a2ea5e1604700489c585aa7b000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb140000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb1400000000000000000000000098299ead1cd04fbf1659799b14a559206f3ed165000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002b4f9a0e7fd2bf6067db6994cf12e4495df938e6e90001f4a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500006437eaa0ef3549a5bb7d431be78a3d99bd360d19e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000066ea75c3000000000000000000000000000000000000000000000000000000000000002b37eaa0ef3549a5bb7d431be78a3d99bd360d19e50001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080746ae602ceaec3387a089510db6ba15a6a45a6b60aeb564d2af783a2249308d935f550046db0988101d4d533b7d390b764e1bc7afc641fdd957f1c421e5c50491cff0b00000003000000000b0000000300000000ee8308be5f840158d94082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080fb504691bbf5c90ff09420f32385c4df07792dd1f0017568c765f1a180386bd54529e1b0819171dbced80e60b965c78a1afd887ad60450c0851fc4472a1aed711baaf8ee83019e5584019dd18083035f30945eb6b3db915d29fc624b8a0e42ac029e36a1d86b80b8c43161b7f60000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000012fb937557964d13c00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000001082044d8080bff5978438909bd3d0bf26d170678ba5ab948afebb9ed51824a16fca21bc2196068165970f68315889bcd05a63d9f7405722b2f0fdaceda25eb59c93b897e6d41cff0b0000000300000000f9028d818f840158d9408303a82b94678aa4bf4e210cf2166753e054d5b7c31cc7fa8680b902645ae401dc00000000000000000000000000000000000000000000000000000191dfe1d94000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000104b858183f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000004786e420000000000000000000000000000000000000000000000000070ec0f4c9ee97e000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000070ec0f4c9ee97e0000000000000000000000004abf4710e38fd914212ec0d30026d0fa9d51d40d0000000000000000000000000000000000000000000000000000000082044d8080d6fefcfe30a6a3903219dbcf5937bfd3ee6ee34564e643242a790393324905217ad5bb7e3950286ec8f627314e6e18d8715ac80379c8f7d36eda1672d0bb69481cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ed9840156dd708307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13db60000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8260d3d200c7d000000000000000000000000000000000000000000000000000000000000000082044d8080098be2bc098d407c1a9d7cadf5840c2c250e338538dc1ae0f5df4ed073f8a85414e47ece3ccc969f95ce9251738051c03ae40575075b9b4b4309210dcfbe44411cff0b00000003000000000b0000000300000000ee821a198401793280825be09482ce01bba0c29bf9b61dc9cfa7968b1e0891f5678702f89f754a380d8082044d8080b2c54612390fc975b7d024f6e8eed9942a73c0d2101ebb04df518e3744db33b4009c3b2e21252b7c462b71a2c34f8a40ca9f84bb30ab6fac7b692840b383dc481cab0b00000003000000000b0000000300000000f9070e8201138402d33c58831d10fc946b2c0c7be2048daa9b5527982c29f48062b34d5880b906e4b80c2f0900000000000000000000000000000000000000000000000000313282fe1a7140000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e5000000000000000000000000000000000000000000000000000000000025b4a900000000000000000000000000000000000000000000000000000000002548190000000000000000000000000000000000000000000000000000000066e1497b0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000006c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000025b4a9000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000018000000000000000000027109591b8a30c3a52256ea93e98da49ee43afa136a80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a5000000000000000000000000000000000000000000000000000000000000000100000000000000000000271007a42e9f31c1fb7c2056b040e55e35c2ea6744770000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e5000000000000000000000000000000000000000000000000000000000000000082044d808057853a22fce3f85fcdd486d18e841d491de09b35e2151168a3af8bd9352e5e616a70f07e3aad14a6760f82ccb45077001a395a1c9a5556c0d33241225108ab081bff0b00000003000000000b00000004000000000b00000003000000000b00000003000000000b0000000300000000f9010d821eda8401607a608307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13dd40000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981eaf19eb97c6000000000000000000000000000000000000000000000000000000000000000082044d8080bbaae2e5f840a60b75b397d51ffd3f6c648b7077d6d6091491237e9efb69d8c91620f7793c4dddb315cf997662a77b2c48cbbf881985c642d3cb63c4528a02b11bff0b00000003000000000b0000000300000000f02f8402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109875543df729c0000840333e82082044d8080e79b7308819654ce4d40697f7c1f044a00ec7796c73596957de663e9274d072a76e03b8eb9732d95e673501ed9cad4a63a32d33aa256caafc4f1867fb13eacc41cfff0268402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109873c6568f12e8000840333e82482044d80802cdb77771d166fa9140bd3ea0d17bdc5eeac3836d05d6144612c0434af52b5db2aeac6d0a8bdead3238ee12124dd9f387388ab5b52ab1100a1dadd6a8e9b740d1cfff01f8402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109874a9b6384488000840333e82382044d80806cd1e42d4d065497ce59e511d21e6d5819bf91ea9fa250786b757e0705f356eb5c43ae1da48a134429a5584590f1e4580d103310c3806cfde466a9c5231e35eb1cfff0218402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109873ff2e795f50000840333e82282044d808084e8d0f689fe1d5c190a4247b452a33fd6735de9d5f9f5003d8601d5b0c707d631c33cc82b2690e5df6efa0c2f44d68f62d47cd0922a94f802cdbedb115ee30a1cfff9018f830151d284018c1e408302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c201fab6ebde597669e39a9a69d724998e50b2f8000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000001630804d32c10000000000000000000000000000000000000000000000000000000000000001b75f9deb5f8d72d9cd3ea0037c11ac2401d310730bc692f37ec19861105e08c582044d808002793ca3270d2bdb8a4efb0eea532dec733de8f35e5a1c3f90bf185ed69c73a973cc8df40252607608de8728eb43d5e9fccbdabc4fce80c5d4fc858a36e928ad1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea81808402625a0082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d80808805469c3fb84413a35485f506012ad1a6820b80738b3bf685b1d6175b9dfc79397f9b692337a0f633040da8401f8a5fc53852106d916911af513ff271e4aa261bff0b00000003000000000b0000000300000000f9010d821edb84017a1ce08307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13df20000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c82f0c5cacca38000000000000000000000000000000000000000000000000000000000000000082044d8080baa772220471b8149d55e5a5ac2bfbdd12c03eaeec654e08d9c74ec43b63d12a469bb9de8bf8ff2cd2edd8926daf89b887df334862e623a68cdc3b90bf7ba7391cff0b0000000300000000f84a318401681b808312c61094ee1727f5074e747716637e1776b7f7c7133f16b180a4db006a750000000000000000000000000000000000000000000000000000000008f58afa82044d80809489b2c6a4c5dc17ec3ec50d299e487c996839ed4d26bcc4c07f910dc21a53c04ff08798dea40e018cbd296ffa623776cc5382be8e8964a7383b1c8b9717ba2b1bcf"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b00000001000000000b0000000300000000f86a228401681b8082b4e5940d1e753a25ebda689453309112904807625befbe80b844095ea7b30000000000000000000000006131b5fae19ea4f9d964eac0408e4408b66337b500000000000000000000000000000000000000000000000026e055297acfc7bb82044d80802d542b44996d63d0e2ee4f8063c5c21b00ed851ab3f63911b2e0d4f9422287497b5085cca5dab841c5406c9bca6745b50a28a543431c355ee63d7e469e7b72971bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903ce821bc68405f5e1008307a12094d83729a90474d6ae09502ee3c58485cef40ac87280b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000093136a0f83405fd54b230fa9778a13300002cdfe0409010405000602070308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000038408d1790000000000000000000000000000000000000000000000000000000384669fe00000000000000000000000000000000000000000000000000000000384669fe00000000000000000000000000000000000000000000000000000000384941d490000000000000000000000000000000000000000000000000000000384f1bda900000000000000000000000000000000000000000000000000000003850842c800000000000000000000000000000000000000000000000000000003851ac5b600000000000000000000000000000000000000000000000000000003851ac5b600000000000000000000000000000000000000000000000000000003853adfd00000000000000000000000000000000000000000000000000000000385578f900000000000000000000000000000000000000000000000000000000000000004208140e5e3dac54f5eb8cd8211adb203b85cc8f48b5d7d5768ecae9622df24a03866b2325c2c74955907e637e920627241ee7d4220e6aa6fe4b474fa0a1467c4ed42c8afac6f30478534bfd8a1b58ede8bfbef3d1908c0288a743fb6aeb7c12ae89fd84ca1a67ee72ea3d922c892a66e7caa0994879cace58eaf8e30ec0b641c000000000000000000000000000000000000000000000000000000000000000469aea40a060cd08cdc062fcb2e3a8b1b45faa0ff08b58607ff6941f18a2561184328d4b3414cda5fc8a80dcd28dee321564a1c1eaffabd2601892446321625b1324fff5e231ca6e5a020a57e4b2c8b83eac3067b76fcdfe8f990509b8bd6ba882f431699ec517fa2f99ea179d76f3f872438f6d787d9e6704c52145bc16b31b082044d808039cd808d19202040e8c498c2ab13bcdf3af0b148bac34a026b1925ccf02cdd89763a910a26e0d8c91449b9d39d62aa35f116b0f303de9ddbe0adb211226be4bf1bfff9010d821edc84015d46108307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e100000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c7fc160522df2f000000000000000000000000000000000000000000000000000000000000000082044d8080bc426dda601756b4851b479be56dca7cbdcaca215314342d4e5cbefc7caeaa3b2115f87f94ec752953f052e46ffb2dea9db847ebabf21a239845e387e5d24fad1bfff86c82011484014ca44082ebf49437eaa0ef3549a5bb7d431be78a3d99bd360d19e580b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000000000000000f0719a82044d8080511a80bfb3d3116410992606d87913954e8731ed90a5131f21de84e035939b8273d0b786dc03ce855c47f5af2ca93567b0db3ed5fddb3f6cf5c19f8930e7f9d11cfff903ce8222f28405f5e1008307a120942e8932d5662ad426fe335162b233680a524395ee80b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000086e0a443f1c658191e265ab8658a37b300000a6c0405010609000708030402000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000023b4b9200000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b749c00000000000000000000000000000000000000000000000000000000023b8a3900000000000000000000000000000000000000000000000000000000023bcb6800000000000000000000000000000000000000000000000000000000023cc1da00000000000000000000000000000000000000000000000000000000023db84b00000000000000000000000000000000000000000000000000000000023db84b00000000000000000000000000000000000000000000000000000000023f6bdf00000000000000000000000000000000000000000000000000000000000000043ff63dc58a98b2caba46ba7a58cfa6b0378efd7ffd05ca878dcb191d92a850679b626656e08c2977addd9799a357347e31d4965d125bbe06a7557899cbe5a7206c636624e5636f4f3d669960a863e778fc8a1d29779990238c08bc3a3f5df2908936ae2660fed387a6272501cd4e7f16a25ef0a5c05cce014666dacfb6e85cb0000000000000000000000000000000000000000000000000000000000000000456cd47dcbb6b4c21b5c5978aa6f26fdda9fc62555429ef0a40b98205fbd86617648c9b624b5c64efe94ed0c11d54cd14a1ef04c3bb18f4d0945a8e88ec84fd62470136dc0befd1267388d059cd270f7f0a706eded9d9d4c6f4578fa869525ef45073a43bb30b1cbaa3f4affad5b05288b4e0a8f0724deba4e6024f235cd711f182044d8080bf100f793640914b3157343b839411911773ed9a2a463b79f1ae0d6295f64f3f105d96335e24c7519de149fb1767d2c21c25f7ff0718c9ac0acd017449d799141bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f870058401a17b0082bd6194555a64968e4803e27669d64e349ef3d18fca089586b1aca8f532dab844e56461ad000000000000000000000000000000000000000000000000000000000000a4b10000000000000000000000006587b69f97af1c9e91455401cd3ea5594590bbf982044d8080fccdafcb3644954a5a889c5a673c6180b646da17f832cd853a74a6c2413cd51169f1cfabe17e29cdaebbcfd961d06fb56bb2da7b4b11f7cbaf137e84ec327a9f1cfff03284015be680828d9794a06e1351e2fd2d45b5d35633ca7ecf328684a109878a6f0ad96bd73e840333e8c682044d8080f16b6fa1af75307cdea0f6fa7170d8c353bbdc1af5099bd4b4b69f1ee48a4aba2fecbab3e4eeda03128b8308f6becfd6fddee743bde4b24bc7fe32fc0c9fee2a1bff0b00000003000000000b0000000300000000f903ce8222f38405f5e1008307a120940e7197e7200a706e4b8e0ecfd39ef8c45cff142280b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000b62c61f914e58e40747a3fd731525dd20002ce3b0308090106020403070005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000003e5e21b4000000000000000000000000000000000000000000000000000000003e5e21b4000000000000000000000000000000000000000000000000000000003e5e33a8000000000000000000000000000000000000000000000000000000003e5e6e40000000000000000000000000000000000000000000000000000000003e5f4130000000000000000000000000000000000000000000000000000000003e5f4130000000000000000000000000000000000000000000000000000000003e5f5904000000000000000000000000000000000000000000000000000000003e5f5904000000000000000000000000000000000000000000000000000000003e60a0c0000000000000000000000000000000000000000000000000000000003e60a0c0000000000000000000000000000000000000000000000000000000000000000427c6181796e378ecce0eb4756eb5cb3cb22c2f5c31ec76afbb61cdfc9f96c2999ac5dc98c1619fa6401ffa39d5343d7d5b3d32c7c84f294e8caea56fbd7912240fd00d9938f0a0f896ad6a9aaaad9ec782ae47546019d0b2bd0be88287821fe235539a12cc61ddf8f127b192a2724d095088635a3acaded33c14f154ca65ead300000000000000000000000000000000000000000000000000000000000000040217a78ca7b9fc8eed7813085e982f6e8d699f8d548699c4c401f9b74f2bce452d0d3f0f47a6220d36ac59f3c8cddaf9a270e932a234e473bb8507e1a7bd5b6b33cce711f84eaeda3afd58b99e2149fd24ec6aa607bae119a4b358c204fd90b6414015a5b4d6efe234bfb3d0e3b2e1042364cce80bf3286ea367d06ad7f0e27282044d808072d67c06cd88db7a351633d59042a3909e3564f6d707240357850526ee6c561a60ce10685dec1ad08cde99aaa47a3bcbd8f7bc647e08375d873f7a2584478b391cff0b0000000400000000ee8308be6084044f35e082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080813ec45766e4b4c8838d0f69507e663a3ae1280bc1021a063d71381ecd29f84302e1bcc769c6d76488c0346c2069ad8d142fcbdeb8a15ec4f729a2a14c0515141caa0b0000000300000000f9064e82011584016fbca0831143e7941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b90624ca360ae0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000631cd561b0c80000000000000000000000000000000000000000000000000017769505dbc5db0000000000000000000000000000000000000000000000000000000066e5304f0000000000000000000000000000000000000000000000000017769505dbc5db0000000000000000000000000000000000000000000000000000000066e5304f000000000000000000000000bd72882120508518fcba2ae58e134ecead18d979000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d5640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039400c73445066cf0991b56490031d9a8241645cd8c8532c84dccfc1a95f295600000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002fa5fcc93ac9b373ef0065708330f7cac493fea70000000000000000000000000000000000000000000000000017dfac08f2f2400000000000000000000000000000000000000000000000000000000000002105000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003686f700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6a756d7065722e65786368616e676500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0719a00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001a42646478b00000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000000000000000000000000000000000000000f0719a000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000017dfac08f2f2400000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000b20237eaa0ef3549a5bb7d431be78a3d99bd360d19e501ffff01849c0ae884bfdc14dddeb7cae95494f3684148550157bffa72db682f7eb6c132dae03ff36bbeb0c45901a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03501ffff019f37552b87b68e7f169c442d595c1be7a0f03b920057bffa72db682f7eb6c132dae03ff36bbeb0c459014f9a0e7fd2bf6067db6994cf12e4495df938e6e901ffff02001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80802787b973f4d54062c810118dd824524f22139a2f95fc0c1847abfa0251e073ab71313f805daf772a06c1873d8390356030408d7cfaef18b7200e9f246c2012e41bff0b0000000300000000f9028e82393b843b9aca00830667f8943a464f746d23ab22155710f44db16dca53e0775e80b902647c39d130000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012700000010000000100000001000000127000000000000000000000010000001170000000000000000000000006119e37bd66406a1db74920ac79c15fb8411ba76c46702575bb24a61a3c6674a33b1c536418d418d7a2a5454760d0425f62a69690005804c0f4171353a8d70c267c85f228b5795422bb97e8701f57060b3afcacbda96828451185401ac923c55ed67ced54306dd4b6391546b221f111a5a62b01bc3c144011bb991df3e06a3f746ab38f98556f8e11b36c05ceb94aad204dffa5c664e9bd463791cf2b3fe4687153754968af9bcd9a70b8d25d31afef5e268e9aabb50aadf7d1ce0391fbf3eb6e6cf69572dd19bf6fc5081a462f752638d846b9d0862a6cc1dd706aadce7a16fa076ac160a7a7e59233f0659153b2efe2c60c5f302eb7cddaa4a1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008d030005804c000827500000000000000000000000003ddc189d48a792d2c6262d20aa0f9f78e88a9d470000044d0000000000000000000000006ae540f1c3a96a8628d52b416ec1bf72932f83fe0000000000000000000000000000000000000000000000000000000001c9c409000000000000000000000000d2799cd96798074f709423369bf2fea60392852a0000000000000000000000000000000000000082044d80805b9b901758bfbabee0b9f3477ea901ad9b36199c881c5fbcb1fa4d241495f353045c800c11c133aab3e1fe1dd8de12d11392a42fffef25507c70ded109ad73891bffee8308be6184014b1da082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080406d26cc0725e8e4ec416f42fd563433cafed607432c1bf19783e749e2a8ad8939ea1ad189a766c6759c4a5210377b7cf68cff953b4447bf715010dba204d3dd1cab0b00000003000000000b00000003000000000b0000000300000000f9024f830151d384016c3a308305cae894555a64968e4803e27669d64e349ef3d18fca089580b902240ddedd8400000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000001ee4c000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000662d6dda64cfc7fc21d2b1005f406e984a178d4b0000000000000000000000009478dcdb5e5c190fb37f70358585430e1bb1168e000000000000000000000000199bee3bc56add7f1a6ad1995002730de45886d60000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000015b9a6cdab510000000000000000000000000000000000000000000000000000168458403b1f00000000000000000000000000000000000000000000000000001377a57a748600000000000000000000000000000000000000000000000000000000000000039dfb46e76740a84405448ea66a1d95618c9528481cd2730100d191ce78a360a487e98381ed3d5acc9ec5f7f31382ed1c794017648b3c7d25e8a8818173a65b8e690d56cc7f2e91fb3994a585e6553c4ce62cda42398be3ba59f1bd342f43dc4f82044d8080ea85b1543ba847d93e70fb47b0750c5197ebdf75f4efa28b37da97e41e68c12a57b1de35882e372f52bf5a16179a4ac2e453025d3b4731b212be3c2ddb3354b71cfff908cc2384016fbca083053197946131b5fae19ea4f9d964eac0408e4408b66337b580b908a4e21fd0e900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000f91f8300f8200f43eecf89e7229f257f085ecad50000000000000000000000000000000000000000000000000000000066e1407c00000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004063407a490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca300000000000000000000000058684788c718d0cfec837ff65adda6c8721fe1e90000000000000000000000000d1e753a25ebda689453309112904807625befbe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000000000000000000000000000026e055297acfc7bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060a4587899c58e7cc2e54303188f56acecaea4779400000000000000001388000100000000000000000000000076ae48a40000000000000000000712ecdbf54b4d00000000000000000000000048b8419b2bc0fb63ee96e3a370e30b200cc2e6720000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000f91f8300f8200f43eecf89e7229f257f085ecad500000000000000000000000000000000000000000000000026e055297acfc7bb00000000000000000000000000000000000000000000000000070f4daa5dc3780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000f4a1d7fdf4890be35e71f3e0bbc4a0ec377eca3000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000026e055297acfc7bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022e7b22536f75726365223a22446566694c6c616d61222c22416d6f756e74496e555344223a22342e353935383138333735373437393135222c22416d6f756e744f7574555344223a22342e363531333730393136353932343332222c22526566657272616c223a22222c22466c616773223a302c22416d6f756e744f7574223a2231393931313333333438383432333137222c2254696d657374616d70223a313732363033363934302c22496e74656772697479496e666f223a7b224b65794944223a2231222c225369676e6174757265223a224968587873792f325642344f4a6366357074564f4a524472566676336c7941426173386e4e3151446e537770426b384765546b6d79637532347a4d4f58535a6b5059672b4d53394a6374336c79587745766b3679382b572b6b303643332b6b4369753337654d49484b47436c6136742f7377416b72625773337177322f474378536639325973353038754f764e6446624f5877705a6c3374794d30745833574a724c616551426c4d42466b77664f5632445168596c32716e41494e344563655a574c4a456a555865417545694a62685a39534844312b76746a4b457452355056796a4472727563476b54634d35745739523549755653554f754e6434632f39766c537269343569464234456f37316e424931624d2b446e78495837563137792b41634d6d585235336d7a685645476b59647848745a6e706f336b776f683841356751786148433678362f4a4d6e56686a5049716877673d3d227d7d00000000000000000000000000000000000082044d80802ca8348995a238faba4d03fc97638947ea65044c08547e8bb931231fb982886b1e4851515149a0b4f1e5131cf5f123de352c7172839852eef079aeb26bdcba361cff0b0000000300000000f86a0b84014b1da082b4cb94c5015b9d9161dca7e18e32f6f25c4ad850731fd480b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000098dbf0792f215d3882044d8080e1a347db720494ebbc892aefb0db8be1c1a4f61b3310d9528abde1ae2ee1cdde24efc0ecb27d55991eb644ba770a91c52ab8e69616ae78fdd3557d4c7122fec91cfff8b10784014b1da0830151b3942a66b9c88caebe9aefc4ecd7b5e7e60881f7e15c860d18c2e28000b884056b01ce00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000007ce66c50e2840000000000000000000000000000000000000000000000000000000000000000000a63727970746f72616e6b0000000000000000000000000000000000000000000082044d8080cf67643e57fe0e3d537c2c8fe40440a97de31e6606b6968a34ce382900b587c128946d1e7505038bf50427502088c8de36e7ebe911171ce1288c5bec04d91f521cff0b00000003000000000b0000000300000000ea10840c49018d830135909468c89f28d223be23967480c06057d22b3400293580845646c6b982044d808002b9b94c0a76cc3e16e09a8b9e9506f4d3f57ab9e8932717c80659bcc9837d0e631d462ca21abb98fd5a0c63877e2d59a8d332c10d30569ced47e5924f2100ef1cff0b00000003000000000b0000000300000000f9068c0c8401e915ba8307f1fc941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b906642c57e88435f1a3a9536b95a72ff7601f7df30a5b8da95a0580587d62f17457034d663d6400000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002ac8900f549d90f11aa593db90a0fb57e753b805000000000000000000000000000000000000000000000000001087372423cc6f000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000086d746f7073776170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863346639646134323361626336393237393937383338313533656131386631616266396435613938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd400000000000000000000000000000000000000000000000098dbf0792f215d3800000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084eedd56e1000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000004e438d8deb1321000000000000000000000000000000000000000000000000001390e3637ac4c8000000000000000000000000c4f9da423abc6927997838153ea18f1abf9d5a980000000000000000000000000000000000000000000000000000000000000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c45900000000000000000000000057bffa72db682f7eb6c132dae03ff36bbeb0c459000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000987a1c083dbb854f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e42646478b000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000987a1c083dbb854f000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000001087372423cc6f0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f402c5015b9d9161dca7e18e32f6f25c4ad850731fd401ffff019bc342259cceda0487e70b71a3161f002a95f0e80057bffa72db682f7eb6c132dae03ff36bbeb0c45901a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03501ffff01ca06375be938a2d6ef311dfafab7e326d55d23cc0057bffa72db682f7eb6c132dae03ff36bbeb0c459011e4a5963abfd975d8c9021ce480b42188849d41d01ffff01337af062ce32bb423010415196e315c4154d36c30157bffa72db682f7eb6c132dae03ff36bbeb0c459014f9a0e7fd2bf6067db6994cf12e4495df938e6e901ffff02001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000000000000000000000000000000000000082044d808097c0b85dae5e497dc2def38b73fa7db167176b675e1ca0b9b5fb7acdaed7d33b3b01365195f76cdb02373c4d9553f9e6093d77ef79fb4980b74383688d7a06951bfff903f22f8401c9c38083048020941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5ab9c89ffcc1119514c1b92d64eb03aa97ed8fd52866dcd07383c2c7d4af347a5000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000009e47fbb2a2a27b3b02e4a63b3ef5a3dc863c02230000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d52696a487341633572727a65414e584d735334725a68555a6b576e35386151384a6776523832786a4351374d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418824be9a966bd0478025bd02a796118c2fb8a23756cbbc2f82d61314f9c6d9d3341db0d02c63f9530b2ecc581ecec5acc10a6ff8a641d52071a0ff8421ce59701b0000000000000000000000000000000000000000000000000000000000000082044d80807034d54692cf1b649157e81c0bdf66632633f6485cdf329ceefb5d55042d38760b6da7e01b7a770f453bec69609332f517ac66c5e4b7798e75abef875a3791651cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f902d3138402625a008305aaaa947481c16e7782608ccba70029c0fd41d78aa6b56e87027ca57357c000b902a43593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13d1100000000000000000000000000000000000000000000000000000000000000020b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000027ca57357c0000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000027ca57357c000000000000000000000000000000000000000000000000000000000000018d0f800000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424f9a0e7fd2bf6067db6994cf12e4495df938e6e9000bb81e4a5963abfd975d8c9021ce480b42188849d41d000064a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000082044d80803baf44841d975b6bc565ace7c443e7ae7d9ddac53580a8a85ae9ed88c26907ee1e81aed1a48561a8238e7476616c026622e9e207b4a337dff4e87be321a5c4f41cff0b00000003000000000b0000000300000000f903f38190840189ad4083034cca941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53796b8092eeb16d8bd97e1af7a200666a05419e70bad6c72d92f0e2af24f0d5c000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000013988cef5721a77e9a873b9c988559abd698516a0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065a6572696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5441676266396a785343475176785a476e6576435437394c334d7258794d6d35715957687a68476d3646586b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f95331b37d73776f15d46c38bdbe349eccc9f1f7928fb41f54b8fb9fd5228843643976c760da92db0f41c7b1506e1fc66bbb01f8b2dc70e5a96ce3cd0502b5351c0000000000000000000000000000000000000000000000000000000000000082044d808081ad4be405410a00887985f909b52ceefbf5b7414500559946678f167ec95b646c37fff789b69860bb5850da757344ac27d1c45c9b8c4374d7eafbe2d3d8b9141bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ec39840175d72082520894e4edb277e41dc89ab076a1f049f4a3efa700bce88705692911fe533b8082044d808000315fc52bc3d2f4aea5fd2de0229fae82cd273efe66b698c4ea990e20b60fde5ad8c57f6f5748d6b2709cc620626f50e34a577e7b30bbc2fbfbe8342793af081caa0b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea2c840d42700b83013590948418962b8e0c95f386f89415d99883cd52226f808084fec0921482044d8080783253c33c7b79ecb24aa939f976a21069d7837a666da00eb8a2eacb5298d4457566c70d92178084f27c8538eab68e46df3d914512fdb1032ae5933071f699541bff0b0000000300000000f9014f8301154c8401b021008305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13c3100000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000733f79f5a91ea2abe3e50940000000000000000000000000000000000000000ae01687505aa45399c5393c00000082044d8080da4584b7d6fc09c1e15ad4cdc966ebede2301b221fe74a64f3b4b077c6b7d2bf2d38c74317a7901d41676c66859e0e26b28a4ce29ac544f67d8d2cb8b503e0481bff0b00000003000000000b00000003000000000b0000000300000000f903f381978401681b8083030015941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5e88a8ba0ef0f81c929520cdcdfaabfaa6b722c4048cec8c493456ad0ab0c325d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000007df220262a4c9ca1fa9b7224bc6f7f4572a892cc0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d506f336736676d4a72386d6b6467384a57764859576b4659486d4b47485777436d425175473276416a44315300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041bdf0d198c5f6ad13e9fb6c891a05b67ccced70655831525ee9febd3c21cb33595c536eb39f577fae252fb903477529ee1d4a5d15ae9731d06543a56bfe1fecdd1b0000000000000000000000000000000000000000000000000000000000000082044d80809de5af8deb33a1a58f32c6dcdac7c610ff048603e566c8cd0cb4fd54b65a38934d59fdd44897d94a3be46fca792bd7a75e88e363289921a8c1096967b30b62441cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea818b8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080612819e135e75602473c7c42e3a2fe293cf9e99ce22373be8ea63724f3381f6f746b65a1f24f8f3abf355f4c8dacdb2b96b48befa479cc96881163cc827e14841bff0b0000000300000000f903f2348401745080830343f1941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f545b5e3028d7045b7f9dea45daaa86de008257fba39d272d868c9d8edaf813fb4000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000005f9c7447129fa10af4cb51e24be323abff1759e50000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5138456f61454658787954393331636d42684653426447486168444d684d353473484b4a745a417072507168000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414b2ae38ceaeb1af116941ed4ec6eb66a86116d4d08a4920ac07d1feaa8ee607d6d5b635040118c5c37fa9f05b6c8a4cc07c3619a8c0def6821827ee9539530e81c0000000000000000000000000000000000000000000000000000000000000082044d80805aaeda75850432083fdb91bd4b910a0850c50f29c6a81e7f5661c0a0e19c2b282a15c71aeaa646bec001c6421af6b380d7321cdec496258e1a893529de2fa4621cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be62840418476082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080b7a139b28d8c5192cab1a5c55a8efcc93cebddfcdb1a0376188144df587e57b1302f1ec53be25bc03bf9fd84b1bc298006b6d0a3b4cb296342bcabd8254f9a4c1bab0b0000000300000000f8f108840174508083034de3942a66b9c88caebe9aefc4ecd7b5e7e60881f7e15c86a0285cf72142b8c4d559ccbb00000000000000000000000000000000000000000000000000000000000009dd000000000000000000000000422f746a9d5b73e25d41dcc18fc1ea09da88ee2a0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a63727970746f72616e6b0000000000000000000000000000000000000000000082044d8080463a0e84cc018410c62c0f6cb7a9055556b94cf37fb5363e004e2952831ee3a109837118f4ea90e6753e6f16dc192a72053fc655a789d15767496bcdd45e5b961cff0b0000000300000000ee8308be63840169a22082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080dcada0e0a24e607958874f9206c0a0540fa170176d694c6c1d0546eb6d1b787b4b63a62905b6a8b302168d6a12fdec6a5c89b10ddadabd6ccf3d0f099ac835271babf28231db84ee6b280082627094580b1a559eca8c875381251f291f96777ef3af89871715c995317000840333e95a82044d8080f5a183cd5ecb9ccfb91a8c22d2a14191a32c2325742e13b48b8ab6d2b1ac8af65a2dda29b70368485ae17017f0c8570850b37600fc668c6547aa69cde7e2f6721cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e90284015752a08255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080aeb52a12273e7d18d4d61292b972b9cc460236c359d0b290d7440e6a9891e8f37ef89ab59bdaed7e90a33fd03dce86ee855f91a6afe8515009b4dc2542fc315d1bff0b00000004000000000b00000003000000000b00000003000000000b0000000300000000f9010d821edd84016bb1788307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ee20000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8390bcde7c066000000000000000000000000000000000000000000000000000000000000000082044d808030d0dce5dce8bd5dac0a2de99f3a997bc9b2720b37e0c916d521614aa96b2b295d3ed3ff7c6be137f9e895f4a0736de165dc14c87878a1d8b01222026689675c1cff"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b0000000200000000f9010d821ede84016ee5c88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e4c0000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c805935ba60ef3000000000000000000000000000000000000000000000000000000000000000082044d8080e6523db0d8d9f0fc01b8d28d354646bb37ee3a01d94299baf62a3f0513c1cd5b4706f80c68a13689d843d784ccbad2a69c049b87cf72f7a244bab58b25d3f2ad1bfff9010d821edf8401721a188307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13e6a0000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c7f7976b336093000000000000000000000000000000000000000000000000000000000000000082044d80805f7ba49687fc0feb05f0fb1b46b605610f94161628bb0d78a593085bb2d6328d67d03a13c5f7b0d080fc8585f1dc01eb567f4ec6dc22fe372d0dad7b2057b3aa1bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000eb82013a8402625a0082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080a1e4294a95f81c0195243e271861ea2cda2b25132a4e4866cb58deb993128035280b82205bf5f93e6cd481ea9ce1b4408428898fc5813bd8bf58df3199de169f1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e9028402d301b68255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d80803516937610ade172676e6ab42573bbde2ba8b143b82c019640b2c41168bc7e445254048ff8978b561f0a95d2d71f4da3d8c67c7f05cc90ed9521cd01e6da0c2a1bff0b0000000400000000f903ce8226f38405f5e1008307a1209467d0809ada627ab5bd623640332a2f370b2c906f80b903a4c9807539000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000084049d6baf6f3253bbdf284da6b5d1370002ce300301000706050902030408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000005f5b5a40000000000000000000000000000000000000000000000000000000005f5b6080000000000000000000000000000000000000000000000000000000005f5b6080000000000000000000000000000000000000000000000000000000005f5cb840000000000000000000000000000000000000000000000000000000005f5ce0f0000000000000000000000000000000000000000000000000000000005f5dcbb0000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd180000000000000000000000000000000000000000000000000000000005f5dd18000000000000000000000000000000000000000000000000000000000000000420f5d5e5132ac16831c0c420b2e4348553e2835cf6b7764eefb1908997cc8501dfcf180d7ad72bf3313f016313fe7aa3a134b06b53f4f2317a74b5455878011a986cc2fd0b3eb2e32ac671e13fe59db59688a1f49fd71fc5ea1de3162975a6cd243ab73d9dfb19ed57b626487e0e8d4192de45e5084083cd1a03aeb6b004776b00000000000000000000000000000000000000000000000000000000000000046545e8567be21ffb54df1c55b30908e62cae7ab7acbd840698e425e4b4999ea36d28dd45cd30a8ed96f05762d723d83130ace27284c9bc868bb8f1ccae6726f731b09fe696a4b676a0cfdce2a8d0d58fd9d4aeb116110fe1918a8b4f403db20b35b9625924384aa070bbc25c7c24c2f2f39577af4e2bbbd2699560ee129687ad82044d8080270674afad2582de39abcfe1cb19d8243b9f6d31ac6df02257ee13e2d558e4961656fa5e782a66d6f59ff6881448d38b61fd630bffc81442ce9575081c9ea1be1cff0b00000003000000000b0000000300000000f901ef830151d4840154ba908304aaf894555a64968e4803e27669d64e349ef3d18fca089580b901c40ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000002557c000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000020000000000000000000000001757ee1ca5541182d242027a734cefb3d6a745fa0000000000000000000000008cb1d12040c282ce84f851763e2befc48a0810b10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000015705520846800000000000000000000000000000000000000000000000000001563c0e8ed6a00000000000000000000000000000000000000000000000000000000000000022bbc5cbbf99c0d37f3d2aae6daf5a4d7dfa26f8ad4ea658ceeacd1d16bea82961cb86c8ae18cd27416d0782aff31adf25117d75b85cac5c410df5b8de615c70a82044d808017f2d6241834bf9550f7264c42b27a3d05a2a8fb5315b9d82791edbaac56107a5c926d96702e5c401424c34f351eb84109cafe915de7d7d26636ea9806a814801bff0b00000003000000000b00000003000000000b0000000300000000f86b208408a4f1f8830156219468286607a1d43602d880d349187c3c48c0fd05e680b844095ea7b3000000000000000000000000c8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a100000000000000000000000000000000000000000000000585333fe46a1a1a6c82044d80806b533a403af42468742ae5f3efdc12daf9bd38dfa3059924cd35e9d2d2a377444acf354174f9ca1f414ccedd2e434e0b433ff872f60a20da007ed0f80458d5851bff0b0000000300000000f8b12784021c58208304ac1194222228060e7efbb1d78bb5d454581910e392222286119763fd5872b88432accbb9000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cbba106e000000000000000000000000000f78c3faf2046813f12fe6652ff952b2ba6ba845a82044d80808f22f2de07105da8d5d9dc8edb193fd108c8fd3c4858dc20a23e09acb3995eec3dbd05a55530b38f6b4fd7a1416914f04f13fa6c25bc4b1397a784abe13b15f71cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000eb82013b8402625a00828d4594b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080a54a20ef6241a24e66579a016490ddaa20ac5237cc3920240bea379f56c5f16519284d19c65b19253e95a448bc53b8e8674d4904eca64bfa9d6804a0b21462ec1cff0b00000003000000000b0000000300000000f903f26a840174508083030015941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5445b43df8087dc5aea1da71e16e6be5db16a5a065bb35fc5a7561c4fba8bf78d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000009cc2cb595f85c9d1c527996555e21327fb5e47440000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d51715667374e78715a51573550667737417932774a76486a445748577937624a6b567659667974754b47774400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041cf056d549f465af9b6e55e1dc4762e9790374b2bb1e47bf465dff9a977521b291acfbd54361ebf15ca703a29f98ed7de9fcc1739d17123b634f88b24e1e3f5751b0000000000000000000000000000000000000000000000000000000000000082044d8080a67e87448e21458f2e0daa72470c7b3aba821cd5b07d4128054d5ea267941bf06cd1939cada4bb72f53fdbf3f479a9eada26885bb585c42ea28031f4c04c4a2e1cff0b00000003000000000b00000003000000000b0000000300000000f903f2258402d6b0f38309105c941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f57434eed86a2209cb61008d35514b33b5b56d69aa8d6051dcbf2adda360fd7abb000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000132239919653064455f78e683c365bdcefa8bb3d0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d52663166534d787a51314b54654d5a4866657635706d736e61724a76725359784a6b7667393973334e7a4c6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004192bbfc4d495eb5a1784f3ff5109e78c2be43fed9874388b78bfa25c3224866d51712a636189146f18ec716c2ddcde6c64df64fe8f2936fc5da46ca656cff2aec1b0000000000000000000000000000000000000000000000000000000000000082044d808084ffe2036a8fa6ea7499f4346870a19b84fc74158e7aa047eb67cc820563e9df5eceae53db779c5ed39afa1177f3a62d9bec678fc3e4bf5ad4bca0a53d6fb9ee1bff0b00000003000000000b00000003000000000b0000000300000000ee81a68402625a00827b0c94009905bf008cca637185eeafe8f51bb56dd2aca7880429d069189e00008082044d80801b0200bc64259973edb845427dee669bba37b97e3ce801142133f133aa7a77e46719187d4f3d66ad9e37983725da1a3061178b2360912a0616e94c51a34bb7161caa0b0000000300000000f9010d821ee084018bbc988307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13f3c0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009832b42064d1b7000000000000000000000000000000000000000000000000000000000000000082044d8080dcd2ef6ffc64607c3e8228e4a11c5ed700b6b617bb7a7622c9a6577c7e2aff874f66acc28f4e6a4ab30d106a7a2286af17a28eb5d2402c5552d0c9520d20d6901cfff9010d821ee184018553f88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ea60000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c8198f0b7fc618000000000000000000000000000000000000000000000000000000000000000082044d8080c12153878eadcd2d15c857ef2792e9fc2db5d3bd6c27ae891ab4f16a25ba7294600e03e412be6aa0a2c4f040d26eb1242d254843ccea87ed5f696ce1699258941bfff9010d821ee284016ee5c88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13ec40000000000000000000000000000000000000000000000000000000011e1a30000000000000000000000000000000000000000000000000001c82e8c66cbf1a6000000000000000000000000000000000000000000000000000000000000000082044d8080fddf91e72906765982df34a767d163cbbd0c0b347658ab56a0a3a04cc1f14e124cc53b90924519309db15d1dd1fd2b1e575beb4bcc8cea65e68b054f9296ba4f1cfff9014f8301154d8401c445408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13ce600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731958d2d429ea51c49f3b00000000000000000000000000000000000000000adf463a3704377c3ee8d91680000082044d8080545c76198bc384464dea22db921db86fb5648d1e859861a5d0eae70a2e46b75132b3c7d6c8988a27fd2b269cf097d4199ff2d2ee0dd71d759c097df85d7c47e21cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be64840413b38082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80801b1380301ae8db0eb3f94243c29ebe663ed4dad76f4affbbd516cef3379933ee0924b271cc7c68abbe2a716e18c485712d126d9e0897e17bc99739b86a98f9601bab0b00000003000000000b0000000300000000ee8308be6584015be68082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80808912439f3a0301bb9fe59b96f6977ef1bb83487fa42628a7d614d58718ad148b07c60f18aaaf59d36f2a560b9f13057a3bb48a50a31f7772d4281bcb302fdb0a1bab0b00000004000000000b00000003000000000b00000003000000000b0000000300000000f86a0784017bf1a082b48f941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c7680000000000000000000000000000000000000000000000000000000000194b4782044d8080d06b79bc4df74c4a6ba59e8bc1e57e9c3194700dcbf8df2fc3c9fa2ef555844a0dbdcb8e23298a3dff13aecf21fc2287dbfa68df1cce01614f6659f7729ba8c51bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9044c0884017d78408304578d94b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e13e4000000000000000000000000000000000000000000000000000000000000000030a000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708ca1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e1442700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000041d1a054cf52782e83d7b7111c466fa04e03472a9c2098b9a0dccdefb17745170c3fc27f88fa426fbdce2343c90a3662dc441e75c6ba37988ae18160ca98fa7f141c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000194b470000000000000000000000000000000000000000000000000002820037b6d0c600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b1e4a5963abfd975d8c9021ce480b42188849d41d0000644f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000019581a7c83f846f74fc66fbefef1299521c65e390000000000000000000000000000000000000000000000000002820037b6d0c682044d80801efd30d23b23d0b0fbfe93446a107c35aff67967f83b03a5a93799323fc98f5568d4c4c7bef6650609c9d1b067eedacac74d49b715b587ec4d61bc4d275fb94f1cff0b00000003000000000b0000000300000000f9011381b684017d78408307249c94f6ad3ccf71abb3e12becf6b3d2a74c963859adcd8723a0f814eb3f9db8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000b1db6eec8d8c629f9f7e28bf2680e3e264e929880000000000000000000000000000000000000000000000000000000066e141bb0000000000000000000000000000000000000000000000000023a0f814eb3f9d0000000000000000000000000000000000000000000000000000000001633e7d000000000000000000000000000000000000000000000000000000000000000082044d8080f3a405df3bdb20a750ee93584f05ab47603187da5842f402d2c9d766f50560717e471e18c695cc989d88de0aa59c4c67ca94b1093b05004db29a50d5f5751ae31bff0b0000000300000000f903ac0484017d784083077b6f94d8e1e7009802c914b0d39b31fc1759a865b727b180b90384ac9650d80000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000a40c49ccbe0000000000000000000000000000000000000000000000000000000000004fe0000000000000000000000000000000000000000000000000000003a2cd4f5c670000000000000000000000000000000000000000000000000000000001805e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066e141b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084fc6f78650000000000000000000000000000000000000000000000000000000000004fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004469bc35b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf65cc37241d426970b91720e8255140ade00f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064df2ab5bb0000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000001805e64000000000000000000000000cf65cc37241d426970b91720e8255140ade00f050000000000000000000000000000000000000000000000000000000082044d8080a3d508557b59df3d77b1fa113f2223b67f82fde7ad9d9cf6f8e2b3bdd9b52a672a2f437e010cd99922806b351f71ab6896a97723f26cbd7b5781c0305b64f81a1cff0b00000003000000000b00000003000000000b0000000300000000f9010d821ee384019bc2288307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13f960000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981883f28b083b000000000000000000000000000000000000000000000000000000000000000082044d8080b5e4d0db289d0e6f61d922545bd7579bf20015b29bee82a2eb83bc9bbda09ea04b33b1f4c5f3e5aba7f5821bfa1a9f464373d9afbc99e4dcc58297a52ff062f61bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000e93a8402cdccb48255f094e10add2ad591a7ac3ca46788a06290de017b9fb48084632a9a5282044d8080be4c664f330b9151f51b9471b46aaffe652d5a410fa66eeb8d1f84d72f80cbdc3cc90a5514e45f2f576ec352449eb0313c6ea9a15769a11eb2ea11d86dc6f9ca1bff0b00000004000000000b0000000300000000f9010d821ee484019bc2288307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fb40000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009834b4eb369439000000000000000000000000000000000000000000000000000000000000000082044d808075de06ec5466daebd6df45e07e32c8c4727338a259fdb82acb5feb48d3652fc838947db58b0d09a037a303b3c74274196df3c5de1142bcd2f88aabaebb2323881cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d58401a6f9408302c78894555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c788000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000796b7bf65e570f59e08ac136dcc32e8f642f683e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000016442530c6a80000000000000000000000000000000000000000000000000000000000000001e093a1bf79cf96024c9b7b7ed3a8e26c709e92dbbed7918174b100d95d49e55682044d80800977d0591c4d658fa5bd677158b390bf73e8ae5d7218f7bc4614f3eed5126eed6226f3e972b5c62ec523064f6af4787e049c34f96e41dd9d77d4d25f0d2e76161cff0b0000000300000000f9010d821ee5840193bf608307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fd20000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000098370b3e46923d000000000000000000000000000000000000000000000000000000000000000082044d80807df0dc6ae14e4160030559716f36cf546839515e3a14e78546cbab05e2107d09760212c06296915c5c1a92d990722bd3e26afeb0cf29bcc462985f9331f117981cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f901f30a840175d7208303465694678aa4bf4e210cf2166753e054d5b7c31cc7fa8687079fbc2a49e180b901c45ae401dc00000000000000000000000000000000000000000000000000000191dfea9b9b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000104b858183f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000af09364718f745b6855df11778d9b523eda1e4bc00000000000000000000000000000000000000000000000000079fbc2a49e180000000000000000000000000000000000000000000000000b55d73b977dd5698000000000000000000000000000000000000000000000000000000000000002b4f9a0e7fd2bf6067db6994cf12e4495df938e6e90009c4a2036f0538221a77a3937f1379699f44945018d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080438d26a5ab0788935cfeadd2658b8a1447d9448fba3f8bbcf8def6c0b74f77cc77c03cba29fcb4d3fdc1b913bcef92e36e10cbd8bd913da805760e2d9c5242ec1bff"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b00000001000000000b00000003000000000b00000004000000000b00000003000000000b0000000300000000ee8308be66840433bea082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80806f7f1dc42b8cc34aeb9ee8206e47765be4cfdb5536272d3250950648aa4e3d5907cfece316b171d676cb399a7a75c4b11ed9ed5a3f27dd4122d8c909d4dc51a81bab0b0000000300000000f86c81b784016694e083010ec4941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000331f3a300b7115a45ba31e3428ac002267bb6d7700000000000000000000000000000000000000000000000000000000000f424082044d80805fa04ce2bc7596aa78bff65f39212d4f8c6325cbf35deb9fe4fe916b9b2858e33756e78b77457b8c39c573cd729120935a76c6a1d6bc73459a16514fa1054b5e1cff0b0000000300000000ee8308be678401945ba082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808090c0419282e01e7ccd1b49b104e6e722c161127a5197edd0bfef9447d4600a2a3e17a07b6523f4aea15c603004537da2e38cc7aec7ba9801099d516b53fbff0a1cab0b0000000300000000f8ee83019e568401e53ac083035f30945eb6b3db915d29fc624b8a0e42ac029e36a1d86b80b8c43161b7f60000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a1000000000000000000000000000000000000000000000000000ac720b1f97be20000000000000000000000000000000000000000000000000000000239000f7e000000000000000000000000000000000000000000000000000000000000001082044d8080443dbf96a2e3983c0cbb6e79cdd2a18777b63fa692b19ccfed0bd0b2ed0a6e667db137169578347abbb112cfbf718d3795e48e569f79b357a042c5f1b4837aac1bff0b00000003000000000b0000000300000000f9010d821ee68401a893688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e13fff0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009834b4eb369439000000000000000000000000000000000000000000000000000000000000000082044d808049b78766cf06b54ad4071fdf9f0182f50a767cae6a31f64f2379b7ab9b6ec2e65fd26b7b443ef10cffc30988b7bbc73132033d1d6e64351a47baf21fc12bee9a1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ee78401b230588307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140180000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982a06a2b59803000000000000000000000000000000000000000000000000000000000000000082044d808086d7452f41889b2e6811591fc74bae161b77d3712a76ab034c6d7634f3e0041667e2f1c34dbe96c8c6486cebbaef1f7b3cff036f05e72662317089557121c1d41cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9014f8301154e8401c61a00830596399473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13dd600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731d4964ad65b18a4655c340000000000000000000000000000000000000000adf476e7c1ddbf9c2658d5180000082044d8080ee854267d400eb90253e3ed78b0ae5ec32fe0ba653de34d80f5ce044cc0fff77498cfa898a2ca54b3b84abab13ba9fd6658f4e0f644d940d33f269a9e6d7cba31cff0b0000000300000000f9018f830151d68401d0ef708302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070637b4d8b21c764d0d9c08dd1d28b279bb2823500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000151c1d3bbe7200000000000000000000000000000000000000000000000000000000000000012a0a7392d80a1be757cdebf95b665fe0544e091c1b8fdb0ea7470aa9e0f6492082044d80809b8ab0a9bb0496a9099c6018c73ff2acaada0e299dcdae23bc20fb29fad715822cec0db8716a0edbff285acecc08b662b89a0412b629ba866e4c2abb80aab2f91bff0b0000000300000000ea4484018cba808302066e943df9e9ba39dc3ee6b6fb8556bccdfa87ee64fba680841249c58b82044d80807943273fee9a25c1549219629bd8844eaa6e9e327a7935d203e2f9d6d238a4837e3fbe0944dd0d07ccf2cdeec4e465bd25322949b697bb0efcaafe2c3c5316611bff0b0000000300000000f9010d821ee88401bbcd488307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140360000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982d87a827433e000000000000000000000000000000000000000000000000000000000000000082044d8080d03b301c79a78d1584e3c7eedaf2272a56f24adef479a8c3e045ce46ff16065d7cd5f8bd5528c8a634951d7e3f11c7c97c9d57cae43640818c7135a1a9284ae01cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ea81898402625a00827b5a9400cd1fb066573ad4215aa699e580af9ef4b3a4168084372500ab82044d80801c0e2075230c09e5f074cac36419c3eda1ded5447ad6470d15caf956eeb3f4d5305e11deed13c3947e01beafb0054fa692ee7b708525bd6438bb1283d9f5633f1bff0b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821ee98401a22ac88307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140540000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000983735fbc7f641000000000000000000000000000000000000000000000000000000000000000082044d8080590354f8346245d29a2193f306d6473bf0786bdbafbe91df5a84e8642e3570eb3a6da19a7f13a0e834f5884633dadd4d2e432c2c2bfa3324429be9b7ad04290a1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f86b2e840bf5ba4783015de6944dd70bec5984171a75003a6186219cb99ed79cbe80b844771602f70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000482044d808026293839e8593c6b85003aa27b0a4797069ba043803164bd5209b940d39c2bad7bfc0e2c652552a2606eb57f0dc6f7426805edf84ca2ad6fdbfcd9136ff73bca1cff0b00000003000000000b0000000300000000f86c81b884016b28c083010ed6941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000c8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a10000000000000000000000000000000000000000000000000000000000b3671882044d8080ee2364f3d622e422ec2a90a92137fc5d8a51510bfe0605b11ce2474538a7e5d90afc93bd57016193b3c0a416f3a471bbe24bf08eb385bfb9635425e3f84acc7c1bff0b0000000300000000f9010d821eea84017d51308307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140720000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982a3158e2273e000000000000000000000000000000000000000000000000000000000000000082044d80801bb6d2b5470d77ae8986b29496a0565ee37380f17c51fb34da2d9b4aa9b78ab66d72906a4d0f10e0663f4560942d246c895187c4287b43f9d26bfe128b4abb671cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000e94684015d6d2082a01994b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d808085262abae3391ea17e9032bf33e93d793771d42e14defe690719b53803d7085915ff9bd53ce52fb50282712974ff93950c0161b19a492c040c0606e855207f821cff0b00000003000000000b0000000300000000ee8308be6884040f1fa082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080bcbd6ba1c6cca5649a36a7e14c75a5561bac294fc4ea5cbd50e4c83a04b0039c5ab9e91f0f06c0c028f7a6aa146fa901ac23abdf57072083cb2113e5d53e7da81caa0b0000000300000000f9010c81c18402625a008303233f942a3dd3eb832af982ec71669e178424b10dca2ede80b8e4cd58657900000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e602c1920443f01cb100a57a7f894df8eb42f6600000000000000000000000000000000000000000000000098a7d9b8314c0000000000000000000000000000a2036f0538221a77a3937f1379699f44945018d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000082044d808085cf2d27dfbfd35f2e62054951ea381ca212755366c3b51fff597c6ffdff170e4bfec23bd116bc191684d77da0f186d5202128c4a7cc68187ae9746b5c8f412c1cff0b0000000300000000ee8308be6984015a5fe082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808020bdf52ff36fb31db16395c7eaa2bbff670a9dd200ea46062836d24f1b20e6e03cf5779a839573d635f939669f6d36f345a0bd444217df07950ad766e4c4efd41caa0b00000003000000000b0000000300000000f9010d821eeb84016bb1788307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140900000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982cb210d1b77d000000000000000000000000000000000000000000000000000000000000000082044d80805c32534154b68c162e322a19dcd13dd8fd1fd1183396f6b4c1e6c43609149f4566b01aed437e1992606c98b53406eae40a6b630dea0e7cda6a124ac4eef068121bfff9050d81b984015a5fe0830a10a994b83b554730d29ce4cb55bb42206c3e2c03e4a40a80b904e454e3f31b00000000000000000000000000000000000000000000000000000000000000200000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000b2829a0000000000000000000000000000000000000000000000000011b27c73a01b7d0000000000000000000000000000000000000000000000000011c9409d5f4dcd00000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000440000000000000000000000000b1db6eec8d8c629f9f7e28bf2680e3e264e929880000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000066e19297afc94fb216be4efcb60b0969a606731d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd000000000000000000000000b83b554730d29ce4cb55bb42206c3e2c03e4a40a0000000000000000000000000000000000000000000000000000000000000148c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b83b554730d29ce4cb55bb42206c3e2c03e4a40a0000000000000000000000000000000000000000000000000000000066ea78b70000000000000000000000000000000000000000000000000000000000b2829a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000281e4a5963abfd975d8c9021ce480b42188849d41d4f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000e1829cfe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001240000000000000000000000000000000000000000000000000000000000000148000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080c4b8a950b6fb2fd40ef9292e2e21f16ce93551a97b61f65dbc361e1b97c7e4fe353efe7bbaa446443a57106a013415b016a5de387499d032c14384b3b85e5a4d1bff0b0000000300000000f9018f830151d7840179a7b08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001e09278590cc10fb2bd69235d2f4372fd0e1ac44000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000002bd26ff6604000000000000000000000000000000000000000000000000000000000000000018bce34245eaa4dc895284ff7b987382cd12c8b40d2f55ace41c054e6b667f19082044d8080185025c2a18ff67f6619138b44a5262ba2181151be1526f23b3787bef28350337867a681c56458160a1ee95dec4ad4c9a3c47f1dfb9a39f9b39c67ad3c6f62551cff0b00000003000000000b0000000400000000ec0e84015752a082520894e4edb277e41dc89ab076a1f049f4a3efa700bce88708d8a44d7dc33d8082044d8080e5f393baeec28606eb9e5a973614ff7a3bb17e7df7d56de1c8dc34d71ae0b50d766c5c5d0a02d04a7b4140cef33d896eba5ae9c796e18f047b7b3bb7c0e7af981babe94584015752a082a01994b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d808064019d123c2bc2e40c10f63cef99518b130d358e122504f0028f2f14085f24204f3d2f2de773ce5bb4be2eb02d7978421bdaef8a98f8d2407d3ba53e0ef406061bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d821eec8401754e688307a12094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc65118800000000000000000000000037eaa0ef3549a5bb7d431be78a3d99bd360d19e50000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000002aa6845f7e84b2cc1619c823bf4f6b04ec733f2c0000000000000000000000000000000000000000000000000000000066e140ae0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000982cb210d1b77d000000000000000000000000000000000000000000000000000000000000000082044d8080f8fc4cd3cfd4f5669ef452ef2ad8c5082f1ce1bf2f0523a52e12a916b9ad8c6c12a08dc48c171e434cc75852b7c8161b0741f0465821e8bda5fc10ffaeebdd841cff0b00000003000000000b00000003000000000b0000000300000000f12a8402625a008307489e94dfb6baa334712cbbeb26b7537f62b81c2a87b1e8871a84698758700d84e9ed3d3082044d8080c9df68b81de01a7ddf57cd4037afa1df1f031e10810bc3c23c88347bba337b20343c98d810b700b8e27ca6243277b28771d484477cbd58366d02b57f3b8aeb731bfff86a0584016387a082b49b941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000ad41c77d99e282267c1492cdefe528d7d50442530000000000000000000000000000000000000000000000000000000001805e6482044d8080bc02d6c00e37eecd89d84e5439fe5186d2b55f91e68bc952ae7803f7252afc0438bf92877c67810409bb9b40ea6d08b272f760015563aa9e052bb46ccd5e245f1bff0b00000003000000000b0000000300000000f8b133840225dda08304ac1194222228060e7efbb1d78bb5d454581910e39222228614edc04e0e0ab88432accbb900000000000000000000000000000000000000000000000000000000000000c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b48eb57e000000000000000000000000000860db06d8c758c594143686d0ef9cb52543bae0382044d80803c9ebdd5f72aed2cfa0d36b5311cba9fd9a211cf7c9260502b5b3975751b24603678ebaa584a22aefcc118b5f8983f25e0201d6152c9b7d0d9dd6c7249760a211bff0b0000000300000000f86c81ba8401607a6083010ed6941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b3000000000000000000000000b5f43c2206e3cafecd62651f5fce9091a020748800000000000000000000000000000000000000000000000000000000001e848082044d8080f97d0cf4ce6c85eb1609a85f2c71839e2bb12896b7968547c085d447c99f23ac4f3af1959ed38d3fd76c379dbee00fe520c52c8ec791afe021b974d7442e9c261cff0b00000003000000000b0000000300000000f86c81bb84014b1da083010de8944f9a0e7fd2bf6067db6994cf12e4495df938e6e980b844095ea7b3000000000000000000000000b5f43c2206e3cafecd62651f5fce9091a0207488000000000000000000000000000000000000000000000000000739ecb738d98f82044d8080a78e3716c0eb3802c51e41bd1c7ca64c9a638221f07c7c06af9f6c94300b21d37ac0c2374cfce5539fe7d9c180e153b2fa10b1ccae8b727a8d4734dbd4b9287f1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f281bc840175d720830107e5944f9a0e7fd2bf6067db6994cf12e4495df938e6e9870739ecb738d98f84d0e30db082044d80801049e7b2658e6542463bbe11e60a7198f23cc761a536410d5383e00aa6f6cc68440573478137a9ce3486ff41a903bfb738c44469e56c7d1dc667ee4c18750dbd1cff0b0000000300000000f90432018402625a0083053b1f941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b90404d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000a26ed90933f9410c967efc64452681f501477ca7c7bb0efe1a8e16b8063c3ad420b4781cf348b8a0a4851fc3c2ff2553000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000807edc9cca4620e59b6919cf51b699ec6a2bde550000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d544869314d7366795965714573576178696f4e445734344a504d476d346b6e734e486567705473675668514a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000023c5fc38090643b410c8c06c4c0f3246059e98ee0000000000000000000000000000000000000000000000000000000000000ce40000000000000000000000000000000000000000000000000000000000000041ecd952920c1aff799bb35cc6b1306371afbc5f683cdefb2ee2e31ae21bd48a8270797e9889904a574fa1918a3bb13fa2b28d83ed3ab567b3aceea912b8d04f7f1b0000000000000000000000000000000000000000000000000000000000000082044d8080feec2c92b7ecf47d4dbf93f7041e0082d822ea2bedafe3c6ae11d8426678fb643c29bab890f68593a4f8421415f5a68481621730b71dac5b16a41b7c31ef762c1cfff84a06840174508083074ad694ad41c77d99e282267c1492cdefe528d7d504425380a4a0712d6800000000000000000000000000000000000000000000000000000000016e360082044d808067b5300ca47a28ce2521475a6224c2fe27e4b28da3a2cab92231440d3938603724b3ee0a7fc6bca38ad52b7ca90b534e67e8d3a55ca472e3eba0ac51bd5fbc7e1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9018f830151d884018c1e408302042094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000020420000000000000000000000000000000000000000000000000005d423c655aa0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000da930060b712589736018c6d891ec57b0399db7800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000763bfbd2200000000000000000000000000000000000000000000000000000000000000000017f0ea037712c6b94793ed1db0d924ab44381912765b13d871e7eb101ac652d3982044d8080ec0c9e107850e44db65fd11d35d41ee8ddadfd9a2e989dbc619a60c52adcd2860092874af3ca89dfdd56ce708439cc6cc538ee10b7fb9023d4125f7abca62f0c1cff0b00000004000000000b00000003000000000b00000003000000000b0000000300000000e92b8401499700829f8094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d80805b33a4bea9274b6838fc8c299e7e1d463d8a9866847ed34961dfa742b1e09e7960336c7a436d7c78f8c055607e77072b8f1ddcdeea4757c9236b8dbfea38a1181bff"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b00000000000000000b00000003000000000b00000003000000000b0000000300000000f84a0784016e36008305dc8f9468d9baa40394da2e2c1ca05d30bf33f52823ee7b80a4c5ebeaec000000000000000000000000000000000000000000000000000000000112a88082044d8080b0b78bcb15ccad6e34965bb75310d919de9c98653338a4e621bb68d4e1158bc071db0cd0eee106b2a15820242d3a30d78cab313ce696b38609712e9b97b4f2211cf6f00c840a85ad1c82fd67944f9a0e7fd2bf6067db6994cf12e4495df938e6e987131d14dce4400084d0e30db082044d808061485ee80be12c1cf4118d79c8240621c4d61342aa6e21313bcb338e0c4d3f371f1589ae7a144279671a249bf3d2514d9f39c850081cfe35070f9df8b5bc52b71cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be6a840433bea082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080ae7ad2d365c97fd210a6f105189d8f8845c7607a5304f61a75e3f95b30d0278654bd6071ea8dc8eb258293e33b8662588af561e361eeec88f2c222dab85904a21caaf9014f8301154f8401aaa2c08305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13ec600000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000007322d2c4642c149072472c80000000000000000000000000000000000000000ade71ffb3551101896108d800000082044d80802d5cadf3e11640c1e52b9bceb4f465b5be3247fc0ec042d85c44575e2e71c3ac0542b94b31e12bdecca3fbfa292da254413c91cff46b7a09a6a264a4b58fa1941bff0b0000000300000000f84a0d840b405b068301519d944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000131d14dce4400082044d808005ff907a16f3f1614d5f81b3fb224f805038d423f46f7a3201533568f87cf5032028fb37a272fa727550e1dce4af167b67b51157e24de676306f97faecf6ceac1bff0b0000000300000000ef808402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a10986246139ca8000840333f38b82044d8080e1a97f847a204044e3f9e326c84f4d5369fc9bdb762c0aa38122fd4f9e5321d0660038ec1b8f5c2273ccfe875ffc274d7b809cfb2ab742631683613108c7e8501cffee8308be6b84016387a082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808086767ef08deb78094341e575335c29fa45b39ae1dfa57003b2f1b8e0f29dd57f13cd26cdd53e10c6c35df7eeecf0369bc77a701d0732dbeea119688fa09f7d021caa0b00000003000000000b00000003000000000b0000000300000000f00e840764acfe82c6ee944f9a0e7fd2bf6067db6994cf12e4495df938e6e98712dc81e31cd00084d0e30db082044d8080cbfcaa3444f14e64cb0fa9e0259f2fd1210b5425a8c23842150c77d1c9e8578d79aea37c19621cdc2d60eb47fdef1ddfb63a0dcf97dd37f639b862a80d81aab31cff0b0000000300000000f903f20a8402b900fb8309e24a941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53ae48ab8aba0990d601236bfbbeb5f26e910d68867594ac5def0ee45b27ce819000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000ec90f6634a907165e5d18a14c1dc51e32b9de8b60000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d6252327345444c614761345a33664a4278386d6b65636e59646b6b323451586443556a737253466a62745161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417ee5aac8e9e510dbe7b12d5757762ea0b0eed32189dce8ceb044ba9bd16daac61415af82e6bdac2e90d2227bfe8336c383ac24ce03af40f159412e86b49e02f71c0000000000000000000000000000000000000000000000000000000000000082044d808054c2fcd741aff604618f9331edd8de2062dc15c3ca37a0ae759881f21547c1dd491a44cf2cc85c20f72575718f39a8026b3989a1f07f4c9de324b8fbf62d03801bff0b00000003000000000b0000000300000000f84a0f840842bf86830127cf944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000012dc81e31cd00082044d80803d7108665030a686303828a8590515a325439a383cd915a8510b1ead08fdbe64726b280ca7a73a844d6ff801f53ad44480c39059472080c96b4207f2b41eeb141bff0b00000003000000000b00000004000000000b00000003000000000b0000000300000000f010840cd2e41082ec87944f9a0e7fd2bf6067db6994cf12e4495df938e6e987141476cc45400084d0e30db082044d8080bb1a5745409e78f126e0f3d301d1bbb8e829404909bda7bdba47b38a8e5cc5022975deb7d293bdb69210a4a50cb606efce11040df82ec34008b179a51447d3a41bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f84a11840b840af383014099944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000141476cc45400082044d80800f0a3bb81e483365b2f6196c60d0d97882e9d2816fbfb78689cd3850a33f7d9e0f6732a7d860fea63d323bdd924b39043a592e79fc5cb42593cf5a3722b854de1cff0b00000003000000000b0000000300000000f86a0884017d784082b49b94a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03580b844095ea7b300000000000000000000000046a15b0b27311cedf172ab29e4f4766fbe7f4364000000000000000000000000000000000000000000000000000000000112a88082044d8080325b6bc0360425e4a14b8d91cd8855d8649bf946352c4ad927a31e56d22c004731500e69af69ce8b80b06946735af113f7ea67749f57af617d5deae89eb1f3d61bff0b0000000300000000f9018f830151d98401a1f0308302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000007f35a6e27c542fe3bb6bdda638abc8bc65c3c0960000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000015c7ff2eadb60000000000000000000000000000000000000000000000000000000000000001a93b38316983d650e0fdfc2642ca16b840420a6bd6962cfbf417bf5a790d681b82044d8080738091a8459376230f139c30ca51cebeb6deeab09492d46a6009f33a090953b219d8f52e737caa178042069504eb99b0554f51963c9943204724b283f347c10c1cff0b0000000300000000f00484018519608287f19465a4b8a0927c7fd899aed24356bf83810f7b9a3f871c6bf52634000084db6b524682044d808050f3c9ba5b616396e065717c29365860afd49c5e9aa275eff0f37446d3eb5e3611e8626c0be00efd62ed5d31b51cc334dd8793c6bc8c62808616faebc97cb7b71bff0b0000000300000000f112840cd321b68301312c944f9a0e7fd2bf6067db6994cf12e4495df938e6e9871382f1e51b400084d0e30db082044d80809585c9b5b7689c9abd1823e19e0f8d592f57f419f94cca0ae20ed021b68aaeb556273263752bc1e78c8508d5af41a05d2b886e07b78330d63df42177f02110621cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f84a13840891001683010317944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d000000000000000000000000000000000000000000000000001382f1e51b400082044d80802eeb9e8ba20f90a05d7584a87870c63edc5a0952fd52d1299d54a19098af421408f9882e7e62d42d0afdff81a06c4614ada1367758b701289f3aac12f5ec13e71bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f114840be4d1b6830126d3944f9a0e7fd2bf6067db6994cf12e4495df938e6e987145b3905a2500084d0e30db082044d8080ddfa4814082f9ca8947b3a9263cb97c0957bed97d3032e8fa38df43eaf7669743b15fc3cce18b60300063396898de729594c2af72e147d8dafbf7dbb3e9e745d1cff0b00000003000000000b00000003000000000b0000000300000000f84a158409de70b683013343944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000145b3905a2500082044d80800c288f5c663955ad276d8e8bed2233997f07bcaeade6992c98b05f99151c6c2a27d0a04fb3e07473e11b88176db0f5baa46dec2c48eb704e4d6bcd78467b25fe1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f1168409d2a29e830141d0944f9a0e7fd2bf6067db6994cf12e4495df938e6e98713a7531ee5c00084d0e30db082044d8080f22f024c3df0f0582d53d27586bc0b534636d4bbbdecb6cba76d31d9ec26c24a2fc8e613aa6d783ef7541ca0463908b696f7a3cac12710986820bd17613a05ee1cff0b00000004000000000b00000003000000000b000000030000ae450b0000000300000000f84a17840843742f83014a3d944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000013a7531ee5c00082044d808093acdfe33b2bf0475202506781b23511c98ddf648158adc2480626821c8462f765d5b53638bf280519dca4c3c6d1b8e62068dfab0aa3ee45702e69dd44d70e881bff0b00000003000000000b0000000300000000f9010d8263618401810e38831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d00000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e141af000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042a6800000000000000000000000000000000000000000000000000000000000000000082044d8080787ff95ee62900d9971c92e31e4a72c46ccb514a1f429be155b8bf471369fc0610e0132cde21bd011d3efc70d70cdf470af7ad9b5aaf86170803e31f29a94bd21bfff9012e8263628401810e38831e8480941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e141af000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042b949a000000000000000000000000000000000000000000000000000000000000000082044d8080812562f17bf5daeaa60ed73ad30eac5996a784b57451663ad68d2a3a1a4ceffd0e98775ae6ade38d54ffb4a21778eb2a047d280b8408451096b13019394cc5eb1cfff9010d8263638401747b78831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13bf40000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000980faec989d805000000000000000000000000000000000000000000000000000000000000000082044d8080d6ae2347276fa3cfd245d9379684454bb7f0bcc3cca6d642d827809ff5d836922ec796bffe17a15a93e05d6d62d524588b2e083a3baff8736a9ba633ae1f7cf51bfff9010d8263648401875798831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13c180000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000009819595140ba78000000000000000000000000000000000000000000000000000000000000000082044d808008a9fd6bf5a08b08d9611be3a3243fdc5809a0e51aec5629bf321cf09436fc67600bd37403aa4f6155045256cd67620aa2bc7e7118c6b2dcd5f72db9c30a433e1bfff9010d8263658401600d00831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13c3c0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000981383eb6618c6000000000000000000000000000000000000000000000000000000000000000082044d80809be365822aadb974a913e75d18dd5280b322409c861bfb10d545c17c72979d847b52b9ca8a4f49f5dba9016e98d2e55536a8ce32fdf06b6a13320aab4a6869821bfff9012e82636684016331b0831e8480941b81d678ffb9c0263b24a97847620c99d213eb1480b90104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f400000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e13d9d000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000042ebcea000000000000000000000000000000000000000000000000000000000000000082044d8080cbbc34a2b94e3d2e56260b5e0034028c2f6bc1c7306fe9a9f1956b670c027dfd70a38bd41a95f94774d84e470ea2a25a42c499e1e4b971dc91a426139f61a09e1bff0b0000000300000000ee8308be6c840453c9c082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80809fa5bd47d6b5cc939b9b27f080a9ee8477b2baf9fc9ac7b51c023ba5eab004ed22ec4afd14c073c5eb9f9a2802eac4f24ac04c34b7ef33de4ecba895e8749e141baaf901ce826cd284017143408306dcda948ff6508bdd71b535df073920c423e9eaee0b97af80b901a4b61d27f60000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000000000000000000000000000000000000000001f40000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e14087000000000000000000000000000000000000000000000000016348a452209ad0000000000000000000000000000000000000000000000000000000000de701c700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080aaa0ea5c36cb0e4fd0bce18e23632f9c8ea2b06b5351c2c69a2adfec23fff4a43f84b301c33c51f2744abdfab346fc91d47c8dbe1b2c91849163ea7d0dc871531cff0b0000000300000000f9010d826b8984017143408308e02294f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000098f0f120de21a90f220b0027a9c70029df9bbde40000000000000000000000000000000000000000000000000000000066e14088000000000000000000000000000000000000000000000000016348961fbb5800000000000000000000000000000000000000000000000000000000000de6fe26000000000000000000000000000000000000000000000000000000000000000082044d80809c6fef4b141e8e4a07c9cbb2511753153fcabf3a831eec7216bb4af90abb7b7d6fb5002e74953de4a87a5aada51b25c9b1b05a961546421ecdda070420f081621cff0b0000000300000000f9010e83018d5f84017143408308d82094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03500000000000000000000000023abcb82f468e3422a7212d4ad47cc2dd39162a30000000000000000000000000000000000000000000000000000000066e1408a000000000000000000000000000000000000000000000000016349e13e663f90000000000000000000000000000000000000000000000000000000000de70b11000000000000000000000000000000000000000000000000000000000000000082044d8080637884a6f0f95a88b0fee2f9bb436161c0032965d91166bea89124fe6513d31c5527771f11b4ed3cb90e8b757c9f4c9fd74c6bcdc82af2e68521ffd5e0875cea1cffee8308be6d840171434082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080c501252774527c8bd4e9fd808914868352ec182c325575824ae9e83523ba33ce46a6b82b2ebb32e4194110443e5c67ad08df9d8db9bc6fa8aea72192c1192e221baa0b0000000300000000f018840a88762382e3fa944f9a0e7fd2bf6067db6994cf12e4495df938e6e98714191a3bf5780084d0e30db082044d808076d4330b8513208b9814415391c70d0cfec79655b397fd2632d5e82c57962cb87956a8c4b93809d7904baadce5b66e8e720ea8f6ffc5c9765226b0952f7dafd01bfff901ae826749840169a22083091f30948ff6508bdd71b535df073920c423e9eaee0b97af80b90184b61d27f6000000000000000000000000f6ad3ccf71abb3e12becf6b3d2a74c963859adcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4bc6511880000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000008ff6508bdd71b535df073920c423e9eaee0b97af0000000000000000000000000000000000000000000000000000000066e14090000000000000000000000000000000000000000000000000016348d202444f70000000000000000000000000000000000000000000000000000000000de6ff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d80807838e9e5f7ffa45112082937cf4c13ac9a4b34d2d89c0f88a6d1e5b8fbbabe68450963e324bff7087380a48b63fd683577784f3eb7c926b9a9ec08acc1cce13f1bff0b00000003000000000b00000003000000000b0000000300000000f903f215840169a220830343e5941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5552350c0f4036746139ed62c05a8199a5364297d41a85bbdf9d08e25c0b01711000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000c2f02570540a1e49f72b83365db2aed22ee6cbad0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075068616e746f6d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d526e4b355959546b517155556361316f505241637157456f4878737847576658517670364e4c43435647705600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041303e333a0a05a77d8b21e3acd4fee5daaf7544b8b4d685934b1343ccc154afe811166033a30ae22ed0dfb9c4ccdec95eed70ac788e04d58b361f0a5f38260a011b0000000000000000000000000000000000000000000000000000000000000082044d808057a8cf819dd9e7deefa39df29b556f3298ecf2343570849e33ca211713427ed3666812d6fc31f2b1269f4d272d30c4c4d6fe42bcfd0ace89e156199a62e72e771cff0b00000003000000000b0000000300000000f90bae82244c8401650e408303e4a494d46f8e428a06789b5884df54e029e738277388d180b90b84cdd1b25d00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000000740a14de1e598b81620773454588b85d6b5d4eec32573e12145ec8cd4881eba87279f5f243eb89ea9383e677c61a144f9a0e7fd2bf6067db6994cf12e4495df938e6e922072671ce2724c2d62888ce0330cd083a20623f6e1a2edccbb959c2ee656b3497c5155af15a0ceaa8b0cd940c4fe9792d12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000004138c5d370f4c6b199ed42c2e346cef963a8fdf9512270c9518698cac23166fccd4145a7fe09b7b53828ce325cacb2368e5917ccf999f0454697e0edb2333ef67c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414815d2c0438852df0d6e1f6e079682e1cdc5f56410cf9260224db24c1c2ff2ea25ea8b65b7966110962eebc47a78f4d77a8b1dd0a3855d73ca97da7e89cccfa31b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410f45357656c66529a2f7c6fca35dfc1f13f7db5cd546cc958503ecba7d9d55ca51b1682a289b9ae1daaf82ec950e0005e71c01b0bff347c68ca80999802cf0fe1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004166d8d1d855e266c5688f8a45503d9448366fea91b50d4c8ba12ebda394ef76a84d003f8bf256cafc0791d521dc3fd681710fc1e0dc49d373fe1a3be3ef9645ea1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2d31bb75fc66cbc2f75af278c95a028b6b764f0d056d65f3f50bd9d8ad857c53c229fd9cc844192595b6e8c892edd4566e32f17add3ec25102f06edeac4de4a1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f1d037092dba92c2b718f8cc6d1d0274087cc7e033e6aeffe8ef39246188a2e34ef3761e29604612724fc57bd129d9ca0b1ca246c3f7c18113cc3b8acfdfd4b91b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041aaecb7b28127e84f580d3944c59e7de10d46f2cb121f0b56364ce9d843c1fd783e28f41e1e33378f071dacd4788a44db8314174eca4757a19470cce0ef98fd5a1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000419a9ea0bf5e36016e3380ee472c85ac21cd072153f7265ac450f9c2853782cf715a8105e3826f08d47139e61146f7768af4b55b3ab485772ed6332c66150d80961b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000241a100333eefa2efc389ec836a6ff619fc1c644000000000000000000000000273035e10f106499eface385dba07135e7cc8e5400000000000000000000000055f4a1bfc655cf55ed325f2338a1dee84f754df200000000000000000000000057c96a00f9ff7b25cb5cf964f1a191be9321b8c8000000000000000000000000870cf8dd5d9c8eb1403dfd6e6a4753f4d617a53800000000000000000000000095016e36adb4e0151735ced3992a7fa54e16bd08000000000000000000000000954adc74481634b4d278c459853b4e6cc17ae8d200000000000000000000000098e9d288743839e96a8005a6b51c770bbf7788c00000000000000000000000009a66644084108a1bc23a9ccd50d6d63e53098db60000000000000000000000009a8cfacf513fb3d5e39f5952c8608e985b3dc6ef0000000000000000000000009ac5279013edfec74c5c2976fc831ad0527402e00000000000000000000000009cd5006e1bff785dad5869efd81a2c42545c9d9b000000000000000000000000a73b339c3fae27bedf7cb72d9d000b08fc899609000000000000000000000000bfa2f68bf9ad60dc3cfb1cef04730eb7fa251424000000000000000000000000c74acab8c0a340f585d008cb521d64d2554171a8000000000000000000000000cf12dd34d7597d06ff98f85d2b9483d9d5f7d952000000000000000000000000d10c833f4305e1053a64bc738c550381f48104ca000000000000000000000000f4151eebfa1b9c87dd92c8243a18b1baef8c1813000000000000000000000000f5ad7f3782e8a67bffa297684e27cf9fcc781be1000000000000000000000000f6e93eb288658de5e2e982f99d2b378b22959d1500000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000002f447e9b1e8adca8df0000000000000000000000000000000000000000000000440370c65f337c6835c0000000000000000000000000000000000000000000002c9067d217c36159ff0000000000000000000000000000000000000000000000530db71af8da0bfebd000000000000000000000000000000000000000000000051e62edada099ff54000000000000000000000000000000000000000000000001999bb4b4f342a0dbd00000000000000000000000000000000000000000000002c08f0c7601de23e6a0000000000000000000000000000000000000000000000ec1deea13ae957d41000000000000000000000000000000000000000000000011be0842d86f7e8e736e6c50000000000000000000000000000000000000000003e4b325079a76d1d368000000000000000000000000000000000000000000000394b6fd351bc3090d200000000000000000000000000000000000000000000010792503324e9fba39d000000000000000000000000000000000000000000000059fd816a8470289cecac00000000000000000000000000000000000000000000d2faebf995c3095183ab000000000000000000000000000000000000000000009158ca2eac127d67ba00000000000000000000000000000000000000000000003bda588740b8d2e76f00000000000000000000000000000000000000000000008ac2e56a51bc65072900000000000000000000000000000000000000000000004383436ecf64559db0000000000000000000000000000000000000000000000031c05fae36f04651b4000000000000000000000000000000000000000000000010250608f677cbded0000082044d80805d36d9762307593a13e91e19fb81e6c0a17830d4834e18d66c52d6411dc7b22009da393426cdda33d3b5d7385fae3ee7b625f0febf8d72c3785dc733aada5e7f1bff0b00000003000000000b0000000300000000f84a19840af6f75283015497944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000014191a3bf5780082044d8080021f1ce93bb9218374d2ea45dbd2bc8d97f6fa5aad023474b71e12f2ccc583e03ab6cf9edaf16b142da8d07b44b1811aff429a4bdf6b0af997d0707f98f295061cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f01a840b695c7082e6e8944f9a0e7fd2bf6067db6994cf12e4495df938e6e987145b679690200084d0e30db082044d80804b2eb02436c30f483e54e8af28f2f1c59db7f5d56a24c83d0b3d2c4f47065ecf68f4895fb2a2e27e0af1b416d34da70f50affc5291e02a2a13f29ae09f92ab1a1cff0b00000003000000000b00000003000000000b0000000400000000f903f3818684015d6d20830399fa941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5b38fb2ebaa1e7167ed74018ce74a588d28794f3dbe74ab6185c751c3f31a2d81000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000007e4c51597dba086fd1a07751db43836a3acd20bf0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4269746765742057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d545050343333525078526b70515170476b5831365176573558694c6e334d46643833577a37524334764a647000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041aaddceedfb48b401c31abb8555f78cf18080778613ebbcace5332467725ef3096d0aff50b740abfb1372f7511caa6e46683774e7697c2c3fb360621b0aed16761b0000000000000000000000000000000000000000000000000000000000000082044d80804858cae0f925fe74ffa06631cc0e9bb9955a839c9eaa30bdd8b11a0b7b8de9371e19d31182948a1e2d730e3f9cab2f67d1a5af4e2a62f386d8951d34f94367f41bff0b00000003000000000b00000003000000000b0000000300000000f84a1b84086ce4f483012ee7944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d00000000000000000000000000000000000000000000000000145b679690200082044d80803ce9647fac84541c0f88f2635be838c489ac64d29edc0759905e1677a53a996c4ba90cf64b959dfe09642aa7a67fdaf495c1cd9cbee52efca91f26932b9506401bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f11c8409ef8bf783015963944f9a0e7fd2bf6067db6994cf12e4495df938e6e98713c0ca60f3800084d0e30db082044d80803e3309c130e2bbd0bc32bd9282681387467a68ef88003d71ef2fcba5fecce4c41cf843eb96e923daf4dddad4176d421115cf36e97ca5b794b7bb1330900ff1681bff0b0000000300000000f904351a8401d1168083040eb680870130ae43fff000b9041a60806040526040516103ba3803806103ba83398101604081905261002291610133565b813410156100765760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74206465706c6f796d656e74206665650000000000604482015260640160405180910390fd5b600080546001600160a01b0319163317815560028290556040516001600160a01b0385169134919081818185875af1925050503d80600081146100d5576040519150601f19603f3d011682016040523d82523d6000602084013e6100da565b606091505b50506040805134815260208101849052428183015290513092506001600160a01b0386169133917f21e7cd7f82cd180cc2efc8f6d34988374ee142862fb2f9a8f60192e9b3cba1f99181900360600190a4505050610174565b600080600060608486031215610147578283fd5b83516001600160a01b038116811461015d578384fd5b602085015160409095015190969495509392505050565b610237806101836000396000f3fe60806040526004361061003f5760003560e01c8063b0910a5814610044578063c0129d431461006d578063efdee94f14610077578063f7b98453146100af575b600080fd5b34801561005057600080fd5b5061005a60025481565b6040519081526020015b60405180910390f35b6100756100dc565b005b34801561008357600080fd5b50600054610097906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b3480156100bb57600080fd5b5061005a6100ca3660046101d3565b60016020526000908152604090205481565b6002543410156101285760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e7420676d2066656560681b604482015260640160405180910390fd5b33600090815260016020526040808220429055815490516001600160a01b039091169134919081818185875af1925050503d8060008114610185576040519150601f19603f3d011682016040523d82523d6000602084013e61018a565b606091505b505060005460405142815230925033916001600160a01b0316907ffa30e9e1a69333c24ba36197dd28ca3e0c5f35e57ddd18903b4fd4ea7d4912339060200160405180910390a4565b6000602082840312156101e4578081fd5b81356001600160a01b03811681146101fa578182fd5b939250505056fea26469706673582212205084495e17d7e67c22e09899255168827489804e496d7d6f983ad2752ca58a2764736f6c63430008040033000000000000000000000000c451b0191351ce308fdfd779d73814c910fc5ecb000000000000000000000000000000000000000000000000000130ae43fff00000000000000000000000000000000000000000000000000000001e77d399980082044d8080e753eab3daad33e5406b6e9ccf7fdd0268c3eea1b2799d1052a1a16fbc83a6e317be62f32646d8c452718d299d38228c41dd5a1dc67961dbcd542bb551b391f41bff0b00000003000000000b0000000300000000f903f23584016cb4338303977b941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5a5b86aa0e7b0c70701b8db6d1e5e8a7ee65e36fb3fac08e68c65eaee771351f0000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000006158a9ffe6404eef6a2bdf331feba141f17235870000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007696d546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5579436d583974784a4545776f7756365646633566386e76576936717a414b46424d64767a6835535a334a340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004133474e9c238d06b566181d591c630a71d9e10eeb72ca063a40dadadcd0c0f6fd4d6b0326c4943466f3b886510d4a14429e394fc1a8abc8a0e2794ef07b91ca561c0000000000000000000000000000000000000000000000000000000000000082044d808030e5d2dbbab99819c571447b15a332129be20c6d875c480cad06e720a32b11d84bf57d2fc8d9eea3820202f47268b26a94e700afdb728edb396bd7312b8d8d621bff0b0000000300000000f90139058402625a00830284788080b9012560806040526000805461ffff1916905534801561001b57600080fd5b5060fb8061002a6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80630c55699c146037578063b49004e914605b575b600080fd5b60005460449061ffff1681565b60405161ffff909116815260200160405180910390f35b60616063565b005b60008054600191908190607a90849061ffff166096565b92506101000a81548161ffff021916908361ffff160217905550565b61ffff81811683821601908082111560be57634e487b7160e01b600052601160045260246000fd5b509291505056fea2646970667358221220666c87ec501268817295a4ca1fc6e3859faf241f38dd688f145135970920009264736f6c6343000812003382044d808044a18dbe91f5ed18370200a54bfa8738d390e49046e22faf1b6320fa25a8b23450dd1c97b91e2cac7fe4618bebc997644786d82b3432cb304df14213b6a782a11bfff9010c81b88404c4b40083032174942a3dd3eb832af982ec71669e178424b10dca2ede80b8e4cd586579000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092de600f86669d5bc23fd33c4b93689d49c55aae000000000000000000000000000000000000000000000000a688906bd8b00000000000000000000000000000a2036f0538221a77a3937f1379699f44945018d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000082044d8080689c42d280e7d7a501e3b8a03727d170815bb230e407c1adbe02c056943267013fe64d7ddd8e1dd996ec63c86a17964c9982076c6f51dbe46034e05b8cf2068f1bfff8491d840bdac5d982e3d2944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000013c0ca60f3800082044d8080f0658ba891342b29cb36b03d7c7f4ef697ab9453400c9bbc07e6689f2442a27d283e986cbe0569d209a00ce4a0bb790909b20727d04e17df540cad993cffaf681cff0b0000000300000000f9018c09840178e4608308474c9446a15b0b27311cedf172ab29e4f4766fbe7f436480b90164883164560000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000000000000000000000000000000000000000000064fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc905fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcd6740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112a8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112a880000000000000000000000000cf65cc37241d426970b91720e8255140ade00f050000000000000000000000000000000000000000000000000000000066e140ce82044d8080cce7a5d5d6aadae5e27baa53001df17380db45b57e5be0ace2a6cf6b062e722e32fadbd8ab50149b54214c9542ae78c7defd5928ab2f23fde10078dfb00c3e9f1cfff9014f830115508401b59f408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e13fb500000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000072f21faa37999cc861c82500000000000000000000000000000000000000000add83f3e7c6394511984a9080000082044d8080262b264f0820837db4a0fffcfe5309152b391bf1a80d105d564051c6bb5c5c644dd1e64849aadc9a6650a6d15dd17f1a0dfea656b7f190de92b7c3867d4c46b11cff0b0000000300000000f903f2038402625a008304e632941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5f1f3689562d1c0dab2e8a2cc0cb879b692ec71495e8cda15ae8d2ce622c7c6ea000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000f9bccf01d2a27b0b6f7060c238a3c499814c7290000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d597346367139725173466b42344d51453766334a35333843594748316f61696539766b5643616b573875697100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041547595cdab235f61e0e57fce4721337a52a434ab432daa2749642b01f769f773340113e8ed17a36f42e4fb82c5e8a9947fd69f29b12d76902d8b6091d7589e831c0000000000000000000000000000000000000000000000000000000000000082044d80801dafcb03a4ae839365fa5edd4e370763a965b1956859fbc950e985137707683f5cb0463918a45f865a13728c1d2785953a8820ae39ed5c5cce11c3d9f798155e1cff"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b00000003000000000b00000003000000000b0000000300000000f01e8409868dda82c553944f9a0e7fd2bf6067db6994cf12e4495df938e6e98714138df7a0300084d0e30db082044d8080c3e8e282b8d2318bb3eacfb610c28212435b08a9a9a7957ccf3b7db78ccf6362259552814b9d6fadf088245eedf9894d2715ea943553730ee3a0e37de0d2bd8e1bff0b00000003000000000b0000000300000000e9068402625a0082ff7294e38fac030c30a806f1a18348cb35b1f9796b89bd8084b49004e982044d8080d4af995d1407374e10081bc81f21a015911814ec43220eb6a75ac5d347da563104c194b2dad08167c9b8018db7cb67cbd4730f7ae1ef58f508e1df803ca7738b1bff0b00000003000000000b00000003000000000b0000000300000000f8491f8407b3caf482ec15944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000014138df7a0300082044d80807a2a304783534f2b6627a011dcd5655a14f601f08f8ed1a5ceb48cfea15d246a1aa2513734725e55a1aebf47662192fb6b51f3ee33f5885df867aa9251519b951bff0b00000003000000000b0000000300000000ea1684015a5fe0830275e094c790f82bf6f8709aa4a56dc11afad7af7c2a986780843d18b91282044d80808d203c5fc7ac06efeaa4989ea373b55b32440f50b4969ed35eed578101407e2e485fbf235e553ff03b12aaa183b8ba39eefd649cba4a64d01ff298b6fbcc67331bff0b00000003000000000b0000000300000000f020840c0ac30582c5cc944f9a0e7fd2bf6067db6994cf12e4495df938e6e9871301cbf18c600084d0e30db082044d8080b2da0efc52a37be0b0abb72e2c878e2d894135e5903aa4b7510215dfc06644434894408779c15dc2e31b3c26bc9eedd420ba0b8cc62c91a40a79c93bc211b4781bffe9078402625a00829b4094e38fac030c30a806f1a18348cb35b1f9796b89bd8084b49004e982044d8080a96eb803ae5fa5e9bd6330e833372d275f55c50f2abd9a783c76011c171bb9a854f7ba60b09c1d684ed56f94254f87f6a3f064e1a1d542dbd09b67a36ea583611bff0b00000003000000000b00000003000000000b00000004000000000b0000000300000000f86c820582840175d720829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000001f399b1438a10000082044d808097103c7391adfca69c78cbba1820b0bd440608827f76f970ebabee9770d106a325407087010a8ecceaf780e93d7db2140e934a94ff35ec90a2eca49a466f852e1bff0b0000000300000000f84921840aa60ab382e3b8944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d000000000000000000000000000000000000000000000000001301cbf18c600082044d8080a93e5a2fcd9fc6e8431efecde6b5119e2ed7bdfbce535819481e7c4a8afe7afa48bb9219bd7bf591c3b4c1677320ef5961415c7192e2e564945cb87cdceb51661cff0b00000003000000000b0000000300000000ee8308be6e840175d72082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d808024468cb79bb0bdcd83559601af894fea6b58b2c042c87a274da30b03304085ad289f7d82b0e6df87cfdf16b69a1671915fb2fb2779831748932db2ef39172c301caa0b00000003000000000b0000000300000000f86c82058384017d7840829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000003afb087b87690000082044d8080079b0b01fc85f171207c07f0864e86783059697bffc98962dc0573ae40c413786a55a9c8e8cb9e58d24936de95f05fa3f28cac23efb6de2f65f455652c45cd631bfff909ae82129684017d7840830993579489e830972c7b453d4715ba1d3894aa096f219f0280b9098457ffc8610000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000006ac983efafa917bf04342e3684a863c9212e1fe9642eba19e81b0eab36c223645f2b84aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000000000000000000000000000012659eafec31743a8a1b09826b378842d4b42910da64ae7c0be9774b3490711b80e76dc2d6e18b40e24de42f1bb55971bd666fdeb1a4a463c0a4154a072796517000000000000000000000000000000000000000000000000000000000000094000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae261100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000bf4f119c5bbfe0000000000000000000000000000000000000000000000000000000000000066e13ff10000000000000000000000000000000000000000000000000000000000000002afa96d133fb7ca1e775405c5ec53a83986cc81317bfa06200d34061675b76adced276e8201ff7defde2bac4a9e387413b3da71f8d1de09ebac9a5490ed0bc189000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae26110000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000007e6125df4bd46800000000000000000000000000000000000000000000000000000000000066e13ff1000000000000000000000000000000000000000000000000000000000000000283ca785cb646b1762da8d7c98b01f56e69f4ffe07463f3ece57a61331ca1817bed276e8201ff7defde2bac4a9e387413b3da71f8d1de09ebac9a5490ed0bc189000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae2611000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000290000000000000000000000000000000000000000000000000ef4ebe4c98404800000000000000000000000000000000000000000000000000000000066e13ff100000000000000000000000000000000000000000000000000000000000000026957de8f52722139f85b1fc83e50f75e52000cfd5e2f6a1814eaac236579b00bfce0e08ce4fc8588953f31682cb0cbddf9b74ab8f00f2e8ff6837ebeaa953f31000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000004e70004b01987b4fd7dacab348f0b39e9ae26110000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000f3cd9dd0f7b2b000000000000000000000000000000000000000000000000000000000066e13ff1000000000000000000000000000000000000000000000000000000000000000228f70f83d2d2c2012ccc8e6d043c4421144c676e19ad77b3f5d06a55532ea2d9fce0e08ce4fc8588953f31682cb0cbddf9b74ab8f00f2e8ff6837ebeaa953f310000000000000000000000000000000000000000000000000000000000000002ff0100000000000000000000000000000000000000000000000000000000000082044d8080a928627bca2a83841e6a08cac57dc3f01cce3d139d5371895f14a66f284721a3598e5b04b9282a7b1b5abd1c4b80e125256206fa48c41c6203b40defbcfbd8e01cff0b00000004000000000b0000000300000000f122840a1b74f88301535c944f9a0e7fd2bf6067db6994cf12e4495df938e6e98712a07b108eb00084d0e30db082044d8080b672c58ef0e2fb2431dfc2e188bdaccc549afd9453f907295a9b78242cc392e20797400e2cadd16e89f6490992082c84dd9200eaf4135c3af743c8eed63212d01bffea81cd8402625a0082ef4094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080cf5c96744631e4660952c51533ff1331d8f92e6f5dfe5fc50e8ae59af5d654ba0992777ecad55c9fa7751777c9674d850059586adf1e25263c674a6affd8fbc51bff0b00000003000000000b00000003000000000b0000000300000000f86c82058484017d7840829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000001ae361fc1451c000082044d80806d429321175f5602fd6772119c4ca54dc2ebf6837a3d2c7da3cf16e92cbee35f13d4a4f4d2a454164430f73b7c646d1a9ba2589463c8c4a01fbfb57190756a461bff0b00000003000000000b0000000300000000f86c820585840186a000829d91946e6b8f03c407cfce46ba9847231fec40dce9308380b84440c10f1900000000000000000000000092db6815e62f6a8ef196306502c0283297f73b75000000000000000000000000000000000000000000000006d499ec6c6338000082044d8080e7af27a209e255c5d8dac95f112ba887fae9d1e14a2e4bd2ab28c0db0405add0789ea99836c9f7006838a5c8a343c7910fa04fe62359c5840021a1e8ecacb5cb1bff0b0000000300000000f84a23840929944583010d17944f9a0e7fd2bf6067db6994cf12e4495df938e6e980a42e1a7d4d0000000000000000000000000000000000000000000000000012a07b108eb00082044d808070235f900cc55b78e1e6928ef4ce66827bf7fe71c143477be736d589379811ac253eaa21eeb61a16813aa811386885afe8290602dd5690383627722ba9d7e2211cfff86b188402c37cf0830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080c40b5b896d81653b619a8913d90eee62c5d619b4962ecdee41ea9832aa95020349132258d75204c62c8fc76d9f8283b1326d4ee913a0b723657c54fbfb1bb2f71bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9048c198402c7c8ea83135048946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f0900000000000000000000000000000000000000000000000000313295693672400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000a16c02000000000000000000000000000000000000000000000000000feb937a2911570000000000000000000000000000000000000000000000000000000066e14e3200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000a16c02000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080b3e971ff6fd58ceb07da1d98787e1144e20bbb3a4bc4898427f95bb1883b209b79f23b51651aa2197d379428541ad7ab7f2baed6ea46c94ee62fe302d16eb4c41cff0b00000003000000000b00000003000000000b0000000300000000ee8308be6f8401820c2082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80805c8c929f5ee6b9d6d3ee54c1745ed9009dac82133aa764d8b66f952ce4af2e0072573744d41b291cc6384aa9c9b5057a4a1d979fdab2c590ea251fcdb75fc49d1bac0b00000003000000000b0000000300000000f9018f830151da8401a8a6f08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000050b52227f968abe8cba85ec45a4bda8f65d1d1670000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000015b392fb030c00000000000000000000000000000000000000000000000000000000000000018da49930ea8edc4bf2ba83646893e29e20703a5b2534c8e97ce446e41bc6ffe682044d8080c1a1b89b29b44083c19bc4b74e77b2a9190047f3ed5ce33198f142333eb479ab19eb434a8c761191c6fe9f02162be2d0bb5e163eb2b8528d493c44413fc512671cfff86d82010584018e41208304f8d394dfb6baa334712cbbeb26b7537f62b81c2a87b1e880b8446e4bb3b5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000182044d8080fc53deb3a49af4a7f3bdbe490ec121cf4b137ee3e28bce917494eabf24b148b91aeaf809a6a552b1e7bcebbb955ed6a54d004ce4fa883b0d53c9faac21cc542b1bff0b00000003000000000b00000003000000000b00000004000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f220840186a00083030009941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5e9924268a07bf7d21c823217668de1706f45cf6eedfaf6528e79c479eb926f00000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000cf6ea21f3928460e36e30150815f212fca2f9a900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d6574614d61736b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5166436f4d73464e784d7274756a31507054614c444261554c586551694453626b5a63524533687839516b68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418550cca2cf3bfcec208c53cdd1cc838b0ffb5c5256bba0d4166875e47c099b175f181a3a95b5c0706963513659d182ba900782a379d0eb74715719e59a6f58c11c0000000000000000000000000000000000000000000000000000000000000082044d8080e58acba608a369d18c6d73f43366584f723671662e22cd7bb1807671b3d2f71f03a1f7a8ef7d198a54345cbb4f226888cc8867e55b6b20e231e0228d71d79cb71cfff8b12b84025317c08304ac1194222228060e7efbb1d78bb5d454581910e392222286043d112b3c31b88432accbb900000000000000000000000000000000000000000000000000000000000000e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b48eb57e000000000000000000000000000ea6e4548bb97b9237fd08bd32ad9a6f8e59eb10b82044d80808c2c47c45393f93b84a8a00f3e965a8a3a532e4d03d0da39a78f6ed20f91faf017d9d1405441a4a8b6d81421ff34ce60c607ff5843b029907fbeb58ee371f34e1cff0b0000000300000000f903f22184028dd3a78309e223941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f53d6aea38052471c5a2ab59bb49640603e17c99abdaa8a597c19480f99e27963d000000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000673962924875bd4cbd2e0b22ed63c85cecac2e40000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4f4b582057616c6c6574000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d55316142655a5a6139787756357746507855734a37416d6276714a38574a784375656f4452666567595a42790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004159b0d36df5531ae9fad1f1382129122fb7cdf909728e403412134e87d1c1542a4d2a58cc08a4005b8f8dfa3a594103b3176813122f947790cd52a2fe8df5f5c41c0000000000000000000000000000000000000000000000000000000000000082044d80805c95ef7a6c28a8e2e82f28d6d894b5b9ee5171b03a1c22968ce432462eede80b24163ce4e126a85062e602cd6e83bc9fa4855353b979476e4e8a6d495d56d5f21bff0b00000003000000000b0000000300000000ea819d8401a39de0827181943f0a9f960341dc53747d43d27e4e1a2678f7983e8084753899e982044d80803e62d33d344773f096582827acedb468e005027390ecd7e427d3bfee95cc734e4932744bfea8adcf4dabaebb2115f1d742b8f346984fc496f7e7a795cb71d6f31bff0b00000003000000000b00000003000000000b0000000300000000f86e8301c9918401aa54a0830186a09465a4b8a0927c7fd899aed24356bf83810f7b9a3f80b844535b355c000000000000000000000000a703654c31dd3bc26dff3c6ec524540c602380390000000000000000000000000000000000000000000000000002659289813c0082044d80804de874ddea4656d09ad455f64143e57454f56e7191364e43bbbceabefc4ca03002f35052b4e2b6d4be7b637a6dcb4c3b37d6e536f7a5dcc64b147469ade0037c1cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f8cb0c840b7f6358830a623f94c28a4ec9f09e4071e3707eaaca5c3754fa4f5faa80b8a48fb8b6c780b56aeeab2dc46113b09dd8069578d16c679cf639475dd6e0b8e60b7a3b21d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000082044d808014cb2bfb965493c5dca083a997eec444184bd9f3f79aa4c555bae2f5fe5d567058f2dc8d1eb1aa371a97d86c65095e572232021dc7a3d453c2a2ec11c955092d1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f2248402625a0083048056941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5f51a6c4d02c18d30b29fa792091edfdeeb4a51d55a18c953784a33e54d7fe50a000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000f65a8d44c6ec9823ff7be42b3cac3b457ae8d5200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d64696179665a6f6f7a676a64625374764a657a48467664325a39384e656669517736594a4144456a56554e4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041b37d89a9353bd6b5183ab63e9080c97cb5a24fc814b5fadf0d531acd6272dcdf00a568d77e7e5ef3b1821820166377891930eddcfd50fde885affcc1320f61d31b0000000000000000000000000000000000000000000000000000000000000082044d808076fb7660fdc1ef605bc860a4d1b98537f6bb3c18c507dffec61c663c14950ee06415ecdb58bfe14b8642ce2d909378beda578c5353356a559a6ae1f176eb204f1cffec0184028e2965825208944570f01acc78003c270b68217b819d783cc892f487179d7b0b84e6678082044d8080829f6ee74f6fcf2ad05e10267d898068704c651ec8c3af9bc1b06d48b721e8ed5d928a25a8942496fa4b557e61bf6e6552e5d95c53ae3d1ec9bcd843379689381baa0b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be708404c63aa082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080331d3409eb28ac0f3aa116833654fa85ebc0ce15d7d6045703ea5cabed548b2e15c7a437215b8e74d70939efc3842b0dd571788b3abd34449555b16d18c6b6c11caa0b00000003000000000b0000000400000000ee8308be7184019768e082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80804993bb9121b4238b115f0591a929482dd9ff7c2e6974e85901a475fef18636417feb9d1551cfb7d465738a2d001cb5f7ba47e65fd4c1ab2e6d67117fa835a3361caa0b00000003000000000b00000003000000000b0000000300000000f9018f830151db8401b466c08302c7a094555a64968e4803e27669d64e349ef3d18fca089580b901640ddedd8400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000002c7a0000000000000000000000000000000000000000000000000005d423c655aa00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003e5cb35901d40efb3c6d38aacfb0f4b0cd5258650000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000045cb32e45f28000000000000000000000000000000000000000000000000000000000000000142b576c33464f5ecbf09fa2b1575d07772c814bcebababe6c099862cafb4fccb82044d80805dd0484cc33cf12d031a9a675192d937ebc6aa79432bdedb9190f4fe84410b6029c8935f77a6f8cc99964f47afdeb4c41790eeeb636babf8e3f034742f8c98b81cff0b00000003000000000b0000000300000000f00e840172c9e0830139f594b58f5110855fbef7a715d325d60543e7d4c1814386a758d6a38000841249c58b82044d808045d3b812f522cf8f1b5a670f65c1fe24a0806c563eb3dcd9ad2bffb3e2aceeaa0884dea66e76f89a5047243e18d3bacc1a849ec983f640a958ee410c804916741bff0b0000000300000000f382010684019768e08305576d94dfb6baa334712cbbeb26b7537f62b81c2a87b1e887254db1c224400084e9ed3d3082044d80800b1d6a122d7289631fdfb4b72e4a6a86c293afa79c1f3337c9a188badcf82dbb2efba7d16402ebaa03b0059aa68f7f3a445d2fd3425cab4179d50a9d06df0aca1bffec81a78402faf0808252089433fd1acc271574f6e5c2eb4a0ea1264251ba2119860abb620a3c008082044d8080c9a1e1b5d798f7af1ffbd19e89c74fa39119c8b261e9f84fa39d9af2c67200d43ee954e07bf11fb21588f5d62e6c5c7dd8da23de14658664a4389b4fefd13f6d1cab0b0000000300000000f903f21f8402625a0083048056941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f522f0b9754d4d2585628043451776bc2eb65ac80a097992cdd46586be7aad1739000000000000000000000000000000000000000000000000000044364c5bb00000000000000000000000000033fd1acc271574f6e5c2eb4a0ea1264251ba21190000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c52616262792057616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5374533974704d3479584e42543463474437554b4a77616a4b67443363444b7971347a71764e45657248434d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000414ed93ff5c116db4089def64910db6449c30e8196e78031d25816d7e4f92b119f62e583f8b2003c9b042427ace41ef3a6a1619130f2fcc00fee151d0acbc804191b0000000000000000000000000000000000000000000000000000000000000082044d80805341f33dd6e64568431b0846bbc656fdc618ce107b9812dd2bf3f2e91c44f0240c3281cd38136e751fee0902452bca959da52d667a092d2fbc70ef493af7cef81bff"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + { + Transactions: common.FromHex("0x0b00000000000000000b0000000300000000f9014f830115518401bcf240830596219473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e140a500000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000731412d863de818aedc2ac00000000000000000000000000000000000000000ae12c46db9b6fc047c306c500000082044d80801d46c877c9b34d2ab10700459c548bbdd97b4c71ddaaae59eb4aa9829063a3456742ada3207659a4d8499dbb6600f91b9e7ecef2807fb739d2a63af6538555161cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f901b30f84019bfcc083039dd894b58f5110855fbef7a715d325d60543e7d4c18143870b7f8bdfda5884b901845190563600000000000000000000000090321b082c1da51d0ec59ec7d02f5b65d1c70ed3000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000b7951c00000000000000000000000090321b082c1da51d0ec59ec7d02f5b65d1c70ed300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001490321b082c1da51d0ec59ec7d02f5b65d1c70ed3000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200010000000000000000000000000000000000000000000000000000000000061a8000000000000000000000000000000000000000000000000000000000000082044d8080fc542a4b3b5caadfd5c04117a3f8512c467f8a59866aaea320aa3b5bd891f92b068e84eeb6846cea45c443f478e7c48968d14a2034cf6ea9005facf652f51ea91bff0b00000003000000000b0000000400000000f86c81d08402625a0083011108940d1e753a25ebda689453309112904807625befbe80b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c768ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080a984967c135177e8261c40769322acd476a9a79a07d7266cf441b0329b3b009533e8693879324ede3e8028f2baa8c51ea3aa1212ad5bf5c94dc49f14a2831ff61bffef808402625a0082c07194a06e1351e2fd2d45b5d35633ca7ecf328684a109863691d6afc000840333f63e82044d80803f154443bd814efa2e144586740cbb0024d5f3ea553b60c131823aa61e2be4e73adab50e89b656b3c7e4c9e2f511754dc45d14ee7894de88498f2cd23e825a501bff0b00000003000000000b00000003000000000b000000030000ae460b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9044d81d18402625a0083044f4e94b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e141e700000000000000000000000000000000000000000000000000000000000000030a080c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000d1e753a25ebda689453309112904807625befbe000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708cdc50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e147cd00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000041ce9c062459de7685af53cae3d9c022ce609093f04ce875111314f8aa1366bfd579a369788bb5ca6b5cf908cff33ffda44e1afa0c4165caab252665bb02ece9861b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000007355b876be771900000000000000000000000000000000000000000000000000001541e01138ed100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d1e753a25ebda689453309112904807625befbe0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ab07bd0ac2502a7fd0a5005b420b96f94104fcf80000000000000000000000000000000000000000000000000001541e01138ed182044d808002d7ed117ceaf8a71c9325711c8ebe173ffb02a537a631170f2bbb140ad8532b2e3f3dcec0e5c85384fbb643e3508cce4625696ffedfb0f5d16c517a11ea1bdd1bff0b00000003000000000b0000000300000000f86a808402d8fce182c16f94652a38fa87f60a122aef360eeefcaf6258eddf6a80b844095ea7b30000000000000000000000000a6b1904369fe59e002ad0713ae89d4e3df5a7cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d808096c77cebc8ba97dbcb33a46b05001e3f26206f91c497007900507d8297919a5e042728715790ea437a06e937ffb322b65031db0ba633dcbe0351a1ca78a70c991cff0b00000003000000000b0000000300000000f86b1a8402d06b49830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d8080005ee956dfbd7ecdf8ca2c5fa9b5a21aedb2a425d4d1568032332b5ec3e689fa1988b83c9fc83a17142953dfcfd62d2e79c15f761b013b042537a77602933ddf1cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f90a6e8204ae84019a762083023cc494709944a48caf83535e43471680fda4905fb3920a80b90a44437b91160000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000008e000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000c52eea00154b4ff1ebbf8ba39fde37f1ac3b9fd46575f2c29a636fa55eaa8aa86706b6d3c33a21e0e79e1647259718dac070efc40000000000000000000000000000000000000000000000000000000066e140ab00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000937596f639e540000000000000000000000000000000000000000000000000000000000000004172b3eb5cd3fc78267d5672b9ad5317286aa8f3d66e55d866dcdbc9e5d1255c6d26535ad3d1b26b4b8fbc6bfe8cc543d3dd612138909a4aeb47117f908bbb30321c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000bc6471e88d8afe936a45beb8bd20a210ebef68221998d1c5e381c1edec0feec35e8bc3c9d7cb39ace96d9279b6f9a07a7ea454240000000000000000000000000000000000000000000000000000000066e140a800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000009463846edd3200000000000000000000000000000000000000000000000000000000000000004168362b70473277d046be65bc395f0b0c8b98173b46adb4192c6f4127df5d1867494705d3ceac8368afe2ece88a7545794f4e51fd431667febdddfd66a2b152aa1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000a924847354c551c79bae7e75529364ba0449e51a39001761c965b7719e6b39822f09c891d103009d2703a4989cf7bc2e007582fc0000000000000000000000000000000000000000000000000000000066e140ac00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000945b55a7e0000000000000000000000000000000000000000000000000000000000000000000413dc56655400801a9c210ecdecebbc3da45c92de696f13b97bf5e73b6044e27366fa1e651e74e5f57d6a610791ec51a8eb5f2e8c482a5b5e22f939c0f0b1eeb391c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e000000000000000000000000c9b494d3c6ea3fd42779df9a136db10374c98d80c7dd05baff9d2948c0f215ffa84c4de82694e959f2fa7b70f2f2a1f398381e900000000000000000000000000000000000000000000000000000000066e140af00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000009455be8a47413a000000000000000000000000000000000000000000000000000000000000004152452f2785fe8cc8876e4d7c70e6656fa7d2fd5d48d1ba751829ec73a2ac5a607e300939c863047c82dc39ad2e28db75546263bf6c8fa3aa3ae7009607e8db191c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001641a0a0b3e0000000000000000000000006b56e47dccfbc82d63df3da417d26e8b1b877f0f5d7cab00186de4dd836b0e3f89da0565a5a68597e1772792cd3c63dc4505d9bb0000000000000000000000000000000000000000000000000000000066e140a700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000093a95d5afc400000000000000000000000000000000000000000000000000000000000000000418ac1031836570d4ca35d6a2cbfc9e7cc8ee5da912831a8769c87b4b5df1b74604428cea4bc23413a82b246008ae57b93c1f917ab594b6c63c60b009db44cfe871c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e400aae33f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005750fe3cc44fb71eb6dcda12a40ba96a779ff3292e4ee0b83e480607fa18a253c25dc66d59c09b65362270bd4ba318502886dd51323d42cc672bb118a2f377d937701240fd1a97e184401c372d22d78050175399403b5fde50faf03bab1c7573ac1c918bd24675fed06d7c1ca44882492b3ae0462c3b0c6e7cae84702c2d9708be6812ce7d565ac54474e619953d3b2588ad818c5b7328ec16de6304fa43badee0000000000000000000000000000000000000000000000000000000082044d8080aa51d9561dc2f3f50bc646119dc5d2288be28526b01facb218bfe12777bb470b73d45a28e9f367be9c9ab1e9823735251e7c58ab8b527dd8864c32531d9ef4431cff0b0000000300000000f8723c8401a524808301d9779454c3ef8ce719ed72c2050ee42a05aca9e9aa1e1f8701c6bf52634000b8441d7df19100000000000000000000000030280ba7411118147b835ea31029481b01284175000000000000000000000000000000000000000000000000000000000000000182044d8080c4a02d3c640f35c2628bf24777bcb8157adac99f25a33a66aa0833e12e0692ba77820fa9aa795375809f045555ba5cc8167c7891ed03506dc2c67b64ee7112be1bff0b0000000300000000f86c81d28402625a00830110e194a8ce8aee21bc2a48a5ef670afcc9274c7bbbc03580b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c768ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d80804660394e29ceeb7d28d161134a042cb966b23c6ed12f2bf645022ada6f27fc3143c01a84374564d949e10dc0df1c9c103f78651b831bd12482d8e3442f024a881cff0b0000000300000000f9048c1b8402c9f9b583138a26946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f090000000000000000000000000000000000000000000000000031329898bf72400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000990e21000000000000000000000000000000000000000000000000000f1b8b1e74b2040000000000000000000000000000000000000000000000000000000066e14f0200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000990e21000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080c52fcc136946cb5b9089d62a52d13d661c9588fb367523e6404b34932fc651fd108b70a62f080f0a280357b74a7eabc52b5b807bee6d4ee85f85bdffdce996441bff0b0000000300000000f8cb018402c9f9b58302724d940a6b1904369fe59e002ad0713ae89d4e3df5a7cf80b8a491695586000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003148e44ea107a00000000000000000000000000000000000000000000000000031167b0f044b80000000000000000000000000000000000000000000000000000000066ea7b6882044d8080c54a7d2f5e3aaa2f9e932ea0b5c6fbdb5166c3bb4226725e8cf0c5acbb677a637ce0e52990ef54755786e983d449c7c6adc824f57fe7a50f4960fba85ec8d44c1cfff86b198402c4c487830243db941e4a5963abfd975d8c9021ce480b42188849d41d80b844095ea7b300000000000000000000000057df6092665eb6058de53939612413ff4b09114effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82044d80805a91813eb1f40d2394eee6ad6410d547b8189e6be17bf23c90dbc1d01ba6edff103a22f55e0986304b0d36b367e905b3a5ecbf94755bb2670b563e25b6d174921cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9048c1a8402b3d0168313849b946b2c0c7be2048daa9b5527982c29f48062b34d5880b90464b80c2f0900000000000000000000000000000000000000000000000000313298f36971400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000991c85000000000000000000000000000000000000000000000000000f1cf6bcc4e4c20000000000000000000000000000000000000000000000000000000066e14f1a00000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000991c85000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f304c7323d9101cd90c05696c97a4cf984a9f6a500000000000000000000000000000000000000000000000000000000000000010000000000000000000027104412c7152c658967a3360f0a1472e701bdbeca9e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001e4a5963abfd975d8c9021ce480b42188849d41d0000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000000000000000000000000000000000000000000082044d8080f24aed3d22f15fbcc57fafe44d53a1a9e60f4ba51291fa4f22b53e20d79ddfea5553060fbced61fca5aa4d1d333d067b1c3904ecae9d9c71c47d5693a257e8cc1bff0b00000003000000000b00000003000000000b00000003000000000b0000000400000000f9044d81d38402faf08083052a5194b89a6778d1efe7a5b7096757a21b810cc2886fa180b904243593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000066e1422900000000000000000000000000000000000000000000000000000000000000030a000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc035000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000006708cdfc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b89a6778d1efe7a5b7096757a21b810cc2886fa10000000000000000000000000000000000000000000000000000000066e1480400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000004159610a05dec35ea87031acdfdc775d81b7d21424be26f4198d7963c054b6486102f7bb552f766607a24314a4d4674ec5a8b6cae07000ecc918b6ef1b92b1dad51c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000002a055b00000000000000000000000000000000000000000000000000042ae8f761201200000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002ba8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350001f44f9a0e7fd2bf6067db6994cf12e4495df938e6e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ab07bd0ac2502a7fd0a5005b420b96f94104fcf800000000000000000000000000000000000000000000000000042ae8f761201282044d8080fa6c7ff44fb469090f7f796a4dd27d3dee25540259f1b8307ce80915f329281f1643255ab2b3498b2827900ca99996c2cf60c4e2b058cab244d2783263fc07c31bff0b00000003000000000b0000000300000000ee8308be728401a6ab2082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80808cae305056836f1b109e76a38a29a95e699ca239c636e820c5221cc0bfc1ae8e08b630842cda6c38fb50cbb4676c4a61e00b01f55b68f27f51123de8cffd652e1baae96a8402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080d0a9dbdd118b85ea2dd4a860354598e348085c2c448ffe77b9b9ebfc87bbd4b3416de323e24a7e3ff04007cad827b524e6054943ac7f7d51942392f1c1b9199f1bff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f903f2028402faf0808304e5ea941195cf65f83b3a5768f3c496d3a05ad6412c64b78644364c5bb000b903c4d123b4d80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000a26ed90933f9410c967efc64452681f5fb2f110de3cb09ff94ef99619912ce386a0f42d2f466e7d3e480d7129bacc121000000000000000000000000000000000000000000000000000044364c5bb000000000000000000000000000a703654c31dd3bc26dff3c6ec524540c602380390000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008496e6a65637465640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d55656151777944734138474a4858594c794248344333565564504d6f5142474c457a3648476d423152696f5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041f2eb6584e3d4bfdae352806a3a5f344ad70fe77bacc930a7a40b925f409ffe4f4c8a88c6e07314b8a109757251949b0932d806ef8a608b54f8dee0f447ba37381c0000000000000000000000000000000000000000000000000000000000000082044d8080f2eed7742d047224403c36decbbc5c7a6f1bf7f67057cb078633cf30c96449ac7d2a665aba4252c99bba96742960a7228167514b354f24d9a97b6f5777197bb11cff0b00000003000000000b00000003000000000b0000000300000000e93a8402faf08082ef4094b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080f512c7a6222205683b9012666c5455c998de80ca017dcae80b4b8353f2d9c6e7444e694afe71445e1f73011c9416982fcd2013de37f5a6356b62d4786b2e01dd1bff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be738401acc5a082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80800d61afecc903851650d8243af5e3ec20654db98d9c0fe14f7cdb86d9e50f2fd7188796e923b771c47a7674636d3a9b4e14fce759226a2445a470836e8aeb1fc31babf9014f830115528401f78a408305962d9473903fec691a80ec47bc830bf3f0bad127a06e3080b90124782661bc000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000066e1415a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000000000000000000000ea034fb02eb1808c2cc3adbc15f447b93cbe08e1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000072fa529d46831fa4ea1365c0000000000000000000000000000000000000000ae065f41c16c30440f13ba800000082044d80806bfcacaee014344f6c6bf79fa3af76f7baf85705a22c6b6022aa3d2275044f515e385563fc9f791dd33b51658d81b061b0e582896fd33f745f00b4208500200a1cff0b00000003000000000b0000000300000000ec038402faf080827b0c945e809a85aa182a9921edd10a4163745bb3e362848704adcdf52b50068082044d808072e2f7ccdfbf0c9967dc8d2983a80a846f075f22068fc67764df88c72dfc3f206fa80b91470d803b7f94b181278d72809f042b83b4eb3b242998ac89f12491ee1caa0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000400000000e9768402faf08082f02694b8af4fa4feabaa02a09d146e4f871ea4a0a41c048084a66f42c082044d8080f7c406958a3b283f040ba8e3b99e77961e478a6849858a513f9950fe2474271660a78cdff6ac241cd222b97a27685de4da616036e123ebe6947bc531590760df1bff0b0000000300000000f86c81d48402faf080830163f89437eaa0ef3549a5bb7d431be78a3d99bd360d19e580b844095ea7b300000000000000000000000031c2f6fcff4f8759b3bd5bf0e1084a055615c76800000000000000000000000000000000000000000000000000000000000927c082044d8080e3b16d5bfd529eaefa4d8ad988900a3ac14748b9b787645fe42498619e4b85001f4ec92e43b5ccdd3e61780fee963ddf0fbaa9b6b7bde93e6e6bbda3abed8d811cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9010d8263678401ab7d80831e848094f6ad3ccf71abb3e12becf6b3d2a74c963859adcd80b8e4bc651188000000000000000000000000a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0350000000000000000000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e900000000000000000000000033128fa08f5e0545f4714434b53bdb5e98f624740000000000000000000000000000000000000000000000000000000066e143f80000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000098176ab6ed58bc000000000000000000000000000000000000000000000000000000000000000082044d8080f44f214824c6406324f3caf06ca6aad692bfbce83fb69685723885047c1978a0009f698a2561f6fd301af75d83ba928ae9718dd2d175bee9e2a70260a91980151cff0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000ee8308be748404cace8082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d80802c732f67940b07b16d4ff7c2ed509c81df86e1aa948e04a97f4c1cc90de679a07a50c2c1df215261e32b211a422ec0cc62994adcc02962b201a058db5485e0661bab0b00000003000000000b0000000300000000ee8308be75840198ef8082520894417a7ba2d8d0060ae6c54fd098590db854b9c1d58609184e72a0008082044d8080365e902ec6677c927098c294ccd1808009bd6baacd6cc18272b1f8e4a3a88a940c88b52ac0c9568948d082d6298474169873f7fa0dc09bd1db8b6be09ec6016d1cab0b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b00000003000000000b0000000300000000f86a1384018e412082b4cb94c5015b9d9161dca7e18e32f6f25c4ad850731fd480b844095ea7b30000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae0000000000000000000000000000000000000000000000003ddd14cefbe04ae482044d808090ed685bc17c39f23da886bec59a15265f557d06b5388c26f489d199e2c9dbbd4e5964f35d8272171d695b20f1aece1e56bad6a0f93b5992ff69f774527ac2751cff0b00000003000000000b00000003000000000b00000003000000000b0000000300000000f9088c1484026ccc90830c45a3941231deb6f5749ef6ce6943a275a1d3e7486f4eae80b908642c57e884ba378f2fce937d7762985fbb68cb4ae55a699ae984949e2401b561a7327abe8f00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000003f2825e0ffd694adee76c9581fe707606074aa900000000000000000000000000000000000000000000000000006b01f2257e4a2000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000086d746f7073776170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863346639646134323361626336393237393937383338313533656131386631616266396435613938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000b49ead76fe09967d7ca0dbcef3c3a06eb3aa0cb4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd40000000000000000000000000000000000000000000000003ddd14cefbe04ae400000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084eedd56e1000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000000000000000000000000000001fac95eaffefc40000000000000000000000000000000000000000000000000007eb257abffbf1000000000000000000000000c4f9da423abc6927997838153ea18f1abf9d5a98000000000000000000000000000000000000000000000000000000000000000000000000000000006a000f20005980200259b80c51020030400010680000000000000000000000006a000f20005980200259b80c5102003040001068000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003db57d1396205f2f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e4e3ead59e0000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e5041000000000000000000000000c5015b9d9161dca7e18e32f6f25c4ad850731fd4000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000003db57d1396205f2f0000000000000000000000000000000000000000000000000006b01f2257e4a20000000000000000000000000000000000000000000000000006c16a70441813d770acd5d9f04dc897d42ce2f295f18700000000000000000000000000f2a81500000000000000000000000000000000000000000000000000000000000000008c208b7b5625d78deb49240ef28126cbe2738098100000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000240f6ad3ccf71abb3e12becf6b3d2a74c963859adcd00000140008401000000000b00000000000000000000000000000000000000000000000000000000c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005f0000d4780a00d2dce0a00004000800cb0e50410000000000000000000000000000000000000000000000000000000066ea7c4c0000000000000000000000000000000000000000000000003db57d1396205f2f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003cc5015b9d9161dca7e18e32f6f25c4ad850731fd4a8ce8aee21bc2a48a5ef670afcc9274c7bbbc0354f9a0e7fd2bf6067db6994cf12e4495df938e6e9000000004f9a0e7fd2bf6067db6994cf12e4495df938e6e90000004000040000ff000007000000000000000000000000000000000000000000000000000000002e1a7d4d0000000000000000000000000000000000000000000000000006c16a704418136a000f20005980200259b80c51020030400010680000002000000000ff04000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082044d8080d8991732646a94259a6feeec42e5a4fc65fd2a806c109c58b6da6c6b9aa175a024d45fb5eb3d774b1b9a50a6ee7dd40b8104d1caec3bdbe82885a18aea9308621bff0b0000000300000000f8b12e840263c1608304ac1194222228060e7efbb1d78bb5d454581910e39222228614edc409dd73b88432accbb900000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000246139ca80000000000000000000000000000532b4600bc0667326bbec62c1f55a4e962b21a782044d8080dd3a56e7bb40299dab4d821c8860cde90383a218003cf93ada19e6ac7762fbb2248a75809c92a48152c303d8197289a58956d0318ae6d816ba67054d954ad5181cff0b0000000300000000"), + ForcedGlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + ForcedTimestamp: 0, + ForcedBlockHashL1: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), + }, + }, + InitSequencedBatch: 2116101, + L2Coinbase: common.HexToAddress("0x148Ee7dAF16574cD020aFa34CC658f8F3fbd2800"), + MaxSequenceTimestamp: 1726038493, + }, + }, +} + +type decodePreEtrogSequencesTestCase struct { + Input string + Expected SequenceBatchesCalldataPreEtrog +} + +var decodePreEtrogSequenceBatchesCallDataTestCases = []decodePreEtrogSequencesTestCase{ + { + Input: "0x5e9145c90000000000000000000000000000000000000000000000000000000000000040000000000000000000000000148ee7daf16574cd020afa34cc658f8f3fbd28000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000800399065677ecf314502940629335726a30609193556a589f6c185648c3d528be00000000000000000000000000000000000000000000000000000000641dde270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087bf9056880808316e360942a3dd3eb832af982ec71669e178424b10dca2ede80b905442cffd02e0000000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3021ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193440eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f839867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756afcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8923490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a90000000000000000000000000000000000000000000000000000000000000000927e6ceecb5b20935d26fbfc57002a59298b6e82640e8d652809e06854d7a81f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001dba1131000664b884a1ba238464159892252d3a000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000082044d8080e3a5f558b3cf098afea2afb2d3366fe13d26bdb22732a91e2a0c10c7f97a6fbb1e6debddee91c6ce4fe8d0ba6f17b2e336080e5b6b70bd5d88bb5dca5121966d1cf7018501d2b4518082940e941dba1131000664b884a1ba238464159892252d3a8091457468657265756d207363616c6573212182044d8080954863b2ae756eb3dfbbce5acaa53009dfa5d05c2f2fedaeefb8b386924d78c864b0db49d3626fc3676a5cb91bd00cdeb12b73ada1bad8695d8a35d4667ad3f51bf90185028501dea013808301f91f8080b90170608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063d46300fd1461003b578063ee919d5014610059575b600080fd5b610043610075565b60405161005091906100a1565b60405180910390f35b610073600480360381019061006e91906100ed565b61007e565b005b60008054905090565b8060008190555050565b6000819050919050565b61009b81610088565b82525050565b60006020820190506100b66000830184610092565b92915050565b600080fd5b6100ca81610088565b81146100d557600080fd5b50565b6000813590506100e7816100c1565b92915050565b600060208284031215610103576101026100bc565b5b6000610111848285016100d8565b9150509291505056fea2646970667358221220f5cae3e6573396dec6ce732ba576ffffc34b0f6b0a10df2f0dc326c69796bf1c64736f6c6343000812003382044d808095271051bfa721a7b6b0c2180aafbaf905f85e1398badb471718c376b695d5ef60fa923564459177637555b43253309231b6f8e10e3ecbac37ac5854da04934e1bf84a038501b44e560082b91494b33dcb71fc49969473ded72bc361f6be8ee149d180a4ee919d50000000000000000000000000000000000000000000000000000000000000003282044d80803458433f99b626a532cc9aebaae875ecd606cbb978da7ddace53b817fe8e758972adbadb7933a580acda21b790bf5c2d04264ad56dc4b453316b0a6fa8fa17b71c0000000000", + Expected: SequenceBatchesCalldataPreEtrog{ + Batches: []SequencedBatchPreEtrog{ + { + Transactions: common.FromHex("0xf9056880808316e360942a3dd3eb832af982ec71669e178424b10dca2ede80b905442cffd02e0000000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3021ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193440eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f839867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756afcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8923490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a90000000000000000000000000000000000000000000000000000000000000000927e6ceecb5b20935d26fbfc57002a59298b6e82640e8d652809e06854d7a81f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001dba1131000664b884a1ba238464159892252d3a000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000082044d8080e3a5f558b3cf098afea2afb2d3366fe13d26bdb22732a91e2a0c10c7f97a6fbb1e6debddee91c6ce4fe8d0ba6f17b2e336080e5b6b70bd5d88bb5dca5121966d1cf7018501d2b4518082940e941dba1131000664b884a1ba238464159892252d3a8091457468657265756d207363616c6573212182044d8080954863b2ae756eb3dfbbce5acaa53009dfa5d05c2f2fedaeefb8b386924d78c864b0db49d3626fc3676a5cb91bd00cdeb12b73ada1bad8695d8a35d4667ad3f51bf90185028501dea013808301f91f8080b90170608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063d46300fd1461003b578063ee919d5014610059575b600080fd5b610043610075565b60405161005091906100a1565b60405180910390f35b610073600480360381019061006e91906100ed565b61007e565b005b60008054905090565b8060008190555050565b6000819050919050565b61009b81610088565b82525050565b60006020820190506100b66000830184610092565b92915050565b600080fd5b6100ca81610088565b81146100d557600080fd5b50565b6000813590506100e7816100c1565b92915050565b600060208284031215610103576101026100bc565b5b6000610111848285016100d8565b9150509291505056fea2646970667358221220f5cae3e6573396dec6ce732ba576ffffc34b0f6b0a10df2f0dc326c69796bf1c64736f6c6343000812003382044d808095271051bfa721a7b6b0c2180aafbaf905f85e1398badb471718c376b695d5ef60fa923564459177637555b43253309231b6f8e10e3ecbac37ac5854da04934e1bf84a038501b44e560082b91494b33dcb71fc49969473ded72bc361f6be8ee149d180a4ee919d50000000000000000000000000000000000000000000000000000000000000003282044d80803458433f99b626a532cc9aebaae875ecd606cbb978da7ddace53b817fe8e758972adbadb7933a580acda21b790bf5c2d04264ad56dc4b453316b0a6fa8fa17b71c"), + GlobalExitRoot: common.HexToHash("0x0399065677ecf314502940629335726a30609193556a589f6c185648c3d528be"), + Timestamp: 1679679015, + MinForcedTimestamp: 0, + }, + }, + L2Coinbase: common.HexToAddress("0x148Ee7dAF16574cD020aFa34CC658f8F3fbd2800"), + }, + }, +} diff --git a/zk/syncer/l1_syncer.go b/zk/syncer/l1_syncer.go index 0ae2c7f960c..2d5f3984917 100644 --- a/zk/syncer/l1_syncer.go +++ b/zk/syncer/l1_syncer.go @@ -8,6 +8,7 @@ import ( "sync/atomic" "time" + "github.com/iden3/go-iden3-crypto/keccak256" ethereum "github.com/ledgerwatch/erigon" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/log/v3" @@ -25,11 +26,14 @@ var ( var errorShortResponseLT32 = fmt.Errorf("response too short to contain hash data") var errorShortResponseLT96 = fmt.Errorf("response too short to contain last batch number data") -const rollupSequencedBatchesSignature = "0x25280169" // hardcoded abi signature -const globalExitRootManager = "0xd02103ca" -const rollupManager = "0x49b7b802" -const admin = "0xf851a440" -const trustedSequencer = "0xcfa8ed47" +const ( + rollupSequencedBatchesSignature = "0x25280169" // hardcoded abi signature + globalExitRootManager = "0xd02103ca" + rollupManager = "0x49b7b802" + admin = "0xf851a440" + trustedSequencer = "0xcfa8ed47" + sequencedBatchesMapSignature = "0xb4d63f58" +) type IEtherman interface { HeaderByNumber(ctx context.Context, blockNumber *big.Int) (*ethTypes.Header, error) @@ -38,6 +42,7 @@ type IEtherman interface { CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) TransactionByHash(ctx context.Context, hash common.Hash) (ethTypes.Transaction, bool, error) TransactionReceipt(ctx context.Context, txHash common.Hash) (*ethTypes.Receipt, error) + StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) } type fetchJob struct { @@ -213,7 +218,18 @@ func (s *L1Syncer) GetTransaction(hash common.Hash) (ethTypes.Transaction, bool, return em.TransactionByHash(context.Background(), hash) } -func (s *L1Syncer) GetOldAccInputHash(ctx context.Context, addr *common.Address, rollupId, batchNum uint64) (common.Hash, error) { +func (s *L1Syncer) GetPreElderberryAccInputHash(ctx context.Context, addr *common.Address, batchNum uint64) (common.Hash, error) { + h, err := s.callSequencedBatchesMap(ctx, addr, batchNum) + if err != nil { + return common.Hash{}, err + } + + return h, nil +} + +// returns accInputHash only if the batch matches the last batch in sequence +// on Etrrof the rollup contract was changed so data is taken differently +func (s *L1Syncer) GetElderberryAccInputHash(ctx context.Context, addr *common.Address, rollupId, batchNum uint64) (common.Hash, error) { h, _, err := s.callGetRollupSequencedBatches(ctx, addr, rollupId, batchNum) if err != nil { return common.Hash{}, err @@ -454,6 +470,34 @@ func (s *L1Syncer) getSequencedLogs(jobs <-chan fetchJob, results chan jobResult } } +// calls the old rollup contract to get the accInputHash for a certain batch +// returns the accInputHash and lastBatchNumber +func (s *L1Syncer) callSequencedBatchesMap(ctx context.Context, addr *common.Address, batchNum uint64) (accInputHash common.Hash, err error) { + mapKeyHex := fmt.Sprintf("%064x%064x", batchNum, 114 /* _legacySequencedBatches slot*/) + mapKey := keccak256.Hash(common.FromHex(mapKeyHex)) + mkh := common.BytesToHash(mapKey) + + em := s.getNextEtherman() + + resp, err := em.StorageAt(ctx, *addr, mkh, nil) + if err != nil { + return + } + + if err != nil { + return + } + + if len(resp) < 32 { + return + } + accInputHash = common.BytesToHash(resp[:32]) + + return +} + +// calls the rollup contract to get the accInputHash for a certain batch +// returns the accInputHash and lastBatchNumber func (s *L1Syncer) callGetRollupSequencedBatches(ctx context.Context, addr *common.Address, rollupId, batchNum uint64) (common.Hash, uint64, error) { rollupID := fmt.Sprintf("%064x", rollupId) batchNumber := fmt.Sprintf("%064x", batchNum) diff --git a/zk/syncer/utils.go b/zk/syncer/utils.go new file mode 100644 index 00000000000..6e26d0c1bf5 --- /dev/null +++ b/zk/syncer/utils.go @@ -0,0 +1,188 @@ +package syncer + +import ( + "encoding/hex" + "fmt" + "strings" + + "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/accounts/abi" + "github.com/ledgerwatch/erigon/zk/contracts" + "github.com/ledgerwatch/erigon/zk/utils" +) + +func GetAccInputDataCalcFunction(l1InfoRoot common.Hash, decodedSequenceInteerface interface{}) (accInputHashCalcFn func(prevAccInputHash common.Hash, index int) *common.Hash, totalSequenceBatches int, err error) { + switch decodedSequence := decodedSequenceInteerface.(type) { + case *SequenceBatchesCalldataPreEtrog: + accInputHashCalcFn = func(prevAccInputHash common.Hash, index int) *common.Hash { + return utils.CalculatePreEtrogAccInputHash(prevAccInputHash, decodedSequence.Batches[index].Transactions, decodedSequence.Batches[index].GlobalExitRoot, decodedSequence.Batches[index].Timestamp, decodedSequence.L2Coinbase) + } + return accInputHashCalcFn, len(decodedSequence.Batches), nil + case *SequenceBatchesCalldataEtrog: + accInputHashCalcFn = func(prevAccInputHash common.Hash, index int) *common.Hash { + return utils.CalculateEtrogAccInputHash(prevAccInputHash, decodedSequence.Batches[index].Transactions, l1InfoRoot, decodedSequence.Batches[index].ForcedTimestamp, decodedSequence.L2Coinbase, decodedSequence.Batches[index].ForcedBlockHashL1) + } + return accInputHashCalcFn, len(decodedSequence.Batches), nil + case *SequenceBatchesCalldataElderberry: + accInputHashCalcFn = func(prevAccInputHash common.Hash, index int) *common.Hash { + return utils.CalculateEtrogAccInputHash(prevAccInputHash, decodedSequence.Batches[index].Transactions, l1InfoRoot, decodedSequence.MaxSequenceTimestamp, decodedSequence.L2Coinbase, decodedSequence.Batches[index].ForcedBlockHashL1) + } + return accInputHashCalcFn, len(decodedSequence.Batches), nil + default: + return nil, 0, fmt.Errorf("unexpected type of decoded sequence calldata: %T", decodedSequenceInteerface) + } +} + +func DecodeSequenceBatchesCalldata(data []byte) (calldata interface{}, err error) { + methodSig := hex.EncodeToString(data[:4]) + abiString := contracts.SequenceBatchesMapping[methodSig] + if abiString == "" { + return nil, fmt.Errorf("no abi found for method signature: %s", methodSig) + } + abi, err := abi.JSON(strings.NewReader(abiString)) + if err != nil { + return nil, fmt.Errorf("error parsing etrogPolygonZkEvmAbi to json: %v", err) + } + + // recover Method from signature and ABI + method, err := abi.MethodById(data) + if err != nil { + return nil, fmt.Errorf("error recovering method from signature: %v", err) + } + + //sanitycheck + if method.Name != "sequenceBatches" { + return nil, fmt.Errorf("method name is not sequenceBatches, got: %s", method.Name) + } + + unpackedCalldata := make(map[string]interface{}) + if err := method.Inputs.UnpackIntoMap(unpackedCalldata, data[4:] /*first 4 bytes are method signature and not needed */); err != nil { + return nil, fmt.Errorf("error unpacking data: %v", err) + } + + switch methodSig { + case contracts.SequenceBatchesPreEtrog: + return decodePreEtrogSequenceBatchesCallData(unpackedCalldata), nil + case contracts.SequenceBatchesIdv5_0: + return decodeEtrogSequenceBatchesCallData(unpackedCalldata), nil + case contracts.SequenceBatchesIdv6_6: + return decodeElderberryBatchesCallData(unpackedCalldata), nil + default: + return nil, fmt.Errorf("no decoder found for method signature: %s", methodSig) + } +} + +type SequencedBatchElderberry struct { + Transactions []byte + ForcedGlobalExitRoot common.Hash + ForcedTimestamp uint64 + ForcedBlockHashL1 common.Hash +} + +type SequenceBatchesCalldataElderberry struct { + Batches []SequencedBatchElderberry + InitSequencedBatch uint64 + L2Coinbase common.Address + MaxSequenceTimestamp uint64 +} + +func decodeElderberryBatchesCallData(unpackedCalldata map[string]interface{}) *SequenceBatchesCalldataElderberry { + unpackedbatches := unpackedCalldata["batches"].([]struct { + Transactions []uint8 `json:"transactions"` + ForcedGlobalExitRoot [32]uint8 `json:"forcedGlobalExitRoot"` + ForcedTimestamp uint64 `json:"forcedTimestamp"` + ForcedBlockHashL1 [32]uint8 `json:"forcedBlockHashL1"` + }) + + calldata := &SequenceBatchesCalldataElderberry{ + Batches: make([]SequencedBatchElderberry, len(unpackedbatches)), + InitSequencedBatch: unpackedCalldata["initSequencedBatch"].(uint64), + L2Coinbase: unpackedCalldata["l2Coinbase"].(common.Address), + MaxSequenceTimestamp: unpackedCalldata["maxSequenceTimestamp"].(uint64), + } + + for i, batch := range unpackedbatches { + calldata.Batches[i] = SequencedBatchElderberry{ + Transactions: batch.Transactions, + ForcedGlobalExitRoot: common.BytesToHash(batch.ForcedGlobalExitRoot[:]), + ForcedTimestamp: batch.ForcedTimestamp, + ForcedBlockHashL1: common.BytesToHash(batch.ForcedBlockHashL1[:]), + } + } + + return calldata +} + +type SequencedBatchEtrog struct { + Transactions []uint8 + ForcedGlobalExitRoot common.Hash + ForcedTimestamp uint64 + ForcedBlockHashL1 common.Hash +} + +type SequenceBatchesCalldataEtrog struct { + Batches []SequencedBatchEtrog + L2Coinbase common.Address +} + +func decodeEtrogSequenceBatchesCallData(unpackedCalldata map[string]interface{}) *SequenceBatchesCalldataEtrog { + unpackedbatches := unpackedCalldata["batches"].([]struct { + Transactions []uint8 `json:"transactions"` + ForcedGlobalExitRoot [32]uint8 `json:"forcedGlobalExitRoot"` + ForcedTimestamp uint64 `json:"forcedTimestamp"` + ForcedBlockHashL1 [32]uint8 `json:"forcedBlockHashL1"` + }) + + calldata := &SequenceBatchesCalldataEtrog{ + Batches: make([]SequencedBatchEtrog, len(unpackedbatches)), + L2Coinbase: unpackedCalldata["l2Coinbase"].(common.Address), + } + + for i, batch := range unpackedbatches { + calldata.Batches[i] = SequencedBatchEtrog{ + Transactions: batch.Transactions, + ForcedGlobalExitRoot: common.BytesToHash(batch.ForcedGlobalExitRoot[:]), + ForcedTimestamp: batch.ForcedTimestamp, + ForcedBlockHashL1: batch.ForcedBlockHashL1, + } + } + + return calldata +} + +type SequencedBatchPreEtrog struct { + Transactions []uint8 + GlobalExitRoot common.Hash + Timestamp uint64 + MinForcedTimestamp uint64 +} + +type SequenceBatchesCalldataPreEtrog struct { + Batches []SequencedBatchPreEtrog + L2Coinbase common.Address +} + +func decodePreEtrogSequenceBatchesCallData(unpackedCalldata map[string]interface{}) *SequenceBatchesCalldataPreEtrog { + unpackedbatches := unpackedCalldata["batches"].([]struct { + Transactions []uint8 `json:"transactions"` + GlobalExitRoot [32]uint8 `json:"globalExitRoot"` + Timestamp uint64 `json:"timestamp"` + MinForcedTimestamp uint64 `json:"minForcedTimestamp"` + }) + + calldata := &SequenceBatchesCalldataPreEtrog{ + Batches: make([]SequencedBatchPreEtrog, len(unpackedbatches)), + L2Coinbase: unpackedCalldata["l2Coinbase"].(common.Address), + } + + for i, batch := range unpackedbatches { + calldata.Batches[i] = SequencedBatchPreEtrog{ + Transactions: batch.Transactions, + GlobalExitRoot: common.BytesToHash(batch.GlobalExitRoot[:]), + Timestamp: batch.Timestamp, + MinForcedTimestamp: batch.MinForcedTimestamp, + } + } + + return calldata +} diff --git a/zk/syncer/utils_test.go b/zk/syncer/utils_test.go new file mode 100644 index 00000000000..3e6cec231b7 --- /dev/null +++ b/zk/syncer/utils_test.go @@ -0,0 +1,36 @@ +package syncer + +import ( + "testing" + + "github.com/ledgerwatch/erigon/common" + "github.com/stretchr/testify/require" +) + +func Test_decodeEtrogSequenceBatchesCallData(t *testing.T) { + input := decodeElderberrySequenceBatchesCallDataTestCases + + for _, tc := range input { + data := common.FromHex(tc.Input) + calldata, err := DecodeSequenceBatchesCalldata(data) + if err != nil { + t.Fatal(err) + } + + require.Equal(t, &tc.Expected, calldata) + } +} + +func Test_decodePreEtrogSequenceBatchesCallData(t *testing.T) { + input := decodePreEtrogSequenceBatchesCallDataTestCases + + for _, tc := range input { + data := common.FromHex(tc.Input) + calldata, err := DecodeSequenceBatchesCalldata(data) + if err != nil { + t.Fatal(err) + } + + require.Equal(t, &tc.Expected, calldata) + } +} diff --git a/zk/utils/acc_input_hash _test.go b/zk/utils/acc_input_hash _test.go new file mode 100644 index 00000000000..f586205012d --- /dev/null +++ b/zk/utils/acc_input_hash _test.go @@ -0,0 +1,105 @@ +package utils + +import ( + "testing" + + "github.com/ledgerwatch/erigon-lib/common" + "github.com/stretchr/testify/require" +) + +func Test_CalculateEtrogAccInputHash(t *testing.T) { + testCases := []struct { + oldAccInputHash string + batchTransactionData string + l1InfoRoot string + limitTimestamp uint64 + sequencerAddress string + forcedBlockHashL1 string + Expected string + }{ + { + oldAccInputHash: "0x0000000000000000000000000000000000000000000000000000000000000000", + batchTransactionData: "0x0b73e6af6e00000001ee80843b9aca00830186a0944d5cf5032b2a844602278b01199ed191a86c93ff88016345785d8a0000808203e880801cee7e01dc62f69a12c3510c6d64de04ee6346d84b6a017f3e786c7d87f963e75d8cc91fa983cd6d9cf55fff80d73bd26cd333b0f098acc1e58edb1fd484ad731bff0b0000000100000002", + l1InfoRoot: "0x462ed3d694d640f04f637e5e3893e8d12f407a53f50201401fd992bb5ab0faf0", + limitTimestamp: 1944498031, + sequencerAddress: "0x617b3a3528F9cDd6630fd3301B9c8911F7Bf063D", + forcedBlockHashL1: "0x0000000000000000000000000000000000000000000000000000000000000000", + Expected: "0xcfae2cfa3b8f3f12abce1bccd90e9b203dfdbe56c0c412114f2d3e67c9a897db", + }, + } + + for _, tc := range testCases { + oldAccInputHash := common.HexToHash(tc.oldAccInputHash) + batchTransactionData := common.FromHex(tc.batchTransactionData) + l1InfoRoot := common.HexToHash(tc.l1InfoRoot) + sequencerAddress := common.HexToAddress(tc.sequencerAddress) + forcedBlockHashL1 := common.HexToHash(tc.forcedBlockHashL1) + + newAccInputHash := CalculateEtrogAccInputHash( + oldAccInputHash, + batchTransactionData, + l1InfoRoot, + tc.limitTimestamp, + sequencerAddress, + forcedBlockHashL1, + ) + + require.Equal(t, common.HexToHash(tc.Expected), *newAccInputHash) + } +} + +func Test_CalculatePreEtrogAccInputHash(t *testing.T) { + testCases := []struct { + oldAccInputHash string + batchTransactionData string + globalExitRoot string + timestamp uint64 + sequencerAddress string + Expected string + }{ + { + oldAccInputHash: "0x0000000000000000000000000000000000000000000000000000000000000000", + batchTransactionData: "0xee80843b9aca00830186a0944d5cf5032b2a844602278b01199ed191a86c93ff88016345785d8a0000808203e880801cee7e01dc62f69a12c3510c6d64de04ee6346d84b6a017f3e786c7d87f963e75d8cc91fa983cd6d9cf55fff80d73bd26cd333b0f098acc1e58edb1fd484ad731b", + globalExitRoot: "0x090bcaf734c4f06c93954a827b45a6e8c67b8e0fd1e0a35a1c5982d6961828f9", + timestamp: 1944498031, + sequencerAddress: "0x617b3a3528F9cDd6630fd3301B9c8911F7Bf063D", + Expected: "0x704d5cfd3e44b82028f7f8cae31168267a7422c5a447b90a65134116da5a8432", + }, + } + + for _, tc := range testCases { + oldAccInputHash := common.HexToHash(tc.oldAccInputHash) + batchTransactionData := common.FromHex(tc.batchTransactionData) + globalExitRoot := common.HexToHash(tc.globalExitRoot) + sequencerAddress := common.HexToAddress(tc.sequencerAddress) + + newAccInputHash := CalculatePreEtrogAccInputHash( + oldAccInputHash, + batchTransactionData, + globalExitRoot, + tc.timestamp, + sequencerAddress, + ) + + require.Equal(t, common.HexToHash(tc.Expected), *newAccInputHash) + } +} + +func Test_CalculateBatchHashData(t *testing.T) { + testCases := []struct { + batchL2Data string + Expected string + }{ + { + batchL2Data: "0x0b73e6af6e00000001ee80843b9aca00830186a0944d5cf5032b2a844602278b01199ed191a86c93ff88016345785d8a0000808203e880801cee7e01dc62f69a12c3510c6d64de04ee6346d84b6a017f3e786c7d87f963e75d8cc91fa983cd6d9cf55fff80d73bd26cd333b0f098acc1e58edb1fd484ad731bff0b0000000100000002", + Expected: "0x5e7875ab198c4d93379c92990a5d0111af59a0e62b2c4a0e3898e5bd24a18e58", + }, + } + + for _, tc := range testCases { + data := common.FromHex(tc.batchL2Data) + batchHash := CalculateBatchHashData(data) + + require.Equal(t, common.FromHex(tc.Expected), batchHash) + } +} diff --git a/zk/utils/acc_input_hash.go b/zk/utils/acc_input_hash.go new file mode 100644 index 00000000000..d1087de7517 --- /dev/null +++ b/zk/utils/acc_input_hash.go @@ -0,0 +1,93 @@ +package utils + +import ( + "math/big" + + "github.com/iden3/go-iden3-crypto/keccak256" + "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/crypto" +) + +// calculates the new accInputHash based on the old one and data frem one new batch +// this returns the accInputHash for the current batch +// oldAccInputHash - the accInputHash from the previous batch +func CalculateEtrogAccInputHash( + oldAccInputHash common.Hash, + batchTransactionData []byte, + l1InfoRoot common.Hash, + limitTimestamp uint64, + sequencerAddress common.Address, + forcedBlockHashL1 common.Hash, +) *common.Hash { + batchHashData := CalculateBatchHashData(batchTransactionData) + v1 := oldAccInputHash.Bytes() + v2 := batchHashData + v3 := l1InfoRoot.Bytes() + v4 := big.NewInt(0).SetUint64(limitTimestamp).Bytes() + v5 := sequencerAddress.Bytes() + v6 := forcedBlockHashL1.Bytes() + + // Add 0s to make values 32 bytes long + for len(v1) < 32 { + v1 = append([]byte{0}, v1...) + } + for len(v3) < 32 { + v3 = append([]byte{0}, v3...) + } + for len(v4) < 8 { + v4 = append([]byte{0}, v4...) + } + for len(v5) < 20 { + v5 = append([]byte{0}, v5...) + } + for len(v6) < 32 { + v6 = append([]byte{0}, v6...) + } + + hash := common.BytesToHash(keccak256.Hash(v1, v2, v3, v4, v5, v6)) + + return &hash +} + +// calculates the new accInputHash based on the old one and data frem one new batch +// this returns the accInputHash for the current batch +// oldAccInputHash - the accInputHash from the previous batch +func CalculatePreEtrogAccInputHash( + oldAccInputHash common.Hash, + batchTransactionData []byte, + globalExitRoot common.Hash, + timestamp uint64, + sequencerAddress common.Address, +) *common.Hash { + batchHashData := CalculateBatchHashData(batchTransactionData) + v1 := oldAccInputHash.Bytes() + v2 := batchHashData + v3 := globalExitRoot.Bytes() + v4 := big.NewInt(0).SetUint64(timestamp).Bytes() + v5 := sequencerAddress.Bytes() + + // Add 0s to make values 32 bytes long + for len(v1) < 32 { + v1 = append([]byte{0}, v1...) + } + for len(v3) < 32 { + v3 = append([]byte{0}, v3...) + } + for len(v4) < 8 { + v4 = append([]byte{0}, v4...) + } + for len(v5) < 20 { + v5 = append([]byte{0}, v5...) + } + + hash := common.BytesToHash(keccak256.Hash(v1, v2, v3, v4, v5)) + + return &hash +} + +// parses batch transactions bytes into a batchHashData +// used for accInputHash calculation +// transactionBytes are as taken from the sequenceBatches calldata +func CalculateBatchHashData(transactions []byte) []byte { + return crypto.Keccak256(transactions) +}