diff --git a/consensus/misc/eip1559_test.go b/consensus/misc/eip1559_test.go index c9377a03933..13f3e1f5dfd 100644 --- a/consensus/misc/eip1559_test.go +++ b/consensus/misc/eip1559_test.go @@ -58,6 +58,7 @@ func copyConfig(original *params.ChainConfig) *params.ChainConfig { MirrorSyncBlock: original.MirrorSyncBlock, BrunoBlock: original.BrunoBlock, EulerBlock: original.EulerBlock, + GibbsBlock: original.GibbsBlock, Ethash: original.Ethash, Clique: original.Clique, Aura: original.Aura, diff --git a/core/systemcontracts/const.go b/core/systemcontracts/const.go index 7cb6a5d2122..22382ee9a7c 100644 --- a/core/systemcontracts/const.go +++ b/core/systemcontracts/const.go @@ -14,4 +14,5 @@ var ( GovHubContract = common.HexToAddress("0x0000000000000000000000000000000000001007") TokenManagerContract = common.HexToAddress("0x0000000000000000000000000000000000001008") CrossChainContract = common.HexToAddress("0x0000000000000000000000000000000000002000") + StakingContract = common.HexToAddress("0x0000000000000000000000000000000000002001") ) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index a3c77bb662d..e843a635ca5 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -46,6 +46,8 @@ var ( brunoUpgrade = make(map[string]*Upgrade) eulerUpgrade = make(map[string]*Upgrade) + + gibbsUpgrade = make(map[string]*Upgrade) ) func init() { @@ -361,6 +363,38 @@ func init() { }, } + gibbsUpgrade[chapelNet] = &Upgrade{ + UpgradeName: "gibbs", + Configs: []*UpgradeConfig{ + { + ContractAddr: TokenHubContract, + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d45b31c12b2c04757284717f4351cb44e81a3a7", + Code: "60806040526004361061036f5760003560e01c80639a854bbd116101c6578063bd466461116100f7578063f014847211610095578063fc1a598f1161006f578063fc1a598f14610d58578063fc3e590814610a3b578063fd6a687914610d8b578063ff9c0027146106ec576103b7565b8063f014847214610d19578063f9a2bbc714610d2e578063fa9e915914610d43576103b7565b8063d9e6dae9116100d1578063d9e6dae91461066e578063dc927faf14610cda578063e1c7392a14610cef578063ebf71d5314610d04576103b7565b8063bd46646114610c0d578063c81b166214610c40578063c8509d8114610c55576103b7565b8063aa7415f511610164578063b99328c51161013e578063b99328c514610b77578063b9fd21e314610bb0578063ba35ead614610bc5578063bbface1f14610bda576103b7565b8063aa7415f514610a50578063ab51bb9614610a97578063ac43175114610aac576103b7565b8063a1a11bf5116101a0578063a1a11bf5146109fc578063a496fba214610a11578063a78abc1614610a26578063a7c9f02d14610a3b576103b7565b80639a854bbd146109995780639a99b4f0146109ae5780639dc09262146109e7576103b7565b806361368475116102a0578063727be1f81161023e578063831d65d111610218578063831d65d1146108c05780638b87b21f146105ed5780638eff336c1461094557806396713da914610984576103b7565b8063727be1f81461086c57806375d47a0a146108965780637942fd05146108ab576103b7565b80636e47b4821161027a5780636e47b4821461082d57806370fd5bad146106ec578063718a8aa81461084257806371d3086314610857576103b7565b8063613684751461066e57806366dea52a146106ec5780636e05652014610701576103b7565b806343a368b91161030d57806350432d32116102e757806350432d321461068357806351e806721461069857806359b92789146106ad5780635d499b1b146106d7576103b7565b806343a368b91461062d578063493279b1146106425780634bf6c8821461066e576103b7565b8063149d14d911610349578063149d14d9146105155780633d7132231461053c5780633dffc387146105ed57806343756e5c14610618576103b7565b80630bee7a67146103bc5780630e2374a5146103ea5780631182b8751461041b576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610da0565b6040805163ffffffff9092168252519081900360200190f35b3480156103f657600080fd5b506103ff610da5565b604080516001600160a01b039092168252519081900360200190f35b34801561042757600080fd5b506104a06004803603604081101561043e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561046257600080fd5b82018360208201111561047457600080fd5b803590602001918460018302840111600160201b8311171561049557600080fd5b509092509050610dab565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104da5781810151838201526020016104c2565b50505050905090810190601f1680156105075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052157600080fd5b5061052a610ed9565b60408051918252519081900360200190f35b34801561054857600080fd5b506103ff6004803603602081101561055f57600080fd5b810190602081018135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610edf945050505050565b3480156105f957600080fd5b50610602610f03565b6040805160ff9092168252519081900360200190f35b34801561062457600080fd5b506103ff610f08565b34801561063957600080fd5b5061052a610f0e565b34801561064e57600080fd5b50610657610f1a565b6040805161ffff9092168252519081900360200190f35b34801561067a57600080fd5b50610602610f1f565b34801561068f57600080fd5b5061052a610f24565b3480156106a457600080fd5b506103ff610f2f565b3480156106b957600080fd5b506103ff600480360360208110156106d057600080fd5b5035610f35565b3480156106e357600080fd5b5061052a610f50565b3480156106f857600080fd5b50610602610f59565b6108196004803603608081101561071757600080fd5b810190602081018135600160201b81111561073157600080fd5b82018360208201111561074357600080fd5b803590602001918460208302840111600160201b8311171561076457600080fd5b919390929091602081019035600160201b81111561078157600080fd5b82018360208201111561079357600080fd5b803590602001918460208302840111600160201b831117156107b457600080fd5b919390929091602081019035600160201b8111156107d157600080fd5b8201836020820111156107e357600080fd5b803590602001918460208302840111600160201b8311171561080457600080fd5b91935091503567ffffffffffffffff16610f5e565b604080519115158252519081900360200190f35b34801561083957600080fd5b506103ff611433565b34801561084e57600080fd5b50610602611439565b34801561086357600080fd5b5061052a61143e565b34801561087857600080fd5b506108196004803603602081101561088f57600080fd5b5035611444565b3480156108a257600080fd5b506103ff6114be565b3480156108b757600080fd5b506106026114c4565b3480156108cc57600080fd5b506103b5600480360360408110156108e357600080fd5b60ff8235169190810190604081016020820135600160201b81111561090757600080fd5b82018360208201111561091957600080fd5b803590602001918460018302840111600160201b8311171561093a57600080fd5b5090925090506114c9565b34801561095157600080fd5b506103b56004803603606081101561096857600080fd5b508035906001600160a01b036020820135169060400135611612565b34801561099057600080fd5b50610602611698565b3480156109a557600080fd5b5061052a61169d565b3480156109ba57600080fd5b5061052a600480360360408110156109d157600080fd5b506001600160a01b0381351690602001356116a9565b3480156109f357600080fd5b506103ff6117e7565b348015610a0857600080fd5b506103ff6117ed565b348015610a1d57600080fd5b506106026117f3565b348015610a3257600080fd5b506108196117f8565b348015610a4757600080fd5b50610602611801565b61081960048036036080811015610a6657600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16611806565b348015610aa357600080fd5b506103d16117f3565b348015610ab857600080fd5b506103b560048036036040811015610acf57600080fd5b810190602081018135600160201b811115610ae957600080fd5b820183602082011115610afb57600080fd5b803590602001918460018302840111600160201b83111715610b1c57600080fd5b919390929091602081019035600160201b811115610b3957600080fd5b820183602082011115610b4b57600080fd5b803590602001918460018302840111600160201b83111715610b6c57600080fd5b509092509050611ec7565b348015610b8357600080fd5b506103b560048036036040811015610b9a57600080fd5b50803590602001356001600160a01b0316612136565b348015610bbc57600080fd5b5061052a6121ac565b348015610bd157600080fd5b5061052a6121b6565b348015610be657600080fd5b5061052a60048036036020811015610bfd57600080fd5b50356001600160a01b03166121bc565b348015610c1957600080fd5b5061052a60048036036020811015610c3057600080fd5b50356001600160a01b03166121ce565b348015610c4c57600080fd5b506103ff6121e9565b348015610c6157600080fd5b506103b560048036036040811015610c7857600080fd5b60ff8235169190810190604081016020820135600160201b811115610c9c57600080fd5b820183602082011115610cae57600080fd5b803590602001918460018302840111600160201b83111715610ccf57600080fd5b5090925090506121ef565b348015610ce657600080fd5b506103ff6122bf565b348015610cfb57600080fd5b506103b56122c5565b348015610d1057600080fd5b50610602612365565b348015610d2557600080fd5b5061060261236a565b348015610d3a57600080fd5b506103ff61236f565b348015610d4f57600080fd5b5061052a612375565b348015610d6457600080fd5b506104a060048036036020811015610d7b57600080fd5b50356001600160a01b031661237b565b348015610d9757600080fd5b506103ff6124a2565b606481565b61200181565b60005460609060ff16610df3576040805162461bcd60e51b81526020600482015260196024820152600080516020614905833981519152604482015290519081900360640190fd5b3361200014610e335760405162461bcd60e51b815260040180806020018281038252602f8152602001806148b3602f913960400191505060405180910390fd5b60ff841660021415610e8557610e7e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124a892505050565b9050610ed2565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b60015490565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b61100181565b670de0b6b3a764000081565b606181565b600881565b66071afd498d000081565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff16610fa4576040805162461bcd60e51b81526020600482015260196024820152600080516020614905833981519152604482015290519081900360640190fd5b868514610fe25760405162461bcd60e51b815260040180806020018281038252603b815260200180614878603b913960400191505060405180910390fd5b8683146110205760405162461bcd60e51b815260040180806020018281038252603f81526020018061474b603f913960400191505060405180910390fd5b426078018267ffffffffffffffff16101561106c5760405162461bcd60e51b815260040180806020018281038252602481526020018061463b6024913960400191505060405180910390fd5b6402540be4003406156110b05760405162461bcd60e51b815260040180806020018281038252604081526020018061497b6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156110e3578160200160208202803683370190505b50905060005b848110156111be576402540be4008b8b8381811061110357fe5b905060200201358161111157fe5b061561114e5760405162461bcd60e51b815260040180806020018281038252603c81526020018061478a603c913960400191505060405180910390fd5b6111738b8b8381811061115d57fe5b90506020020135856125cc90919063ffffffff16565b935061119f6402540be4008c8c8481811061118a57fe5b9050602002013561262690919063ffffffff16565b8282815181106111ab57fe5b60209081029190910101526001016110e9565b506001546111e3906111d6908663ffffffff61266816565b849063ffffffff6125cc16565b3410156112215760405162461bcd60e51b81526004018080602001828103825260568152602001806149256056913960600191505060405180910390fd5b611231348463ffffffff6126c116565b915061123b614461565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036112ff84612703565b611314876402540be40063ffffffff61262616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561137257818101518382015260200161135a565b50505050905090810190601f16801561139f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156113c057600080fd5b505af11580156113d4573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b600033612001146114865760405162461bcd60e51b815260040180806020018281038252603381526020018061457b6033913960400191505060405180910390fd5b6040516120019083156108fc029084906000818181858888f193505050501580156114b5573d6000803e3d6000fd5b50600192915050565b61100881565b600b81565b60005460ff1661150e576040805162461bcd60e51b81526020600482015260196024820152600080516020614905833981519152604482015290519081900360640190fd5b336120001461154e5760405162461bcd60e51b815260040180806020018281038252602f8152602001806148b3602f913960400191505060405180910390fd5b60ff83166003141561159e5761159982828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129be92505050565b61160d565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b33611008146116525760405162461bcd60e51b81526004018080602001828103825260238152602001806148e26023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b600981565b677ce66c50e284000081565b6000805460ff166116ef576040805162461bcd60e51b81526020600482015260196024820152600080516020614905833981519152604482015290519081900360640190fd5b336110051461172f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806145ae602f913960400191505060405180910390fd5b600047831061173e5747611740565b825b9050670de0b6b3a764000081111561175c5760009150506117e1565b80156117de576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611798573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff1661184c576040805162461bcd60e51b81526020600482015260196024820152600080516020614905833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff1610156118985760405162461bcd60e51b815260040180806020018281038252602481526020018061463b6024913960400191505060405180910390fd5b6402540be4003406156118dc5760405162461bcd60e51b815260040180806020018281038252604081526020018061497b6040913960400191505060405180910390fd5b600080806001600160a01b0388166119bb5760015461190290879063ffffffff6125cc16565b3410156119405760405162461bcd60e51b81526004018080602001828103825260618152602001806146c56061913960800191505060405180910390fd5b6402540be4008606156119845760405162461bcd60e51b815260040180806020018281038252603c81526020018061478a603c913960400191505060405180910390fd5b611994348763ffffffff6126c116565b90506119ab866402540be40063ffffffff61262616565b6221272160e91b93509150611c5e565b6001600160a01b038816600090815260036020526040902054925082611a125760405162461bcd60e51b81526004018080602001828103825260318152602001806146946031913960400191505060405180910390fd5b600154341015611a535760405162461bcd60e51b815260040180806020018281038252603f8152602001806147e7603f913960400191505060405180910390fd5b506001600160a01b0387166000908152600260205260409020543490600881111580611a9e5750600881118015611a9e5750611a9c876007198301600a0a63ffffffff612a1a16565b155b611ad95760405162461bcd60e51b815260040180806020018281038252603c81526020018061478a603c913960400191505060405180910390fd5b611ae38782612a5c565b9250611aee84612a9c565b15611b36576305f5e100831015611b365760405162461bcd60e51b815260040180806020018281038252603a8152602001806145dd603a913960400191505060405180910390fd5b600881101580611b505750600881108015611b5057508683115b611b8b5760405162461bcd60e51b81526004018080602001828103825260258152602001806147266025913960400191505060405180910390fd5b677ce66c50e2840000831115611bd25760405162461bcd60e51b815260040180806020018281038252603581526020018061465f6035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b505050506040513d6020811015611c5157600080fd5b5051611c5c57600080fd5b505b611c66614461565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff168152509050828160400151600081518110611d1457fe5b602002602001018181525050878160600151600081518110611d3257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050338160800151600081518110611d6457fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d76003611d8f84612703565b611da4866402540be40063ffffffff61262616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611e02578181015183820152602001611dea565b50505050905090810190601f168015611e2f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611e5057600080fd5b505af1158015611e64573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b3361100714611f075760405162461bcd60e51b815260040180806020018281038252602e815260200180614826602e913960400191505060405180910390fd5b60208114611f5c576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b811415612064576020820151670de0b6b3a7640000811180159061200b57506402540be4008106155b61205c576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b6001556120a1565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146121765760405162461bcd60e51b81526004018080602001828103825260238152602001806148e26023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b0392909216835260039052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff16612234576040805162461bcd60e51b81526020600482015260196024820152600080516020614905833981519152604482015290519081900360640190fd5b33612000146122745760405162461bcd60e51b815260040180806020018281038252602f8152602001806148b3602f913960400191505060405180910390fd5b60ff83166003141561159e5761159982828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba292505050565b61100381565b60005460ff161561231d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b600481565b600581565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561240b57828160ff16815181106123df57fe5b01602001516001600160f81b031916156123fe57600190910190612403565b61240b565b6001016123c4565b5060608160ff166040519080825280601f01601f19166020018201604052801561243c576020820181803683370190505b50905060005b8260ff168160ff16101561249857838160ff168151811061245f57fe5b602001015160f81c60f81b828260ff168151811061247957fe5b60200101906001600160f81b031916908160001a905350600101612442565b5095945050505050565b61100481565b60606124b26144ad565b60006124bd84612ca0565b9150915080612513576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b600061251e83612ddf565b905063ffffffff8116156125b2576040808401516020808601516001600160a01b031660009081526002909152918220546125599190612a5c565b90506125636144e2565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff1681525090506125a68161312c565b95505050505050610efe565b50506040805160008152602081019091529150610efe9050565b6000828201838110156117de576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006117de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613208565b600082612677575060006117e1565b8282028284828161268457fe5b04146117de5760405162461bcd60e51b81526004018080602001828103825260218152602001806147c66021913960400191505060405180910390fd5b60006117de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132aa565b60408051600680825260e08201909252606091829190816020015b606081526020019060019003908161271e575050835190915061274090613304565b8160008151811061274d57fe5b602002602001018190525061276e83602001516001600160a01b0316613317565b8160018151811061277b57fe5b6020026020010181905250600083604001515190506060816040519080825280602002602001820160405280156127c657816020015b60608152602001906001900390816127b15790505b50905060005b82811015612813576127f4866040015182815181106127e757fe5b6020026020010151613304565b82828151811061280057fe5b60209081029190910101526001016127cc565b5061281d8161333a565b8360028151811061282a57fe5b602002602001018190525060608260405190808252806020026020018201604052801561286b57816020015b60608152602001906001900390816128565790505b50905060005b838110156128c1576128a28760600151828151811061288c57fe5b60200260200101516001600160a01b0316613317565b8282815181106128ae57fe5b6020908102919091010152600101612871565b506128cb8161333a565b846003815181106128d857fe5b602002602001018190525060608360405190808252806020026020018201604052801561291957816020015b60608152602001906001900390816129045790505b50905060005b848110156129595761293a8860800151828151811061288c57fe5b82828151811061294657fe5b602090810291909101015260010161291f565b506129638161333a565b8560048151811061297057fe5b60200260200101819052506129928760a0015167ffffffffffffffff16613304565b8560058151811061299f57fe5b60200260200101819052506129b38561333a565b979650505050505050565b6129c6614509565b60006129d1836133c4565b9150915080612a115760405162461bcd60e51b81526004018080602001828103825260248152602001806148546024913960400191505060405180910390fd5b61160d8261358f565b60006117de83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250613a13565b60006008821115612a8557612a7e836007198401600a0a63ffffffff61262616565b90506117e1565b6117de836008849003600a0a63ffffffff61266816565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015612b1257828160ff1681518110612ae657fe5b01602001516001600160f81b03191615612b0557600190910190612b0a565b612b12565b600101612acb565b50600760ff82161015612b2a57600092505050610efe565b816005820360ff1681518110612b3c57fe5b6020910101516001600160f81b031916602d60f81b14612b6157600092505050610efe565b816001820360ff1681518110612b7357fe5b6020910101516001600160f81b031916604d60f81b14612b9857600092505050610efe565b5060019392505050565b612baa614461565b6000612bb583613a75565b9150915080612bf55760405162461bcd60e51b81526004018080602001828103825260248152602001806146176024913960400191505060405180910390fd5b612bfd614509565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015612c7e57612c5b85604001518281518110612c4d57fe5b602002602001015183613cd9565b85604001518281518110612c6b57fe5b6020908102919091010152600101612c2d565b506080840151604083015260056060830152612c998261358f565b5050505050565b612ca86144ad565b6000612cb26144ad565b612cba614540565b612ccb612cc686613d12565b613d37565b90506000805b612cda83613d81565b15612dd25780612cfc57612cf5612cf084613da2565b613df0565b8452612dca565b8060011415612d2957612d16612d1184613da2565b613ea7565b6001600160a01b03166020850152612dca565b8060021415612d4857612d3e612cf084613da2565b6040850152612dca565b8060031415612d7057612d5d612d1184613da2565b6001600160a01b03166060850152612dca565b8060041415612d9857612d85612d1184613da2565b6001600160a01b03166080850152612dca565b8060051415612dc557612dad612cf084613da2565b67ffffffffffffffff1660a085015260019150612dca565b612dd2565b600101612cd1565b5091935090915050915091565b60208101516000906001600160a01b0316612f16578160a0015167ffffffffffffffff16421115612e1257506001610efe565b8160400151471015612e2657506003610efe565b606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114612e7d576040519150601f19603f3d011682016040523d82523d6000602084013e612e82565b606091505b5050905080612e95575060049050610efe565b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060009050610efe565b8160a0015167ffffffffffffffff16421115612f3457506001610efe565b81516020808401516001600160a01b031660009081526003909152604090205414612f6157506002610efe565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015612fb157600080fd5b5086fa158015612fc5573d6000803e3d6000fd5b50505050506040513d6020811015612fdc57600080fd5b50516040840151909150811015612ff7575060039050610efe565b600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561306857600080fd5b5087f115801561307c573d6000803e3d6000fd5b50505050506040513d602081101561309357600080fd5b505190508015613120577f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5984602001518560600151866040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060009150610efe9050565b5060059150610efe9050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613147575050835190915061316990613304565b8160008151811061317657fe5b602002602001018190525061318e8360200151613304565b8160018151811061319b57fe5b60200260200101819052506131bc83604001516001600160a01b0316613317565b816002815181106131c957fe5b60200260200101819052506131e7836060015163ffffffff16613304565b816003815181106131f457fe5b6020026020010181905250610ed28161333a565b600081836132945760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613259578181015183820152602001613241565b50505050905090810190601f1680156132865780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816132a057fe5b0495945050505050565b600081848411156132fc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613259578181015183820152602001613241565b505050900390565b60606117e161331283613ec1565b613fa7565b60408051600560a21b8318601482015260348101909152606090610ed281613fa7565b606081516000141561335b5750604080516000815260208101909152610efe565b60608260008151811061336a57fe5b602002602001015190506000600190505b83518110156133ab576133a18285838151811061339457fe5b6020026020010151613ff9565b915060010161337b565b50610ed26133be825160c060ff16614076565b82613ff9565b6133cc614509565b60006133d6614509565b6133de614540565b6133ea612cc686613d12565b90506000805b6133f983613d81565b15612dd2578061341f5761340f612d1184613da2565b6001600160a01b03168452613587565b80600114156134c057606061343b61343685613da2565b61416e565b90508051604051908082528060200260200182016040528015613468578160200160208202803683370190505b50602086015260005b81518110156134b95761349682828151811061348957fe5b6020026020010151613df0565b866020015182815181106134a657fe5b6020908102919091010152600101613471565b5050613587565b80600214156135625760606134d761343685613da2565b90508051604051908082528060200260200182016040528015613504578160200160208202803683370190505b50604086015260005b81518110156134b95761353282828151811061352557fe5b6020026020010151613ea7565b8660400151828151811061354257fe5b6001600160a01b039092166020928302919091019091015260010161350d565b8060031415612dc557613577612cf084613da2565b63ffffffff166060850152600191505b6001016133f0565b80516001600160a01b03166137b95760005b8160200151518110156137b3576000826040015182815181106135c057fe5b60200260200101516001600160a01b0316612710846020015184815181106135e457fe5b60209081029190910101516040516000818181858888f193505050503d806000811461362c576040519150601f19603f3d011682016040523d82523d6000602084013e613631565b606091505b50509050806136f4577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061367057fe5b60200260200101518560200151858151811061368857fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16137aa565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061372a57fe5b60200260200101518560200151858151811061374257fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016135a1565b50613a10565b60005b816020015151811015613a0e57600082600001516001600160a01b031663a9059cbb61c350856040015185815181106137f157fe5b60200260200101518660200151868151811061380957fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561386057600080fd5b5087f1158015613874573d6000803e3d6000fd5b50505050506040513d602081101561388b57600080fd5b50519050801561394f577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106138cb57fe5b6020026020010151856020015185815181106138e357fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1613a05565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061398557fe5b60200260200101518560200151858151811061399d57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016137bc565b505b50565b60008183613a625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613259578181015183820152602001613241565b50828481613a6c57fe5b06949350505050565b613a7d614461565b6000613a87614461565b613a8f614540565b613a9b612cc686613d12565b90506000805b613aaa83613d81565b15612dd25780613ac757613ac0612cf084613da2565b8452613cd1565b8060011415613aef57613adc612d1184613da2565b6001600160a01b03166020850152613cd1565b8060021415613b7e576060613b0661343685613da2565b90508051604051908082528060200260200182016040528015613b33578160200160208202803683370190505b50604086015260005b8151811015613b7757613b5482828151811061348957fe5b86604001518281518110613b6457fe5b6020908102919091010152600101613b3c565b5050613cd1565b8060031415613c13576060613b9561343685613da2565b90508051604051908082528060200260200182016040528015613bc2578160200160208202803683370190505b50606086015260005b8151811015613b7757613be382828151811061352557fe5b86606001518281518110613bf357fe5b6001600160a01b0390921660209283029190910190910152600101613bcb565b8060041415613ca8576060613c2a61343685613da2565b90508051604051908082528060200260200182016040528015613c57578160200160208202803683370190505b50608086015260005b8151811015613b7757613c7882828151811061352557fe5b86608001518281518110613c8857fe5b6001600160a01b0390921660209283029190910190910152600101613c60565b8060051415612dc557613cbd612cf084613da2565b67ffffffffffffffff1660a0850152600191505b600101613aa1565b60006008821115613cfb57612a7e836007198401600a0a63ffffffff61266816565b6117de836008849003600a0a63ffffffff61262616565b613d1a614560565b506040805180820190915281518152602082810190820152919050565b613d3f614540565b613d488261423f565b613d5157600080fd5b6000613d60836020015161426f565b60208085015160408051808201909152868152920190820152915050919050565b6000613d8b614560565b505080518051602091820151919092015191011190565b613daa614560565b613db382613d81565b613dbc57600080fd5b60208201516000613dcc826142d2565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590613e0557508151602110155b613e0e57600080fd5b6000613e1d836020015161426f565b90508083600001511015613e78576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015613e9e57826020036101000a820491505b50949350505050565b8051600090601514613eb857600080fd5b6117e182613df0565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416613f0557506018613f29565b6fffffffffffffffffffffffffffffffff198416613f2557506010613f29565b5060005b6020811015613f5f57818181518110613f3e57fe5b01602001516001600160f81b03191615613f5757613f5f565b600101613f29565b60008160200390506060816040519080825280601f01601f191660200182016040528015613f94576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015613fd95750607f60f81b82600081518110613fc757fe5b01602001516001600160f81b03191611155b15613fe5575080610efe565b6117e1613ff78351608060ff16614076565b835b6060806040519050835180825260208201818101602087015b8183101561402a578051835260209283019201614012565b50855184518101855292509050808201602086015b8183101561405757805183526020928301920161403f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106140c6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116141205782840160f81b8160008151811061410257fe5b60200101906001600160f81b031916908160001a90535090506117e1565b606061412b85613ec1565b90508381510160370160f81b8260008151811061414457fe5b60200101906001600160f81b031916908160001a9053506141658282613ff9565b95945050505050565b60606141798261423f565b61418257600080fd5b600061418d83614405565b90506060816040519080825280602002602001820160405280156141cb57816020015b6141b8614560565b8152602001906001900390816141b05790505b50905060006141dd856020015161426f565b60208601510190506000805b84811015614234576141fa836142d2565b915060405180604001604052808381526020018481525084828151811061421d57fe5b6020908102919091010152918101916001016141e9565b509195945050505050565b805160009061425057506000610efe565b6020820151805160001a9060c0821015612b9857600092505050610efe565b8051600090811a6080811015614289576000915050610efe565b60b88110806142a4575060c081108015906142a4575060f881105b156142b3576001915050610efe565b60c08110156142c75760b519019050610efe565b60f519019050610efe565b80516000908190811a60808110156142ed57600191506143fe565b60b881101561430257607e19810191506143fe565b60c081101561437c57600060b78203600186019550806020036101000a865104915060018101820193505080831015614376576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506143fe565b60f88110156143915760be19810191506143fe565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156143fc576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009061441657506000610efe565b6000809050600061442a846020015161426f565b602085015185519181019250015b8082101561445857614449826142d2565b60019093019290910190614438565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280614553614560565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea2646970667358221220caf56ff249aa6ca806ce69d2892ae51c7530b6d135624d7e27646a2095f0b01964736f6c63430006040033", + }, + { + ContractAddr: StakingContract, + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d45b31c12b2c04757284717f4351cb44e81a3a7", + Code: "60806040526004361061036f5760003560e01c806370fd5bad116101c6578063b88a802f116100f7578063d7ecfcb611610095578063f45fd80b1161006f578063f45fd80b14610bd0578063f9a2bbc714610c15578063fc3e590814610646578063fd6a687914610c2a57610376565b8063d7ecfcb6146107ee578063dc927faf14610ba6578063edc1a5b014610bbb57610376565b8063c2117d82116100d1578063c2117d8214610abc578063c81b166214610ad1578063c8509d8114610ae6578063d61b9b9314610b6b57610376565b8063b88a802f14610a57578063baaafd3b14610a6c578063bf8546ca14610a8157610376565b806396713da911610164578063a78abc161161013e578063a78abc1614610939578063ab51bb9614610962578063ac43175114610977578063b14315df14610a4257610376565b806396713da9146108fa5780639dc092621461090f578063a1a11bf51461092457610376565b806375d47a0a116101a057806375d47a0a1461084b5780637942fd0514610860578063831d65d11461087557806392b888a4146105f257610376565b806370fd5bad146107ee578063718a8aa81461080357806375aca5931461081857610376565b8063413d9c3a116102a05780635d17c8bd1161023e57806369b635b61161021857806369b635b61461075b5780636bd8f804146107705780636e47b482146107a65780636fb7f7eb146107bb57610376565b80635d17c8bd1461071c5780635d499b1b1461073157806362b171d21461074657610376565b80634bf6c8821161027a5780634bf6c882146106b15780634d99dd16146106c657806351e80672146106f2578063552aaf931461070757610376565b8063413d9c3a1461065b57806343756e5c14610670578063493279b11461068557610376565b8063151817e31161030d578063333ad3e7116102e7578063333ad3e71461061c57806334c43354146106315780633dffc387146105f25780633fdfa7e41461064657610376565b8063151817e3146105c757806317c9efb0146105f25780632fdeb1111461060757610376565b80630bee7a67116103495780630bee7a671461043b5780630e2374a5146104695780631182b8751461049a57806311fe9ec61461059457610376565b8063026e402b1461037b57806302985992146103a9578063047636d1146103d057610376565b3661037657005b600080fd5b6103a76004803603604081101561039157600080fd5b506001600160a01b038135169060200135610c3f565b005b3480156103b557600080fd5b506103be611141565b60408051918252519081900360200190f35b3480156103dc57600080fd5b50610403600480360360208110156103f357600080fd5b50356001600160a01b0316611147565b6040518082606080838360005b83811015610428578181015183820152602001610410565b5050505090500191505060405180910390f35b34801561044757600080fd5b5061045061119b565b6040805163ffffffff9092168252519081900360200190f35b34801561047557600080fd5b5061047e6111a0565b604080516001600160a01b039092168252519081900360200190f35b3480156104a657600080fd5b5061051f600480360360408110156104bd57600080fd5b60ff8235169190810190604081016020820135600160201b8111156104e157600080fd5b8201836020820111156104f357600080fd5b803590602001918460018302840111600160201b8311171561051457600080fd5b5090925090506111a6565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610559578181015183820152602001610541565b50505050905090810190601f1680156105865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105a057600080fd5b506103be600480360360208110156105b757600080fd5b50356001600160a01b031661135c565b3480156105d357600080fd5b506105dc611377565b6040805160ff9092168252519081900360200190f35b3480156105fe57600080fd5b506105dc61137c565b34801561061357600080fd5b506103be611381565b34801561062857600080fd5b50610450611387565b34801561063d57600080fd5b506103be61138c565b34801561065257600080fd5b506105dc611397565b34801561066757600080fd5b506103be61139c565b34801561067c57600080fd5b5061047e6113a3565b34801561069157600080fd5b5061069a6113a9565b6040805161ffff9092168252519081900360200190f35b3480156106bd57600080fd5b506105dc6113ae565b6103a7600480360360408110156106dc57600080fd5b506001600160a01b0381351690602001356113b3565b3480156106fe57600080fd5b5061047e61199a565b34801561071357600080fd5b506105dc6119a0565b34801561072857600080fd5b506103be6119a5565b34801561073d57600080fd5b506103be6119ab565b34801561075257600080fd5b506103be6119b4565b34801561076757600080fd5b506103be611aec565b6103a76004803603606081101561078657600080fd5b506001600160a01b03813581169160208101359091169060400135611af2565b3480156107b257600080fd5b5061047e612160565b3480156107c757600080fd5b506103be600480360360208110156107de57600080fd5b50356001600160a01b0316612166565b3480156107fa57600080fd5b506105dc612181565b34801561080f57600080fd5b506105dc612186565b34801561082457600080fd5b506103be6004803603602081101561083b57600080fd5b50356001600160a01b031661218b565b34801561085757600080fd5b5061047e6121a6565b34801561086c57600080fd5b506105dc6121ac565b34801561088157600080fd5b506103a76004803603604081101561089857600080fd5b60ff8235169190810190604081016020820135600160201b8111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460018302840111600160201b831117156108ef57600080fd5b5090925090506121b1565b34801561090657600080fd5b506105dc612473565b34801561091b57600080fd5b5061047e612478565b34801561093057600080fd5b5061047e61247e565b34801561094557600080fd5b5061094e612484565b604080519115158252519081900360200190f35b34801561096e57600080fd5b506104506119a0565b34801561098357600080fd5b506103a76004803603604081101561099a57600080fd5b810190602081018135600160201b8111156109b457600080fd5b8201836020820111156109c657600080fd5b803590602001918460018302840111600160201b831117156109e757600080fd5b919390929091602081019035600160201b811115610a0457600080fd5b820183602082011115610a1657600080fd5b803590602001918460018302840111600160201b83111715610a3757600080fd5b50909250905061248d565b348015610a4e57600080fd5b506105dc612a8a565b348015610a6357600080fd5b506103be612a8f565b348015610a7857600080fd5b506103be612bc4565b348015610a8d57600080fd5b506103be60048036036040811015610aa457600080fd5b506001600160a01b0381358116916020013516612bcf565b348015610ac857600080fd5b506103be612bfc565b348015610add57600080fd5b5061047e612c02565b348015610af257600080fd5b506103a760048036036040811015610b0957600080fd5b60ff8235169190810190604081016020820135600160201b811115610b2d57600080fd5b820183602082011115610b3f57600080fd5b803590602001918460018302840111600160201b83111715610b6057600080fd5b509092509050612c08565b348015610b7757600080fd5b506103be60048036036040811015610b8e57600080fd5b506001600160a01b0381358116916020013516612e25565b348015610bb257600080fd5b5061047e612e50565b348015610bc757600080fd5b506103be612e56565b348015610bdc57600080fd5b506103be60048036036060811015610bf357600080fd5b506001600160a01b038135811691602081013582169160409091013516612e63565b348015610c2157600080fd5b5061047e612e98565b348015610c3657600080fd5b5061047e612e9e565b60105460ff1660021415610c8b576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015610cb357506402540be4008106155b610d04576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16610d41576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b600354821015610d98576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642064656c656761746520616d6f756e74000000000000000000604482015290519081900360640190fd5b600154610dac90839063ffffffff612ea416565b341015610df7576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f756768206d73672076616c756560601b604482015290519081900360640190fd5b60405133906108fc9060009081818181818888f19350505050610e55576040805162461bcd60e51b815260206004820152601160248201527034b73b30b634b2103232b632b3b0ba37b960791b604482015290519081900360640190fd5b6000610e6c836402540be40063ffffffff612f0516565b90506000610e80348563ffffffff612f4716565b90506000610e9960025483612f4790919063ffffffff16565b6040805160038082526080820190925291925060609190816020015b6060815260200190600190039081610eb5579050509050610ed533612f89565b81600081518110610ee257fe5b6020026020010181905250610eff876001600160a01b0316612f89565b81600181518110610f0c57fe5b6020026020010181905250610f2084612fac565b81600281518110610f2d57fe5b60200260200101819052506060610f4d6001610f4884612fbf565b613049565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600b909352912080549091019055905061200063f7a251d7601083610fab876402540be40063ffffffff612f0516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611009578181015183820152602001610ff1565b50505050905090810190601f1680156110365780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b5061100492506108fc91506110889050898663ffffffff612ea416565b6040518115909202916000818181858888f193505050501580156110b0573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156110e1573d6000803e3d6000fd5b50604080518881526020810185905281516001600160a01b038b169233927f5f32ed2794e2e72d19e3cb2320e8820a499c4204887372beba51f5e61c040867929081900390910190a350506010805460ff19166001179055505050505050565b60035481565b61114f614dd9565b611157614dd9565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b61200181565b606033612000146111e85760405162461bcd60e51b815260040180806020018281038252602f815260200180614f97602f913960400191505060405180910390fd5b60005460ff16611225576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b61122d614df7565b61127461126f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130cf92505050565b6130f4565b905060006112896112848361313e565b61318c565b90506000606060ff8316600414156112ae576112a484613243565b9092509050611305565b60ff8316600514156112c3576112a484613423565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615611351576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b606181565b600881565b60105460ff16600214156113ff576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561142757506402540be4008106155b611478576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166114b5576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b600154341015611503576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156115be576002548211611556576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526005602090815260408083206001600160a01b038716845290915290205482146115be576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526005602090815260408083206001600160a01b0387168452909152902054821115611627576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b038716845290915290205442101561169f576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b60006116b6836402540be40063ffffffff612f0516565b60025490915034906000906116d290839063ffffffff612f4716565b6040805160038082526080820190925291925060609190816020015b60608152602001906001900390816116ee57905050905061170e33612f89565b8160008151811061171b57fe5b6020026020010181905250611738876001600160a01b0316612f89565b8160018151811061174557fe5b602002602001018190525061175984612fac565b8160028151811061176657fe5b602002602001018190525060606117816002610f4884612fbf565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506117d242620a8c0063ffffffff612ea416565b3360009081526007602090815260408083206001600160a01b038d16845290915290205561200063f7a251d7601083611816876402540be40063ffffffff612f0516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561187457818101518382015260200161185c565b50505050905090810190601f1680156118a15780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611909573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f1935050505015801561193a573d6000803e3d6000fd5b50604080518881526020810185905281516001600160a01b038b169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff19166001179055505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611a03576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611a6a576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290555183156108fc0291849190818181858888f19350505050158015611aa5573d6000803e3d6000fd5b5060408051828152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a26010805460ff1916600117905590565b60035490565b60105460ff1660021415611b3e576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015611b6657506402540be4008106155b611bb7576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611bf4576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b826001600160a01b0316846001600160a01b03161415611c52576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103932b232b632b3b0ba34b7b760611b604482015290519081900360640190fd5b600154341015611ca0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210158015611cd557503360009081526005602090815260408083206001600160a01b03881684529091529020548211155b611d17576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526009602090815260408083206001600160a01b03888116855290835281842090871684529091529020544210801590611d8557503360009081526009602090815260408083206001600160a01b03878116855290835281842090881684529091529020544210155b611dd6576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720726564656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b6000611ded836402540be40063ffffffff612f0516565b6002549091503490600090611e0990839063ffffffff612f4716565b60408051600480825260a0820190925291925060609190816020015b6060815260200190600190039081611e25579050509050611e4533612f89565b81600081518110611e5257fe5b6020026020010181905250611e6f886001600160a01b0316612f89565b81600181518110611e7c57fe5b6020026020010181905250611e99876001600160a01b0316612f89565b81600281518110611ea657fe5b6020026020010181905250611eba84612fac565b81600381518110611ec757fe5b60200260200101819052506060611ee26003610f4884612fbf565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600d9093529120805490910190559050611f3342620a8c0063ffffffff612ea416565b3360009081526009602090815260408083206001600160a01b038d81168552908352818420908e168452909152902055611f7642620a8c0063ffffffff612ea416565b3360009081526009602090815260408083206001600160a01b038e81168552908352818420908d16845290915290205561200063f7a251d7601083611fc6876402540be40063ffffffff612f0516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561202457818101518382015260200161200c565b50505050905090810190601f1680156120515780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156120b9573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156120ea573d6000803e3d6000fd5b50876001600160a01b0316896001600160a01b0316336001600160a01b03167fdb0d03fdfcb145c486c442659e6a341a8828985505097cb5190afcf541e840158a87604051808381526020018281526020019250505060405180910390a450506010805460ff1916600117905550505050505050565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146121f15760405162461bcd60e51b815260040180806020018281038252602f815260200180614f97602f913960400191505060405180910390fd5b60005460ff1661222e576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b612236614df7565b61227861126f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130cf92505050565b905060008060606000805b61228c8661363f565b156122f757806122a9576122a26112848761313e565b94506122ef565b80600114156122c5576122be6112848761313e565b93506122ef565b80600214156122ea576122df6122da8761313e565b613660565b9250600191506122ef565b6122f7565b600101612283565b8161233d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b612346836136d0565b612389576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61239561126f846130cf565b955060006123a56112848861313e565b90506123af614df7565b6123b88861363f565b156123db576123d461126f6123cf6122da8b61313e565b6130cf565b905061241c565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff82166001141561243857612433818888613724565b612466565b60ff82166002141561244f57612433818888613adb565b60ff8216600314156112c357612433818888613da8565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b60005460ff166124e4576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b33611007146125245760405162461bcd60e51b815260040180806020018281038252602e815260200180614f0d602e913960400191505060405180910390fd5b61258584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b6020820152915061410d9050565b156126eb57602081146125df576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161261d918585808385018382808284376000920191909152506141f492505050565b9050600354811061265f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614f3b602e913960400191505060405180910390fd5b600254811161269f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614f69602e913960400191505060405180910390fd5b6402540be4008106156126e35760405162461bcd60e51b815260040180806020018281038252602c815260200180614ee1602c913960400191505060405180910390fd5b6001556129f8565b61274f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b6020820152915061410d9050565b1561287557602081146127a9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916127e7918585808385018382808284376000920191909152506141f492505050565b905060015481106128295760405162461bcd60e51b815260040180806020018281038252602e815260200180614e61602e913960400191505060405180910390fd5b6402540be40081061561286d5760405162461bcd60e51b815260040180806020018281038252602f815260200180614e32602f913960400191505060405180910390fd5b6002556129f8565b6128d984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b6020820152915061410d9050565b156129bb5760208114612933576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091612971918585808385018382808284376000920191909152506141f492505050565b905060015481116129b35760405162461bcd60e51b8152600401808060200182810382526031815260200180614e8f6031913960400191505060405180910390fd5b6003556129f8565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff1660021415612ade576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612b42576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290555183156108fc0291849190818181858888f19350505050158015612b7d573d6000803e3d6000fd5b5060408051828152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a26010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b3361200014612c485760405162461bcd60e51b815260040180806020018281038252602f815260200180614f97602f913960400191505060405180910390fd5b60005460ff16612c85576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b612cc482828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d092505050565b612d07576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b612d0f614df7565b612d5161126f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130cf92505050565b90506000612d616112848361313e565b9050612d6b614df7565b612d748361363f565b15612d9257612d8b61126f6123cf6122da8661313e565b9050612dd8565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff821660011415612df257612ded816141f9565b612e1c565b60ff821660021415612e0757612ded81614413565b60ff8216600314156112c357612ded8161453d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b61100481565b600082820183811015612efe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000612efe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506146a2565b6000612efe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614744565b60408051600560a21b8318601482015260348101909152606090612efe8161479e565b6060612bf6612fba836147f4565b61479e565b6060815160001415612fe05750604080516000815260208101909152611196565b606082600081518110612fef57fe5b602002602001015190506000600190505b8351811015613030576130268285838151811061301957fe5b60200260200101516148da565b9150600101613000565b50612efe613043825160c060ff16614957565b826148da565b6040805160028082526060828101909352829190816020015b60608152602001906001900390816130625790505090506130858460ff16612fac565b8160008151811061309257fe5b60200260200101819052506130a68361479e565b816001815181106130b357fe5b60200260200101819052506130c781612fbf565b949350505050565b6130d7614e17565b506040805180820190915281518152602082810190820152919050565b6130fc614df7565b61310582614a4f565b61310e57600080fd5b600061311d8360200151614a89565b60208085015160408051808201909152868152920190820152915050919050565b613146614e17565b61314f8261363f565b61315857600080fd5b6020820151600061316882614aec565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906131a157508151602110155b6131aa57600080fd5b60006131b98360200151614a89565b90508083600001511015613214576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561323a57826020036101000a820491505b50949350505050565b600060606000806000805b6132578761363f565b156132a957826132795761327261326d8861313e565b614c1f565b915061329e565b82600114156132995761328e6112848861313e565b90506001935061329e565b6132a9565b82600101925061324e565b836132ef576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b505050506040513d602081101561336357600080fd5b50519050806133885761337a600484846065614c39565b96509650505050505061341e565b6001600160a01b0383166000908152600660205260409020546133b1908363ffffffff612ea416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b6134398861363f565b156134a257836134565761344f61326d8961313e565b9250613497565b83600114156134725761346b61326d8961313e565b9150613497565b8360021415613492576134876112848961313e565b905060019450613497565b6134a2565b836001019350613430565b846134e8576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561353257600080fd5b505af1158015613546573d6000803e3d6000fd5b505050506040513d602081101561355c57600080fd5b505190508061358257613573600585846065614c39565b9750975050505050505061341e565b6001600160a01b0380851660008181526007602090815260408083209488168352938152838220829055918152600890915220546135c6908363ffffffff612ea416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b6000613649614e17565b505080518051602091820151919092015191011190565b805160609061366e57600080fd5b600061367d8360200151614a89565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156136b4576020820181803683370190505b509050600081602001905061323a848760200151018285614d35565b8051602080830191909120600e546000908152600a90925260408220548082146136ff57600092505050611196565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6137368861363f565b1561379f57836137535761374c61326d8961313e565b9250613794565b836001141561376f5761376861326d8961313e565b9150613794565b836002141561378f576137846112848961313e565b905060019450613794565b61379f565b83600101935061372d565b846137e5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006137fc826402540be40063ffffffff614d8016565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156139425760ff87161561386f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613898908263ffffffff612ea416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546138da908263ffffffff612ea416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613ad0565b60ff8816613a94576001600160a01b038416600090815260086020526040902054613973908263ffffffff612ea416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156139cf57600080fd5b505af11580156139e3573d6000803e3d6000fd5b505050506040513d60208110156139f957600080fd5b5051613a42576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613ad0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b613aed8861363f565b15613b565783613b0a57613b0361326d8961313e565b9250613b4b565b8360011415613b2657613b1f61326d8961313e565b9150613b4b565b8360021415613b4657613b3b6112848961313e565b905060019450613b4b565b613b56565b836001019350613ae4565b84613b9c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb3826402540be40063ffffffff614d8016565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff881660011415613d325760ff871615613c26576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613c4f908263ffffffff612f4716565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613c91908263ffffffff612f4716565b6001600160a01b03808616600090815260056020908152604080832093881683529290522055613cca42620a8c0063ffffffff612ea416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613ad0565b60ff8816613a94576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613ad0565b6000806000806000805b613dbb8961363f565b15613e405784613dd857613dd161326d8a61313e565b9350613e35565b8460011415613df457613ded61326d8a61313e565b9250613e35565b8460021415613e1057613e0961326d8a61313e565b9150613e35565b8460031415613e3057613e256112848a61313e565b905060019550613e35565b613e40565b846001019450613db2565b85613e86576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613e9d826402540be40063ffffffff614d8016565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156140705760ff881615613f10576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613f46908263ffffffff612f4716565b6001600160a01b03868116600090815260056020908152604080832089851684529091528082209390935590851681522054613f829082612ea4565b6001600160a01b03808716600090815260056020908152604080832093881683529290522055613fbb42620a8c0063ffffffff612ea416565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613ffe42620a8c0063ffffffff612ea416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4614101565b60ff8916613a94576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b602083106141425780518252601f199092019160209182019101614123565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106141b05780518252601f199092019160209182019101614191565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b61420b8661363f565b1561427457836142285761422161326d8761313e565b9250614269565b83600114156142445761423d61326d8761313e565b9150614269565b8360021415614264576142596112848761313e565b905060019450614269565b614274565b836001019350614202565b846142ba576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006142d1826402540be40063ffffffff614d8016565b6001600160a01b0385166000908152600b602090815260408083208054600019019055600890915290205490915061430f908263ffffffff612ea416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561436b57600080fd5b505af115801561437f573d6000803e3d6000fd5b505050506040513d602081101561439557600080fd5b50516143de576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b6144258661363f565b1561448e57836144425761443b61326d8761313e565b9250614483565b836001141561445e5761445761326d8761313e565b9150614483565b836002141561447e576144736112848761313e565b905060019450614483565b61448e565b83600101935061441c565b846144d4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b6145508761363f565b156145d5578461456d5761456661326d8861313e565b93506145ca565b84600114156145895761458261326d8861313e565b92506145ca565b84600214156145a55761459e61326d8861313e565b91506145ca565b84600314156145c5576145ba6112848861313e565b9050600195506145ca565b6145d5565b846001019450614547565b8561461b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b6000818361472e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146f35781810151838201526020016146db565b50505050905090810190601f1680156147205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161473a57fe5b0495945050505050565b600081848411156147965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156146f35781810151838201526020016146db565b505050900390565b6060815160011480156147d05750607f60f81b826000815181106147be57fe5b01602001516001600160f81b03191611155b156147dc575080611196565b612bf66147ee8351608060ff16614957565b836148da565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166148385750601861485c565b6fffffffffffffffffffffffffffffffff1984166148585750601061485c565b5060005b60208110156148925781818151811061487157fe5b01602001516001600160f81b0319161561488a57614892565b60010161485c565b60008160200390506060816040519080825280601f01601f1916602001820160405280156148c7576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561490b5780518352602092830192016148f3565b50855184518101855292509050808201602086015b81831015614938578051835260209283019201614920565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106149a7576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614a015782840160f81b816000815181106149e357fe5b60200101906001600160f81b031916908160001a9053509050612bf6565b6060614a0c856147f4565b90508381510160370160f81b82600081518110614a2557fe5b60200101906001600160f81b031916908160001a905350614a4682826148da565b95945050505050565b8051600090614a6057506000611196565b6020820151805160001a9060c0821015614a7f57600092505050611196565b5060019392505050565b8051600090811a6080811015614aa3576000915050611196565b60b8811080614abe575060c08110801590614abe575060f881105b15614acd576001915050611196565b60c0811015614ae15760b519019050611196565b60f519019050611196565b80516000908190811a6080811015614b075760019150614c18565b60b8811015614b1c57607e1981019150614c18565b60c0811015614b9657600060b78203600186019550806020036101000a865104915060018101820193505080831015614b90576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614c18565b60f8811015614bab5760be1981019150614c18565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614c16576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090601514614c3057600080fd5b612bf68261318c565b60006060614c52846402540be40063ffffffff612f0516565b60408051600480825260a0820190925291955060609190816020015b6060815260200190600190039081614c6e579050509050614c918760ff16612fac565b81600081518110614c9e57fe5b6020026020010181905250614cbb866001600160a01b0316612f89565b81600181518110614cc857fe5b6020026020010181905250614cdc85612fac565b81600281518110614ce957fe5b6020026020010181905250614d038463ffffffff16612fac565b81600381518110614d1057fe5b60200260200101819052506060614d2682612fbf565b94989497509395505050505050565b80614d3f57612e20565b5b60208110614d5f578251825260209283019290910190601f1901614d40565b915181516020939093036101000a6000190180199091169216919091179052565b600082614d8f57506000612bf6565b82820282848281614d9c57fe5b0414612efe5760405162461bcd60e51b8152600401808060200182810382526021815260200180614ec06021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614e0a614e17565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a2646970667358221220066cc7c05d87e3cd20ecf3649deba7ac4ce8b389992969b6006793cbf330c73564736f6c63430006040033", + }, + }, + } + + gibbsUpgrade[rialtoNet] = &Upgrade{ + UpgradeName: "gibbs", + Configs: []*UpgradeConfig{ + { + ContractAddr: TokenHubContract, + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d45b31c12b2c04757284717f4351cb44e81a3a7", + Code: "60806040526004361061036f5760003560e01c80639a854bbd116101c6578063bd466461116100f7578063f014847211610095578063fc1a598f1161006f578063fc1a598f14610d58578063fc3e590814610a3b578063fd6a687914610d8b578063ff9c0027146106ec576103b7565b8063f014847214610d19578063f9a2bbc714610d2e578063fa9e915914610d43576103b7565b8063d9e6dae9116100d1578063d9e6dae91461066e578063dc927faf14610cda578063e1c7392a14610cef578063ebf71d5314610d04576103b7565b8063bd46646114610c0d578063c81b166214610c40578063c8509d8114610c55576103b7565b8063aa7415f511610164578063b99328c51161013e578063b99328c514610b77578063b9fd21e314610bb0578063ba35ead614610bc5578063bbface1f14610bda576103b7565b8063aa7415f514610a50578063ab51bb9614610a97578063ac43175114610aac576103b7565b8063a1a11bf5116101a0578063a1a11bf5146109fc578063a496fba214610a11578063a78abc1614610a26578063a7c9f02d14610a3b576103b7565b80639a854bbd146109995780639a99b4f0146109ae5780639dc09262146109e7576103b7565b806361368475116102a0578063727be1f81161023e578063831d65d111610218578063831d65d1146108c05780638b87b21f146105ed5780638eff336c1461094557806396713da914610984576103b7565b8063727be1f81461086c57806375d47a0a146108965780637942fd05146108ab576103b7565b80636e47b4821161027a5780636e47b4821461082d57806370fd5bad146106ec578063718a8aa81461084257806371d3086314610857576103b7565b8063613684751461066e57806366dea52a146106ec5780636e05652014610701576103b7565b806343a368b91161030d57806350432d32116102e757806350432d321461068357806351e806721461069857806359b92789146106ad5780635d499b1b146106d7576103b7565b806343a368b91461062d578063493279b1146106425780634bf6c8821461066e576103b7565b8063149d14d911610349578063149d14d9146105155780633d7132231461053c5780633dffc387146105ed57806343756e5c14610618576103b7565b80630bee7a67146103bc5780630e2374a5146103ea5780631182b8751461041b576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610da0565b6040805163ffffffff9092168252519081900360200190f35b3480156103f657600080fd5b506103ff610da5565b604080516001600160a01b039092168252519081900360200190f35b34801561042757600080fd5b506104a06004803603604081101561043e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561046257600080fd5b82018360208201111561047457600080fd5b803590602001918460018302840111600160201b8311171561049557600080fd5b509092509050610dab565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104da5781810151838201526020016104c2565b50505050905090810190601f1680156105075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052157600080fd5b5061052a610ed9565b60408051918252519081900360200190f35b34801561054857600080fd5b506103ff6004803603602081101561055f57600080fd5b810190602081018135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610edf945050505050565b3480156105f957600080fd5b50610602610f03565b6040805160ff9092168252519081900360200190f35b34801561062457600080fd5b506103ff610f08565b34801561063957600080fd5b5061052a610f0e565b34801561064e57600080fd5b50610657610f1a565b6040805161ffff9092168252519081900360200190f35b34801561067a57600080fd5b50610602610f20565b34801561068f57600080fd5b5061052a610f25565b3480156106a457600080fd5b506103ff610f30565b3480156106b957600080fd5b506103ff600480360360208110156106d057600080fd5b5035610f36565b3480156106e357600080fd5b5061052a610f51565b3480156106f857600080fd5b50610602610f5a565b6108196004803603608081101561071757600080fd5b810190602081018135600160201b81111561073157600080fd5b82018360208201111561074357600080fd5b803590602001918460208302840111600160201b8311171561076457600080fd5b919390929091602081019035600160201b81111561078157600080fd5b82018360208201111561079357600080fd5b803590602001918460208302840111600160201b831117156107b457600080fd5b919390929091602081019035600160201b8111156107d157600080fd5b8201836020820111156107e357600080fd5b803590602001918460208302840111600160201b8311171561080457600080fd5b91935091503567ffffffffffffffff16610f5f565b604080519115158252519081900360200190f35b34801561083957600080fd5b506103ff611434565b34801561084e57600080fd5b5061060261143a565b34801561086357600080fd5b5061052a61143f565b34801561087857600080fd5b506108196004803603602081101561088f57600080fd5b5035611445565b3480156108a257600080fd5b506103ff6114bf565b3480156108b757600080fd5b506106026114c5565b3480156108cc57600080fd5b506103b5600480360360408110156108e357600080fd5b60ff8235169190810190604081016020820135600160201b81111561090757600080fd5b82018360208201111561091957600080fd5b803590602001918460018302840111600160201b8311171561093a57600080fd5b5090925090506114ca565b34801561095157600080fd5b506103b56004803603606081101561096857600080fd5b508035906001600160a01b036020820135169060400135611613565b34801561099057600080fd5b50610602611699565b3480156109a557600080fd5b5061052a61169e565b3480156109ba57600080fd5b5061052a600480360360408110156109d157600080fd5b506001600160a01b0381351690602001356116aa565b3480156109f357600080fd5b506103ff6117e8565b348015610a0857600080fd5b506103ff6117ee565b348015610a1d57600080fd5b506106026117f4565b348015610a3257600080fd5b506108196117f9565b348015610a4757600080fd5b50610602611802565b61081960048036036080811015610a6657600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16611807565b348015610aa357600080fd5b506103d16117f4565b348015610ab857600080fd5b506103b560048036036040811015610acf57600080fd5b810190602081018135600160201b811115610ae957600080fd5b820183602082011115610afb57600080fd5b803590602001918460018302840111600160201b83111715610b1c57600080fd5b919390929091602081019035600160201b811115610b3957600080fd5b820183602082011115610b4b57600080fd5b803590602001918460018302840111600160201b83111715610b6c57600080fd5b509092509050611ec8565b348015610b8357600080fd5b506103b560048036036040811015610b9a57600080fd5b50803590602001356001600160a01b0316612137565b348015610bbc57600080fd5b5061052a6121ad565b348015610bd157600080fd5b5061052a6121b7565b348015610be657600080fd5b5061052a60048036036020811015610bfd57600080fd5b50356001600160a01b03166121bd565b348015610c1957600080fd5b5061052a60048036036020811015610c3057600080fd5b50356001600160a01b03166121cf565b348015610c4c57600080fd5b506103ff6121ea565b348015610c6157600080fd5b506103b560048036036040811015610c7857600080fd5b60ff8235169190810190604081016020820135600160201b811115610c9c57600080fd5b820183602082011115610cae57600080fd5b803590602001918460018302840111600160201b83111715610ccf57600080fd5b5090925090506121f0565b348015610ce657600080fd5b506103ff6122c0565b348015610cfb57600080fd5b506103b56122c6565b348015610d1057600080fd5b50610602612366565b348015610d2557600080fd5b5061060261236b565b348015610d3a57600080fd5b506103ff612370565b348015610d4f57600080fd5b5061052a612376565b348015610d6457600080fd5b506104a060048036036020811015610d7b57600080fd5b50356001600160a01b031661237c565b348015610d9757600080fd5b506103ff6124a3565b606481565b61200181565b60005460609060ff16610df3576040805162461bcd60e51b81526020600482015260196024820152600080516020614906833981519152604482015290519081900360640190fd5b3361200014610e335760405162461bcd60e51b815260040180806020018281038252602f8152602001806148b4602f913960400191505060405180910390fd5b60ff841660021415610e8557610e7e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124a992505050565b9050610ed2565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b60015490565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b61100181565b670de0b6b3a764000081565b6102ca81565b600881565b66071afd498d000081565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff16610fa5576040805162461bcd60e51b81526020600482015260196024820152600080516020614906833981519152604482015290519081900360640190fd5b868514610fe35760405162461bcd60e51b815260040180806020018281038252603b815260200180614879603b913960400191505060405180910390fd5b8683146110215760405162461bcd60e51b815260040180806020018281038252603f81526020018061474c603f913960400191505060405180910390fd5b426078018267ffffffffffffffff16101561106d5760405162461bcd60e51b815260040180806020018281038252602481526020018061463c6024913960400191505060405180910390fd5b6402540be4003406156110b15760405162461bcd60e51b815260040180806020018281038252604081526020018061497c6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156110e4578160200160208202803683370190505b50905060005b848110156111bf576402540be4008b8b8381811061110457fe5b905060200201358161111257fe5b061561114f5760405162461bcd60e51b815260040180806020018281038252603c81526020018061478b603c913960400191505060405180910390fd5b6111748b8b8381811061115e57fe5b90506020020135856125cd90919063ffffffff16565b93506111a06402540be4008c8c8481811061118b57fe5b9050602002013561262790919063ffffffff16565b8282815181106111ac57fe5b60209081029190910101526001016110ea565b506001546111e4906111d7908663ffffffff61266916565b849063ffffffff6125cd16565b3410156112225760405162461bcd60e51b81526004018080602001828103825260568152602001806149266056913960600191505060405180910390fd5b611232348463ffffffff6126c216565b915061123c614462565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d7600361130084612704565b611315876402540be40063ffffffff61262716565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561137357818101518382015260200161135b565b50505050905090810190601f1680156113a05780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b600033612001146114875760405162461bcd60e51b815260040180806020018281038252603381526020018061457c6033913960400191505060405180910390fd5b6040516120019083156108fc029084906000818181858888f193505050501580156114b6573d6000803e3d6000fd5b50600192915050565b61100881565b600b81565b60005460ff1661150f576040805162461bcd60e51b81526020600482015260196024820152600080516020614906833981519152604482015290519081900360640190fd5b336120001461154f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806148b4602f913960400191505060405180910390fd5b60ff83166003141561159f5761159a82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129bf92505050565b61160e565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b33611008146116535760405162461bcd60e51b81526004018080602001828103825260238152602001806148e36023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b600981565b677ce66c50e284000081565b6000805460ff166116f0576040805162461bcd60e51b81526020600482015260196024820152600080516020614906833981519152604482015290519081900360640190fd5b33611005146117305760405162461bcd60e51b815260040180806020018281038252602f8152602001806145af602f913960400191505060405180910390fd5b600047831061173f5747611741565b825b9050670de0b6b3a764000081111561175d5760009150506117e2565b80156117df576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611799573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff1661184d576040805162461bcd60e51b81526020600482015260196024820152600080516020614906833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff1610156118995760405162461bcd60e51b815260040180806020018281038252602481526020018061463c6024913960400191505060405180910390fd5b6402540be4003406156118dd5760405162461bcd60e51b815260040180806020018281038252604081526020018061497c6040913960400191505060405180910390fd5b600080806001600160a01b0388166119bc5760015461190390879063ffffffff6125cd16565b3410156119415760405162461bcd60e51b81526004018080602001828103825260618152602001806146c66061913960800191505060405180910390fd5b6402540be4008606156119855760405162461bcd60e51b815260040180806020018281038252603c81526020018061478b603c913960400191505060405180910390fd5b611995348763ffffffff6126c216565b90506119ac866402540be40063ffffffff61262716565b6221272160e91b93509150611c5f565b6001600160a01b038816600090815260036020526040902054925082611a135760405162461bcd60e51b81526004018080602001828103825260318152602001806146956031913960400191505060405180910390fd5b600154341015611a545760405162461bcd60e51b815260040180806020018281038252603f8152602001806147e8603f913960400191505060405180910390fd5b506001600160a01b0387166000908152600260205260409020543490600881111580611a9f5750600881118015611a9f5750611a9d876007198301600a0a63ffffffff612a1b16565b155b611ada5760405162461bcd60e51b815260040180806020018281038252603c81526020018061478b603c913960400191505060405180910390fd5b611ae48782612a5d565b9250611aef84612a9d565b15611b37576305f5e100831015611b375760405162461bcd60e51b815260040180806020018281038252603a8152602001806145de603a913960400191505060405180910390fd5b600881101580611b515750600881108015611b5157508683115b611b8c5760405162461bcd60e51b81526004018080602001828103825260258152602001806147276025913960400191505060405180910390fd5b677ce66c50e2840000831115611bd35760405162461bcd60e51b81526004018080602001828103825260358152602001806146606035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b505050506040513d6020811015611c5257600080fd5b5051611c5d57600080fd5b505b611c67614462565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff168152509050828160400151600081518110611d1557fe5b602002602001018181525050878160600151600081518110611d3357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050338160800151600081518110611d6557fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d76003611d9084612704565b611da5866402540be40063ffffffff61262716565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611e03578181015183820152602001611deb565b50505050905090810190601f168015611e305780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611e5157600080fd5b505af1158015611e65573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b3361100714611f085760405162461bcd60e51b815260040180806020018281038252602e815260200180614827602e913960400191505060405180910390fd5b60208114611f5d576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b811415612065576020820151670de0b6b3a7640000811180159061200c57506402540be4008106155b61205d576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b6001556120a2565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146121775760405162461bcd60e51b81526004018080602001828103825260238152602001806148e36023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b0392909216835260039052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff16612235576040805162461bcd60e51b81526020600482015260196024820152600080516020614906833981519152604482015290519081900360640190fd5b33612000146122755760405162461bcd60e51b815260040180806020018281038252602f8152602001806148b4602f913960400191505060405180910390fd5b60ff83166003141561159f5761159a82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba392505050565b61100381565b60005460ff161561231e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b600481565b600581565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561240c57828160ff16815181106123e057fe5b01602001516001600160f81b031916156123ff57600190910190612404565b61240c565b6001016123c5565b5060608160ff166040519080825280601f01601f19166020018201604052801561243d576020820181803683370190505b50905060005b8260ff168160ff16101561249957838160ff168151811061246057fe5b602001015160f81c60f81b828260ff168151811061247a57fe5b60200101906001600160f81b031916908160001a905350600101612443565b5095945050505050565b61100481565b60606124b36144ae565b60006124be84612ca1565b9150915080612514576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b600061251f83612de0565b905063ffffffff8116156125b3576040808401516020808601516001600160a01b0316600090815260029091529182205461255a9190612a5d565b90506125646144e3565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff1681525090506125a78161312d565b95505050505050610efe565b50506040805160008152602081019091529150610efe9050565b6000828201838110156117df576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006117df83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613209565b600082612678575060006117e2565b8282028284828161268557fe5b04146117df5760405162461bcd60e51b81526004018080602001828103825260218152602001806147c76021913960400191505060405180910390fd5b60006117df83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ab565b60408051600680825260e08201909252606091829190816020015b606081526020019060019003908161271f575050835190915061274190613305565b8160008151811061274e57fe5b602002602001018190525061276f83602001516001600160a01b0316613318565b8160018151811061277c57fe5b6020026020010181905250600083604001515190506060816040519080825280602002602001820160405280156127c757816020015b60608152602001906001900390816127b25790505b50905060005b82811015612814576127f5866040015182815181106127e857fe5b6020026020010151613305565b82828151811061280157fe5b60209081029190910101526001016127cd565b5061281e8161333b565b8360028151811061282b57fe5b602002602001018190525060608260405190808252806020026020018201604052801561286c57816020015b60608152602001906001900390816128575790505b50905060005b838110156128c2576128a38760600151828151811061288d57fe5b60200260200101516001600160a01b0316613318565b8282815181106128af57fe5b6020908102919091010152600101612872565b506128cc8161333b565b846003815181106128d957fe5b602002602001018190525060608360405190808252806020026020018201604052801561291a57816020015b60608152602001906001900390816129055790505b50905060005b8481101561295a5761293b8860800151828151811061288d57fe5b82828151811061294757fe5b6020908102919091010152600101612920565b506129648161333b565b8560048151811061297157fe5b60200260200101819052506129938760a0015167ffffffffffffffff16613305565b856005815181106129a057fe5b60200260200101819052506129b48561333b565b979650505050505050565b6129c761450a565b60006129d2836133c5565b9150915080612a125760405162461bcd60e51b81526004018080602001828103825260248152602001806148556024913960400191505060405180910390fd5b61160e82613590565b60006117df83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250613a14565b60006008821115612a8657612a7f836007198401600a0a63ffffffff61262716565b90506117e2565b6117df836008849003600a0a63ffffffff61266916565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015612b1357828160ff1681518110612ae757fe5b01602001516001600160f81b03191615612b0657600190910190612b0b565b612b13565b600101612acc565b50600760ff82161015612b2b57600092505050610efe565b816005820360ff1681518110612b3d57fe5b6020910101516001600160f81b031916602d60f81b14612b6257600092505050610efe565b816001820360ff1681518110612b7457fe5b6020910101516001600160f81b031916604d60f81b14612b9957600092505050610efe565b5060019392505050565b612bab614462565b6000612bb683613a76565b9150915080612bf65760405162461bcd60e51b81526004018080602001828103825260248152602001806146186024913960400191505060405180910390fd5b612bfe61450a565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015612c7f57612c5c85604001518281518110612c4e57fe5b602002602001015183613cda565b85604001518281518110612c6c57fe5b6020908102919091010152600101612c2e565b506080840151604083015260056060830152612c9a82613590565b5050505050565b612ca96144ae565b6000612cb36144ae565b612cbb614541565b612ccc612cc786613d13565b613d38565b90506000805b612cdb83613d82565b15612dd35780612cfd57612cf6612cf184613da3565b613df1565b8452612dcb565b8060011415612d2a57612d17612d1284613da3565b613ea8565b6001600160a01b03166020850152612dcb565b8060021415612d4957612d3f612cf184613da3565b6040850152612dcb565b8060031415612d7157612d5e612d1284613da3565b6001600160a01b03166060850152612dcb565b8060041415612d9957612d86612d1284613da3565b6001600160a01b03166080850152612dcb565b8060051415612dc657612dae612cf184613da3565b67ffffffffffffffff1660a085015260019150612dcb565b612dd3565b600101612cd2565b5091935090915050915091565b60208101516000906001600160a01b0316612f17578160a0015167ffffffffffffffff16421115612e1357506001610efe565b8160400151471015612e2757506003610efe565b606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114612e7e576040519150601f19603f3d011682016040523d82523d6000602084013e612e83565b606091505b5050905080612e96575060049050610efe565b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060009050610efe565b8160a0015167ffffffffffffffff16421115612f3557506001610efe565b81516020808401516001600160a01b031660009081526003909152604090205414612f6257506002610efe565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015612fb257600080fd5b5086fa158015612fc6573d6000803e3d6000fd5b50505050506040513d6020811015612fdd57600080fd5b50516040840151909150811015612ff8575060039050610efe565b600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561306957600080fd5b5087f115801561307d573d6000803e3d6000fd5b50505050506040513d602081101561309457600080fd5b505190508015613121577f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5984602001518560600151866040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060009150610efe9050565b5060059150610efe9050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613148575050835190915061316a90613305565b8160008151811061317757fe5b602002602001018190525061318f8360200151613305565b8160018151811061319c57fe5b60200260200101819052506131bd83604001516001600160a01b0316613318565b816002815181106131ca57fe5b60200260200101819052506131e8836060015163ffffffff16613305565b816003815181106131f557fe5b6020026020010181905250610ed28161333b565b600081836132955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561325a578181015183820152602001613242565b50505050905090810190601f1680156132875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816132a157fe5b0495945050505050565b600081848411156132fd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561325a578181015183820152602001613242565b505050900390565b60606117e261331383613ec2565b613fa8565b60408051600560a21b8318601482015260348101909152606090610ed281613fa8565b606081516000141561335c5750604080516000815260208101909152610efe565b60608260008151811061336b57fe5b602002602001015190506000600190505b83518110156133ac576133a28285838151811061339557fe5b6020026020010151613ffa565b915060010161337c565b50610ed26133bf825160c060ff16614077565b82613ffa565b6133cd61450a565b60006133d761450a565b6133df614541565b6133eb612cc786613d13565b90506000805b6133fa83613d82565b15612dd3578061342057613410612d1284613da3565b6001600160a01b03168452613588565b80600114156134c157606061343c61343785613da3565b61416f565b90508051604051908082528060200260200182016040528015613469578160200160208202803683370190505b50602086015260005b81518110156134ba5761349782828151811061348a57fe5b6020026020010151613df1565b866020015182815181106134a757fe5b6020908102919091010152600101613472565b5050613588565b80600214156135635760606134d861343785613da3565b90508051604051908082528060200260200182016040528015613505578160200160208202803683370190505b50604086015260005b81518110156134ba5761353382828151811061352657fe5b6020026020010151613ea8565b8660400151828151811061354357fe5b6001600160a01b039092166020928302919091019091015260010161350e565b8060031415612dc657613578612cf184613da3565b63ffffffff166060850152600191505b6001016133f1565b80516001600160a01b03166137ba5760005b8160200151518110156137b4576000826040015182815181106135c157fe5b60200260200101516001600160a01b0316612710846020015184815181106135e557fe5b60209081029190910101516040516000818181858888f193505050503d806000811461362d576040519150601f19603f3d011682016040523d82523d6000602084013e613632565b606091505b50509050806136f5577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061367157fe5b60200260200101518560200151858151811061368957fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16137ab565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061372b57fe5b60200260200101518560200151858151811061374357fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016135a2565b50613a11565b60005b816020015151811015613a0f57600082600001516001600160a01b031663a9059cbb61c350856040015185815181106137f257fe5b60200260200101518660200151868151811061380a57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561386157600080fd5b5087f1158015613875573d6000803e3d6000fd5b50505050506040513d602081101561388c57600080fd5b505190508015613950577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106138cc57fe5b6020026020010151856020015185815181106138e457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1613a06565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061398657fe5b60200260200101518560200151858151811061399e57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016137bd565b505b50565b60008183613a635760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561325a578181015183820152602001613242565b50828481613a6d57fe5b06949350505050565b613a7e614462565b6000613a88614462565b613a90614541565b613a9c612cc786613d13565b90506000805b613aab83613d82565b15612dd35780613ac857613ac1612cf184613da3565b8452613cd2565b8060011415613af057613add612d1284613da3565b6001600160a01b03166020850152613cd2565b8060021415613b7f576060613b0761343785613da3565b90508051604051908082528060200260200182016040528015613b34578160200160208202803683370190505b50604086015260005b8151811015613b7857613b5582828151811061348a57fe5b86604001518281518110613b6557fe5b6020908102919091010152600101613b3d565b5050613cd2565b8060031415613c14576060613b9661343785613da3565b90508051604051908082528060200260200182016040528015613bc3578160200160208202803683370190505b50606086015260005b8151811015613b7857613be482828151811061352657fe5b86606001518281518110613bf457fe5b6001600160a01b0390921660209283029190910190910152600101613bcc565b8060041415613ca9576060613c2b61343785613da3565b90508051604051908082528060200260200182016040528015613c58578160200160208202803683370190505b50608086015260005b8151811015613b7857613c7982828151811061352657fe5b86608001518281518110613c8957fe5b6001600160a01b0390921660209283029190910190910152600101613c61565b8060051415612dc657613cbe612cf184613da3565b67ffffffffffffffff1660a0850152600191505b600101613aa2565b60006008821115613cfc57612a7f836007198401600a0a63ffffffff61266916565b6117df836008849003600a0a63ffffffff61262716565b613d1b614561565b506040805180820190915281518152602082810190820152919050565b613d40614541565b613d4982614240565b613d5257600080fd5b6000613d618360200151614270565b60208085015160408051808201909152868152920190820152915050919050565b6000613d8c614561565b505080518051602091820151919092015191011190565b613dab614561565b613db482613d82565b613dbd57600080fd5b60208201516000613dcd826142d3565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590613e0657508151602110155b613e0f57600080fd5b6000613e1e8360200151614270565b90508083600001511015613e79576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015613e9f57826020036101000a820491505b50949350505050565b8051600090601514613eb957600080fd5b6117e282613df1565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416613f0657506018613f2a565b6fffffffffffffffffffffffffffffffff198416613f2657506010613f2a565b5060005b6020811015613f6057818181518110613f3f57fe5b01602001516001600160f81b03191615613f5857613f60565b600101613f2a565b60008160200390506060816040519080825280601f01601f191660200182016040528015613f95576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015613fda5750607f60f81b82600081518110613fc857fe5b01602001516001600160f81b03191611155b15613fe6575080610efe565b6117e2613ff88351608060ff16614077565b835b6060806040519050835180825260208201818101602087015b8183101561402b578051835260209283019201614013565b50855184518101855292509050808201602086015b81831015614058578051835260209283019201614040565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106140c7576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116141215782840160f81b8160008151811061410357fe5b60200101906001600160f81b031916908160001a90535090506117e2565b606061412c85613ec2565b90508381510160370160f81b8260008151811061414557fe5b60200101906001600160f81b031916908160001a9053506141668282613ffa565b95945050505050565b606061417a82614240565b61418357600080fd5b600061418e83614406565b90506060816040519080825280602002602001820160405280156141cc57816020015b6141b9614561565b8152602001906001900390816141b15790505b50905060006141de8560200151614270565b60208601510190506000805b84811015614235576141fb836142d3565b915060405180604001604052808381526020018481525084828151811061421e57fe5b6020908102919091010152918101916001016141ea565b509195945050505050565b805160009061425157506000610efe565b6020820151805160001a9060c0821015612b9957600092505050610efe565b8051600090811a608081101561428a576000915050610efe565b60b88110806142a5575060c081108015906142a5575060f881105b156142b4576001915050610efe565b60c08110156142c85760b519019050610efe565b60f519019050610efe565b80516000908190811a60808110156142ee57600191506143ff565b60b881101561430357607e19810191506143ff565b60c081101561437d57600060b78203600186019550806020036101000a865104915060018101820193505080831015614377576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506143ff565b60f88110156143925760be19810191506143ff565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156143fd576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009061441757506000610efe565b6000809050600061442b8460200151614270565b602085015185519181019250015b808210156144595761444a826142d3565b60019093019290910190614439565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280614554614561565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea26469706673582212208f0455128650f210f452673f65fe656f790624ecf0bc6bbea21225e02413b67564736f6c63430006040033", + }, + { + ContractAddr: StakingContract, + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d45b31c12b2c04757284717f4351cb44e81a3a7", + Code: "60806040526004361061036f5760003560e01c806370fd5bad116101c6578063b88a802f116100f7578063d7ecfcb611610095578063f45fd80b1161006f578063f45fd80b14610bd0578063f9a2bbc714610c15578063fc3e590814610646578063fd6a687914610c2a57610376565b8063d7ecfcb6146107ee578063dc927faf14610ba6578063edc1a5b014610bbb57610376565b8063c2117d82116100d1578063c2117d8214610abc578063c81b166214610ad1578063c8509d8114610ae6578063d61b9b9314610b6b57610376565b8063b88a802f14610a57578063baaafd3b14610a6c578063bf8546ca14610a8157610376565b806396713da911610164578063a78abc161161013e578063a78abc1614610939578063ab51bb9614610962578063ac43175114610977578063b14315df14610a4257610376565b806396713da9146108fa5780639dc092621461090f578063a1a11bf51461092457610376565b806375d47a0a116101a057806375d47a0a1461084b5780637942fd0514610860578063831d65d11461087557806392b888a4146105f257610376565b806370fd5bad146107ee578063718a8aa81461080357806375aca5931461081857610376565b8063413d9c3a116102a05780635d17c8bd1161023e57806369b635b61161021857806369b635b61461075b5780636bd8f804146107705780636e47b482146107a65780636fb7f7eb146107bb57610376565b80635d17c8bd1461071c5780635d499b1b1461073157806362b171d21461074657610376565b80634bf6c8821161027a5780634bf6c882146106b15780634d99dd16146106c657806351e80672146106f2578063552aaf931461070757610376565b8063413d9c3a1461065b57806343756e5c14610670578063493279b11461068557610376565b8063151817e31161030d578063333ad3e7116102e7578063333ad3e71461061c57806334c43354146106315780633dffc387146105f25780633fdfa7e41461064657610376565b8063151817e3146105c757806317c9efb0146105f25780632fdeb1111461060757610376565b80630bee7a67116103495780630bee7a671461043b5780630e2374a5146104695780631182b8751461049a57806311fe9ec61461059457610376565b8063026e402b1461037b57806302985992146103a9578063047636d1146103d057610376565b3661037657005b600080fd5b6103a76004803603604081101561039157600080fd5b506001600160a01b038135169060200135610c3f565b005b3480156103b557600080fd5b506103be611141565b60408051918252519081900360200190f35b3480156103dc57600080fd5b50610403600480360360208110156103f357600080fd5b50356001600160a01b0316611147565b6040518082606080838360005b83811015610428578181015183820152602001610410565b5050505090500191505060405180910390f35b34801561044757600080fd5b5061045061119b565b6040805163ffffffff9092168252519081900360200190f35b34801561047557600080fd5b5061047e6111a0565b604080516001600160a01b039092168252519081900360200190f35b3480156104a657600080fd5b5061051f600480360360408110156104bd57600080fd5b60ff8235169190810190604081016020820135600160201b8111156104e157600080fd5b8201836020820111156104f357600080fd5b803590602001918460018302840111600160201b8311171561051457600080fd5b5090925090506111a6565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610559578181015183820152602001610541565b50505050905090810190601f1680156105865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105a057600080fd5b506103be600480360360208110156105b757600080fd5b50356001600160a01b031661135c565b3480156105d357600080fd5b506105dc611377565b6040805160ff9092168252519081900360200190f35b3480156105fe57600080fd5b506105dc61137c565b34801561061357600080fd5b506103be611381565b34801561062857600080fd5b50610450611387565b34801561063d57600080fd5b506103be61138c565b34801561065257600080fd5b506105dc611397565b34801561066757600080fd5b506103be61139c565b34801561067c57600080fd5b5061047e6113a3565b34801561069157600080fd5b5061069a6113a9565b6040805161ffff9092168252519081900360200190f35b3480156106bd57600080fd5b506105dc6113af565b6103a7600480360360408110156106dc57600080fd5b506001600160a01b0381351690602001356113b4565b3480156106fe57600080fd5b5061047e61199b565b34801561071357600080fd5b506105dc6119a1565b34801561072857600080fd5b506103be6119a6565b34801561073d57600080fd5b506103be6119ac565b34801561075257600080fd5b506103be6119b5565b34801561076757600080fd5b506103be611aed565b6103a76004803603606081101561078657600080fd5b506001600160a01b03813581169160208101359091169060400135611af3565b3480156107b257600080fd5b5061047e612161565b3480156107c757600080fd5b506103be600480360360208110156107de57600080fd5b50356001600160a01b0316612167565b3480156107fa57600080fd5b506105dc612182565b34801561080f57600080fd5b506105dc612187565b34801561082457600080fd5b506103be6004803603602081101561083b57600080fd5b50356001600160a01b031661218c565b34801561085757600080fd5b5061047e6121a7565b34801561086c57600080fd5b506105dc6121ad565b34801561088157600080fd5b506103a76004803603604081101561089857600080fd5b60ff8235169190810190604081016020820135600160201b8111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460018302840111600160201b831117156108ef57600080fd5b5090925090506121b2565b34801561090657600080fd5b506105dc612474565b34801561091b57600080fd5b5061047e612479565b34801561093057600080fd5b5061047e61247f565b34801561094557600080fd5b5061094e612485565b604080519115158252519081900360200190f35b34801561096e57600080fd5b506104506119a1565b34801561098357600080fd5b506103a76004803603604081101561099a57600080fd5b810190602081018135600160201b8111156109b457600080fd5b8201836020820111156109c657600080fd5b803590602001918460018302840111600160201b831117156109e757600080fd5b919390929091602081019035600160201b811115610a0457600080fd5b820183602082011115610a1657600080fd5b803590602001918460018302840111600160201b83111715610a3757600080fd5b50909250905061248e565b348015610a4e57600080fd5b506105dc612a8b565b348015610a6357600080fd5b506103be612a90565b348015610a7857600080fd5b506103be612bc5565b348015610a8d57600080fd5b506103be60048036036040811015610aa457600080fd5b506001600160a01b0381358116916020013516612bd0565b348015610ac857600080fd5b506103be612bfd565b348015610add57600080fd5b5061047e612c03565b348015610af257600080fd5b506103a760048036036040811015610b0957600080fd5b60ff8235169190810190604081016020820135600160201b811115610b2d57600080fd5b820183602082011115610b3f57600080fd5b803590602001918460018302840111600160201b83111715610b6057600080fd5b509092509050612c09565b348015610b7757600080fd5b506103be60048036036040811015610b8e57600080fd5b506001600160a01b0381358116916020013516612e26565b348015610bb257600080fd5b5061047e612e51565b348015610bc757600080fd5b506103be612e57565b348015610bdc57600080fd5b506103be60048036036060811015610bf357600080fd5b506001600160a01b038135811691602081013582169160409091013516612e64565b348015610c2157600080fd5b5061047e612e99565b348015610c3657600080fd5b5061047e612e9f565b60105460ff1660021415610c8b576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015610cb357506402540be4008106155b610d04576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16610d41576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b600354821015610d98576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642064656c656761746520616d6f756e74000000000000000000604482015290519081900360640190fd5b600154610dac90839063ffffffff612ea516565b341015610df7576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f756768206d73672076616c756560601b604482015290519081900360640190fd5b60405133906108fc9060009081818181818888f19350505050610e55576040805162461bcd60e51b815260206004820152601160248201527034b73b30b634b2103232b632b3b0ba37b960791b604482015290519081900360640190fd5b6000610e6c836402540be40063ffffffff612f0616565b90506000610e80348563ffffffff612f4816565b90506000610e9960025483612f4890919063ffffffff16565b6040805160038082526080820190925291925060609190816020015b6060815260200190600190039081610eb5579050509050610ed533612f8a565b81600081518110610ee257fe5b6020026020010181905250610eff876001600160a01b0316612f8a565b81600181518110610f0c57fe5b6020026020010181905250610f2084612fad565b81600281518110610f2d57fe5b60200260200101819052506060610f4d6001610f4884612fc0565b61304a565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600b909352912080549091019055905061200063f7a251d7601083610fab876402540be40063ffffffff612f0616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611009578181015183820152602001610ff1565b50505050905090810190601f1680156110365780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b5061100492506108fc91506110889050898663ffffffff612ea516565b6040518115909202916000818181858888f193505050501580156110b0573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156110e1573d6000803e3d6000fd5b50604080518881526020810185905281516001600160a01b038b169233927f5f32ed2794e2e72d19e3cb2320e8820a499c4204887372beba51f5e61c040867929081900390910190a350506010805460ff19166001179055505050505050565b60035481565b61114f614dda565b611157614dda565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b61200181565b606033612000146111e85760405162461bcd60e51b815260040180806020018281038252602f815260200180614f98602f913960400191505060405180910390fd5b60005460ff16611225576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b61122d614df8565b61127461126f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130d092505050565b6130f5565b905060006112896112848361313f565b61318d565b90506000606060ff8316600414156112ae576112a484613244565b9092509050611305565b60ff8316600514156112c3576112a484613424565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615611351576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415611400576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561142857506402540be4008106155b611479576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166114b6576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b600154341015611504576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156115bf576002548211611557576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526005602090815260408083206001600160a01b038716845290915290205482146115bf576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526005602090815260408083206001600160a01b0387168452909152902054821115611628576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156116a0576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b60006116b7836402540be40063ffffffff612f0616565b60025490915034906000906116d390839063ffffffff612f4816565b6040805160038082526080820190925291925060609190816020015b60608152602001906001900390816116ef57905050905061170f33612f8a565b8160008151811061171c57fe5b6020026020010181905250611739876001600160a01b0316612f8a565b8160018151811061174657fe5b602002602001018190525061175a84612fad565b8160028151811061176757fe5b602002602001018190525060606117826002610f4884612fc0565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506117d342620a8c0063ffffffff612ea516565b3360009081526007602090815260408083206001600160a01b038d16845290915290205561200063f7a251d7601083611817876402540be40063ffffffff612f0616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561187557818101518382015260200161185d565b50505050905090810190601f1680156118a25780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f1935050505015801561190a573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f1935050505015801561193b573d6000803e3d6000fd5b50604080518881526020810185905281516001600160a01b038b169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff19166001179055505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611a04576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611a6b576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290555183156108fc0291849190818181858888f19350505050158015611aa6573d6000803e3d6000fd5b5060408051828152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a26010805460ff1916600117905590565b60035490565b60105460ff1660021415611b3f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015611b6757506402540be4008106155b611bb8576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611bf5576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b826001600160a01b0316846001600160a01b03161415611c53576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103932b232b632b3b0ba34b7b760611b604482015290519081900360640190fd5b600154341015611ca1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210158015611cd657503360009081526005602090815260408083206001600160a01b03881684529091529020548211155b611d18576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526009602090815260408083206001600160a01b03888116855290835281842090871684529091529020544210801590611d8657503360009081526009602090815260408083206001600160a01b03878116855290835281842090881684529091529020544210155b611dd7576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720726564656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b6000611dee836402540be40063ffffffff612f0616565b6002549091503490600090611e0a90839063ffffffff612f4816565b60408051600480825260a0820190925291925060609190816020015b6060815260200190600190039081611e26579050509050611e4633612f8a565b81600081518110611e5357fe5b6020026020010181905250611e70886001600160a01b0316612f8a565b81600181518110611e7d57fe5b6020026020010181905250611e9a876001600160a01b0316612f8a565b81600281518110611ea757fe5b6020026020010181905250611ebb84612fad565b81600381518110611ec857fe5b60200260200101819052506060611ee36003610f4884612fc0565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600d9093529120805490910190559050611f3442620a8c0063ffffffff612ea516565b3360009081526009602090815260408083206001600160a01b038d81168552908352818420908e168452909152902055611f7742620a8c0063ffffffff612ea516565b3360009081526009602090815260408083206001600160a01b038e81168552908352818420908d16845290915290205561200063f7a251d7601083611fc7876402540be40063ffffffff612f0616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561202557818101518382015260200161200d565b50505050905090810190601f1680156120525780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561207357600080fd5b505af1158015612087573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156120ba573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156120eb573d6000803e3d6000fd5b50876001600160a01b0316896001600160a01b0316336001600160a01b03167fdb0d03fdfcb145c486c442659e6a341a8828985505097cb5190afcf541e840158a87604051808381526020018281526020019250505060405180910390a450506010805460ff1916600117905550505050505050565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146121f25760405162461bcd60e51b815260040180806020018281038252602f815260200180614f98602f913960400191505060405180910390fd5b60005460ff1661222f576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b612237614df8565b61227961126f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130d092505050565b905060008060606000805b61228d86613640565b156122f857806122aa576122a36112848761313f565b94506122f0565b80600114156122c6576122bf6112848761313f565b93506122f0565b80600214156122eb576122e06122db8761313f565b613661565b9250600191506122f0565b6122f8565b600101612284565b8161233e576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b612347836136d1565b61238a576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61239661126f846130d0565b955060006123a66112848861313f565b90506123b0614df8565b6123b988613640565b156123dc576123d561126f6123d06122db8b61313f565b6130d0565b905061241d565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff82166001141561243957612434818888613725565b612467565b60ff82166002141561245057612434818888613adc565b60ff8216600314156112c357612434818888613da9565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b60005460ff166124e5576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b33611007146125255760405162461bcd60e51b815260040180806020018281038252602e815260200180614f0e602e913960400191505060405180910390fd5b61258684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b6020820152915061410e9050565b156126ec57602081146125e0576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161261e918585808385018382808284376000920191909152506141f592505050565b905060035481106126605760405162461bcd60e51b815260040180806020018281038252602e815260200180614f3c602e913960400191505060405180910390fd5b60025481116126a05760405162461bcd60e51b815260040180806020018281038252602e815260200180614f6a602e913960400191505060405180910390fd5b6402540be4008106156126e45760405162461bcd60e51b815260040180806020018281038252602c815260200180614ee2602c913960400191505060405180910390fd5b6001556129f9565b61275084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b6020820152915061410e9050565b1561287657602081146127aa576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916127e8918585808385018382808284376000920191909152506141f592505050565b9050600154811061282a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614e62602e913960400191505060405180910390fd5b6402540be40081061561286e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614e33602f913960400191505060405180910390fd5b6002556129f9565b6128da84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b6020820152915061410e9050565b156129bc5760208114612934576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091612972918585808385018382808284376000920191909152506141f592505050565b905060015481116129b45760405162461bcd60e51b8152600401808060200182810382526031815260200180614e906031913960400191505060405180910390fd5b6003556129f9565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff1660021415612adf576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612b43576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290555183156108fc0291849190818181858888f19350505050158015612b7e573d6000803e3d6000fd5b5060408051828152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a26010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b3361200014612c495760405162461bcd60e51b815260040180806020018281038252602f815260200180614f98602f913960400191505060405180910390fd5b60005460ff16612c86576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b612cc582828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d192505050565b612d08576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b612d10614df8565b612d5261126f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130d092505050565b90506000612d626112848361313f565b9050612d6c614df8565b612d7583613640565b15612d9357612d8c61126f6123d06122db8661313f565b9050612dd9565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff821660011415612df357612dee816141fa565b612e1d565b60ff821660021415612e0857612dee81614414565b60ff8216600314156112c357612dee8161453e565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b61100481565b600082820183811015612eff576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000612eff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506146a3565b6000612eff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614745565b60408051600560a21b8318601482015260348101909152606090612eff8161479f565b6060612bf7612fbb836147f5565b61479f565b6060815160001415612fe15750604080516000815260208101909152611196565b606082600081518110612ff057fe5b602002602001015190506000600190505b8351811015613031576130278285838151811061301a57fe5b60200260200101516148db565b9150600101613001565b50612eff613044825160c060ff16614958565b826148db565b6040805160028082526060828101909352829190816020015b60608152602001906001900390816130635790505090506130868460ff16612fad565b8160008151811061309357fe5b60200260200101819052506130a78361479f565b816001815181106130b457fe5b60200260200101819052506130c881612fc0565b949350505050565b6130d8614e18565b506040805180820190915281518152602082810190820152919050565b6130fd614df8565b61310682614a50565b61310f57600080fd5b600061311e8360200151614a8a565b60208085015160408051808201909152868152920190820152915050919050565b613147614e18565b61315082613640565b61315957600080fd5b6020820151600061316982614aed565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906131a257508151602110155b6131ab57600080fd5b60006131ba8360200151614a8a565b90508083600001511015613215576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561323b57826020036101000a820491505b50949350505050565b600060606000806000805b61325887613640565b156132aa578261327a5761327361326e8861313f565b614c20565b915061329f565b826001141561329a5761328f6112848861313f565b90506001935061329f565b6132aa565b82600101925061324f565b836132f0576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561333a57600080fd5b505af115801561334e573d6000803e3d6000fd5b505050506040513d602081101561336457600080fd5b50519050806133895761337b600484846065614c3a565b96509650505050505061341f565b6001600160a01b0383166000908152600660205260409020546133b2908363ffffffff612ea516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b61343a88613640565b156134a357836134575761345061326e8961313f565b9250613498565b83600114156134735761346c61326e8961313f565b9150613498565b8360021415613493576134886112848961313f565b905060019450613498565b6134a3565b836001019350613431565b846134e9576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561353357600080fd5b505af1158015613547573d6000803e3d6000fd5b505050506040513d602081101561355d57600080fd5b505190508061358357613574600585846065614c3a565b9750975050505050505061341f565b6001600160a01b0380851660008181526007602090815260408083209488168352938152838220829055918152600890915220546135c7908363ffffffff612ea516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b600061364a614e18565b505080518051602091820151919092015191011190565b805160609061366f57600080fd5b600061367e8360200151614a8a565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156136b5576020820181803683370190505b509050600081602001905061323b848760200151018285614d36565b8051602080830191909120600e546000908152600a909252604082205480821461370057600092505050611196565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61373788613640565b156137a057836137545761374d61326e8961313f565b9250613795565b83600114156137705761376961326e8961313f565b9150613795565b8360021415613790576137856112848961313f565b905060019450613795565b6137a0565b83600101935061372e565b846137e6576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006137fd826402540be40063ffffffff614d8116565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156139435760ff871615613870576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613899908263ffffffff612ea516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546138db908263ffffffff612ea516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613ad1565b60ff8816613a95576001600160a01b038416600090815260086020526040902054613974908263ffffffff612ea516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156139d057600080fd5b505af11580156139e4573d6000803e3d6000fd5b505050506040513d60208110156139fa57600080fd5b5051613a43576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613ad1565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b613aee88613640565b15613b575783613b0b57613b0461326e8961313f565b9250613b4c565b8360011415613b2757613b2061326e8961313f565b9150613b4c565b8360021415613b4757613b3c6112848961313f565b905060019450613b4c565b613b57565b836001019350613ae5565b84613b9d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb4826402540be40063ffffffff614d8116565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff881660011415613d335760ff871615613c27576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613c50908263ffffffff612f4816565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613c92908263ffffffff612f4816565b6001600160a01b03808616600090815260056020908152604080832093881683529290522055613ccb42620a8c0063ffffffff612ea516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613ad1565b60ff8816613a95576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613ad1565b6000806000806000805b613dbc89613640565b15613e415784613dd957613dd261326e8a61313f565b9350613e36565b8460011415613df557613dee61326e8a61313f565b9250613e36565b8460021415613e1157613e0a61326e8a61313f565b9150613e36565b8460031415613e3157613e266112848a61313f565b905060019550613e36565b613e41565b846001019450613db3565b85613e87576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613e9e826402540be40063ffffffff614d8116565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156140715760ff881615613f11576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613f47908263ffffffff612f4816565b6001600160a01b03868116600090815260056020908152604080832089851684529091528082209390935590851681522054613f839082612ea5565b6001600160a01b03808716600090815260056020908152604080832093881683529290522055613fbc42620a8c0063ffffffff612ea516565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613fff42620a8c0063ffffffff612ea516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4614102565b60ff8916613a95576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b602083106141435780518252601f199092019160209182019101614124565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106141b15780518252601f199092019160209182019101614192565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b61420c86613640565b1561427557836142295761422261326e8761313f565b925061426a565b83600114156142455761423e61326e8761313f565b915061426a565b83600214156142655761425a6112848761313f565b90506001945061426a565b614275565b836001019350614203565b846142bb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006142d2826402540be40063ffffffff614d8116565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150614310908263ffffffff612ea516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561436c57600080fd5b505af1158015614380573d6000803e3d6000fd5b505050506040513d602081101561439657600080fd5b50516143df576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b61442686613640565b1561448f57836144435761443c61326e8761313f565b9250614484565b836001141561445f5761445861326e8761313f565b9150614484565b836002141561447f576144746112848761313f565b905060019450614484565b61448f565b83600101935061441d565b846144d5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b61455187613640565b156145d6578461456e5761456761326e8861313f565b93506145cb565b846001141561458a5761458361326e8861313f565b92506145cb565b84600214156145a65761459f61326e8861313f565b91506145cb565b84600314156145c6576145bb6112848861313f565b9050600195506145cb565b6145d6565b846001019450614548565b8561461c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b6000818361472f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146f45781810151838201526020016146dc565b50505050905090810190601f1680156147215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161473b57fe5b0495945050505050565b600081848411156147975760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156146f45781810151838201526020016146dc565b505050900390565b6060815160011480156147d15750607f60f81b826000815181106147bf57fe5b01602001516001600160f81b03191611155b156147dd575080611196565b612bf76147ef8351608060ff16614958565b836148db565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166148395750601861485d565b6fffffffffffffffffffffffffffffffff1984166148595750601061485d565b5060005b60208110156148935781818151811061487257fe5b01602001516001600160f81b0319161561488b57614893565b60010161485d565b60008160200390506060816040519080825280601f01601f1916602001820160405280156148c8576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561490c5780518352602092830192016148f4565b50855184518101855292509050808201602086015b81831015614939578051835260209283019201614921565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106149a8576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614a025782840160f81b816000815181106149e457fe5b60200101906001600160f81b031916908160001a9053509050612bf7565b6060614a0d856147f5565b90508381510160370160f81b82600081518110614a2657fe5b60200101906001600160f81b031916908160001a905350614a4782826148db565b95945050505050565b8051600090614a6157506000611196565b6020820151805160001a9060c0821015614a8057600092505050611196565b5060019392505050565b8051600090811a6080811015614aa4576000915050611196565b60b8811080614abf575060c08110801590614abf575060f881105b15614ace576001915050611196565b60c0811015614ae25760b519019050611196565b60f519019050611196565b80516000908190811a6080811015614b085760019150614c19565b60b8811015614b1d57607e1981019150614c19565b60c0811015614b9757600060b78203600186019550806020036101000a865104915060018101820193505080831015614b91576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614c19565b60f8811015614bac5760be1981019150614c19565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614c17576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090601514614c3157600080fd5b612bf78261318d565b60006060614c53846402540be40063ffffffff612f0616565b60408051600480825260a0820190925291955060609190816020015b6060815260200190600190039081614c6f579050509050614c928760ff16612fad565b81600081518110614c9f57fe5b6020026020010181905250614cbc866001600160a01b0316612f8a565b81600181518110614cc957fe5b6020026020010181905250614cdd85612fad565b81600281518110614cea57fe5b6020026020010181905250614d048463ffffffff16612fad565b81600381518110614d1157fe5b60200260200101819052506060614d2782612fc0565b94989497509395505050505050565b80614d4057612e21565b5b60208110614d60578251825260209283019290910190601f1901614d41565b915181516020939093036101000a6000190180199091169216919091179052565b600082614d9057506000612bf7565b82820282848281614d9d57fe5b0414612eff5760405162461bcd60e51b8152600401808060200182810382526021815260200180614ec16021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614e0b614e18565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a26469706673582212202d43db3e2ebde4487e0172cc743868769dac674a6b5ac4e5b38d932f5fe77d2964736f6c63430006040033", + }, + }, + } + } func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, statedb *state.IntraBlockState) { @@ -400,6 +434,10 @@ func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.I applySystemContractUpgrade(eulerUpgrade[network], blockNumber, statedb, logger) } + if config.IsOnGibbs(blockNumber) { + applySystemContractUpgrade(gibbsUpgrade[network], blockNumber, statedb, logger) + } + /* apply other upgrades */ diff --git a/params/chainspecs/chapel.json b/params/chainspecs/chapel.json index 0a1e8fbcf94..2b38d714227 100644 --- a/params/chainspecs/chapel.json +++ b/params/chainspecs/chapel.json @@ -16,6 +16,7 @@ "mirrorSyncBlock": 5582500, "brunoBlock": 13837000, "eulerBlock": 19203503, + "gibbsBlock": 22800220, "terminalBlockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parlia": { "DBPath": "", diff --git a/params/chainspecs/rialto.json b/params/chainspecs/rialto.json index e11de7d1443..2fc68160b01 100644 --- a/params/chainspecs/rialto.json +++ b/params/chainspecs/rialto.json @@ -15,6 +15,8 @@ "nielsBlock": 0, "mirrorSyncBlock": 400, "brunoBlock": 400, + "eulerBlock": 400, + "gibbsBlock": 400, "terminalBlockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parlia": { "DBPath": "", diff --git a/params/config.go b/params/config.go index 802998ceb26..b570a774762 100644 --- a/params/config.go +++ b/params/config.go @@ -259,6 +259,7 @@ type ChainConfig struct { MirrorSyncBlock *big.Int `json:"mirrorSyncBlock,omitempty" toml:",omitempty"` // mirrorSyncBlock switch block (nil = no fork, 0 = already activated) BrunoBlock *big.Int `json:"brunoBlock,omitempty" toml:",omitempty"` // brunoBlock switch block (nil = no fork, 0 = already activated) EulerBlock *big.Int `json:"eulerBlock,omitempty" toml:",omitempty"` // eulerBlock switch block (nil = no fork, 0 = already activated) + GibbsBlock *big.Int `json:"gibbsBlock,omitempty" toml:",omitempty"` // gibbsBlock switch block (nil = no fork, 0 = already activated) // Various consensus engines Ethash *EthashConfig `json:"ethash,omitempty"` @@ -395,13 +396,14 @@ func (c *ChainConfig) String() string { // TODO Covalent: Refactor to more generic approach and potentially introduce tag for "ecosystem" field (Ethereum, BSC, etc.) if c.Consensus == ParliaConsensus { - return fmt.Sprintf("{ChainID: %v Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Euler: %v, Engine: %v}", + return fmt.Sprintf("{ChainID: %v Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Euler: %v, Gibbs: %v, Engine: %v}", c.ChainID, c.RamanujanBlock, c.NielsBlock, c.MirrorSyncBlock, c.BrunoBlock, c.EulerBlock, + c.GibbsBlock, engine, ) } @@ -537,6 +539,15 @@ func (c *ChainConfig) IsOnEuler(num *big.Int) bool { return configNumEqual(c.EulerBlock, num) } +// IsGibbs returns whether num is either equal to the euler fork block or greater. +func (c *ChainConfig) IsGibbs(num *big.Int) bool { + return isForked(c.GibbsBlock, num.Uint64()) +} + +func (c *ChainConfig) IsOnGibbs(num *big.Int) bool { + return configNumEqual(c.GibbsBlock, num) +} + // IsMuirGlacier returns whether num is either equal to the Muir Glacier (EIP-2384) fork block or greater. func (c *ChainConfig) IsMuirGlacier(num uint64) bool { return isForked(c.MuirGlacierBlock, num) @@ -625,6 +636,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "istanbulBlock", block: c.IstanbulBlock}, {name: "muirGlacierBlock", block: c.MuirGlacierBlock, optional: true}, {name: "eulerBlock", block: c.EulerBlock, optional: true}, + {name: "gibbsBlock", block: c.GibbsBlock, optional: true}, {name: "berlinBlock", block: c.BerlinBlock}, {name: "londonBlock", block: c.LondonBlock}, {name: "arrowGlacierBlock", block: c.ArrowGlacierBlock, optional: true}, @@ -731,6 +743,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head uint64) *ConfigC if isForkIncompatible(c.EulerBlock, newcfg.EulerBlock, head) { return newCompatError("Euler fork block", c.EulerBlock, newcfg.EulerBlock) } + if isForkIncompatible(c.GibbsBlock, newcfg.GibbsBlock, head) { + return newCompatError("Gibbs fork block", c.GibbsBlock, newcfg.GibbsBlock) + } return nil }