From 3d8a0cd1abf0f748a10635d8c47891962924d2a4 Mon Sep 17 00:00:00 2001 From: Franco Barpp Gomes Date: Tue, 30 Jan 2024 21:16:39 -0300 Subject: [PATCH] feat: Update bindings and add clean up to binding generation script --- contracts/bindings/ERC20Mock/binding.go | 4 ++-- contracts/bindings/SFFLRegistryRollup/binding.go | 2 +- contracts/bindings/SFFLServiceManager/binding.go | 2 +- contracts/bindings/SFFLTaskManager/binding.go | 2 +- contracts/generate-go-bindings.sh | 10 +++++----- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contracts/bindings/ERC20Mock/binding.go b/contracts/bindings/ERC20Mock/binding.go index bd3f1af50..b2a73293d 100644 --- a/contracts/bindings/ERC20Mock/binding.go +++ b/contracts/bindings/ERC20Mock/binding.go @@ -31,8 +31,8 @@ var ( // ContractERC20MockMetaData contains all meta data concerning the ContractERC20Mock contract. var ContractERC20MockMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100d257806370a08231146100e7578063a9059cbb14610110578063dd62ed3e1461012357600080fd5b8063095ea7b31461008257806318160ddd146100ad57806323b872dd146100bf575b600080fd5b610098610090366004610410565b600192915050565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a4565b6100986100cd36600461043a565b61015c565b6100e56100e0366004610410565b610173565b005b6100b16100f5366004610476565b6001600160a01b031660009081526020819052604090205490565b61009861011e366004610410565b610181565b6100b1610131366004610498565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061016984848461018b565b5060019392505050565b61017d8282610335565b5050565b6000336101698185855b6001600160a01b0383166101f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101eb565b6001600160a01b0383166000908152602081905260409020548111156102cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101eb565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661038b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101eb565b806002600082825461039d91906104cb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461040b57600080fd5b919050565b6000806040838503121561042357600080fd5b61042c836103f4565b946020939093013593505050565b60008060006060848603121561044f57600080fd5b610458846103f4565b9250610466602085016103f4565b9150604084013590509250925092565b60006020828403121561048857600080fd5b610491826103f4565b9392505050565b600080604083850312156104ab57600080fd5b6104b4836103f4565b91506104c2602084016103f4565b90509250929050565b600082198211156104ec57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212200c8f4a0047ca0322c22cf7e6a789abbe36ca3141cd508f864ec741dccdc347f964736f6c634300080c0033", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100d257806370a08231146100e7578063a9059cbb14610110578063dd62ed3e1461012357600080fd5b8063095ea7b31461008257806318160ddd146100ad57806323b872dd146100bf575b600080fd5b610098610090366004610410565b600192915050565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a4565b6100986100cd36600461043a565b61015c565b6100e56100e0366004610410565b610173565b005b6100b16100f5366004610476565b6001600160a01b031660009081526020819052604090205490565b61009861011e366004610410565b610181565b6100b1610131366004610498565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061016984848461018b565b5060019392505050565b61017d8282610335565b5050565b6000336101698185855b6001600160a01b0383166101f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101eb565b6001600160a01b0383166000908152602081905260409020548111156102cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101eb565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661038b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101eb565b806002600082825461039d91906104cb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461040b57600080fd5b919050565b6000806040838503121561042357600080fd5b61042c836103f4565b946020939093013593505050565b60008060006060848603121561044f57600080fd5b610458846103f4565b9250610466602085016103f4565b9150604084013590509250925092565b60006020828403121561048857600080fd5b610491826103f4565b9392505050565b600080604083850312156104ab57600080fd5b6104b4836103f4565b91506104c2602084016103f4565b90509250929050565b600082198211156104ec57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212203586c66b722a1b0ea3bb87e82ee7ccb8ee4d6d664e440f715cc7c1eaacbaab2864736f6c634300080c0033", } // ContractERC20MockABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLRegistryRollup/binding.go b/contracts/bindings/SFFLRegistryRollup/binding.go index 01eca8296..18a1df539 100644 --- a/contracts/bindings/SFFLRegistryRollup/binding.go +++ b/contracts/bindings/SFFLRegistryRollup/binding.go @@ -80,7 +80,7 @@ type StateRootUpdateMessage struct { // ContractSFFLRegistryRollupMetaData contains all meta data concerning the ContractSFFLRegistryRollup contract. var ContractSFFLRegistryRollupMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"pubkey\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"weight\",\"type\":\"uint128\"}],\"internalType\":\"structOperators.Operator[]\",\"name\":\"operators\",\"type\":\"tuple[]\"},{\"internalType\":\"uint128\",\"name\":\"quorumThreshold\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"operatorUpdateId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"name\":\"StateRootUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"THRESHOLD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getApk\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"pubkeyHash\",\"type\":\"bytes32\"}],\"name\":\"getOperatorWeight\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getQuorumThreshold\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"}],\"name\":\"getStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structStateRootUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"storageKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"stateTrieWitness\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"storageTrieWitness\",\"type\":\"bytes\"}],\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"name\":\"proofParams\",\"type\":\"tuple\"}],\"name\":\"getStorageValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalWeight\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOperatorUpdateId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"newQuorumThreshold\",\"type\":\"uint128\"}],\"name\":\"setQuorumThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structStateRootUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"storageKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"stateTrieWitness\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"storageTrieWitness\",\"type\":\"bytes\"}],\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"name\":\"proofParams\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"agreement\",\"type\":\"bytes\"}],\"name\":\"updateAndGetStorageValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"pubkey\",\"type\":\"tuple\"},{\"internalType\":\"uint128\",\"name\":\"weight\",\"type\":\"uint128\"}],\"internalType\":\"structOperators.Operator[]\",\"name\":\"operators\",\"type\":\"tuple[]\"}],\"internalType\":\"structOperatorSetUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"nonSignerPubkeyHashes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"}],\"internalType\":\"structOperators.SignatureInfo\",\"name\":\"signatureInfo\",\"type\":\"tuple\"}],\"name\":\"updateOperatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structStateRootUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"nonSignerPubkeyHashes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"}],\"internalType\":\"structOperators.SignatureInfo\",\"name\":\"signatureInfo\",\"type\":\"tuple\"}],\"name\":\"updateStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162003d1638038062003d1683398101604081905262000034916200065b565b6200003f3362000085565b6200005c83836002620000d760201b62000756179092919060201c565b600680546001600160401b0319166001600160401b0392909216919091179055506200086a9050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620000e38383620000f4565b620000ef838262000378565b505050565b604080516080810182526000918101828152606082018390528152602081019190915260408051808201909152600184015481526002840154602082015260038401546001600160801b031660005b84518110156200033d578481815181106200016257620001626200078a565b6020026020010151935060006200018885600001516200043660201b6200076f1760201c565b60008181526020898152604090912060020154908701519192506001600160801b039081169116811415620002045760405162461bcd60e51b815260206004820152601660248201527f4f70657261746f7220697320757020746f20646174650000000000000000000060448201526064015b60405180910390fd5b6020860151620002158286620007b6565b620002219190620007e1565b93506001600160801b03811662000275578551600083815260208a81526040909120825181559181015160019092019190915586516200026d91879190620007866200044d821b17901c565b9450620002be565b60208601516001600160801b0316620002be57620002bb620002a68760000151620004f660201b620008291760201c565b866200044d60201b620007861790919060201c565b94505b6020868101805160008581528b845260409081902060020180546001600160801b0319166001600160801b03938416179055915191519116815283917f7714c619c02393ccf44c3de606bec5c80ae7a6077504b74887fb39f335e98adc910160405180910390a25050808062000334906200080f565b91505062000143565b506003850180546001600160801b0319166001600160801b039290921691909117905580516001850155602001516002909301929092555050565b633b9aca006001600160801b0382161115620003e95760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b6064820152608401620001fb565b6003820180546001600160801b03808416600160801b810291909216179091556040517f2b71b2179969a005ac6fd9c196134b364ff40069a17dd72faa96c4a00e73e9f490600090a25050565b805160009081526020918201519091526040902090565b60408051808201909152600080825260208201526200046b62000599565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015620004ac57620004ae565bfe5b5080620004ee5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401620001fb565b505092915050565b604080518082019091526000808252602082015281511580156200051c57506020820151155b156200053b575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602062003cf683398151915284602001516200057191906200082d565b6200058c9060008051602062003cf683398151915262000850565b905292915050565b919050565b60405180608001604052806004906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620005f257620005f2620005b7565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620006235762000623620005b7565b604052919050565b80516001600160801b03811681146200059457600080fd5b80516001600160401b03811681146200059457600080fd5b600080600060608085870312156200067257600080fd5b84516001600160401b03808211156200068a57600080fd5b818701915087601f8301126200069f57600080fd5b8151602082821115620006b657620006b6620005b7565b620006c6818360051b01620005f8565b828152818101935091850284018101918a831115620006e457600080fd5b938101935b828510156200075d57848b0386811215620007045760008081fd5b6200070e620005cd565b6040808312156200071f5760008081fd5b62000729620005cd565b9250875183528488015185840152828252620007478189016200062b565b82860152508552509385019392810192620006e9565b97506200076c8982016200062b565b96505050505050620007816040850162000643565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160801b0383811690831681811015620007d957620007d9620007a0565b039392505050565b60006001600160801b03828116848216808303821115620008065762000806620007a0565b01949350505050565b6000600019821415620008265762000826620007a0565b5060010190565b6000826200084b57634e487b7160e01b600052601260045260246000fd5b500690565b600082821015620008655762000865620007a0565b500390565b61347c806200087a6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063dd64766e11610066578063dd64766e1461021f578063e0f5d9f014610232578063ef0244581461025d578063f2fde38b1461026757600080fd5b80638da5cb5b146101bd578063b3a9e53b146101d8578063b708c083146101f9578063ccd3bd9e1461020c57600080fd5b806344a74c90116100d357806344a74c901461014c5780634afa71b91461015f5780636f5b991814610177578063715018a6146101b557600080fd5b806306aba0e1146100fa5780632db52ea51461012457806343633b0f14610139575b600080fd5b6005546001600160801b03165b6040516001600160801b0390911681526020015b60405180910390f35b610137610132366004612c11565b61027a565b005b610137610147366004612c44565b610290565b61013761015a366004612cc1565b6103ec565b600554600160801b90046001600160801b0316610107565b60408051808201825260008082526020918201528151808301835260035480825260045491830191825283519081529051918101919091520161011b565b61013761045f565b6001546040516001600160a01b03909116815260200161011b565b6101eb6101e6366004612d30565b610473565b60405190815260200161011b565b6101eb610207366004612d63565b6104a2565b6101eb61021a366004612e05565b610562565b61010761022d366004612e49565b6106c0565b600654610245906001600160401b031681565b6040516001600160401b03909116815260200161011b565b633b9aca00610107565b610137610275366004612e62565b6106e0565b6102826108c4565b61028d60028261091e565b50565b6006546001600160401b03166102a96020840184612e8b565b6001600160401b0316146102f75760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c81b595cdcd859d948125160821b60448201526064015b60405180910390fd5b61030c610303836109da565b60029083610a0a565b6103495760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016102ee565b6103566020830183612e8b565b6006805467ffffffffffffffff19166001600160401b03929092169190911790556103e86103876040840184612ea6565b808060200260200160405190810160405280939291908181526020016000905b828210156103d3576103c460608302860136819003810190612f63565b815260200190600101906103a7565b50505050506002610e3990919063ffffffff16565b5050565b6103f86103038361107b565b6104355760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016102ee565b6103e86104456020840184612fa1565b6104556040850160208601612e8b565b846060013561108e565b6104676108c4565b61047160006110f2565b565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b60008080806104b46020890189612fa1565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906104e39190612e8b565b6001600160401b0316815260208101919091526040016000205490508061054e57826105435760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b60448201526064016102ee565b61054e868585611144565b6105588686610562565b9695505050505050565b60008080806105746020870187612fa1565b63ffffffff1663ffffffff16815260200190815260200160002060008560200160208101906105a39190612e8b565b6001600160401b03166001600160401b03168152602001908152602001600020549050836060013581146106195760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368696e6720737461746520726f6f747300000000000000000060448201526064016102ee565b6106b86106296020850185612e62565b60208501358361063c6040880188612fbc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061067e925050506060890189612fbc565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061115592505050565b949350505050565b6000818152600260208190526040822001546001600160801b031661049c565b6106e86108c4565b6001600160a01b03811661074d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ee565b61028d816110f2565b6107608383610e39565b61076a838261091e565b505050565b805160009081526020918201519091526040902090565b60408051808201909152600080825260208201526107a2612b20565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156107e1576107e3565bfe5b50806108215760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016102ee565b505092915050565b6040805180820190915260008082526020820152815115801561084e57506020820151155b1561086c575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020613427833981519152846020015161089f919061302e565b6108b790600080516020613427833981519152613058565b905292915050565b919050565b6001546001600160a01b031633146104715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ee565b633b9aca006001600160801b038216111561098d5760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b60648201526084016102ee565b6003820180546001600160801b03808416600160801b810291909216179091556040517f2b71b2179969a005ac6fd9c196134b364ff40069a17dd72faa96c4a00e73e9f490600090a25050565b6000816040516020016109ed919061306f565b604051602081830303815290604052805190602001209050919050565b604080518082018252600080825260208083018290526003870154845160808101865294850183815260608601849052855290840182905290926001600160801b039091169060005b610a5d8680613147565b9050811015610ba9578015610b0057610a768680613147565b610a81600184613058565b818110610a9057610a90613002565b60200291909101359050610aa48780613147565b83818110610ab457610ab4613002565b9050602002013560001c11610b005760405162461bcd60e51b8152602060048201526012602482015271141d589ad95e5cc81b9bdd081cdbdc9d195960721b60448201526064016102ee565b876000610b0d8880613147565b84818110610b1d57610b1d613002565b6020908102929092013583525081810192909252604090810160002081516080810183528154928101928352600182015460608201528281526002909101546001600160801b031692810192909252909250610b7a908590610786565b935081602001516001600160801b031683610b959190613058565b925080610ba181613190565b915050610a53565b50610bd7610bb684610829565b6040805180820190915260018a0154815260028a0154602082015290610786565b925060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878560000151866020015189602001600001600060028110610c2057610c20613002565b60200201358a602001600001600160028110610c3e57610c3e613002565b6040805160208181019890985290810195909552606085810194909452608080860193909352909402939093013560a080840191909152908a013560c080840191909152928a013560e083015289013561010082015290880135610120820152610140016040516020818303038152906040528051906020012060001c610cc5919061302e565b9050600080610d57610cf2610cda8886611290565b610cec368c90038c0160a08d016131ab565b90610786565b610cfa611318565b610d3c610d3387610d2d604080518082018252600080825260209182015281518083019092526001825260029082015290565b90611290565b610cec8e6113d8565b610d4e368d90038d0160208e01613236565b6201d4c0611468565b9150915081610da85760405162461bcd60e51b815260206004820152601e60248201527f50616972696e6720707265636f6d70696c652063616c6c206661696c6564000060448201526064016102ee565b80610dec5760405162461bcd60e51b815260206004820152601460248201527314da59db985d1d5c99481a5cc81a5b9d985b1a5960621b60448201526064016102ee565b60038a0154633b9aca0090610e13906001600160801b03600160801b820481169116613269565b610e1d9190613298565b6001600160801b031685101596505050505050505b9392505050565b604080516080810182526000918101828152606082018390528152602081019190915260408051808201909152600184015481526002840154602082015260038401546001600160801b031660005b845181101561104057848181518110610ea357610ea3613002565b602002602001015193506000610ece8560000151805160009081526020918201519091526040902090565b60008181526020898152604090912060020154908701519192506001600160801b039081169116811415610f3d5760405162461bcd60e51b81526020600482015260166024820152754f70657261746f7220697320757020746f206461746560501b60448201526064016102ee565b6020860151610f4c82866132be565b610f5691906132e6565b93506001600160801b038116610f98578551600083815260208a81526040909120825181559101516001909101558551610f91908690610786565b9450610fc4565b60208601516001600160801b0316610fc457610fc1610fba8760000151610829565b8690610786565b94505b6020868101805160008581528b845260409081902060020180546001600160801b0319166001600160801b03938416179055915191519116815283917f7714c619c02393ccf44c3de606bec5c80ae7a6077504b74887fb39f335e98adc910160405180910390a25050808061103890613190565b915050610e88565b506003850180546001600160801b0319166001600160801b039290921691909117905580516001850155602001516002909301929092555050565b6000816040516020016109ed9190613311565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8161114f84826103ec565b50505050565b6040516bffffffffffffffffffffffff19606087901b1660208201526000908190819061119590603401604051602081830303815290604052868861168c565b91509150816111df5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016102ee565b60006111ea826116b5565b905060008061121f8a60405160200161120591815260200190565b60405160208183030381529060405288856040015161168c565b91509150816112705760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016102ee565b61128161127c82611779565b6117ac565b9b9a5050505050505050505050565b60408051808201909152600080825260208201526112ac612b3e565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156107e15750806108215760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016102ee565b611320612b5c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806114086000805160206134278339815191528661302e565b90505b611414816117db565b909350915060008051602061342783398151915282830983141561144e576040805180820190915290815260208101919091529392505050565b60008051602061342783398151915260018208905061140b565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061149a612b81565b60005b600281101561165f5760006114b3826006613367565b90508482600281106114c7576114c7613002565b602002015151836114d9836000613386565b600c81106114e9576114e9613002565b602002015284826002811061150057611500613002565b602002015160200151838260016115179190613386565b600c811061152757611527613002565b602002015283826002811061153e5761153e613002565b6020020151515183611551836002613386565b600c811061156157611561613002565b602002015283826002811061157857611578613002565b6020020151516001602002015183611591836003613386565b600c81106115a1576115a1613002565b60200201528382600281106115b8576115b8613002565b6020020151602001516000600281106115d3576115d3613002565b6020020151836115e4836004613386565b600c81106115f4576115f4613002565b602002015283826002811061160b5761160b613002565b60200201516020015160016002811061162657611626613002565b602002015183611637836005613386565b600c811061164757611647613002565b6020020152508061165781613190565b91505061149d565b50611668612ba0565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60006060600061169b8661185d565b90506116a881868661188f565b9250925050935093915050565b6040805160808101825260008082526020820181905291810182905260608101829052906116e28361196a565b905060405180608001604052806117128360008151811061170557611705613002565b602002602001015161199d565b815260200161172d8360018151811061170557611705613002565b81526020016117558360028151811061174857611748613002565b60200260200101516119a4565b81526020016117708360038151811061174857611748613002565b90529392505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061049c90611aa6565b60008060006020845111156117c25760206117c5565b83515b60209485015194036008029390931c9392505050565b60008080600080516020613427833981519152600360008051602061342783398151915286600080516020613427833981519152888909090890506000611851827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020613427833981519152611b36565b91959194509092505050565b6060818051906020012060405160200161187991815260200190565b6040516020818303038152906040529050919050565b60006060600061189e85611bde565b905060008060006118b0848a89611cd8565b815192955090935091501580806118c45750815b6119105760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102ee565b60008161192c5760405180602001604052806000815250611958565b6119588661193b600188613058565b8151811061194b5761194b613002565b60200260200101516120fc565b919b919a509098505050505050505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061049c90612126565b600061049c825b60006021826000015111156119fb5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016102ee565b6000806000611a0985612312565b919450925090506000816001811115611a2457611a2461339e565b14611a715760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016102ee565b6000838660200151611a839190613386565b805190915060208410156105585760208490036101000a90049695505050505050565b60606000806000611ab685612312565b919450925090506000816001811115611ad157611ad161339e565b14611b1e5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102ee565b611b2d8560200151848461265c565b95945050505050565b600080611b41612ba0565b611b49612bbe565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156107e1575082611bd35760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016102ee565b505195945050505050565b60606000611beb8361196a565b9050600081516001600160401b03811115611c0857611c08612ef5565b604051908082528060200260200182016040528015611c4d57816020015b6040805180820190915260608082526020820152815260200190600190039081611c265790505b50905060005b8251811015611cd0576000611c80848381518110611c7357611c73613002565b6020026020010151611aa6565b90506040518060400160405280828152602001611c9c8361196a565b815250838381518110611cb157611cb1613002565b6020026020010181905250508080611cc890613190565b915050611c53565b509392505050565b60006060818080611ce88761273a565b90506000869050600080611d0f604051806040016040528060608152602001606081525090565b60005b8c518110156120d4578c8181518110611d2d57611d2d613002565b602002602001015191508284611d439190613386565b9350611d50600188613386565b965083611da857815180516020909101208514611da35760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102ee565b611e65565b815151602011611e0a57815180516020909101208514611da35760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102ee565b84611e188360000151612874565b14611e655760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102ee565b611e7160106001613386565b8260200151511415611eea578551841415611e8b576120d4565b6000868581518110611e9f57611e9f613002565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110611eca57611eca613002565b60200260200101519050611edd8161289c565b96506001945050506120c2565b6002826020015151141561207a576000611f03836128d2565b9050600081600081518110611f1a57611f1a613002565b016020015160f81c90506000611f316002836133b4565b611f3c9060026133d6565b90506000611f4d848360ff166128f6565b90506000611f5b8b8a6128f6565b90506000611f69838361292c565b905060ff851660021480611f80575060ff85166003145b15611fba57808351148015611f955750808251145b15611fa757611fa4818b613386565b99505b50600160ff1b99506120d4945050505050565b60ff85161580611fcd575060ff85166001145b156120235782518114611fed5750600160ff1b99506120d4945050505050565b612014886020015160018151811061200757612007613002565b602002602001015161289c565b9a5097506120c2945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102ee565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102ee565b806120cc81613190565b915050611d12565b50600160ff1b8414866120e787866128f6565b909e909d50909b509950505050505050505050565b6020810151805160609161049c9161211690600190613058565b81518110611c7357611c73613002565b606060008061213484612312565b919350909150600190508160018111156121505761215061339e565b1461219d5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102ee565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816121b65790505090506000835b8651811015612307576020821061224f5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102ee565b60008061228c6040518060400160405280858c600001516122709190613058565b8152602001858c602001516122859190613386565b9052612312565b5091509150604051806040016040528083836122a89190613386565b8152602001848b602001516122bd9190613386565b8152508585815181106122d2576122d2613002565b60209081029190910101526122e8600185613386565b93506122f48183613386565b6122fe9084613386565b925050506121e3565b508152949350505050565b60008060008084600001511161236a5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102ee565b6020840151805160001a607f811161238f576000600160009450945094505050612655565b60b7811161240b5760006123a4608083613058565b9050808760000151116123f95760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102ee565b60019550935060009250612655915050565b60bf81116124fa57600061242060b783613058565b9050808760000151116124755760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102ee565b600183015160208290036101000a900461248f8183613386565b8851116124de5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102ee565b6124e9826001613386565b965094506000935061265592505050565b60f7811161257557600061250f60c083613058565b9050808760000151116125645760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102ee565b600195509350849250612655915050565b600061258260f783613058565b9050808760000151116125d75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102ee565b600183015160208290036101000a90046125f18183613386565b8851116126395760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102ee565b612644826001613386565b965094506001935061265592505050565b9193909250565b60606000826001600160401b0381111561267857612678612ef5565b6040519080825280601f01601f1916602001820160405280156126a2576020820181803683370190505b5090508051600014156126b6579050610e32565b60006126c28587613386565b90506020820160005b6126d66020876133f9565b81101561270d57825182526126ec602084613386565b92506126f9602083613386565b91508061270581613190565b9150506126cb565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606060008251600261274c9190613367565b6001600160401b0381111561276357612763612ef5565b6040519080825280601f01601f19166020018201604052801561278d576020820181803683370190505b50905060005b835181101561286d5760048482815181106127b0576127b0613002565b01602001516001600160f81b031916901c826127cd836002613367565b815181106127dd576127dd613002565b60200101906001600160f81b031916908160001a905350601084828151811061280857612808613002565b016020015161281a919060f81c6133b4565b60f81b82612829836002613367565b612834906001613386565b8151811061284457612844613002565b60200101906001600160f81b031916908160001a9053508061286581613190565b915050612793565b5092915050565b600060208251101561288857506020015190565b8180602001905181019061049c919061340d565b600060606020836000015110156128bd576128b6836129a8565b90506128c9565b6128c683611aa6565b90505b610e3281612874565b606061049c6128f18360200151600081518110611c7357611c73613002565b61273a565b606082518210612915575060408051602081019091526000815261049c565b610e3283838486516129279190613058565b6129b3565b6000805b8084511180156129405750808351115b8015612991575082818151811061295957612959613002565b602001015160f81c60f81b6001600160f81b03191684828151811061298057612980613002565b01602001516001600160f81b031916145b15610e3257806129a081613190565b915050612930565b606061049c82612b0a565b6060816129c181601f613386565b1015612a005760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102ee565b82612a0b8382613386565b1015612a4a5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102ee565b612a548284613386565b84511015612a985760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102ee565b606082158015612ab75760405191506000825260208201604052612b01565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612af0578051835260209283019201612ad8565b5050858452601f01601f1916604052505b50949350505050565b606061049c82602001516000846000015161265c565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280612b6f612bdc565b8152602001612b7c612bdc565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160801b03811681146108bf57600080fd5b600060208284031215612c2357600080fd5b610e3282612bfa565b600060e08284031215612c3e57600080fd5b50919050565b60008060408385031215612c5757600080fd5b82356001600160401b0380821115612c6e57600080fd5b9084019060608287031215612c8257600080fd5b90925060208401359080821115612c9857600080fd5b50612ca585828601612c2c565b9150509250929050565b600060808284031215612c3e57600080fd5b60008060a08385031215612cd457600080fd5b612cde8484612caf565b915060808301356001600160401b03811115612cf957600080fd5b612ca585828601612c2c565b803563ffffffff811681146108bf57600080fd5b80356001600160401b03811681146108bf57600080fd5b60008060408385031215612d4357600080fd5b612d4c83612d05565b9150612d5a60208401612d19565b90509250929050565b60008060008060c08587031215612d7957600080fd5b612d838686612caf565b935060808501356001600160401b0380821115612d9f57600080fd5b612dab88838901612caf565b945060a0870135915080821115612dc157600080fd5b818701915087601f830112612dd557600080fd5b813581811115612de457600080fd5b886020828501011115612df657600080fd5b95989497505060200194505050565b60008060a08385031215612e1857600080fd5b612e228484612caf565b915060808301356001600160401b03811115612e3d57600080fd5b612ca585828601612caf565b600060208284031215612e5b57600080fd5b5035919050565b600060208284031215612e7457600080fd5b81356001600160a01b0381168114610e3257600080fd5b600060208284031215612e9d57600080fd5b610e3282612d19565b6000808335601e19843603018112612ebd57600080fd5b8301803591506001600160401b03821115612ed757600080fd5b6020019150606081023603821315612eee57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2d57612f2d612ef5565b60405290565b600060408284031215612f4557600080fd5b612f4d612f0b565b9050813581526020820135602082015292915050565b600060608284031215612f7557600080fd5b612f7d612f0b565b612f878484612f33565b8152612f9560408401612bfa565b60208201529392505050565b600060208284031215612fb357600080fd5b610e3282612d05565b6000808335601e19843603018112612fd357600080fd5b8301803591506001600160401b03821115612fed57600080fd5b602001915036819003821315612eee57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261303d5761303d613018565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101561306a5761306a613042565b500390565b60006020808352608083016001600160401b038061308c87612d19565b168386015261309c838701612d19565b604082821681880152808801359150601e198836030182126130bd57600080fd5b908701908135838111156130d057600080fd5b6060935083810236038913156130e557600080fd5b87840184905293849052908401926000919060a088015b8184101561313a578535815286860135878201526001600160801b03613123848801612bfa565b1681840152948401946001939093019284016130fc565b9998505050505050505050565b6000808335601e1984360301811261315e57600080fd5b8301803591506001600160401b0382111561317857600080fd5b6020019150600581901b3603821315612eee57600080fd5b60006000198214156131a4576131a4613042565b5060010190565b6000604082840312156131bd57600080fd5b610e328383612f33565b600082601f8301126131d857600080fd5b604051604081018181106001600160401b03821117156131fa576131fa612ef5565b806040525080604084018581111561321157600080fd5b845b8181101561322b578035835260209283019201613213565b509195945050505050565b60006080828403121561324857600080fd5b613250612f0b565b61325a84846131c7565b8152612f9584604085016131c7565b60006001600160801b038083168185168183048111821515161561328f5761328f613042565b02949350505050565b60006001600160801b03808416806132b2576132b2613018565b92169190910492915050565b60006001600160801b03838116908316818110156132de576132de613042565b039392505050565b60006001600160801b0380831681851680830382111561330857613308613042565b01949350505050565b6080810163ffffffff61332384612d05565b16825261333260208401612d19565b6001600160401b0380821660208501528061334f60408701612d19565b16604085015250506060830135606083015292915050565b600081600019048311821515161561338157613381613042565b500290565b6000821982111561339957613399613042565b500190565b634e487b7160e01b600052602160045260246000fd5b600060ff8316806133c7576133c7613018565b8060ff84160691505092915050565b600060ff821660ff8416808210156133f0576133f0613042565b90039392505050565b60008261340857613408613018565b500490565b60006020828403121561341f57600080fd5b505191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122003b442ed2ff9946b31a2da6c96be4f4afc2ff71f768b334a7ce91051c092186764736f6c634300080c003330644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47", + Bin: "0x60806040523480156200001157600080fd5b5060405162003db038038062003db0833981016040819052620000349162000677565b6200003f3362000085565b6200005c83836002620000d760201b62000761179092919060201c565b600680546001600160401b0319166001600160401b039290921691909117905550620008869050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620000e38383620000f4565b620000ef838262000394565b505050565b604080516080810182526000918101828152606082018390528152602081019190915260408051808201909152600184015481526002840154602082015260038401546001600160801b031660005b84518110156200035957848181518110620001625762000162620007a6565b6020026020010151935060006200018885600001516200045260201b6200077a1760201c565b60008181526020898152604090912060020154908701519192506001600160801b039081169116811415620002045760405162461bcd60e51b815260206004820152601660248201527f4f70657261746f7220697320757020746f20646174650000000000000000000060448201526064015b60405180910390fd5b6020860151620002158286620007d2565b620002219190620007fd565b6020878101516000858152918b9052604090912060020180546001600160801b0319166001600160801b0392831617905590945081166200029f578551600083815260208a815260409091208251815591810151600190920191909155865162000297918791906200079162000469821b17901c565b9450620002fe565b60208601516001600160801b0316620002fe57620002e5620002d087600001516200051260201b620008341760201c565b866200046960201b620007911790919060201c565b6040805180820190915260008082526020820152875294505b6020808701516040516001600160801b03909116815283917f7714c619c02393ccf44c3de606bec5c80ae7a6077504b74887fb39f335e98adc910160405180910390a25050808062000350906200082b565b91505062000143565b506003850180546001600160801b0319166001600160801b039290921691909117905580516001850155602001516002909301929092555050565b633b9aca006001600160801b0382161115620004055760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b6064820152608401620001fb565b6003820180546001600160801b03808416600160801b810291909216179091556040517f2b71b2179969a005ac6fd9c196134b364ff40069a17dd72faa96c4a00e73e9f490600090a25050565b805160009081526020918201519091526040902090565b604080518082019091526000808252602082015262000487620005b5565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015620004c857620004ca565bfe5b50806200050a5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401620001fb565b505092915050565b604080518082019091526000808252602082015281511580156200053857506020820151155b1562000557575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602062003d9083398151915284602001516200058d919062000849565b620005a89060008051602062003d908339815191526200086c565b905292915050565b919050565b60405180608001604052806004906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156200060e576200060e620005d3565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200063f576200063f620005d3565b604052919050565b80516001600160801b0381168114620005b057600080fd5b80516001600160401b0381168114620005b057600080fd5b600080600060608085870312156200068e57600080fd5b84516001600160401b0380821115620006a657600080fd5b818701915087601f830112620006bb57600080fd5b8151602082821115620006d257620006d2620005d3565b620006e2818360051b0162000614565b828152818101935091850284018101918a8311156200070057600080fd5b938101935b828510156200077957848b0386811215620007205760008081fd5b6200072a620005e9565b6040808312156200073b5760008081fd5b62000745620005e9565b92508751835284880151858401528282526200076381890162000647565b8286015250855250938501939281019262000705565b97506200078889820162000647565b965050505050506200079d604085016200065f565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160801b0383811690831681811015620007f557620007f5620007bc565b039392505050565b60006001600160801b03828116848216808303821115620008225762000822620007bc565b01949350505050565b6000600019821415620008425762000842620007bc565b5060010190565b6000826200086757634e487b7160e01b600052601260045260246000fd5b500690565b600082821015620008815762000881620007bc565b500390565b6134fa80620008966000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063dd64766e11610066578063dd64766e1461021f578063e0f5d9f014610232578063ef0244581461025d578063f2fde38b1461026757600080fd5b80638da5cb5b146101bd578063b3a9e53b146101d8578063b708c083146101f9578063ccd3bd9e1461020c57600080fd5b806344a74c90116100d357806344a74c901461014c5780634afa71b91461015f5780636f5b991814610177578063715018a6146101b557600080fd5b806306aba0e1146100fa5780632db52ea51461012457806343633b0f14610139575b600080fd5b6005546001600160801b03165b6040516001600160801b0390911681526020015b60405180910390f35b610137610132366004612c6d565b61027a565b005b610137610147366004612ca0565b610290565b61013761015a366004612d1d565b6103f7565b600554600160801b90046001600160801b0316610107565b60408051808201825260008082526020918201528151808301835260035480825260045491830191825283519081529051918101919091520161011b565b61013761046a565b6001546040516001600160a01b03909116815260200161011b565b6101eb6101e6366004612d8c565b61047e565b60405190815260200161011b565b6101eb610207366004612dbf565b6104ad565b6101eb61021a366004612e61565b61056d565b61010761022d366004612ea5565b6106cb565b600654610245906001600160401b031681565b6040516001600160401b03909116815260200161011b565b633b9aca00610107565b610137610275366004612ebe565b6106eb565b6102826108cf565b61028d600282610929565b50565b6006546001600160401b03166102a96020840184612ee7565b6001600160401b0316146102f75760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c81b595cdcd859d948125160821b60448201526064015b60405180910390fd5b61030c610303836109e5565b60029083610a15565b6103495760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016102ee565b6103566020830183612ee7565b610361906001612f18565b6006805467ffffffffffffffff19166001600160401b03929092169190911790556103f36103926040840184612f43565b808060200260200160405190810160405280939291908181526020016000905b828210156103de576103cf60608302860136819003810190613000565b815260200190600101906103b2565b50505050506002610cf690919063ffffffff16565b5050565b61040361030383610f54565b6104405760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016102ee565b6103f3610450602084018461303e565b6104606040850160208601612ee7565b8460600135610f67565b6104726108cf565b61047c6000610fcb565b565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b60008080806104bf602089018961303e565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906104ee9190612ee7565b6001600160401b03168152602081019190915260400160002054905080610559578261054e5760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b60448201526064016102ee565b61055986858561101d565b610563868661056d565b9695505050505050565b600080808061057f602087018761303e565b63ffffffff1663ffffffff16815260200190815260200160002060008560200160208101906105ae9190612ee7565b6001600160401b03166001600160401b03168152602001908152602001600020549050836060013581146106245760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368696e6720737461746520726f6f747300000000000000000060448201526064016102ee565b6106c36106346020850185612ebe565b6020850135836106476040880188613059565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610689925050506060890189613059565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061102e92505050565b949350505050565b6000818152600260208190526040822001546001600160801b03166104a7565b6106f36108cf565b6001600160a01b0381166107585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ee565b61028d81610fcb565b61076b8383610cf6565b6107758382610929565b505050565b805160009081526020918201519091526040902090565b60408051808201909152600080825260208201526107ad612b7c565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156107ec576107ee565bfe5b508061082c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016102ee565b505092915050565b6040805180820190915260008082526020820152815115801561085957506020820151155b15610877575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206134a583398151915284602001516108aa91906130cb565b6108c2906000805160206134a58339815191526130df565b905292915050565b919050565b6001546001600160a01b0316331461047c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ee565b633b9aca006001600160801b03821611156109985760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b60648201526084016102ee565b6003820180546001600160801b03808416600160801b810291909216179091556040517f2b71b2179969a005ac6fd9c196134b364ff40069a17dd72faa96c4a00e73e9f490600090a25050565b6000816040516020016109f891906130f6565b604051602081830303815290604052805190602001209050919050565b604080518082018252600080825260208083018290526003870154845160808101865294850183815260608601849052855290840182905290926001600160801b039091169060005b610a6886806131ce565b9050811015610bb4578015610b0b57610a8186806131ce565b610a8c6001846130df565b818110610a9b57610a9b61309f565b60200291909101359050610aaf87806131ce565b83818110610abf57610abf61309f565b9050602002013560001c11610b0b5760405162461bcd60e51b8152602060048201526012602482015271141d589ad95e5cc81b9bdd081cdbdc9d195960721b60448201526064016102ee565b876000610b1888806131ce565b84818110610b2857610b2861309f565b6020908102929092013583525081810192909252604090810160002081516080810183528154928101928352600182015460608201528281526002909101546001600160801b031692810192909252909250610b85908590610791565b935081602001516001600160801b031683610ba091906130df565b925080610bac81613217565b915050610a5e565b50610be2610bc184610834565b6040805180820190915260018a0154815260028a0154602082015290610791565b9250600080610c158886610bfe368b90038b0160208c016132a1565b610c10368c90038c0160a08d016132d4565b611169565b9150915081610c665760405162461bcd60e51b815260206004820152601e60248201527f50616972696e6720707265636f6d70696c652063616c6c206661696c6564000060448201526064016102ee565b80610caa5760405162461bcd60e51b815260206004820152601460248201527314da59db985d1d5c99481a5cc81a5b9d985b1a5960621b60448201526064016102ee565b6003890154633b9aca0090610cd1906001600160801b03600160801b8204811691166132f0565b610cdb919061331f565b6001600160801b0316841015955050505050505b9392505050565b604080516080810182526000918101828152606082018390528152602081019190915260408051808201909152600184015481526002840154602082015260038401546001600160801b031660005b8451811015610f1957848181518110610d6057610d6061309f565b602002602001015193506000610d8b8560000151805160009081526020918201519091526040902090565b60008181526020898152604090912060020154908701519192506001600160801b039081169116811415610dfa5760405162461bcd60e51b81526020600482015260166024820152754f70657261746f7220697320757020746f206461746560501b60448201526064016102ee565b6020860151610e098286613345565b610e13919061336d565b6020878101516000858152918b9052604090912060020180546001600160801b0319166001600160801b039283161790559094508116610e7f578551600083815260208a81526040909120825181559101516001909101558551610e78908690610791565b9450610ec1565b60208601516001600160801b0316610ec157610ea8610ea18760000151610834565b8690610791565b6040805180820190915260008082526020820152875294505b6020808701516040516001600160801b03909116815283917f7714c619c02393ccf44c3de606bec5c80ae7a6077504b74887fb39f335e98adc910160405180910390a250508080610f1190613217565b915050610d45565b506003850180546001600160801b0319166001600160801b039290921691909117905580516001850155602001516002909301929092555050565b6000816040516020016109f8919061338f565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8161102884826103f7565b50505050565b6040516bffffffffffffffffffffffff19606087901b1660208201526000908190819061106e9060340160405160208183030381529060405286886112ec565b91509150816110b85760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016102ee565b60006110c382611315565b90506000806110f88a6040516020016110de91815260200190565b6040516020818303038152906040528885604001516112ec565b91509150816111495760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016102ee565b61115a611155826113d9565b61140c565b9b9a5050505050505050505050565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106111b1576111b161309f565b60200201518951600160200201518a602001516000600281106111d6576111d661309f565b60200201518b602001516001600281106111f2576111f261309f565b602090810291909101518c518d83015160405161124f9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61127291906130cb565b90506112de611284610ea1888461143b565b61128c6114c3565b6112d46112c5856112bf604080518082018252600080825260209182015281518083019092526001825260029082015290565b9061143b565b6112ce8c611583565b90610791565b886201d4c0611613565b909890975095505050505050565b6000606060006112fb86611837565b9050611308818686611869565b9250925050935093915050565b60408051608081018252600080825260208201819052918101829052606081018290529061134283611944565b90506040518060800160405280611372836000815181106113655761136561309f565b6020026020010151611977565b815260200161138d836001815181106113655761136561309f565b81526020016113b5836002815181106113a8576113a861309f565b602002602001015161197e565b81526020016113d0836003815181106113a8576113a861309f565b90529392505050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906104a790611a80565b6000806000602084511115611422576020611425565b83515b60209485015194036008029390931c9392505050565b6040805180820190915260008082526020820152611457612b9a565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156107ec57508061082c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016102ee565b6114cb612bb8565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806115b36000805160206134a5833981519152866130cb565b90505b6115bf81611b10565b90935091506000805160206134a58339815191528283098314156115f9576040805180820190915290815260208101919091529392505050565b6000805160206134a58339815191526001820890506115b6565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190611645612bdd565b60005b600281101561180a57600061165e8260066133e5565b90508482600281106116725761167261309f565b60200201515183611684836000613404565b600c81106116945761169461309f565b60200201528482600281106116ab576116ab61309f565b602002015160200151838260016116c29190613404565b600c81106116d2576116d261309f565b60200201528382600281106116e9576116e961309f565b60200201515151836116fc836002613404565b600c811061170c5761170c61309f565b60200201528382600281106117235761172361309f565b602002015151600160200201518361173c836003613404565b600c811061174c5761174c61309f565b60200201528382600281106117635761176361309f565b60200201516020015160006002811061177e5761177e61309f565b60200201518361178f836004613404565b600c811061179f5761179f61309f565b60200201528382600281106117b6576117b661309f565b6020020151602001516001600281106117d1576117d161309f565b6020020151836117e2836005613404565b600c81106117f2576117f261309f565b6020020152508061180281613217565b915050611648565b50611813612bfc565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6060818051906020012060405160200161185391815260200190565b6040516020818303038152906040529050919050565b60006060600061187885611b92565b9050600080600061188a848a89611c8c565b8151929550909350915015808061189e5750815b6118ea5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102ee565b6000816119065760405180602001604052806000815250611932565b611932866119156001886130df565b815181106119255761192561309f565b60200260200101516120b0565b919b919a509098505050505050505050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906104a7906120da565b60006104a7825b60006021826000015111156119d55760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016102ee565b60008060006119e3856122c6565b9194509250905060008160018111156119fe576119fe61341c565b14611a4b5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016102ee565b6000838660200151611a5d9190613404565b805190915060208410156105635760208490036101000a90049695505050505050565b60606000806000611a90856122c6565b919450925090506000816001811115611aab57611aab61341c565b14611af85760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102ee565b611b0785602001518484612610565b95945050505050565b600080806000805160206134a583398151915260036000805160206134a5833981519152866000805160206134a5833981519152888909090890506000611b86827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206134a58339815191526126ee565b91959194509092505050565b60606000611b9f83611944565b9050600081516001600160401b03811115611bbc57611bbc612f92565b604051908082528060200260200182016040528015611c0157816020015b6040805180820190915260608082526020820152815260200190600190039081611bda5790505b50905060005b8251811015611c84576000611c34848381518110611c2757611c2761309f565b6020026020010151611a80565b90506040518060400160405280828152602001611c5083611944565b815250838381518110611c6557611c6561309f565b6020026020010181905250508080611c7c90613217565b915050611c07565b509392505050565b60006060818080611c9c87612796565b90506000869050600080611cc3604051806040016040528060608152602001606081525090565b60005b8c51811015612088578c8181518110611ce157611ce161309f565b602002602001015191508284611cf79190613404565b9350611d04600188613404565b965083611d5c57815180516020909101208514611d575760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102ee565b611e19565b815151602011611dbe57815180516020909101208514611d575760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102ee565b84611dcc83600001516128d0565b14611e195760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102ee565b611e2560106001613404565b8260200151511415611e9e578551841415611e3f57612088565b6000868581518110611e5357611e5361309f565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110611e7e57611e7e61309f565b60200260200101519050611e91816128f8565b9650600194505050612076565b6002826020015151141561202e576000611eb78361292e565b9050600081600081518110611ece57611ece61309f565b016020015160f81c90506000611ee5600283613432565b611ef0906002613454565b90506000611f01848360ff16612952565b90506000611f0f8b8a612952565b90506000611f1d8383612988565b905060ff851660021480611f34575060ff85166003145b15611f6e57808351148015611f495750808251145b15611f5b57611f58818b613404565b99505b50600160ff1b9950612088945050505050565b60ff85161580611f81575060ff85166001145b15611fd75782518114611fa15750600160ff1b9950612088945050505050565b611fc88860200151600181518110611fbb57611fbb61309f565b60200260200101516128f8565b9a509750612076945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102ee565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102ee565b8061208081613217565b915050611cc6565b50600160ff1b84148661209b8786612952565b909e909d50909b509950505050505050505050565b602081015180516060916104a7916120ca906001906130df565b81518110611c2757611c2761309f565b60606000806120e8846122c6565b919350909150600190508160018111156121045761210461341c565b146121515760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102ee565b6040805160208082526104208201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161216a5790505090506000835b86518110156122bb57602082106122035760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102ee565b6000806122406040518060400160405280858c6000015161222491906130df565b8152602001858c602001516122399190613404565b90526122c6565b50915091506040518060400160405280838361225c9190613404565b8152602001848b602001516122719190613404565b8152508585815181106122865761228661309f565b602090810291909101015261229c600185613404565b93506122a88183613404565b6122b29084613404565b92505050612197565b508152949350505050565b60008060008084600001511161231e5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102ee565b6020840151805160001a607f8111612343576000600160009450945094505050612609565b60b781116123bf5760006123586080836130df565b9050808760000151116123ad5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102ee565b60019550935060009250612609915050565b60bf81116124ae5760006123d460b7836130df565b9050808760000151116124295760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102ee565b600183015160208290036101000a90046124438183613404565b8851116124925760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102ee565b61249d826001613404565b965094506000935061260992505050565b60f781116125295760006124c360c0836130df565b9050808760000151116125185760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102ee565b600195509350849250612609915050565b600061253660f7836130df565b90508087600001511161258b5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102ee565b600183015160208290036101000a90046125a58183613404565b8851116125ed5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102ee565b6125f8826001613404565b965094506001935061260992505050565b9193909250565b60606000826001600160401b0381111561262c5761262c612f92565b6040519080825280601f01601f191660200182016040528015612656576020820181803683370190505b50905080516000141561266a579050610cef565b60006126768587613404565b90506020820160005b61268a602087613477565b8110156126c157825182526126a0602084613404565b92506126ad602083613404565b9150806126b981613217565b91505061267f565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b6000806126f9612bfc565b612701612c1a565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156107ec57508261278b5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016102ee565b505195945050505050565b60606000825160026127a891906133e5565b6001600160401b038111156127bf576127bf612f92565b6040519080825280601f01601f1916602001820160405280156127e9576020820181803683370190505b50905060005b83518110156128c957600484828151811061280c5761280c61309f565b01602001516001600160f81b031916901c826128298360026133e5565b815181106128395761283961309f565b60200101906001600160f81b031916908160001a90535060108482815181106128645761286461309f565b0160200151612876919060f81c613432565b60f81b826128858360026133e5565b612890906001613404565b815181106128a0576128a061309f565b60200101906001600160f81b031916908160001a905350806128c181613217565b9150506127ef565b5092915050565b60006020825110156128e457506020015190565b818060200190518101906104a7919061348b565b600060606020836000015110156129195761291283612a04565b9050612925565b61292283611a80565b90505b610cef816128d0565b60606104a761294d8360200151600081518110611c2757611c2761309f565b612796565b60608251821061297157506040805160208101909152600081526104a7565b610cef838384865161298391906130df565b612a0f565b6000805b80845111801561299c5750808351115b80156129ed57508281815181106129b5576129b561309f565b602001015160f81c60f81b6001600160f81b0319168482815181106129dc576129dc61309f565b01602001516001600160f81b031916145b15610cef57806129fc81613217565b91505061298c565b60606104a782612b66565b606081612a1d81601f613404565b1015612a5c5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102ee565b82612a678382613404565b1015612aa65760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102ee565b612ab08284613404565b84511015612af45760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102ee565b606082158015612b135760405191506000825260208201604052612b5d565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612b4c578051835260209283019201612b34565b5050858452601f01601f1916604052505b50949350505050565b60606104a7826020015160008460000151612610565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280612bcb612c38565b8152602001612bd8612c38565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160801b03811681146108ca57600080fd5b600060208284031215612c7f57600080fd5b610cef82612c56565b600060e08284031215612c9a57600080fd5b50919050565b60008060408385031215612cb357600080fd5b82356001600160401b0380821115612cca57600080fd5b9084019060608287031215612cde57600080fd5b90925060208401359080821115612cf457600080fd5b50612d0185828601612c88565b9150509250929050565b600060808284031215612c9a57600080fd5b60008060a08385031215612d3057600080fd5b612d3a8484612d0b565b915060808301356001600160401b03811115612d5557600080fd5b612d0185828601612c88565b803563ffffffff811681146108ca57600080fd5b80356001600160401b03811681146108ca57600080fd5b60008060408385031215612d9f57600080fd5b612da883612d61565b9150612db660208401612d75565b90509250929050565b60008060008060c08587031215612dd557600080fd5b612ddf8686612d0b565b935060808501356001600160401b0380821115612dfb57600080fd5b612e0788838901612d0b565b945060a0870135915080821115612e1d57600080fd5b818701915087601f830112612e3157600080fd5b813581811115612e4057600080fd5b886020828501011115612e5257600080fd5b95989497505060200194505050565b60008060a08385031215612e7457600080fd5b612e7e8484612d0b565b915060808301356001600160401b03811115612e9957600080fd5b612d0185828601612d0b565b600060208284031215612eb757600080fd5b5035919050565b600060208284031215612ed057600080fd5b81356001600160a01b0381168114610cef57600080fd5b600060208284031215612ef957600080fd5b610cef82612d75565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115612f3a57612f3a612f02565b01949350505050565b6000808335601e19843603018112612f5a57600080fd5b8301803591506001600160401b03821115612f7457600080fd5b6020019150606081023603821315612f8b57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612fca57612fca612f92565b60405290565b600060408284031215612fe257600080fd5b612fea612fa8565b9050813581526020820135602082015292915050565b60006060828403121561301257600080fd5b61301a612fa8565b6130248484612fd0565b815261303260408401612c56565b60208201529392505050565b60006020828403121561305057600080fd5b610cef82612d61565b6000808335601e1984360301811261307057600080fd5b8301803591506001600160401b0382111561308a57600080fd5b602001915036819003821315612f8b57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826130da576130da6130b5565b500690565b6000828210156130f1576130f1612f02565b500390565b60006020808352608083016001600160401b038061311387612d75565b1683860152613123838701612d75565b604082821681880152808801359150601e1988360301821261314457600080fd5b9087019081358381111561315757600080fd5b60609350838102360389131561316c57600080fd5b87840184905293849052908401926000919060a088015b818410156131c1578535815286860135878201526001600160801b036131aa848801612c56565b168184015294840194600193909301928401613183565b9998505050505050505050565b6000808335601e198436030181126131e557600080fd5b8301803591506001600160401b038211156131ff57600080fd5b6020019150600581901b3603821315612f8b57600080fd5b600060001982141561322b5761322b612f02565b5060010190565b600082601f83011261324357600080fd5b604051604081018181106001600160401b038211171561326557613265612f92565b806040525080604084018581111561327c57600080fd5b845b8181101561329657803583526020928301920161327e565b509195945050505050565b6000608082840312156132b357600080fd5b6132bb612fa8565b6132c58484613232565b81526130328460408501613232565b6000604082840312156132e657600080fd5b610cef8383612fd0565b60006001600160801b038083168185168183048111821515161561331657613316612f02565b02949350505050565b60006001600160801b0380841680613339576133396130b5565b92169190910492915050565b60006001600160801b038381169083168181101561336557613365612f02565b039392505050565b60006001600160801b03808316818516808303821115612f3a57612f3a612f02565b6080810163ffffffff6133a184612d61565b1682526133b060208401612d75565b6001600160401b038082166020850152806133cd60408701612d75565b16604085015250506060830135606083015292915050565b60008160001904831182151516156133ff576133ff612f02565b500290565b6000821982111561341757613417612f02565b500190565b634e487b7160e01b600052602160045260246000fd5b600060ff831680613445576134456130b5565b8060ff84160691505092915050565b600060ff821660ff84168082101561346e5761346e612f02565b90039392505050565b600082613486576134866130b5565b500490565b60006020828403121561349d57600080fd5b505191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220a70977676025a1138a505b26988edf2c7050c9b3267141eb43269bc5e57b611964736f6c634300080c003330644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47", } // ContractSFFLRegistryRollupABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLServiceManager/binding.go b/contracts/bindings/SFFLServiceManager/binding.go index 1d2f12583..36b0eba36 100644 --- a/contracts/bindings/SFFLServiceManager/binding.go +++ b/contracts/bindings/SFFLServiceManager/binding.go @@ -79,7 +79,7 @@ type StateRootUpdateMessage struct { // ContractSFFLServiceManagerMetaData contains all meta data concerning the ContractSFFLServiceManager contract. var ContractSFFLServiceManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIDelegationManager\",\"name\":\"_delegationManager\",\"type\":\"address\"},{\"internalType\":\"contractIRegistryCoordinator\",\"name\":\"_registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"contractIStakeRegistry\",\"name\":\"_stakeRegistry\",\"type\":\"address\"},{\"internalType\":\"contractSFFLTaskManager\",\"name\":\"_taskManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"name\":\"StateRootUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorAddr\",\"type\":\"address\"}],\"name\":\"freezeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"}],\"name\":\"getStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structStateRootUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"storageKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"stateTrieWitness\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"storageTrieWitness\",\"type\":\"bytes\"}],\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"name\":\"proofParams\",\"type\":\"tuple\"}],\"name\":\"getStorageValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"setMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taskManager\",\"outputs\":[{\"internalType\":\"contractSFFLTaskManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structStateRootUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"storageKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"stateTrieWitness\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"storageTrieWitness\",\"type\":\"bytes\"}],\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"name\":\"proofParams\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"agreement\",\"type\":\"bytes\"}],\"name\":\"updateAndGetStorageValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"rollupId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"blockHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nearBlockHeight\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structStateRootUpdate.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\"}],\"name\":\"updateStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101006040523480156200001257600080fd5b50604051620037c4380380620037c483398101604081905262000035916200014f565b6001600160a01b0380851660a052808416608052821660c0528383836200005b62000074565b5050506001600160a01b031660e05250620001b7915050565b600154610100900460ff1615620000e15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff908116101562000134576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014c57600080fd5b50565b600080600080608085870312156200016657600080fd5b8451620001738162000136565b6020860151909450620001868162000136565b6040860151909350620001998162000136565b6060860151909250620001ac8162000136565b939692955090935050565b60805160a05160c05160e05161356362000261600039600081816101a30152818161072b0152818161146a01526114a601526000818161044b015281816105a60152818161063d01528181610e3201528181610fb501526110540152600081816107d30152818161089c01526109700152600081816102720152818161030101528181610381015281816108480152818161091401528181610d700152610f1001526135636000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a50a640e11610097578063ccd3bd9e11610066578063ccd3bd9e1461020c578063d5b206a31461021f578063e481af9d14610232578063f2fde38b1461023a57600080fd5b8063a50a640e1461019e578063b3a9e53b146101c5578063b708c083146101e6578063c4d66de8146101f957600080fd5b8063750521f5116100d3578063750521f5146101405780638da5cb5b146101535780639926ee7d14610178578063a364f4da1461018b57600080fd5b806333cfb7b7146100fa57806338c8ee6414610123578063715018a614610138575b600080fd5b61010d6101083660046129cb565b61024d565b60405161011a91906129e8565b60405180910390f35b6101366101313660046129cb565b610720565b005b6101366107a0565b61013661014e366004612ae8565b6107b4565b6034546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b610136610186366004612b30565b61083d565b6101366101993660046129cb565b610909565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6101d86101d3366004612c08565b61099f565b60405190815260200161011a565b6101d86101f4366004612c55565b6109ce565b6101366102073660046129cb565b610a8e565b6101d861021a366004612cf7565b610b9b565b61013661022d366004612d45565b610cf9565b61010d610d6a565b6101366102483660046129cb565b611133565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd9190612d9b565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190612db4565b90506001600160c01b038116158061040657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612ddd565b60ff16155b156104265760408051600080825260208201909252905b50949350505050565b600061043a826001600160c01b03166111a9565b90506000805b8251811015610510577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061048a5761048a612e00565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa1580156104ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f29190612d9b565b6104fc9083612e2c565b91508061050881612e44565b915050610440565b506000816001600160401b0381111561052b5761052b612a35565b604051908082528060200260200182016040528015610554578160200160208202803683370190505b5090506000805b845181101561071357600085828151811061057857610578612e00565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa1580156105ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106119190612d9b565b905060005b818110156106fd576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190612e5f565b600001518686815181106106c5576106c5612e00565b6001600160a01b0390921660209283029190910190910152846106e781612e44565b95505080806106f590612e44565b915050610616565b505050808061070b90612e44565b91505061055b565b5090979650505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079d5760405162461bcd60e51b815260206004820152601f60248201527f5461736b206d616e61676572206d757374206265207468652063616c6c65720060448201526064015b60405180910390fd5b50565b6107a861126b565b6107b260006112c5565b565b6107bc61126b565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610808908490600401612f1b565b600060405180830381600087803b15801561082257600080fd5b505af1158015610836573d6000803e3d6000fd5b5050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108855760405162461bcd60e51b815260040161079490612f2e565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906108d39085908590600401612fa6565b600060405180830381600087803b1580156108ed57600080fd5b505af1158015610901573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109515760405162461bcd60e51b815260040161079490612f2e565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401610808565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b60008080806109e06020890189612ff1565b63ffffffff1663ffffffff1681526020019081526020016000206000876020016020810190610a0f919061300e565b6001600160401b03168152602081019190915260400160002054905080610a7a5782610a6f5760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b6044820152606401610794565b610a7a868585611317565b610a848686610b9b565b9695505050505050565b600154610100900460ff1615808015610aab57506001805460ff16105b80610ac45750303b158015610ac457506001805460ff16145b610b275760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610794565b6001805460ff1916811790558015610b49576001805461ff0019166101001790555b610b52826112c5565b8015610b97576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000808080610bad6020870187612ff1565b63ffffffff1663ffffffff1681526020019081526020016000206000856020016020810190610bdc919061300e565b6001600160401b03166001600160401b0316815260200190815260200160002054905083606001358114610c525760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368696e6720737461746520726f6f74730000000000000000006044820152606401610794565b610cf1610c6260208501856129cb565b602085013583610c756040880188613029565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cb7925050506060890189613029565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061132892505050565b949350505050565b610d038282611465565b610d405760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610794565b610b97610d506020840184612ff1565b610d60604085016020860161300e565b846060013561159a565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190612ddd565b60ff16905080610e0e57505060408051600081526020810190915290565b6000805b82811015610ec357604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190612d9b565b610eaf9083612e2c565b915080610ebb81612e44565b915050610e12565b506000816001600160401b03811115610ede57610ede612a35565b604051908082528060200260200182016040528015610f07578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190612ddd565b60ff1681101561112957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110289190612d9b565b905060005b81811015611114576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190612e5f565b600001518585815181106110dc576110dc612e00565b6001600160a01b0390921660209283029190910190910152836110fe81612e44565b945050808061110c90612e44565b91505061102d565b5050808061112190612e44565b915050610f0e565b5090949350505050565b61113b61126b565b6001600160a01b0381166111a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610794565b61079d816112c5565b60606000806111b7846115fe565b61ffff166001600160401b038111156111d2576111d2612a35565b6040519080825280601f01601f1916602001820160405280156111fc576020820181803683370190505b5090506000805b825182108015611214575061010081105b15611129576001811b93508584161561125b578060f81b83838151811061123d5761123d612e00565b60200101906001600160f81b031916908160001a9053508160010191505b61126481612e44565b9050611203565b6034546001600160a01b031633146107b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610794565b603480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816113228482610cf9565b50505050565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611368906034016040516020818303038152906040528688611629565b91509150816113b25760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610794565b60006113bd82611652565b90506000806113f28a6040516020016113d891815260200190565b604051602081830303815290604052888560400151611629565b91509150816114435760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610794565b61145461144f82611716565b611749565b955050505050505b95945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663292f7a4e6114a086611778565b438660037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef0244586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115269190613076565b611531906002613093565b61153b91906130d5565b6040518563ffffffff1660e01b815260040161155a949392919061327c565b6040805180830381865afa158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041d91906133db565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6000805b82156109c85761161360018461340e565b909216918061162181613425565b915050611602565b600060606000611638866117a8565b90506116458186866117da565b9250925050935093915050565b60408051608081018252600080825260208201819052918101829052606081018290529061167f836118b5565b905060405180608001604052806116af836000815181106116a2576116a2612e00565b60200260200101516118e8565b81526020016116ca836001815181106116a2576116a2612e00565b81526020016116f2836002815181106116e5576116e5612e00565b60200260200101516118ef565b815260200161170d836003815181106116e5576116e5612e00565b90529392505050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906109c8906119f1565b600080600060208451111561175f576020611762565b83515b60209485015194036008029390931c9392505050565b60008160405160200161178b9190613447565b604051602081830303815290604052805190602001209050919050565b606081805190602001206040516020016117c491815260200190565b6040516020818303038152906040529050919050565b6000606060006117e985611a78565b905060008060006117fb848a89611b72565b8151929550909350915015808061180f5750815b61185b5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610794565b60008161187757604051806020016040528060008152506118a3565b6118a38661188660018861340e565b8151811061189657611896612e00565b6020026020010151611f96565b919b919a509098505050505050505050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906109c890611fc0565b60006109c8825b60006021826000015111156119465760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610794565b6000806000611954856121ac565b91945092509050600081600181111561196f5761196f61349f565b146119bc5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610794565b60008386602001516119ce9190612e2c565b80519091506020841015610a845760208490036101000a90049695505050505050565b60606000806000611a01856121ac565b919450925090506000816001811115611a1c57611a1c61349f565b14611a695760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610794565b61145c856020015184846124f6565b60606000611a85836118b5565b9050600081516001600160401b03811115611aa257611aa2612a35565b604051908082528060200260200182016040528015611ae757816020015b6040805180820190915260608082526020820152815260200190600190039081611ac05790505b50905060005b8251811015611b6a576000611b1a848381518110611b0d57611b0d612e00565b60200260200101516119f1565b90506040518060400160405280828152602001611b36836118b5565b815250838381518110611b4b57611b4b612e00565b6020026020010181905250508080611b6290612e44565b915050611aed565b509392505050565b60006060818080611b82876125d1565b90506000869050600080611ba9604051806040016040528060608152602001606081525090565b60005b8c51811015611f6e578c8181518110611bc757611bc7612e00565b602002602001015191508284611bdd9190612e2c565b9350611bea600188612e2c565b965083611c4257815180516020909101208514611c3d5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610794565b611cff565b815151602011611ca457815180516020909101208514611c3d5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610794565b84611cb2836000015161270b565b14611cff5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610794565b611d0b60106001612e2c565b8260200151511415611d84578551841415611d2557611f6e565b6000868581518110611d3957611d39612e00565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110611d6457611d64612e00565b60200260200101519050611d7781612733565b9650600194505050611f5c565b60028260200151511415611f14576000611d9d83612769565b9050600081600081518110611db457611db4612e00565b016020015160f81c90506000611dcb6002836134b5565b611dd69060026134d7565b90506000611de7848360ff1661278d565b90506000611df58b8a61278d565b90506000611e0383836127c3565b905060ff851660021480611e1a575060ff85166003145b15611e5457808351148015611e2f5750808251145b15611e4157611e3e818b612e2c565b99505b50600160ff1b9950611f6e945050505050565b60ff85161580611e67575060ff85166001145b15611ebd5782518114611e875750600160ff1b9950611f6e945050505050565b611eae8860200151600181518110611ea157611ea1612e00565b6020026020010151612733565b9a509750611f5c945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610794565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610794565b80611f6681612e44565b915050611bac565b50600160ff1b841486611f81878661278d565b909e909d50909b509950505050505050505050565b602081015180516060916109c891611fb09060019061340e565b81518110611b0d57611b0d612e00565b6060600080611fce846121ac565b91935090915060019050816001811115611fea57611fea61349f565b146120375760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610794565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816120505790505090506000835b86518110156121a157602082106120e95760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610794565b6000806121266040518060400160405280858c6000015161210a919061340e565b8152602001858c6020015161211f9190612e2c565b90526121ac565b5091509150604051806040016040528083836121429190612e2c565b8152602001848b602001516121579190612e2c565b81525085858151811061216c5761216c612e00565b6020908102919091010152612182600185612e2c565b935061218e8183612e2c565b6121989084612e2c565b9250505061207d565b508152949350505050565b6000806000808460000151116122045760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610794565b6020840151805160001a607f81116122295760006001600094509450945050506124ef565b60b781116122a557600061223e60808361340e565b9050808760000151116122935760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610794565b600195509350600092506124ef915050565b60bf81116123945760006122ba60b78361340e565b90508087600001511161230f5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610794565b600183015160208290036101000a90046123298183612e2c565b8851116123785760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610794565b612383826001612e2c565b96509450600093506124ef92505050565b60f7811161240f5760006123a960c08361340e565b9050808760000151116123fe5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610794565b6001955093508492506124ef915050565b600061241c60f78361340e565b9050808760000151116124715760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610794565b600183015160208290036101000a900461248b8183612e2c565b8851116124d35760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610794565b6124de826001612e2c565b96509450600193506124ef92505050565b9193909250565b60606000826001600160401b0381111561251257612512612a35565b6040519080825280601f01601f19166020018201604052801561253c576020820181803683370190505b5090508051600014156125505790506125ca565b600061255c8587612e2c565b90506020820160005b6125706020876134fa565b8110156125a75782518252612586602084612e2c565b9250612593602083612e2c565b91508061259f81612e44565b915050612565565b5080519151601f86166020036101000a6000190192831692191691909117905290505b9392505050565b60606000825160026125e3919061350e565b6001600160401b038111156125fa576125fa612a35565b6040519080825280601f01601f191660200182016040528015612624576020820181803683370190505b50905060005b835181101561270457600484828151811061264757612647612e00565b01602001516001600160f81b031916901c8261266483600261350e565b8151811061267457612674612e00565b60200101906001600160f81b031916908160001a905350601084828151811061269f5761269f612e00565b01602001516126b1919060f81c6134b5565b60f81b826126c083600261350e565b6126cb906001612e2c565b815181106126db576126db612e00565b60200101906001600160f81b031916908160001a905350806126fc81612e44565b91505061262a565b5092915050565b600060208251101561271f57506020015190565b818060200190518101906109c89190612d9b565b600060606020836000015110156127545761274d8361283f565b9050612760565b61275d836119f1565b90505b6125ca8161270b565b60606109c86127888360200151600081518110611b0d57611b0d612e00565b6125d1565b6060825182106127ac57506040805160208101909152600081526109c8565b6125ca83838486516127be919061340e565b61284a565b6000805b8084511180156127d75750808351115b801561282857508281815181106127f0576127f0612e00565b602001015160f81c60f81b6001600160f81b03191684828151811061281757612817612e00565b01602001516001600160f81b031916145b156125ca578061283781612e44565b9150506127c7565b60606109c8826129a0565b60608161285881601f612e2c565b10156128975760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610794565b826128a28382612e2c565b10156128e15760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610794565b6128eb8284612e2c565b8451101561292f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610794565b60608215801561294e576040519150600082526020820160405261041d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561298757805183526020928301920161296f565b5050858452601f01601f19166040525050949350505050565b60606109c88260200151600084600001516124f6565b6001600160a01b038116811461079d57600080fd5b6000602082840312156129dd57600080fd5b81356125ca816129b6565b6020808252825182820181905260009190848201906040850190845b81811015612a295783516001600160a01b031683529284019291840191600101612a04565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715612a6d57612a6d612a35565b60405290565b60006001600160401b0380841115612a8d57612a8d612a35565b604051601f8501601f19908116603f01168101908282118183101715612ab557612ab5612a35565b81604052809350858152868686011115612ace57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612afa57600080fd5b81356001600160401b03811115612b1057600080fd5b8201601f81018413612b2157600080fd5b610cf184823560208401612a73565b60008060408385031215612b4357600080fd5b8235612b4e816129b6565b915060208301356001600160401b0380821115612b6a57600080fd5b9084019060608287031215612b7e57600080fd5b612b86612a4b565b823582811115612b9557600080fd5b83019150601f82018713612ba857600080fd5b612bb787833560208501612a73565b815260208301356020820152604083013560408201528093505050509250929050565b63ffffffff8116811461079d57600080fd5b80356001600160401b0381168114612c0357600080fd5b919050565b60008060408385031215612c1b57600080fd5b8235612c2681612bda565b9150612c3460208401612bec565b90509250929050565b600060808284031215612c4f57600080fd5b50919050565b60008060008060c08587031215612c6b57600080fd5b612c758686612c3d565b935060808501356001600160401b0380821115612c9157600080fd5b612c9d88838901612c3d565b945060a0870135915080821115612cb357600080fd5b818701915087601f830112612cc757600080fd5b813581811115612cd657600080fd5b886020828501011115612ce857600080fd5b95989497505060200194505050565b60008060a08385031215612d0a57600080fd5b612d148484612c3d565b915060808301356001600160401b03811115612d2f57600080fd5b612d3b85828601612c3d565b9150509250929050565b60008060a08385031215612d5857600080fd5b612d628484612c3d565b915060808301356001600160401b03811115612d7d57600080fd5b83016101808186031215612d9057600080fd5b809150509250929050565b600060208284031215612dad57600080fd5b5051919050565b600060208284031215612dc657600080fd5b81516001600160c01b03811681146125ca57600080fd5b600060208284031215612def57600080fd5b815160ff811681146125ca57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612e3f57612e3f612e16565b500190565b6000600019821415612e5857612e58612e16565b5060010190565b600060408284031215612e7157600080fd5b604051604081018181106001600160401b0382111715612e9357612e93612a35565b6040528251612ea1816129b6565b815260208301516bffffffffffffffffffffffff81168114612ec257600080fd5b60208201529392505050565b6000815180845260005b81811015612ef457602081850181015186830182015201612ed8565b81811115612f06576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006125ca6020830184612ece565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b0383168152604060208201526000825160606040840152612fd060a0840182612ece565b90506020840151606084015260408401516080840152809150509392505050565b60006020828403121561300357600080fd5b81356125ca81612bda565b60006020828403121561302057600080fd5b6125ca82612bec565b6000808335601e1984360301811261304057600080fd5b8301803591506001600160401b0382111561305a57600080fd5b60200191503681900382131561306f57600080fd5b9250929050565b60006020828403121561308857600080fd5b81516125ca81612bda565b600063ffffffff808316818516818304811182151516156130b6576130b6612e16565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806130ec576130ec6130bf565b92169190910492915050565b6000808335601e1984360301811261310f57600080fd5b83016020810192503590506001600160401b0381111561312e57600080fd5b8060051b360383131561306f57600080fd5b8183526000602080850194508260005b8581101561317b57813561316381612bda565b63ffffffff1687529582019590820190600101613150565b509495945050505050565b6000808335601e1984360301811261319d57600080fd5b83016020810192503590506001600160401b038111156131bc57600080fd5b8060061b360383131561306f57600080fd5b81835260208301925060008160005b84811015613205578135865260208083013590870152604095860195909101906001016131dd565b5093949350505050565b604081833760408201600081526040808301823750600060808301525050565b818352600060208085019450848460051b86018460005b8781101561071357838303895261325d82886130f8565b613268858284613140565b9a87019a9450505090840190600101613246565b84815260a06020820152600160a0820152600060c082015263ffffffff8416604082015260e0606082015260006132b384856130f8565b61018060e08501526132ca61026085018284613140565b9150506132da6020860186613186565b60df1980868503016101008701526132f38483856131ce565b93506133026040890189613186565b9350915061012081878603018188015261331d8585856131ce565b9450610140935061333384880160608b0161320f565b60e08901356101c08801526101008901356101e0880152613356818a018a6130f8565b935090508187860301610200880152613370858483613140565b94505061337f838901896130f8565b935091508086850301610220870152613399848484613140565b93506133a96101608901896130f8565b935091508086850301610240870152506133c483838361322f565b935050505061145c608083018463ffffffff169052565b600080604083850312156133ee57600080fd5b825180151581146133fe57600080fd5b6020939093015192949293505050565b60008282101561342057613420612e16565b500390565b600061ffff8083168181141561343d5761343d612e16565b6001019392505050565b60808101823561345681612bda565b63ffffffff16825261346a60208401612bec565b6001600160401b0380821660208501528061348760408701612bec565b16604085015250506060830135606083015292915050565b634e487b7160e01b600052602160045260246000fd5b600060ff8316806134c8576134c86130bf565b8060ff84160691505092915050565b600060ff821660ff8416808210156134f1576134f1612e16565b90039392505050565b600082613509576135096130bf565b500490565b600081600019048311821515161561352857613528612e16565b50029056fea26469706673582212204a4a438a5ade2e09fc29bd25b6e191f8fd83feb48d0b136f74afc7398ba5ab0e64736f6c634300080c0033", + Bin: "0x6101006040523480156200001257600080fd5b506040516200375c3803806200375c83398101604081905262000035916200014f565b6001600160a01b0380851660a052808416608052821660c0528383836200005b62000074565b5050506001600160a01b031660e05250620001b7915050565b600154610100900460ff1615620000e15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff908116101562000134576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014c57600080fd5b50565b600080600080608085870312156200016657600080fd5b8451620001738162000136565b6020860151909450620001868162000136565b6040860151909350620001998162000136565b6060860151909250620001ac8162000136565b939692955090935050565b60805160a05160c05160e0516134fb62000261600039600081816101a30152818161072b01528181611405015261144101526000818161044b015281816105a60152818161063d01528181610e3201528181610fb501526110540152600081816107d30152818161089c01526109700152600081816102720152818161030101528181610381015281816108480152818161091401528181610d700152610f1001526134fb6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063a50a640e11610097578063ccd3bd9e11610066578063ccd3bd9e1461020c578063d5b206a31461021f578063e481af9d14610232578063f2fde38b1461023a57600080fd5b8063a50a640e1461019e578063b3a9e53b146101c5578063b708c083146101e6578063c4d66de8146101f957600080fd5b8063750521f5116100d3578063750521f5146101405780638da5cb5b146101535780639926ee7d14610178578063a364f4da1461018b57600080fd5b806333cfb7b7146100fa57806338c8ee6414610123578063715018a614610138575b600080fd5b61010d61010836600461293b565b61024d565b60405161011a9190612958565b60405180910390f35b61013661013136600461293b565b610720565b005b6101366107a0565b61013661014e366004612a58565b6107b4565b6034546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b610136610186366004612aa0565b61083d565b61013661019936600461293b565b610909565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6101d86101d3366004612b78565b61099f565b60405190815260200161011a565b6101d86101f4366004612bc5565b6109ce565b61013661020736600461293b565b610a8e565b6101d861021a366004612c67565b610b9b565b61013661022d366004612cb5565b610cf9565b61010d610d6a565b61013661024836600461293b565b611133565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd9190612d0b565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190612d24565b90506001600160c01b038116158061040657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190612d4d565b60ff16155b156104265760408051600080825260208201909252905b50949350505050565b600061043a826001600160c01b03166111a9565b90506000805b8251811015610510577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061048a5761048a612d70565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa1580156104ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f29190612d0b565b6104fc9083612d9c565b91508061050881612db4565b915050610440565b506000816001600160401b0381111561052b5761052b6129a5565b604051908082528060200260200182016040528015610554578160200160208202803683370190505b5090506000805b845181101561071357600085828151811061057857610578612d70565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa1580156105ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106119190612d0b565b905060005b818110156106fd576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190612dcf565b600001518686815181106106c5576106c5612d70565b6001600160a01b0390921660209283029190910190910152846106e781612db4565b95505080806106f590612db4565b915050610616565b505050808061070b90612db4565b91505061055b565b5090979650505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079d5760405162461bcd60e51b815260206004820152601f60248201527f5461736b206d616e61676572206d757374206265207468652063616c6c65720060448201526064015b60405180910390fd5b50565b6107a8611206565b6107b26000611260565b565b6107bc611206565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610808908490600401612e96565b600060405180830381600087803b15801561082257600080fd5b505af1158015610836573d6000803e3d6000fd5b5050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108855760405162461bcd60e51b815260040161079490612ea9565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906108d39085908590600401612f21565b600060405180830381600087803b1580156108ed57600080fd5b505af1158015610901573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109515760405162461bcd60e51b815260040161079490612ea9565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401610808565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b60008080806109e06020890189612f6c565b63ffffffff1663ffffffff1681526020019081526020016000206000876020016020810190610a0f9190612f89565b6001600160401b03168152602081019190915260400160002054905080610a7a5782610a6f5760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b6044820152606401610794565b610a7a8685856112b2565b610a848686610b9b565b9695505050505050565b600154610100900460ff1615808015610aab57506001805460ff16105b80610ac45750303b158015610ac457506001805460ff16145b610b275760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610794565b6001805460ff1916811790558015610b49576001805461ff0019166101001790555b610b5282611260565b8015610b97576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000808080610bad6020870187612f6c565b63ffffffff1663ffffffff1681526020019081526020016000206000856020016020810190610bdc9190612f89565b6001600160401b03166001600160401b0316815260200190815260200160002054905083606001358114610c525760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368696e6720737461746520726f6f74730000000000000000006044820152606401610794565b610cf1610c62602085018561293b565b602085013583610c756040880188612fa4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cb7925050506060890189612fa4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112c392505050565b949350505050565b610d038282611400565b610d405760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610794565b610b97610d506020840184612f6c565b610d606040850160208601612f89565b8460600135611535565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190612d4d565b60ff16905080610e0e57505060408051600081526020810190915290565b6000805b82811015610ec357604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190612d0b565b610eaf9083612d9c565b915080610ebb81612db4565b915050610e12565b506000816001600160401b03811115610ede57610ede6129a5565b604051908082528060200260200182016040528015610f07578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190612d4d565b60ff1681101561112957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110289190612d0b565b905060005b81811015611114576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c69190612dcf565b600001518585815181106110dc576110dc612d70565b6001600160a01b0390921660209283029190910190910152836110fe81612db4565b945050808061110c90612db4565b91505061102d565b5050808061112190612db4565b915050610f0e565b5090949350505050565b61113b611206565b6001600160a01b0381166111a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610794565b61079d81611260565b60606000805b6101008110156111ff576001811b9150838216156111ef57828160f81b6040516020016111dd929190612ff1565b60405160208183030381529060405292505b6111f881612db4565b90506111af565b5050919050565b6034546001600160a01b031633146107b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610794565b603480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816112bd8482610cf9565b50505050565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611303906034016040516020818303038152906040528688611599565b915091508161134d5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610794565b6000611358826115c2565b905060008061138d8a60405160200161137391815260200190565b604051602081830303815290604052888560400151611599565b91509150816113de5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610794565b6113ef6113ea82611686565b6116b9565b955050505050505b95945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663292f7a4e61143b866116e8565b438660037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef0244586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190613020565b6114cc90600261303d565b6114d6919061307f565b6040518563ffffffff1660e01b81526004016114f59493929190613236565b6040805180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041d9190613395565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6000606060006115a886611718565b90506115b581868661174a565b9250925050935093915050565b6040805160808101825260008082526020820181905291810182905260608101829052906115ef83611825565b9050604051806080016040528061161f8360008151811061161257611612612d70565b6020026020010151611858565b815260200161163a8360018151811061161257611612612d70565b81526020016116628360028151811061165557611655612d70565b602002602001015161185f565b815260200161167d8360038151811061165557611655612d70565b90529392505050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906109c890611961565b60008060006020845111156116cf5760206116d2565b83515b60209485015194036008029390931c9392505050565b6000816040516020016116fb91906133c8565b604051602081830303815290604052805190602001209050919050565b6060818051906020012060405160200161173491815260200190565b6040516020818303038152906040529050919050565b600060606000611759856119e8565b9050600080600061176b848a89611ae2565b8151929550909350915015808061177f5750815b6117cb5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610794565b6000816117e75760405180602001604052806000815250611813565b611813866117f6600188613420565b8151811061180657611806612d70565b6020026020010151611f06565b919b919a509098505050505050505050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906109c890611f30565b60006109c8825b60006021826000015111156118b65760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610794565b60008060006118c48561211c565b9194509250905060008160018111156118df576118df613437565b1461192c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610794565b600083866020015161193e9190612d9c565b80519091506020841015610a845760208490036101000a90049695505050505050565b606060008060006119718561211c565b91945092509050600081600181111561198c5761198c613437565b146119d95760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610794565b6113f785602001518484612466565b606060006119f583611825565b9050600081516001600160401b03811115611a1257611a126129a5565b604051908082528060200260200182016040528015611a5757816020015b6040805180820190915260608082526020820152815260200190600190039081611a305790505b50905060005b8251811015611ada576000611a8a848381518110611a7d57611a7d612d70565b6020026020010151611961565b90506040518060400160405280828152602001611aa683611825565b815250838381518110611abb57611abb612d70565b6020026020010181905250508080611ad290612db4565b915050611a5d565b509392505050565b60006060818080611af287612541565b90506000869050600080611b19604051806040016040528060608152602001606081525090565b60005b8c51811015611ede578c8181518110611b3757611b37612d70565b602002602001015191508284611b4d9190612d9c565b9350611b5a600188612d9c565b965083611bb257815180516020909101208514611bad5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610794565b611c6f565b815151602011611c1457815180516020909101208514611bad5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610794565b84611c22836000015161267b565b14611c6f5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610794565b611c7b60106001612d9c565b8260200151511415611cf4578551841415611c9557611ede565b6000868581518110611ca957611ca9612d70565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110611cd457611cd4612d70565b60200260200101519050611ce7816126a3565b9650600194505050611ecc565b60028260200151511415611e84576000611d0d836126d9565b9050600081600081518110611d2457611d24612d70565b016020015160f81c90506000611d3b60028361344d565b611d4690600261346f565b90506000611d57848360ff166126fd565b90506000611d658b8a6126fd565b90506000611d738383612733565b905060ff851660021480611d8a575060ff85166003145b15611dc457808351148015611d9f5750808251145b15611db157611dae818b612d9c565b99505b50600160ff1b9950611ede945050505050565b60ff85161580611dd7575060ff85166001145b15611e2d5782518114611df75750600160ff1b9950611ede945050505050565b611e1e8860200151600181518110611e1157611e11612d70565b60200260200101516126a3565b9a509750611ecc945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610794565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610794565b80611ed681612db4565b915050611b1c565b50600160ff1b841486611ef187866126fd565b909e909d50909b509950505050505050505050565b602081015180516060916109c891611f2090600190613420565b81518110611a7d57611a7d612d70565b6060600080611f3e8461211c565b91935090915060019050816001811115611f5a57611f5a613437565b14611fa75760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610794565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081611fc05790505090506000835b865181101561211157602082106120595760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610794565b6000806120966040518060400160405280858c6000015161207a9190613420565b8152602001858c6020015161208f9190612d9c565b905261211c565b5091509150604051806040016040528083836120b29190612d9c565b8152602001848b602001516120c79190612d9c565b8152508585815181106120dc576120dc612d70565b60209081029190910101526120f2600185612d9c565b93506120fe8183612d9c565b6121089084612d9c565b92505050611fed565b508152949350505050565b6000806000808460000151116121745760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610794565b6020840151805160001a607f811161219957600060016000945094509450505061245f565b60b781116122155760006121ae608083613420565b9050808760000151116122035760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610794565b6001955093506000925061245f915050565b60bf811161230457600061222a60b783613420565b90508087600001511161227f5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610794565b600183015160208290036101000a90046122998183612d9c565b8851116122e85760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610794565b6122f3826001612d9c565b965094506000935061245f92505050565b60f7811161237f57600061231960c083613420565b90508087600001511161236e5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610794565b60019550935084925061245f915050565b600061238c60f783613420565b9050808760000151116123e15760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610794565b600183015160208290036101000a90046123fb8183612d9c565b8851116124435760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610794565b61244e826001612d9c565b965094506001935061245f92505050565b9193909250565b60606000826001600160401b03811115612482576124826129a5565b6040519080825280601f01601f1916602001820160405280156124ac576020820181803683370190505b5090508051600014156124c057905061253a565b60006124cc8587612d9c565b90506020820160005b6124e0602087613492565b81101561251757825182526124f6602084612d9c565b9250612503602083612d9c565b91508061250f81612db4565b9150506124d5565b5080519151601f86166020036101000a6000190192831692191691909117905290505b9392505050565b606060008251600261255391906134a6565b6001600160401b0381111561256a5761256a6129a5565b6040519080825280601f01601f191660200182016040528015612594576020820181803683370190505b50905060005b83518110156126745760048482815181106125b7576125b7612d70565b01602001516001600160f81b031916901c826125d48360026134a6565b815181106125e4576125e4612d70565b60200101906001600160f81b031916908160001a905350601084828151811061260f5761260f612d70565b0160200151612621919060f81c61344d565b60f81b826126308360026134a6565b61263b906001612d9c565b8151811061264b5761264b612d70565b60200101906001600160f81b031916908160001a9053508061266c81612db4565b91505061259a565b5092915050565b600060208251101561268f57506020015190565b818060200190518101906109c89190612d0b565b600060606020836000015110156126c4576126bd836127af565b90506126d0565b6126cd83611961565b90505b61253a8161267b565b60606109c86126f88360200151600081518110611a7d57611a7d612d70565b612541565b60608251821061271c57506040805160208101909152600081526109c8565b61253a838384865161272e9190613420565b6127ba565b6000805b8084511180156127475750808351115b8015612798575082818151811061276057612760612d70565b602001015160f81c60f81b6001600160f81b03191684828151811061278757612787612d70565b01602001516001600160f81b031916145b1561253a57806127a781612db4565b915050612737565b60606109c882612910565b6060816127c881601f612d9c565b10156128075760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610794565b826128128382612d9c565b10156128515760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610794565b61285b8284612d9c565b8451101561289f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610794565b6060821580156128be576040519150600082526020820160405261041d565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156128f75780518352602092830192016128df565b5050858452601f01601f19166040525050949350505050565b60606109c8826020015160008460000151612466565b6001600160a01b038116811461079d57600080fd5b60006020828403121561294d57600080fd5b813561253a81612926565b6020808252825182820181905260009190848201906040850190845b818110156129995783516001600160a01b031683529284019291840191600101612974565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156129dd576129dd6129a5565b60405290565b60006001600160401b03808411156129fd576129fd6129a5565b604051601f8501601f19908116603f01168101908282118183101715612a2557612a256129a5565b81604052809350858152868686011115612a3e57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612a6a57600080fd5b81356001600160401b03811115612a8057600080fd5b8201601f81018413612a9157600080fd5b610cf1848235602084016129e3565b60008060408385031215612ab357600080fd5b8235612abe81612926565b915060208301356001600160401b0380821115612ada57600080fd5b9084019060608287031215612aee57600080fd5b612af66129bb565b823582811115612b0557600080fd5b83019150601f82018713612b1857600080fd5b612b27878335602085016129e3565b815260208301356020820152604083013560408201528093505050509250929050565b63ffffffff8116811461079d57600080fd5b80356001600160401b0381168114612b7357600080fd5b919050565b60008060408385031215612b8b57600080fd5b8235612b9681612b4a565b9150612ba460208401612b5c565b90509250929050565b600060808284031215612bbf57600080fd5b50919050565b60008060008060c08587031215612bdb57600080fd5b612be58686612bad565b935060808501356001600160401b0380821115612c0157600080fd5b612c0d88838901612bad565b945060a0870135915080821115612c2357600080fd5b818701915087601f830112612c3757600080fd5b813581811115612c4657600080fd5b886020828501011115612c5857600080fd5b95989497505060200194505050565b60008060a08385031215612c7a57600080fd5b612c848484612bad565b915060808301356001600160401b03811115612c9f57600080fd5b612cab85828601612bad565b9150509250929050565b60008060a08385031215612cc857600080fd5b612cd28484612bad565b915060808301356001600160401b03811115612ced57600080fd5b83016101808186031215612d0057600080fd5b809150509250929050565b600060208284031215612d1d57600080fd5b5051919050565b600060208284031215612d3657600080fd5b81516001600160c01b038116811461253a57600080fd5b600060208284031215612d5f57600080fd5b815160ff8116811461253a57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612daf57612daf612d86565b500190565b6000600019821415612dc857612dc8612d86565b5060010190565b600060408284031215612de157600080fd5b604051604081018181106001600160401b0382111715612e0357612e036129a5565b6040528251612e1181612926565b815260208301516bffffffffffffffffffffffff81168114612e3257600080fd5b60208201529392505050565b60005b83811015612e59578181015183820152602001612e41565b838111156112bd5750506000910152565b60008151808452612e82816020860160208601612e3e565b601f01601f19169290920160200192915050565b60208152600061253a6020830184612e6a565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b0383168152604060208201526000825160606040840152612f4b60a0840182612e6a565b90506020840151606084015260408401516080840152809150509392505050565b600060208284031215612f7e57600080fd5b813561253a81612b4a565b600060208284031215612f9b57600080fd5b61253a82612b5c565b6000808335601e19843603018112612fbb57600080fd5b8301803591506001600160401b03821115612fd557600080fd5b602001915036819003821315612fea57600080fd5b9250929050565b60008351613003818460208801612e3e565b6001600160f81b0319939093169190920190815260010192915050565b60006020828403121561303257600080fd5b815161253a81612b4a565b600063ffffffff8083168185168183048111821515161561306057613060612d86565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061309657613096613069565b92169190910492915050565b6000808335601e198436030181126130b957600080fd5b83016020810192503590506001600160401b038111156130d857600080fd5b8060051b3603831315612fea57600080fd5b8183526000602080850194508260005b8581101561312557813561310d81612b4a565b63ffffffff16875295820195908201906001016130fa565b509495945050505050565b6000808335601e1984360301811261314757600080fd5b83016020810192503590506001600160401b0381111561316657600080fd5b8060061b3603831315612fea57600080fd5b81835260208301925060008160005b848110156131af57813586526020808301359087015260409586019590910190600101613187565b5093949350505050565b604081833760408201600081526040808301823750600060808301525050565b81835260006020808501808196508560051b810191508460005b8781101561322957828403895261320a82886130a2565b6132158682846130ea565b9a87019a95505050908401906001016131f3565b5091979650505050505050565b84815260a06020820152600160a0820152600060c082015263ffffffff8416604082015260e06060820152600061326d84856130a2565b61018060e0850152613284610260850182846130ea565b9150506132946020860186613130565b60df1980868503016101008701526132ad848385613178565b93506132bc6040890189613130565b935091506101208187860301818801526132d7858585613178565b945061014093506132ed84880160608b016131b9565b60e08901356101c08801526101008901356101e0880152613310818a018a6130a2565b93509050818786030161020088015261332a8584836130ea565b945050613339838901896130a2565b9350915080868503016102208701526133538484846130ea565b93506133636101608901896130a2565b9350915080868503016102408701525061337e8383836131d9565b93505050506113f7608083018463ffffffff169052565b600080604083850312156133a857600080fd5b825180151581146133b857600080fd5b6020939093015192949293505050565b6080810182356133d781612b4a565b63ffffffff1682526133eb60208401612b5c565b6001600160401b0380821660208501528061340860408701612b5c565b16604085015250506060830135606083015292915050565b60008282101561343257613432612d86565b500390565b634e487b7160e01b600052602160045260246000fd5b600060ff83168061346057613460613069565b8060ff84160691505092915050565b600060ff821660ff84168082101561348957613489612d86565b90039392505050565b6000826134a1576134a1613069565b500490565b60008160001904831182151516156134c0576134c0612d86565b50029056fea264697066735822122092c6246d7143e59ac48ef6ee1fd400824b0bd21ac1a279bd613c8ec38d25ca4364736f6c634300080c0033", } // ContractSFFLServiceManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLTaskManager/binding.go b/contracts/bindings/SFFLTaskManager/binding.go index eae47f67f..39c9011d3 100644 --- a/contracts/bindings/SFFLTaskManager/binding.go +++ b/contracts/bindings/SFFLTaskManager/binding.go @@ -99,7 +99,7 @@ type OperatorStateRetrieverOperator struct { // ContractSFFLTaskManagerMetaData contains all meta data concerning the ContractSFFLTaskManager contract. var ContractSFFLTaskManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"taskResponseWindowBlock\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"taskIndex\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"}],\"name\":\"CheckpointTaskChallengedSuccessfully\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"taskIndex\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"}],\"name\":\"CheckpointTaskChallengedUnsuccessfully\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"taskIndex\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"taskCreatedBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"fromNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quorumThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structCheckpoint.Task\",\"name\":\"task\",\"type\":\"tuple\"}],\"name\":\"CheckpointTaskCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"referenceTaskIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structCheckpoint.TaskResponse\",\"name\":\"taskResponse\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"taskRespondedBlock\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structCheckpoint.TaskResponseMetadata\",\"name\":\"taskResponseMetadata\",\"type\":\"tuple\"}],\"name\":\"CheckpointTaskResponded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contractIPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contractIPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"StaleStakesForbiddenUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TASK_CHALLENGE_WINDOW_BLOCK\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TASK_RESPONSE_WINDOW_BLOCK\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"THRESHOLD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"aggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"allCheckpointTaskHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"allCheckpointTaskResponses\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blsApkRegistry\",\"outputs\":[{\"internalType\":\"contractIBLSApkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"quorumThreshold\",\"type\":\"uint32\"}],\"name\":\"checkQuorum\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"checkSignatures\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96[]\",\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\"}],\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpointTaskNumber\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"checkpointTaskSuccesfullyChallenged\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quorumThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"createCheckpointTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contractIDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"nonSignerOperatorIds\",\"type\":\"bytes32[]\"}],\"name\":\"getCheckSignaturesIndices\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"structOperatorStateRetriever.CheckSignaturesIndices\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"name\":\"\",\"type\":\"tuple[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIRegistryCoordinator\",\"name\":\"registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"name\":\"\",\"type\":\"tuple[][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_aggregator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_generator\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextCheckpointTaskNum\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contractIPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"taskCreatedBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"fromNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quorumThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"internalType\":\"structCheckpoint.Task\",\"name\":\"task\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"referenceTaskIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structCheckpoint.TaskResponse\",\"name\":\"taskResponse\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"taskRespondedBlock\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\"}],\"internalType\":\"structCheckpoint.TaskResponseMetadata\",\"name\":\"taskResponseMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"pubkeysOfNonSigningOperators\",\"type\":\"tuple[]\"}],\"name\":\"raiseAndResolveCheckpointChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"contractIRegistryCoordinator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"taskCreatedBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"fromNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toNearBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quorumThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"internalType\":\"structCheckpoint.Task\",\"name\":\"task\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"referenceTaskIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structCheckpoint.TaskResponse\",\"name\":\"taskResponse\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\"}],\"name\":\"respondToCheckpointTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setStaleStakesForbidden\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"contractIStakeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staleStakesForbidden\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"apk\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"structBN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"structBN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"}],\"name\":\"trySignatureAndApkVerification\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pairingSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"siganatureIsValid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101206040523480156200001257600080fd5b5060405162005c9238038062005c928339810160408190526200003591620001f7565b81806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200023e565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013391906200023e565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b391906200023e565b6001600160a01b031660e052506097805460ff1916600117905563ffffffff16610100525062000265565b6001600160a01b0381168114620001f457600080fd5b50565b600080604083850312156200020b57600080fd5b82516200021881620001de565b602084015190925063ffffffff811681146200023357600080fd5b809150509250929050565b6000602082840312156200025157600080fd5b81516200025e81620001de565b9392505050565b60805160a05160c05160e051610100516159a2620002f06000396000818161027d0152612eb601526000818161056f01526123590152600081816103fa01528181611b6c01526125430152600081816104210152818161271901526128db01526000818161044801528181610edf01528181612056015281816121cf01526123fd01526159a26000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636efb463611610125578063cefdc1d4116100ad578063efcf4edb1161007c578063efcf4edb1461059c578063f2fde38b146105af578063f63c5bab146105c2578063f8c8765e146105ca578063fabc1cbc146105dd57600080fd5b8063cefdc1d414610536578063da16491f14610557578063df5cf7231461056a578063ef0244581461059157600080fd5b80638cbc379a116100f45780638cbc379a146104c25780638da5cb5b146104d557806395eebee6146104e6578063a168e3c014610509578063b98d09081461052957600080fd5b80636efb46361461046a578063715018a61461048b5780637afa1eed14610493578063886f1195146104af57600080fd5b80634f19ade7116101a85780635ace2df7116101775780635ace2df7146103da5780635c975abb146103ed5780635df45946146103f5578063683048351461041c5780636d14a9871461044357600080fd5b80634f19ade7146103515780634f739f741461037f578063595c6a671461039f5780635ac86ab7146103a757600080fd5b8063245a7bfc116101ef578063245a7bfc146102b4578063292f7a4e146102df5780632e44b349146103095780633563b0d11461031e578063416c7e5e1461033e57600080fd5b806310d67a2f14610221578063136439dd14610236578063171f1d5b146102495780631ad4318914610278575b600080fd5b61023461022f36600461440d565b6105f0565b005b61023461024436600461442a565b6106ac565b61025c6102573660046145a8565b6107eb565b6040805192151583529015156020830152015b60405180910390f35b61029f7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161026f565b6098546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161026f565b6102f26102ed366004614902565b610975565b60408051921515835260208301919091520161026f565b60975461029f90610100900463ffffffff1681565b61033161032c36600461499c565b610a45565b60405161026f9190614af7565b61023461034c366004614b18565b610edd565b61037161035f366004614b35565b60996020526000908152604090205481565b60405190815260200161026f565b61039261038d366004614b52565b611052565b60405161026f9190614c56565b610234611778565b6103ca6103b5366004614d20565b606654600160ff9092169190911b9081161490565b604051901515815260200161026f565b6102346103e8366004614d67565b61183f565b606654610371565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b61047d610478366004614df8565b611ca2565b60405161026f929190614eb8565b610234612b90565b6097546102c7906501000000000090046001600160a01b031681565b6065546102c7906001600160a01b031681565b609754610100900463ffffffff1661029f565b6033546001600160a01b03166102c7565b6103ca6104f4366004614b35565b609b6020526000908152604090205460ff1681565b610371610517366004614b35565b609a6020526000908152604090205481565b6097546103ca9060ff1681565b610549610544366004614f01565b612ba4565b60405161026f929190614f43565b610234610565366004614f64565b612d36565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b61029f633b9aca0081565b6102346105aa366004614fef565b613037565b6102346105bd36600461440d565b61323a565b61029f606481565b6102346105d8366004615066565b6132b0565b6102346105eb36600461442a565b613418565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066791906150c2565b6001600160a01b0316336001600160a01b0316146106a05760405162461bcd60e51b8152600401610697906150df565b60405180910390fd5b6106a981613574565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190615129565b6107345760405162461bcd60e51b815260040161069790615146565b606654818116146107ad5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610697565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106108335761083361518e565b60200201518951600160200201518a602001516000600281106108585761085861518e565b60200201518b602001516001600281106108745761087461518e565b602090810291909101518c518d8301516040516108d19a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6108f491906151a4565b905061096761090d610906888461366b565b8690613702565b610915613796565b61095d61094e85610948604080518082018252600080825260209182015281518083019092526001825260029082015290565b9061366b565b6109578c613856565b90613702565b886201d4c06138e6565b909890975095505050505050565b6000806000806109888a8a8a8a8a611ca2565b9150915060005b88811015610a31578563ffffffff16836020015182815181106109b4576109b461518e565b60200260200101516109c691906151dc565b6001600160601b0316633b9aca0063ffffffff16846000015183815181106109f0576109f061518e565b6020026020010151610a0291906151dc565b6001600160601b03161015610a1f5750600093509150610a3a9050565b80610a298161520b565b91505061098f565b50600193509150505b965096945050505050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab91906150c2565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1191906150c2565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7791906150c2565b9050600086516001600160401b03811115610b9457610b94614443565b604051908082528060200260200182016040528015610bc757816020015b6060815260200190600190039081610bb25790505b50905060005b8751811015610ecf576000888281518110610bea57610bea61518e565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c739190810190615226565b905080516001600160401b03811115610c8e57610c8e614443565b604051908082528060200260200182016040528015610cd957816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610cac5790505b50848481518110610cec57610cec61518e565b602002602001018190525060005b8151811015610eb9576040518060600160405280876001600160a01b03166347b314e8858581518110610d2f57610d2f61518e565b60200260200101516040518263ffffffff1660e01b8152600401610d5591815260200190565b602060405180830381865afa158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9691906150c2565b6001600160a01b03168152602001838381518110610db657610db661518e565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610de457610de461518e565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6491906152b6565b6001600160601b0316815250858581518110610e8257610e8261518e565b60200260200101518281518110610e9b57610e9b61518e565b60200260200101819052508080610eb19061520b565b915050610cfa565b5050508080610ec79061520b565b915050610bcd565b5093505050505b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f91906150c2565b6001600160a01b0316336001600160a01b03161461100b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610697565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b61107d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e191906150c2565b905061110e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061113e908b90899089906004016152df565b600060405180830381865afa15801561115b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111839190810190615329565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906111b5908b908b908b906004016153e0565b600060405180830381865afa1580156111d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111fa9190810190615329565b6040820152856001600160401b0381111561121757611217614443565b60405190808252806020026020018201604052801561124a57816020015b60608152602001906001900390816112355790505b50606082015260005b60ff8116871115611689576000856001600160401b0381111561127857611278614443565b6040519080825280602002602001820160405280156112a1578160200160208202803683370190505b5083606001518360ff16815181106112bb576112bb61518e565b602002602001018190525060005b868110156115895760008c6001600160a01b03166304ec63518a8a858181106112f4576112f461518e565b905060200201358e886000015186815181106113125761131261518e565b60200260200101516040518463ffffffff1660e01b815260040161134f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113909190615409565b90506001600160c01b0381166114345760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a401610697565b8a8a8560ff168181106114495761144961518e565b6001600160c01b03841692013560f81c9190911c60019081161415905061157657856001600160a01b031663dd9846b98a8a8581811061148b5761148b61518e565b905060200201358d8d8860ff168181106114a7576114a761518e565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115219190615432565b85606001518560ff168151811061153a5761153a61518e565b602002602001015184815181106115535761155361518e565b63ffffffff90921660209283029190910190910152826115728161520b565b9350505b50806115818161520b565b9150506112c9565b506000816001600160401b038111156115a4576115a4614443565b6040519080825280602002602001820160405280156115cd578160200160208202803683370190505b50905060005b8281101561164e5784606001518460ff16815181106115f4576115f461518e565b6020026020010151818151811061160d5761160d61518e565b60200260200101518282815181106116275761162761518e565b63ffffffff90921660209283029190910190910152806116468161520b565b9150506115d3565b508084606001518460ff16815181106116695761166961518e565b6020026020010181905250505080806116819061544f565b915050611253565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee91906150c2565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90611721908b908b908e9060040161546f565b600060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117669190810190615329565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e49190615129565b6118005760405162461bcd60e51b815260040161069790615146565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b600061184e6020850185614b35565b63ffffffff81166000908152609a60205260409020549091506118a85760405162461bcd60e51b815260206004820152601260248201527115185cdac81b9bdd081c995cdc1bdb99195960721b6044820152606401610697565b6118b28484613b0a565b63ffffffff82166000908152609a60205260409020541461190b5760405162461bcd60e51b815260206004820152601360248201527257726f6e67207461736b20726573706f6e736560681b6044820152606401610697565b63ffffffff81166000908152609b602052604090205460ff16156119715760405162461bcd60e51b815260206004820152601760248201527f416c7265616479206265656e206368616c6c656e6765640000000000000000006044820152606401610697565b60646119806020850185614b35565b61198a9190615499565b63ffffffff164363ffffffff1611156119e55760405162461bcd60e51b815260206004820152601860248201527f4368616c6c656e676520706572696f64206578706972656400000000000000006044820152606401610697565b604051339063ffffffff8316907f0c6923c4a98292e75c5d677a1634527f87b6d19cf2c7d396aece99790c44a79590600090a350611c9c565b8351811015611a8a57611a5b848281518110611a3c57611a3c61518e565b6020026020010151805160009081526020918201519091526040902090565b828281518110611a6d57611a6d61518e565b602090810291909101015280611a828161520b565b915050611a1e565b506000611a9a6020880188614b35565b82604051602001611aac9291906154c1565b60405160208183030381529060405280519060200120905084602001358114611b175760405162461bcd60e51b815260206004820152601860248201527f57726f6e67206e6f6e2d7369676e6572207075626b65797300000000000000006044820152606401610697565b600084516001600160401b03811115611b3257611b32614443565b604051908082528060200260200182016040528015611b5b578160200160208202803683370190505b50905060005b8551811015611c4e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8bb9ae6858381518110611bab57611bab61518e565b60200260200101516040518263ffffffff1660e01b8152600401611bd191815260200190565b602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1291906150c2565b828281518110611c2457611c2461518e565b6001600160a01b039092166020928302919091019091015280611c468161520b565b915050611b61565b5063ffffffff84166000818152609b6020526040808220805460ff19166001179055513392917fff48388ad5e2a6d1845a7672040fba7d9b14b22b9e0eecd37046e5313d3aebc291a3505050505b50505050565b6040805180820190915260608082526020820152600084611d195760405162461bcd60e51b8152602060048201526037602482015260008051602061594d83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610697565b60408301515185148015611d31575060a08301515185145b8015611d41575060c08301515185145b8015611d51575060e08301515185145b611dbb5760405162461bcd60e51b8152602060048201526041602482015260008051602061594d83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610697565b82515160208401515114611e335760405162461bcd60e51b81526020600482015260446024820181905260008051602061594d833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610697565b4363ffffffff168463ffffffff161115611ea35760405162461bcd60e51b815260206004820152603c602482015260008051602061594d83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610697565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115611ee457611ee4614443565b604051908082528060200260200182016040528015611f0d578160200160208202803683370190505b506020820152866001600160401b03811115611f2b57611f2b614443565b604051908082528060200260200182016040528015611f54578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115611f8857611f88614443565b604051908082528060200260200182016040528015611fb1578160200160208202803683370190505b5081526020860151516001600160401b03811115611fd157611fd1614443565b604051908082528060200260200182016040528015611ffa578160200160208202803683370190505b50816020018190525060006120cc8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c79190615509565b613b3e565b905060005b876020015151811015612348576120f788602001518281518110611a3c57611a3c61518e565b8360200151828151811061210d5761210d61518e565b602090810291909101015280156121cd57602083015161212e600183615526565b8151811061213e5761213e61518e565b602002602001015160001c8360200151828151811061215f5761215f61518e565b602002602001015160001c116121cd576040805162461bcd60e51b815260206004820152602481019190915260008051602061594d83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610697565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106122125761221261518e565b60200260200101518b8b6000015185815181106122315761223161518e565b60200260200101516040518463ffffffff1660e01b815260040161226e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561228b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122af9190615409565b6001600160c01b0316836000015182815181106122ce576122ce61518e565b60200260200101818152505061233461090661230884866000015185815181106122fa576122fa61518e565b602002602001015116613bf0565b8a60200151848151811061231e5761231e61518e565b6020026020010151613c1b90919063ffffffff16565b9450806123408161520b565b9150506120d1565b505061235383613cff565b925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350f73e7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d9919061553d565b60975490915060ff1660005b8a811015612a5f578115612541578963ffffffff16837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061243c5761243c61518e565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa15801561247c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a0919061553d565b6124aa9190615556565b10156125415760405162461bcd60e51b8152602060048201526066602482015260008051602061594d83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610697565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d848181106125825761258261518e565b9050013560f81c60f81b60f81c8c8c60a0015185815181106125a6576125a661518e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612626919061556e565b6001600160401b0319166126498a604001518381518110611a3c57611a3c61518e565b67ffffffffffffffff1916146126e55760405162461bcd60e51b8152602060048201526061602482015260008051602061594d83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610697565b612715896040015182815181106126fe576126fe61518e565b60200260200101518761370290919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106127585761275861518e565b9050013560f81c60f81b60f81c8c8c60c00151858151811061277c5761277c61518e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156127d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fc91906152b6565b856020015182815181106128125761281261518e565b6001600160601b0390921660209283029190910182015285015180518290811061283e5761283e61518e565b60200260200101518560000151828151811061285c5761285c61518e565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015612a4a576128d4866000015182815181106128a6576128a661518e565b60200260200101518f8f868181106128c0576128c061518e565b600192013560f81c9290921c811614919050565b15612a38577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061291a5761291a61518e565b9050013560f81c60f81b60f81c8e8960200151858151811061293e5761293e61518e565b60200260200101518f60e00151888151811061295c5761295c61518e565b602002602001015187815181106129755761297561518e565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd91906152b6565b8751805185908110612a1157612a1161518e565b60200260200101818151612a259190615599565b6001600160601b03169052506001909101905b80612a428161520b565b915050612880565b50508080612a579061520b565b9150506123e5565b505050600080612a798c868a606001518b608001516107eb565b9150915081612aea5760405162461bcd60e51b8152602060048201526043602482015260008051602061594d83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610697565b80612b4b5760405162461bcd60e51b8152602060048201526039602482015260008051602061594d83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610697565b50506000878260200151604051602001612b669291906154c1565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b612b98613d9a565b612ba26000613df4565b565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110612bdf57612bdf61518e565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90612c1b90889086906004016155c1565b600060405180830381865afa158015612c38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c609190810190615329565b600081518110612c7257612c7261518e565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015612cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d029190615409565b6001600160c01b031690506000612d1882613e46565b905081612d268a838a610a45565b9550955050505050935093915050565b6098546001600160a01b03163314612d905760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606401610697565b6000612d9f6020850185614b35565b9050366000612db16080870187615615565b90925090506000612dc86080880160608901614b35565b905060996000612ddb6020890189614b35565b63ffffffff1663ffffffff16815260200190815260200160002054612dff88613f12565b14612e3e5760405162461bcd60e51b815260206004820152600f60248201526e0aee4dedcce40e8c2e6d640d0c2e6d608b1b6044820152606401610697565b6000609a81612e5060208a018a614b35565b63ffffffff1663ffffffff1681526020019081526020016000205414612eb15760405162461bcd60e51b815260206004820152601660248201527515185cdac8185b1c9958591e481c995cdc1bdb99195960521b6044820152606401610697565b612edb7f000000000000000000000000000000000000000000000000000000000000000085615499565b63ffffffff164363ffffffff161115612f2f5760405162461bcd60e51b815260206004820152601660248201527514995cdc1bdb9cd9481d1a5b5948195e18d95959195960521b6044820152606401610697565b6000612f3a87613f42565b9050600080612f4d8387878a8c89610975565b9150915081612f8f5760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610697565b6040805180820190915263ffffffff4316815260208101829052612fc281612fbc368d90038d018d61565b565b90613f55565b609a6000612fd360208e018e614b35565b63ffffffff1663ffffffff168152602001908152602001600020819055507f8016fcc5ad5dcf12fff2e128d239d9c6eb61f4041126bbac2c93fa8962627c1b8a826040516130229291906156e4565b60405180910390a15050505050505050505050565b6097546501000000000090046001600160a01b031633146130a45760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608401610697565b633b9aca0063ffffffff841611156131105760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b6064820152608401610697565b60006040518060a001604052804363ffffffff168152602001876001600160401b03168152602001866001600160401b031681526020018563ffffffff16815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250905061319681613f6a565b6097805463ffffffff610100918290048116600090815260996020526040908190209490945591549251920416907f78aec7310ea6fd468e3d3bbd16a806fd4987515634d5b5bf4cf4f036d9c33225906131f190849061570e565b60405180910390a260975461321290610100900463ffffffff166001615499565b609760016101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b613242613d9a565b6001600160a01b0381166132a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610697565b6106a981613df4565b600054610100900460ff16158080156132d05750600054600160ff909116105b806132ea5750303b1580156132ea575060005460ff166001145b61334d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610697565b6000805460ff191660011790558015613370576000805461ff0019166101001790555b61337b856000613f7d565b61338484613df4565b609880546001600160a01b0319166001600160a01b03858116919091179091556097805465010000000000600160c81b03191665010000000000928516929092029190911790558015613411576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561346b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348f91906150c2565b6001600160a01b0316336001600160a01b0316146134bf5760405162461bcd60e51b8152600401610697906150df565b60665419811960665419161461353d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610697565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107e0565b6001600160a01b0381166136025760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610697565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015261368761431e565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156136ba576136bc565bfe5b50806136fa5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610697565b505092915050565b604080518082019091526000808252602082015261371e61433c565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156136ba5750806136fa5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610697565b61379e61435a565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201909152600080825260208201526000808061388660008051602061592d833981519152866151a4565b90505b61389281614067565b909350915060008051602061592d8339815191528283098314156138cc576040805180820190915290815260208101919091529392505050565b60008051602061592d833981519152600182089050613889565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061391861437f565b60005b6002811015613add5760006139318260066157ac565b90508482600281106139455761394561518e565b60200201515183613957836000615556565b600c81106139675761396761518e565b602002015284826002811061397e5761397e61518e565b602002015160200151838260016139959190615556565b600c81106139a5576139a561518e565b60200201528382600281106139bc576139bc61518e565b60200201515151836139cf836002615556565b600c81106139df576139df61518e565b60200201528382600281106139f6576139f661518e565b6020020151516001602002015183613a0f836003615556565b600c8110613a1f57613a1f61518e565b6020020152838260028110613a3657613a3661518e565b602002015160200151600060028110613a5157613a5161518e565b602002015183613a62836004615556565b600c8110613a7257613a7261518e565b6020020152838260028110613a8957613a8961518e565b602002015160200151600160028110613aa457613aa461518e565b602002015183613ab5836005615556565b600c8110613ac557613ac561518e565b60200201525080613ad58161520b565b91505061391b565b50613ae661439e565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60008282604051602001613b1f9291906157cb565b6040516020818303038152906040528051906020012090505b92915050565b600080613b4a846140e9565b90508015610ed6578260ff168460018651613b659190615526565b81518110613b7557613b7561518e565b016020015160f81c10610ed65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610697565b6000805b8215613b3857613c05600184615526565b9092169180613c1381615801565b915050613bf4565b60408051808201909152600080825260208201526102008261ffff1610613c775760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610697565b8161ffff1660011415613c8b575081613b38565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613cf457600161ffff871660ff83161c81161415613cd757613cd48484613702565b93505b613ce18384613702565b92506201fffe600192831b169101613ca7565b509195945050505050565b60408051808201909152600080825260208201528151158015613d2457506020820151155b15613d42575050604080518082019091526000808252602082015290565b60405180604001604052808360000151815260200160008051602061592d8339815191528460200151613d7591906151a4565b613d8d9060008051602061592d833981519152615526565b905292915050565b919050565b6033546001600160a01b03163314612ba25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610697565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600080613e5484613bf0565b61ffff166001600160401b03811115613e6f57613e6f614443565b6040519080825280601f01601f191660200182016040528015613e99576020820181803683370190505b5090506000805b825182108015613eb1575061010081105b15613f08576001811b935085841615613ef8578060f81b838381518110613eda57613eda61518e565b60200101906001600160f81b031916908160001a9053508160010191505b613f018161520b565b9050613ea0565b5090949350505050565b600081604051602001613f259190615823565b604051602081830303815290604052805190602001209050919050565b600081604051602001613f2591906158df565b60008282604051602001613b1f9291906158ed565b600081604051602001613f25919061570e565b6065546001600160a01b0316158015613f9e57506001600160a01b03821615155b6140205760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610697565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261406382613574565b5050565b6000808060008051602061592d833981519152600360008051602061592d8339815191528660008051602061592d8339815191528889090908905060006140dd827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260008051602061592d833981519152614276565b91959194509092505050565b6000610100825111156141725760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610697565b815161418057506000919050565b600080836000815181106141965761419661518e565b0160200151600160f89190911c81901b92505b845181101561426d578481815181106141c4576141c461518e565b0160200151600160f89190911c1b91508282116142595760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610697565b918117916142668161520b565b90506141a9565b50909392505050565b60008061428161439e565b6142896143bc565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156136ba5750826143135760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610697565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061436d6143da565b815260200161437a6143da565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146106a957600080fd5b60006020828403121561441f57600080fd5b8135610ed6816143f8565b60006020828403121561443c57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561447b5761447b614443565b60405290565b60405161010081016001600160401b038111828210171561447b5761447b614443565b604051601f8201601f191681016001600160401b03811182821017156144cc576144cc614443565b604052919050565b6000604082840312156144e657600080fd5b6144ee614459565b9050813581526020820135602082015292915050565b600082601f83011261451557600080fd5b604051604081018181106001600160401b038211171561453757614537614443565b806040525080604084018581111561454e57600080fd5b845b81811015613cf4578035835260209283019201614550565b60006080828403121561457a57600080fd5b614582614459565b905061458e8383614504565b815261459d8360408401614504565b602082015292915050565b60008060008061012085870312156145bf57600080fd5b843593506145d086602087016144d4565b92506145df8660608701614568565b91506145ee8660e087016144d4565b905092959194509250565b60008083601f84011261460b57600080fd5b5081356001600160401b0381111561462257600080fd5b60208301915083602082850101111561463a57600080fd5b9250929050565b63ffffffff811681146106a957600080fd5b8035613d9581614641565b60006001600160401b0382111561467757614677614443565b5060051b60200190565b600082601f83011261469257600080fd5b813560206146a76146a28361465e565b6144a4565b82815260059290921b840181019181810190868411156146c657600080fd5b8286015b848110156146ea5780356146dd81614641565b83529183019183016146ca565b509695505050505050565b600082601f83011261470657600080fd5b813560206147166146a28361465e565b82815260069290921b8401810191818101908684111561473557600080fd5b8286015b848110156146ea5761474b88826144d4565b835291830191604001614739565b600082601f83011261476a57600080fd5b8135602061477a6146a28361465e565b82815260059290921b8401810191818101908684111561479957600080fd5b8286015b848110156146ea5780356001600160401b038111156147bc5760008081fd5b6147ca8986838b0101614681565b84525091830191830161479d565b600061018082840312156147eb57600080fd5b6147f3614481565b905081356001600160401b038082111561480c57600080fd5b61481885838601614681565b8352602084013591508082111561482e57600080fd5b61483a858386016146f5565b6020840152604084013591508082111561485357600080fd5b61485f858386016146f5565b60408401526148718560608601614568565b60608401526148838560e086016144d4565b608084015261012084013591508082111561489d57600080fd5b6148a985838601614681565b60a08401526101408401359150808211156148c357600080fd5b6148cf85838601614681565b60c08401526101608401359150808211156148e957600080fd5b506148f684828501614759565b60e08301525092915050565b60008060008060008060a0878903121561491b57600080fd5b8635955060208701356001600160401b038082111561493957600080fd5b6149458a838b016145f9565b90975095506040890135915061495a82614641565b9093506060880135908082111561497057600080fd5b5061497d89828a016147d8565b925050608087013561498e81614641565b809150509295509295509295565b6000806000606084860312156149b157600080fd5b83356149bc816143f8565b92506020848101356001600160401b03808211156149d957600080fd5b818701915087601f8301126149ed57600080fd5b8135818111156149ff576149ff614443565b614a11601f8201601f191685016144a4565b91508082528884828501011115614a2757600080fd5b8084840185840137600084828401015250809450505050614a4a60408501614653565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015614ae9578385038a52825180518087529087019087870190845b81811015614ad457835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101614a90565b50509a87019a95505091850191600101614a72565b509298975050505050505050565b602081526000610ed66020830184614a53565b80151581146106a957600080fd5b600060208284031215614b2a57600080fd5b8135610ed681614b0a565b600060208284031215614b4757600080fd5b8135610ed681614641565b60008060008060008060808789031215614b6b57600080fd5b8635614b76816143f8565b95506020870135614b8681614641565b945060408701356001600160401b0380821115614ba257600080fd5b614bae8a838b016145f9565b90965094506060890135915080821115614bc757600080fd5b818901915089601f830112614bdb57600080fd5b813581811115614bea57600080fd5b8a60208260051b8501011115614bff57600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b83811015614c4b57815163ffffffff1687529582019590820190600101614c29565b509495945050505050565b600060208083528351608082850152614c7260a0850182614c15565b905081850151601f1980868403016040870152614c8f8383614c15565b92506040870151915080868403016060870152614cac8383614c15565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b82811015614d035784878303018452614cf1828751614c15565b95880195938801939150600101614cd7565b509998505050505050505050565b60ff811681146106a957600080fd5b600060208284031215614d3257600080fd5b8135610ed681614d11565b600060a08284031215614d4f57600080fd5b50919050565b600060608284031215614d4f57600080fd5b60008060008084860360e0811215614d7e57600080fd5b85356001600160401b0380821115614d9557600080fd5b614da189838a01614d3d565b9650614db08960208a01614d55565b95506040607f1984011215614dc457600080fd5b60808801945060c0880135925080831115614dde57600080fd5b5050614dec878288016146f5565b91505092959194509250565b600080600080600060808688031215614e1057600080fd5b8535945060208601356001600160401b0380821115614e2e57600080fd5b614e3a89838a016145f9565b909650945060408801359150614e4f82614641565b90925060608701359080821115614e6557600080fd5b50614e72888289016147d8565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614c4b5781516001600160601b031687529582019590820190600101614e93565b6040815260008351604080840152614ed36080840182614e7f565b90506020850151603f19848303016060850152614ef08282614e7f565b925050508260208301529392505050565b600080600060608486031215614f1657600080fd5b8335614f21816143f8565b9250602084013591506040840135614f3881614641565b809150509250925092565b828152604060208201526000614f5c6040830184614a53565b949350505050565b600080600060a08486031215614f7957600080fd5b83356001600160401b0380821115614f9057600080fd5b614f9c87838801614d3d565b9450614fab8760208801614d55565b93506080860135915080821115614fc157600080fd5b50614fce868287016147d8565b9150509250925092565b80356001600160401b0381168114613d9557600080fd5b60008060008060006080868803121561500757600080fd5b61501086614fd8565b945061501e60208701614fd8565b9350604086013561502e81614641565b925060608601356001600160401b0381111561504957600080fd5b615055888289016145f9565b969995985093965092949392505050565b6000806000806080858703121561507c57600080fd5b8435615087816143f8565b93506020850135615097816143f8565b925060408501356150a7816143f8565b915060608501356150b7816143f8565b939692955090935050565b6000602082840312156150d457600080fd5b8151610ed6816143f8565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561513b57600080fd5b8151610ed681614b0a565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000826151c157634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b0380831681851681830481118215151615615202576152026151c6565b02949350505050565b600060001982141561521f5761521f6151c6565b5060010190565b6000602080838503121561523957600080fd5b82516001600160401b0381111561524f57600080fd5b8301601f8101851361526057600080fd5b805161526e6146a28261465e565b81815260059190911b8201830190838101908783111561528d57600080fd5b928401925b828410156152ab57835182529284019290840190615292565b979650505050505050565b6000602082840312156152c857600080fd5b81516001600160601b0381168114610ed657600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b0383111561530c57600080fd5b8260051b8085606085013760009201606001918252509392505050565b6000602080838503121561533c57600080fd5b82516001600160401b0381111561535257600080fd5b8301601f8101851361536357600080fd5b80516153716146a28261465e565b81815260059190911b8201830190838101908783111561539057600080fd5b928401925b828410156152ab5783516153a881614641565b82529284019290840190615395565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006154006040830184866153b7565b95945050505050565b60006020828403121561541b57600080fd5b81516001600160c01b0381168114610ed657600080fd5b60006020828403121561544457600080fd5b8151610ed681614641565b600060ff821660ff811415615466576154666151c6565b60010192915050565b6040815260006154836040830185876153b7565b905063ffffffff83166020830152949350505050565b600063ffffffff8083168185168083038211156154b8576154b86151c6565b01949350505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156154fc578151855293820193908201906001016154e0565b5092979650505050505050565b60006020828403121561551b57600080fd5b8151610ed681614d11565b600082821015615538576155386151c6565b500390565b60006020828403121561554f57600080fd5b5051919050565b60008219821115615569576155696151c6565b500190565b60006020828403121561558057600080fd5b815167ffffffffffffffff1981168114610ed657600080fd5b60006001600160601b03838116908316818110156155b9576155b96151c6565b039392505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b81811015615608578451835293830193918301916001016155ec565b5090979650505050505050565b6000808335601e1984360301811261562c57600080fd5b8301803591506001600160401b0382111561564657600080fd5b60200191503681900382131561463a57600080fd5b60006060828403121561566d57600080fd5b604051606081018181106001600160401b038211171561568f5761568f614443565b604052823561569d81614641565b8152602083810135908201526040928301359281019290925250919050565b80356156c781614641565b63ffffffff16825260208181013590830152604090810135910152565b60a081016156f282856156bc565b825163ffffffff16606083015260208301516080830152610ed6565b6000602080835263ffffffff8085511682850152818501516001600160401b038082166040870152806040880151166060870152505080606086015116608085015250608084015160a08085015280518060c086015260005b818110156157835782810184015186820160e001528301615767565b8181111561579557600060e083880101525b50601f01601f19169390930160e001949350505050565b60008160001904831182151516156157c6576157c66151c6565b500290565b60a081016157d982856156bc565b82356157e481614641565b63ffffffff16606083015260209290920135608090910152919050565b600061ffff80831681811415615819576158196151c6565b6001019392505050565b602081526000823561583481614641565b63ffffffff808216602085015261584d60208601614fd8565b91506001600160401b0380831660408601528061586c60408801614fd8565b1660608601526060860135925061588283614641565b818316608086015260808601359250601e198636030183126158a357600080fd5b9185019182359150808211156158b857600080fd5b508036038513156158c857600080fd5b60a08085015261540060c0850182602085016153b7565b60608101613b3882846156bc565b825163ffffffff168152602080840151908201526040808401519082015260a08101610ed66060830184805163ffffffff16825260209081015191015256fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220ab9ffc8f1fab4623db0de498b435c0c1030785b07b52e970f3dab39a1e7f65ca64736f6c634300080c0033", + Bin: "0x6101206040523480156200001257600080fd5b5060405162005b1d38038062005b1d8339810160408190526200003591620001f7565b81806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200023e565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013391906200023e565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b391906200023e565b6001600160a01b031660e052506097805460ff1916600117905563ffffffff16610100525062000265565b6001600160a01b0381168114620001f457600080fd5b50565b600080604083850312156200020b57600080fd5b82516200021881620001de565b602084015190925063ffffffff811681146200023357600080fd5b809150509250929050565b6000602082840312156200025157600080fd5b81516200025e81620001de565b9392505050565b60805160a05160c05160e05161010051615834620002e96000396000818161027d0152612d7d01526000818161056f01526122200152600081816103fa015261240a015260008181610421015281816125e001526127a201526000818161044801528181610edf01528181611f1d0152818161209601526122c401526158346000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636efb463611610125578063cefdc1d4116100ad578063efcf4edb1161007c578063efcf4edb1461059c578063f2fde38b146105af578063f63c5bab146105c2578063f8c8765e146105ca578063fabc1cbc146105dd57600080fd5b8063cefdc1d414610536578063da16491f14610557578063df5cf7231461056a578063ef0244581461059157600080fd5b80638cbc379a116100f45780638cbc379a146104c25780638da5cb5b146104d557806395eebee6146104e6578063a168e3c014610509578063b98d09081461052957600080fd5b80636efb46361461046a578063715018a61461048b5780637afa1eed14610493578063886f1195146104af57600080fd5b80634f19ade7116101a85780635ace2df7116101775780635ace2df7146103da5780635c975abb146103ed5780635df45946146103f5578063683048351461041c5780636d14a9871461044357600080fd5b80634f19ade7146103515780634f739f741461037f578063595c6a671461039f5780635ac86ab7146103a757600080fd5b8063245a7bfc116101ef578063245a7bfc146102b4578063292f7a4e146102df5780632e44b349146103095780633563b0d11461031e578063416c7e5e1461033e57600080fd5b806310d67a2f14610221578063136439dd14610236578063171f1d5b146102495780631ad4318914610278575b600080fd5b61023461022f366004614265565b6105f0565b005b610234610244366004614282565b6106ac565b61025c610257366004614400565b6107eb565b6040805192151583529015156020830152015b60405180910390f35b61029f7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161026f565b6098546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161026f565b6102f26102ed36600461475a565b610975565b60408051921515835260208301919091520161026f565b60975461029f90610100900463ffffffff1681565b61033161032c3660046147f4565b610a45565b60405161026f919061494f565b61023461034c366004614970565b610edd565b61037161035f36600461498d565b60996020526000908152604090205481565b60405190815260200161026f565b61039261038d3660046149aa565b611052565b60405161026f9190614aae565b610234611778565b6103ca6103b5366004614b78565b606654600160ff9092169190911b9081161490565b604051901515815260200161026f565b6102346103e8366004614bbf565b61183f565b606654610371565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b61047d610478366004614c50565b611b69565b60405161026f929190614d10565b610234612a57565b6097546102c7906501000000000090046001600160a01b031681565b6065546102c7906001600160a01b031681565b609754610100900463ffffffff1661029f565b6033546001600160a01b03166102c7565b6103ca6104f436600461498d565b609b6020526000908152604090205460ff1681565b61037161051736600461498d565b609a6020526000908152604090205481565b6097546103ca9060ff1681565b610549610544366004614d59565b612a6b565b60405161026f929190614d9b565b610234610565366004614dbc565b612bfd565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b61029f633b9aca0081565b6102346105aa366004614e47565b612efe565b6102346105bd366004614265565b613101565b61029f606481565b6102346105d8366004614ebe565b613177565b6102346105eb366004614282565b6132df565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106679190614f1a565b6001600160a01b0316336001600160a01b0316146106a05760405162461bcd60e51b815260040161069790614f37565b60405180910390fd5b6106a98161343b565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190614f81565b6107345760405162461bcd60e51b815260040161069790614f9e565b606654818116146107ad5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610697565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061083357610833614fe6565b60200201518951600160200201518a6020015160006002811061085857610858614fe6565b60200201518b6020015160016002811061087457610874614fe6565b602090810291909101518c518d8301516040516108d19a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6108f49190614ffc565b905061096761090d6109068884613532565b86906135c9565b61091561365d565b61095d61094e85610948604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613532565b6109578c61371d565b906135c9565b886201d4c06137ad565b909890975095505050505050565b6000806000806109888a8a8a8a8a611b69565b9150915060005b88811015610a31578563ffffffff16836020015182815181106109b4576109b4614fe6565b60200260200101516109c69190615034565b6001600160601b0316633b9aca0063ffffffff16846000015183815181106109f0576109f0614fe6565b6020026020010151610a029190615034565b6001600160601b03161015610a1f5750600093509150610a3a9050565b80610a2981615063565b91505061098f565b50600193509150505b965096945050505050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab9190614f1a565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614f1a565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b779190614f1a565b9050600086516001600160401b03811115610b9457610b9461429b565b604051908082528060200260200182016040528015610bc757816020015b6060815260200190600190039081610bb25790505b50905060005b8751811015610ecf576000888281518110610bea57610bea614fe6565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c73919081019061507e565b905080516001600160401b03811115610c8e57610c8e61429b565b604051908082528060200260200182016040528015610cd957816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610cac5790505b50848481518110610cec57610cec614fe6565b602002602001018190525060005b8151811015610eb9576040518060600160405280876001600160a01b03166347b314e8858581518110610d2f57610d2f614fe6565b60200260200101516040518263ffffffff1660e01b8152600401610d5591815260200190565b602060405180830381865afa158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d969190614f1a565b6001600160a01b03168152602001838381518110610db657610db6614fe6565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610de457610de4614fe6565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e64919061510e565b6001600160601b0316815250858581518110610e8257610e82614fe6565b60200260200101518281518110610e9b57610e9b614fe6565b60200260200101819052508080610eb190615063565b915050610cfa565b5050508080610ec790615063565b915050610bcd565b5093505050505b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f9190614f1a565b6001600160a01b0316336001600160a01b03161461100b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610697565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b61107d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190614f1a565b905061110e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061113e908b9089908990600401615137565b600060405180830381865afa15801561115b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111839190810190615181565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906111b5908b908b908b90600401615238565b600060405180830381865afa1580156111d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111fa9190810190615181565b6040820152856001600160401b038111156112175761121761429b565b60405190808252806020026020018201604052801561124a57816020015b60608152602001906001900390816112355790505b50606082015260005b60ff8116871115611689576000856001600160401b038111156112785761127861429b565b6040519080825280602002602001820160405280156112a1578160200160208202803683370190505b5083606001518360ff16815181106112bb576112bb614fe6565b602002602001018190525060005b868110156115895760008c6001600160a01b03166304ec63518a8a858181106112f4576112f4614fe6565b905060200201358e8860000151868151811061131257611312614fe6565b60200260200101516040518463ffffffff1660e01b815260040161134f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113909190615261565b90506001600160c01b0381166114345760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a401610697565b8a8a8560ff1681811061144957611449614fe6565b6001600160c01b03841692013560f81c9190911c60019081161415905061157657856001600160a01b031663dd9846b98a8a8581811061148b5761148b614fe6565b905060200201358d8d8860ff168181106114a7576114a7614fe6565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611521919061528a565b85606001518560ff168151811061153a5761153a614fe6565b6020026020010151848151811061155357611553614fe6565b63ffffffff909216602092830291909101909101528261157281615063565b9350505b508061158181615063565b9150506112c9565b506000816001600160401b038111156115a4576115a461429b565b6040519080825280602002602001820160405280156115cd578160200160208202803683370190505b50905060005b8281101561164e5784606001518460ff16815181106115f4576115f4614fe6565b6020026020010151818151811061160d5761160d614fe6565b602002602001015182828151811061162757611627614fe6565b63ffffffff909216602092830291909101909101528061164681615063565b9150506115d3565b508084606001518460ff168151811061166957611669614fe6565b602002602001018190525050508080611681906152a7565b915050611253565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee9190614f1a565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90611721908b908b908e906004016152c7565b600060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117669190810190615181565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e49190614f81565b6118005760405162461bcd60e51b815260040161069790614f9e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b600061184e602085018561498d565b63ffffffff81166000908152609a60205260409020549091506118a85760405162461bcd60e51b815260206004820152601260248201527115185cdac81b9bdd081c995cdc1bdb99195960721b6044820152606401610697565b6118b284846139d1565b63ffffffff82166000908152609a60205260409020541461190b5760405162461bcd60e51b815260206004820152601360248201527257726f6e67207461736b20726573706f6e736560681b6044820152606401610697565b63ffffffff81166000908152609b602052604090205460ff16156119715760405162461bcd60e51b815260206004820152601760248201527f416c7265616479206265656e206368616c6c656e6765640000000000000000006044820152606401610697565b6064611980602085018561498d565b61198a91906152f1565b63ffffffff164363ffffffff1611156119e55760405162461bcd60e51b815260206004820152601860248201527f4368616c6c656e676520706572696f64206578706972656400000000000000006044820152606401610697565b604051339063ffffffff8316907f0c6923c4a98292e75c5d677a1634527f87b6d19cf2c7d396aece99790c44a79590600090a350611b63565b8351811015611a8a57611a5b848281518110611a3c57611a3c614fe6565b6020026020010151805160009081526020918201519091526040902090565b828281518110611a6d57611a6d614fe6565b602090810291909101015280611a8281615063565b915050611a1e565b506000611a9a602088018861498d565b82604051602001611aac929190615319565b60405160208183030381529060405280519060200120905084602001358114611b175760405162461bcd60e51b815260206004820152601860248201527f57726f6e67206e6f6e2d7369676e6572207075626b65797300000000000000006044820152606401610697565b63ffffffff83166000818152609b6020526040808220805460ff19166001179055513392917fff48388ad5e2a6d1845a7672040fba7d9b14b22b9e0eecd37046e5313d3aebc291a35050505b50505050565b6040805180820190915260608082526020820152600084611be05760405162461bcd60e51b815260206004820152603760248201526000805160206157df83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610697565b60408301515185148015611bf8575060a08301515185145b8015611c08575060c08301515185145b8015611c18575060e08301515185145b611c825760405162461bcd60e51b815260206004820152604160248201526000805160206157df83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610697565b82515160208401515114611cfa5760405162461bcd60e51b8152602060048201526044602482018190526000805160206157df833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610697565b4363ffffffff168463ffffffff161115611d6a5760405162461bcd60e51b815260206004820152603c60248201526000805160206157df83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610697565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115611dab57611dab61429b565b604051908082528060200260200182016040528015611dd4578160200160208202803683370190505b506020820152866001600160401b03811115611df257611df261429b565b604051908082528060200260200182016040528015611e1b578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115611e4f57611e4f61429b565b604051908082528060200260200182016040528015611e78578160200160208202803683370190505b5081526020860151516001600160401b03811115611e9857611e9861429b565b604051908082528060200260200182016040528015611ec1578160200160208202803683370190505b5081602001819052506000611f938a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015611f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8e9190615361565b613a05565b905060005b87602001515181101561220f57611fbe88602001518281518110611a3c57611a3c614fe6565b83602001518281518110611fd457611fd4614fe6565b60209081029190910101528015612094576020830151611ff560018361537e565b8151811061200557612005614fe6565b602002602001015160001c8360200151828151811061202657612026614fe6565b602002602001015160001c11612094576040805162461bcd60e51b81526020600482015260248101919091526000805160206157df83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610697565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106120d9576120d9614fe6565b60200260200101518b8b6000015185815181106120f8576120f8614fe6565b60200260200101516040518463ffffffff1660e01b81526004016121359392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015612152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121769190615261565b6001600160c01b03168360000151828151811061219557612195614fe6565b6020026020010181815250506121fb6109066121cf84866000015185815181106121c1576121c1614fe6565b602002602001015116613ab7565b8a6020015184815181106121e5576121e5614fe6565b6020026020010151613ae290919063ffffffff16565b94508061220781615063565b915050611f98565b505061221a83613bc6565b925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350f73e7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561227c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a09190615395565b60975490915060ff1660005b8a811015612926578115612408578963ffffffff16837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f8681811061230357612303614fe6565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015612343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123679190615395565b61237191906153ae565b10156124085760405162461bcd60e51b815260206004820152606660248201526000805160206157df83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610697565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d8481811061244957612449614fe6565b9050013560f81c60f81b60f81c8c8c60a00151858151811061246d5761246d614fe6565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156124c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ed91906153c6565b6001600160401b0319166125108a604001518381518110611a3c57611a3c614fe6565b67ffffffffffffffff1916146125ac5760405162461bcd60e51b815260206004820152606160248201526000805160206157df83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610697565b6125dc896040015182815181106125c5576125c5614fe6565b6020026020010151876135c990919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d8481811061261f5761261f614fe6565b9050013560f81c60f81b60f81c8c8c60c00151858151811061264357612643614fe6565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561269f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c3919061510e565b856020015182815181106126d9576126d9614fe6565b6001600160601b0390921660209283029190910182015285015180518290811061270557612705614fe6565b60200260200101518560000151828151811061272357612723614fe6565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156129115761279b8660000151828151811061276d5761276d614fe6565b60200260200101518f8f8681811061278757612787614fe6565b600192013560f81c9290921c811614919050565b156128ff577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106127e1576127e1614fe6565b9050013560f81c60f81b60f81c8e8960200151858151811061280557612805614fe6565b60200260200101518f60e00151888151811061282357612823614fe6565b6020026020010151878151811061283c5761283c614fe6565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156128a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c4919061510e565b87518051859081106128d8576128d8614fe6565b602002602001018181516128ec91906153f1565b6001600160601b03169052506001909101905b8061290981615063565b915050612747565b5050808061291e90615063565b9150506122ac565b5050506000806129408c868a606001518b608001516107eb565b91509150816129b15760405162461bcd60e51b815260206004820152604360248201526000805160206157df83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610697565b80612a125760405162461bcd60e51b815260206004820152603960248201526000805160206157df83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610697565b50506000878260200151604051602001612a2d929190615319565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b612a5f613c61565b612a696000613cbb565b565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110612aa657612aa6614fe6565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90612ae29088908690600401615419565b600060405180830381865afa158015612aff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b279190810190615181565b600081518110612b3957612b39614fe6565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015612ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc99190615261565b6001600160c01b031690506000612bdf82613d0d565b905081612bed8a838a610a45565b9550955050505050935093915050565b6098546001600160a01b03163314612c575760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606401610697565b6000612c66602085018561498d565b9050366000612c78608087018761546d565b90925090506000612c8f608088016060890161498d565b905060996000612ca2602089018961498d565b63ffffffff1663ffffffff16815260200190815260200160002054612cc688613d6a565b14612d055760405162461bcd60e51b815260206004820152600f60248201526e0aee4dedcce40e8c2e6d640d0c2e6d608b1b6044820152606401610697565b6000609a81612d1760208a018a61498d565b63ffffffff1663ffffffff1681526020019081526020016000205414612d785760405162461bcd60e51b815260206004820152601660248201527515185cdac8185b1c9958591e481c995cdc1bdb99195960521b6044820152606401610697565b612da27f0000000000000000000000000000000000000000000000000000000000000000856152f1565b63ffffffff164363ffffffff161115612df65760405162461bcd60e51b815260206004820152601660248201527514995cdc1bdb9cd9481d1a5b5948195e18d95959195960521b6044820152606401610697565b6000612e0187613d9a565b9050600080612e148387878a8c89610975565b9150915081612e565760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610697565b6040805180820190915263ffffffff4316815260208101829052612e8981612e83368d90038d018d6154b3565b90613dad565b609a6000612e9a60208e018e61498d565b63ffffffff1663ffffffff168152602001908152602001600020819055507f8016fcc5ad5dcf12fff2e128d239d9c6eb61f4041126bbac2c93fa8962627c1b8a82604051612ee992919061553c565b60405180910390a15050505050505050505050565b6097546501000000000090046001600160a01b03163314612f6b5760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608401610697565b633b9aca0063ffffffff84161115612fd75760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b6064820152608401610697565b60006040518060a001604052804363ffffffff168152602001876001600160401b03168152602001866001600160401b031681526020018563ffffffff16815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250905061305d81613dc2565b6097805463ffffffff610100918290048116600090815260996020526040908190209490945591549251920416907f78aec7310ea6fd468e3d3bbd16a806fd4987515634d5b5bf4cf4f036d9c33225906130b8908490615592565b60405180910390a26097546130d990610100900463ffffffff1660016152f1565b609760016101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b613109613c61565b6001600160a01b03811661316e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610697565b6106a981613cbb565b600054610100900460ff16158080156131975750600054600160ff909116105b806131b15750303b1580156131b1575060005460ff166001145b6132145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610697565b6000805460ff191660011790558015613237576000805461ff0019166101001790555b613242856000613dd5565b61324b84613cbb565b609880546001600160a01b0319166001600160a01b03858116919091179091556097805465010000000000600160c81b031916650100000000009285169290920291909117905580156132d8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133569190614f1a565b6001600160a01b0316336001600160a01b0316146133865760405162461bcd60e51b815260040161069790614f37565b6066541981196066541916146134045760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610697565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107e0565b6001600160a01b0381166134c95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610697565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015261354e614176565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561358157613583565bfe5b50806135c15760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610697565b505092915050565b60408051808201909152600080825260208201526135e5614194565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156135815750806135c15760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610697565b6136656141b2565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201909152600080825260208201526000808061374d6000805160206157bf83398151915286614ffc565b90505b61375981613ebf565b90935091506000805160206157bf833981519152828309831415613793576040805180820190915290815260208101919091529392505050565b6000805160206157bf833981519152600182089050613750565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906137df6141d7565b60005b60028110156139a45760006137f882600661560f565b905084826002811061380c5761380c614fe6565b6020020151518361381e8360006153ae565b600c811061382e5761382e614fe6565b602002015284826002811061384557613845614fe6565b6020020151602001518382600161385c91906153ae565b600c811061386c5761386c614fe6565b602002015283826002811061388357613883614fe6565b60200201515151836138968360026153ae565b600c81106138a6576138a6614fe6565b60200201528382600281106138bd576138bd614fe6565b60200201515160016020020151836138d68360036153ae565b600c81106138e6576138e6614fe6565b60200201528382600281106138fd576138fd614fe6565b60200201516020015160006002811061391857613918614fe6565b6020020151836139298360046153ae565b600c811061393957613939614fe6565b602002015283826002811061395057613950614fe6565b60200201516020015160016002811061396b5761396b614fe6565b60200201518361397c8360056153ae565b600c811061398c5761398c614fe6565b6020020152508061399c81615063565b9150506137e2565b506139ad6141f6565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b600082826040516020016139e692919061562e565b6040516020818303038152906040528051906020012090505b92915050565b600080613a1184613f41565b90508015610ed6578260ff168460018651613a2c919061537e565b81518110613a3c57613a3c614fe6565b016020015160f81c10610ed65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610697565b6000805b82156139ff57613acc60018461537e565b9092169180613ada81615664565b915050613abb565b60408051808201909152600080825260208201526102008261ffff1610613b3e5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610697565b8161ffff1660011415613b525750816139ff565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613bbb57600161ffff871660ff83161c81161415613b9e57613b9b84846135c9565b93505b613ba883846135c9565b92506201fffe600192831b169101613b6e565b509195945050505050565b60408051808201909152600080825260208201528151158015613beb57506020820151155b15613c09575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206157bf8339815191528460200151613c3c9190614ffc565b613c54906000805160206157bf83398151915261537e565b905292915050565b919050565b6033546001600160a01b03163314612a695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610697565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000805b610100811015613d63576001811b915083821615613d5357828160f81b604051602001613d41929190615686565b60405160208183030381529060405292505b613d5c81615063565b9050613d13565b5050919050565b600081604051602001613d7d91906156b5565b604051602081830303815290604052805190602001209050919050565b600081604051602001613d7d9190615771565b600082826040516020016139e692919061577f565b600081604051602001613d7d9190615592565b6065546001600160a01b0316158015613df657506001600160a01b03821615155b613e785760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610697565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613ebb8261343b565b5050565b600080806000805160206157bf83398151915260036000805160206157bf833981519152866000805160206157bf833981519152888909090890506000613f35827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206157bf8339815191526140ce565b91959194509092505050565b600061010082511115613fca5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610697565b8151613fd857506000919050565b60008083600081518110613fee57613fee614fe6565b0160200151600160f89190911c81901b92505b84518110156140c55784818151811061401c5761401c614fe6565b0160200151600160f89190911c1b91508282116140b15760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610697565b918117916140be81615063565b9050614001565b50909392505050565b6000806140d96141f6565b6140e1614214565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561358157508261416b5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610697565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806141c5614232565b81526020016141d2614232565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146106a957600080fd5b60006020828403121561427757600080fd5b8135610ed681614250565b60006020828403121561429457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156142d3576142d361429b565b60405290565b60405161010081016001600160401b03811182821017156142d3576142d361429b565b604051601f8201601f191681016001600160401b03811182821017156143245761432461429b565b604052919050565b60006040828403121561433e57600080fd5b6143466142b1565b9050813581526020820135602082015292915050565b600082601f83011261436d57600080fd5b604051604081018181106001600160401b038211171561438f5761438f61429b565b80604052508060408401858111156143a657600080fd5b845b81811015613bbb5780358352602092830192016143a8565b6000608082840312156143d257600080fd5b6143da6142b1565b90506143e6838361435c565b81526143f5836040840161435c565b602082015292915050565b600080600080610120858703121561441757600080fd5b84359350614428866020870161432c565b925061443786606087016143c0565b91506144468660e0870161432c565b905092959194509250565b60008083601f84011261446357600080fd5b5081356001600160401b0381111561447a57600080fd5b60208301915083602082850101111561449257600080fd5b9250929050565b63ffffffff811681146106a957600080fd5b8035613c5c81614499565b60006001600160401b038211156144cf576144cf61429b565b5060051b60200190565b600082601f8301126144ea57600080fd5b813560206144ff6144fa836144b6565b6142fc565b82815260059290921b8401810191818101908684111561451e57600080fd5b8286015b8481101561454257803561453581614499565b8352918301918301614522565b509695505050505050565b600082601f83011261455e57600080fd5b8135602061456e6144fa836144b6565b82815260069290921b8401810191818101908684111561458d57600080fd5b8286015b84811015614542576145a3888261432c565b835291830191604001614591565b600082601f8301126145c257600080fd5b813560206145d26144fa836144b6565b82815260059290921b840181019181810190868411156145f157600080fd5b8286015b848110156145425780356001600160401b038111156146145760008081fd5b6146228986838b01016144d9565b8452509183019183016145f5565b6000610180828403121561464357600080fd5b61464b6142d9565b905081356001600160401b038082111561466457600080fd5b614670858386016144d9565b8352602084013591508082111561468657600080fd5b6146928583860161454d565b602084015260408401359150808211156146ab57600080fd5b6146b78583860161454d565b60408401526146c985606086016143c0565b60608401526146db8560e0860161432c565b60808401526101208401359150808211156146f557600080fd5b614701858386016144d9565b60a084015261014084013591508082111561471b57600080fd5b614727858386016144d9565b60c084015261016084013591508082111561474157600080fd5b5061474e848285016145b1565b60e08301525092915050565b60008060008060008060a0878903121561477357600080fd5b8635955060208701356001600160401b038082111561479157600080fd5b61479d8a838b01614451565b9097509550604089013591506147b282614499565b909350606088013590808211156147c857600080fd5b506147d589828a01614630565b92505060808701356147e681614499565b809150509295509295509295565b60008060006060848603121561480957600080fd5b833561481481614250565b92506020848101356001600160401b038082111561483157600080fd5b818701915087601f83011261484557600080fd5b8135818111156148575761485761429b565b614869601f8201601f191685016142fc565b9150808252888482850101111561487f57600080fd5b80848401858401376000848284010152508094505050506148a2604085016144ab565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015614941578385038a52825180518087529087019087870190845b8181101561492c57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b031690840152928901926060909201916001016148e8565b50509a87019a955050918501916001016148ca565b509298975050505050505050565b602081526000610ed660208301846148ab565b80151581146106a957600080fd5b60006020828403121561498257600080fd5b8135610ed681614962565b60006020828403121561499f57600080fd5b8135610ed681614499565b600080600080600080608087890312156149c357600080fd5b86356149ce81614250565b955060208701356149de81614499565b945060408701356001600160401b03808211156149fa57600080fd5b614a068a838b01614451565b90965094506060890135915080821115614a1f57600080fd5b818901915089601f830112614a3357600080fd5b813581811115614a4257600080fd5b8a60208260051b8501011115614a5757600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b83811015614aa357815163ffffffff1687529582019590820190600101614a81565b509495945050505050565b600060208083528351608082850152614aca60a0850182614a6d565b905081850151601f1980868403016040870152614ae78383614a6d565b92506040870151915080868403016060870152614b048383614a6d565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b82811015614b5b5784878303018452614b49828751614a6d565b95880195938801939150600101614b2f565b509998505050505050505050565b60ff811681146106a957600080fd5b600060208284031215614b8a57600080fd5b8135610ed681614b69565b600060a08284031215614ba757600080fd5b50919050565b600060608284031215614ba757600080fd5b60008060008084860360e0811215614bd657600080fd5b85356001600160401b0380821115614bed57600080fd5b614bf989838a01614b95565b9650614c088960208a01614bad565b95506040607f1984011215614c1c57600080fd5b60808801945060c0880135925080831115614c3657600080fd5b5050614c448782880161454d565b91505092959194509250565b600080600080600060808688031215614c6857600080fd5b8535945060208601356001600160401b0380821115614c8657600080fd5b614c9289838a01614451565b909650945060408801359150614ca782614499565b90925060608701359080821115614cbd57600080fd5b50614cca88828901614630565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614aa35781516001600160601b031687529582019590820190600101614ceb565b6040815260008351604080840152614d2b6080840182614cd7565b90506020850151603f19848303016060850152614d488282614cd7565b925050508260208301529392505050565b600080600060608486031215614d6e57600080fd5b8335614d7981614250565b9250602084013591506040840135614d9081614499565b809150509250925092565b828152604060208201526000614db460408301846148ab565b949350505050565b600080600060a08486031215614dd157600080fd5b83356001600160401b0380821115614de857600080fd5b614df487838801614b95565b9450614e038760208801614bad565b93506080860135915080821115614e1957600080fd5b50614e2686828701614630565b9150509250925092565b80356001600160401b0381168114613c5c57600080fd5b600080600080600060808688031215614e5f57600080fd5b614e6886614e30565b9450614e7660208701614e30565b93506040860135614e8681614499565b925060608601356001600160401b03811115614ea157600080fd5b614ead88828901614451565b969995985093965092949392505050565b60008060008060808587031215614ed457600080fd5b8435614edf81614250565b93506020850135614eef81614250565b92506040850135614eff81614250565b91506060850135614f0f81614250565b939692955090935050565b600060208284031215614f2c57600080fd5b8151610ed681614250565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215614f9357600080fd5b8151610ed681614962565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261501957634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038083168185168183048111821515161561505a5761505a61501e565b02949350505050565b60006000198214156150775761507761501e565b5060010190565b6000602080838503121561509157600080fd5b82516001600160401b038111156150a757600080fd5b8301601f810185136150b857600080fd5b80516150c66144fa826144b6565b81815260059190911b820183019083810190878311156150e557600080fd5b928401925b82841015615103578351825292840192908401906150ea565b979650505050505050565b60006020828403121561512057600080fd5b81516001600160601b0381168114610ed657600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b0383111561516457600080fd5b8260051b8085606085013760009201606001918252509392505050565b6000602080838503121561519457600080fd5b82516001600160401b038111156151aa57600080fd5b8301601f810185136151bb57600080fd5b80516151c96144fa826144b6565b81815260059190911b820183019083810190878311156151e857600080fd5b928401925b8284101561510357835161520081614499565b825292840192908401906151ed565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff8416815260406020820152600061525860408301848661520f565b95945050505050565b60006020828403121561527357600080fd5b81516001600160c01b0381168114610ed657600080fd5b60006020828403121561529c57600080fd5b8151610ed681614499565b600060ff821660ff8114156152be576152be61501e565b60010192915050565b6040815260006152db60408301858761520f565b905063ffffffff83166020830152949350505050565b600063ffffffff8083168185168083038211156153105761531061501e565b01949350505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561535457815185529382019390820190600101615338565b5092979650505050505050565b60006020828403121561537357600080fd5b8151610ed681614b69565b6000828210156153905761539061501e565b500390565b6000602082840312156153a757600080fd5b5051919050565b600082198211156153c1576153c161501e565b500190565b6000602082840312156153d857600080fd5b815167ffffffffffffffff1981168114610ed657600080fd5b60006001600160601b03838116908316818110156154115761541161501e565b039392505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561546057845183529383019391830191600101615444565b5090979650505050505050565b6000808335601e1984360301811261548457600080fd5b8301803591506001600160401b0382111561549e57600080fd5b60200191503681900382131561449257600080fd5b6000606082840312156154c557600080fd5b604051606081018181106001600160401b03821117156154e7576154e761429b565b60405282356154f581614499565b8152602083810135908201526040928301359281019290925250919050565b803561551f81614499565b63ffffffff16825260208181013590830152604090810135910152565b60a0810161554a8285615514565b825163ffffffff16606083015260208301516080830152610ed6565b60005b83811015615581578181015183820152602001615569565b83811115611b635750506000910152565b60208152600063ffffffff80845116602084015260208401516001600160401b038082166040860152806040870151166060860152505080606085015116608084015250608083015160a08084015280518060c08501526155fa8160e0860160208501615566565b601f01601f19169290920160e0019392505050565b60008160001904831182151516156156295761562961501e565b500290565b60a0810161563c8285615514565b823561564781614499565b63ffffffff16606083015260209290920135608090910152919050565b600061ffff8083168181141561567c5761567c61501e565b6001019392505050565b60008351615698818460208801615566565b6001600160f81b0319939093169190920190815260010192915050565b60208152600082356156c681614499565b63ffffffff80821660208501526156df60208601614e30565b91506001600160401b038083166040860152806156fe60408801614e30565b1660608601526060860135925061571483614499565b818316608086015260808601359250601e1986360301831261573557600080fd5b91850191823591508082111561574a57600080fd5b5080360385131561575a57600080fd5b60a08085015261525860c08501826020850161520f565b606081016139ff8284615514565b825163ffffffff168152602080840151908201526040808401519082015260a08101610ed66060830184805163ffffffff16825260209081015191015256fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220883fdb585338ddd9f29c4df3b72ef6dd26290412fd0719d7d98e00e280b3486864736f6c634300080c0033", } // ContractSFFLTaskManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/generate-go-bindings.sh b/contracts/generate-go-bindings.sh index 53522ae7d..660300c09 100644 --- a/contracts/generate-go-bindings.sh +++ b/contracts/generate-go-bindings.sh @@ -10,13 +10,13 @@ function create_binding { solc_abi=$(cat ${contract_json} | jq -r '.abi') solc_bin=$(cat ${contract_json} | jq -r '.bytecode.object') - mkdir -p data - echo ${solc_abi} >data/tmp.abi - echo ${solc_bin} >data/tmp.bin + mkdir -p tmp + echo ${solc_abi} >tmp/tmp.abi + echo ${solc_bin} >tmp/tmp.bin rm -f $binding_dir/${contract}/binding.go - abigen --bin=data/tmp.bin --abi=data/tmp.abi --pkg=contract${contract} --out=$binding_dir/${contract}/binding.go - rm -rf ../data/tmp.abi ../data/tmp.bin + abigen --bin=tmp/tmp.bin --abi=tmp/tmp.abi --pkg=contract${contract} --out=$binding_dir/${contract}/binding.go + rm -rf tmp } rm -rf bindings/*