[ { "inputs": [], "name": "BTOKEN_DEADLINE_EXPIRED", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_PARAMS", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_PARAMS", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_SIG", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_TO_ADDR", "type": "error" }, { "inputs": [], "name": "BTOKEN_MINT_DISALLOWED", "type": "error" }, { "inputs": [], "name": "FUNC_NOT_IMPLEMENTED", "type": "error" }, { "inputs": [], "name": "INVALID_PAUSE_STATUS", "type": "error" }, { "inputs": [], "name": "REENTRANT_CALL", "type": "error" }, { "inputs": [], "name": "RESOLVER_DENIED", "type": "error" }, { "inputs": [], "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, { "inputs": [], "name": "RESOLVER_UNEXPECTED_CHAINID", "type": "error" }, { "inputs": [ { "internalType": "uint64", "name": "chainId", "type": "uint64" }, { "internalType": "bytes32", "name": "name", "type": "bytes32" } ], "name": "RESOLVER_ZERO_ADDR", "type": "error" }, { "inputs": [], "name": "ZERO_ADDRESS", "type": "error" }, { "inputs": [], "name": "ZERO_VALUE", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "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": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "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": "migratedFrom", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MigratedFrom", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "migratedTo", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MigratedTo", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "inbound", "type": "bool" } ], "name": "MigrationStatusChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "__srcDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "addressManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "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": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "canonical", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_migratingAddress", "type": "address" }, { "internalType": "bool", "name": "_migratingInbound", "type": "bool" } ], "name": "changeMigrationStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "impl", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inNonReentrant", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_sharedAddressManager", "type": "address" }, { "internalType": "address", "name": "_srcToken", "type": "address" }, { "internalType": "uint256", "name": "_srcChainId", "type": "uint256" }, { "internalType": "uint8", "name": "_decimals", "type": "uint8" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_name", "type": "string" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "init2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isMigratingOut", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastUnpausedAt", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migratingAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migratingInbound", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_chainId", "type": "uint64" }, { "internalType": "bytes32", "name": "_name", "type": "bytes32" }, { "internalType": "bool", "name": "_allowZeroAddress", "type": "bool" } ], "name": "resolve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_name", "type": "bytes32" }, { "internalType": "bool", "name": "_allowZeroAddress", "type": "bool" } ], "name": "resolve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "srcChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "srcToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100e5565b5f54610100900460ff16156100945760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146100e3575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516131586101195f395f81816109fa01528181610a3a01528181610d6101528181610da10152610e1801526131585ff3fe60806040526004361061026a575f3560e01c806370a082311161014a578063a457c2d7116100be578063d505accf11610078578063d505accf14610729578063dd62ed3e14610748578063e07baba614610767578063e30c3978146107a4578063f12506c1146107c1578063f2fde38b146107d5575f5ffd5b8063a457c2d71461066d578063a77f15161461068c578063a86f9d9e146106ad578063a9059cbb146106cc578063b8f2e0c5146106eb578063bb86ef931461070a575f5ffd5b80637ecebe001161010f5780637ecebe00146105ce5780638456cb59146105ed57806384b0196e146106015780638abf6077146106285780638da5cb5b1461063c57806395d89b4114610659575f5ffd5b806370a0823114610532578063715018a61461056657806379ba50971461057a5780637cf8ed0d1461058e5780637e474634146105ae575f5ffd5b80633659cfe6116101e157806340c10f19116101a657806340c10f191461049757806342966c68146104b657806349d12605146104d55780634f1ef286146104eb57806352d1902d146104fe5780635c975abb14610512575f5ffd5b80633659cfe6146103ef578063395093511461040e5780633ab76e9f1461042d5780633eb6b8cf146104645780633f4ba83a14610483575f5ffd5b806318160ddd1161023257806318160ddd1461031957806323b872dd1461033757806326afaadd146103565780633075db561461039a578063313ce567146103ae5780633644e515146103db575f5ffd5b806301ffc9a71461026e578063069489a2146102a257806306fdde03146102b8578063095ea7b3146102d95780630ae74548146102f8575b5f5ffd5b348015610279575f5ffd5b5061028d6102883660046128f0565b6107f4565b60405190151581526020015b60405180910390f35b3480156102ad575f5ffd5b506102b6610839565b005b3480156102c3575f5ffd5b506102cc6108fe565b6040516102999190612964565b3480156102e4575f5ffd5b5061028d6102f336600461298a565b61098e565b348015610303575f5ffd5b5061012f5461028d90600160a01b900460ff1681565b348015610324575f5ffd5b5060fd545b604051908152602001610299565b348015610342575f5ffd5b5061028d6103513660046129b4565b6109a5565b348015610361575f5ffd5b5061037b61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610299565b3480156103a5575f5ffd5b5061028d6109ca565b3480156103b9575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610299565b3480156103e6575f5ffd5b506103296109e2565b3480156103fa575f5ffd5b506102b66104093660046129f2565b6109f0565b348015610419575f5ffd5b5061028d61042836600461298a565b610ab7565b348015610438575f5ffd5b5060975461044c906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561046f575f5ffd5b5061044c61047e366004612a21565b610ad8565b34801561048e575f5ffd5b506102b6610aec565b3480156104a2575f5ffd5b506102b66104b136600461298a565b610b00565b3480156104c1575f5ffd5b506102b66104d0366004612a67565b610c1a565b3480156104e0575f5ffd5b5061032961012e5481565b6102b66104f9366004612a92565b610d57565b348015610509575f5ffd5b50610329610e0c565b34801561051d575f5ffd5b5061028d60c954610100900460ff1660021490565b34801561053d575f5ffd5b5061032961054c3660046129f2565b6001600160a01b03165f90815260fb602052604090205490565b348015610571575f5ffd5b506102b6610ebd565b348015610585575f5ffd5b506102b6610ece565b348015610599575f5ffd5b5061012d5461044c906001600160a01b031681565b3480156105b9575f5ffd5b5061012f5461044c906001600160a01b031681565b3480156105d9575f5ffd5b506103296105e83660046129f2565b610f45565b3480156105f8575f5ffd5b506102b6610f63565b34801561060c575f5ffd5b50610615610f76565b6040516102999796959493929190612b55565b348015610633575f5ffd5b5061044c611011565b348015610647575f5ffd5b506033546001600160a01b031661044c565b348015610664575f5ffd5b506102cc61101a565b348015610678575f5ffd5b5061028d61068736600461298a565b611029565b348015610697575f5ffd5b5061012d546103c990600160a01b900460ff1681565b3480156106b8575f5ffd5b5061044c6106c7366004612beb565b6110ae565b3480156106d7575f5ffd5b5061028d6106e636600461298a565b6110ba565b3480156106f6575f5ffd5b506102b6610705366004612c15565b6110c7565b348015610715575f5ffd5b506102b6610724366004612c93565b611244565b348015610734575f5ffd5b506102b6610743366004612d52565b6113e8565b348015610753575f5ffd5b50610329610762366004612dbc565b6114eb565b348015610772575f5ffd5b5060c95461078c906201000090046001600160401b031681565b6040516001600160401b039091168152602001610299565b3480156107af575f5ffd5b506065546001600160a01b031661044c565b3480156107cc575f5ffd5b5061028d611515565b3480156107e0575f5ffd5b506102b66107ef3660046129f2565b611540565b5f6001600160e01b03198216634ec7fbed60e11b148061082457506001600160e01b031982166342580cb760e11b145b806108335750610833826115b1565b92915050565b5f54600290610100900460ff1615801561085957505f5460ff8083169116105b61087e5760405162461bcd60e51b815260040161087590612df3565b60405180910390fd5b5f805461ffff191660ff8316176101001790556108bb61089c6108fe565b604051806040016040528060018152602001603160f81b815250611652565b5f805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060fe805461090d90612e41565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612e41565b80156109845780601f1061095b57610100808354040283529160200191610984565b820191905f5260205f20905b81548152906001019060200180831161096757829003601f168201915b5050505050905090565b5f3361099b8185856116a3565b5060019392505050565b5f336109b28582856117c6565b6109bd85858561183e565b60019150505b9392505050565b5f60026109d960c95460ff1690565b60ff1614905090565b5f6109eb6119f2565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a385760405162461bcd60e51b815260040161087590612e73565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a6a6119fb565b6001600160a01b031614610a905760405162461bcd60e51b815260040161087590612ebf565b610a9981611a16565b604080515f80825260208201909252610ab491839190611a1e565b50565b5f3361099b818585610ac983836114eb565b610ad39190612f0b565b6116a3565b5f610ae4848484611b88565b949350505050565b610af4611bda565b610afe335f611c6a565b565b610b1460c954610100900460ff1660021490565b15610b325760405163bae6e2a960e01b815260040160405180910390fd5b6002610b4060c95460ff1690565b60ff1603610b615760405163dfc60d8560e01b815260040160405180910390fd5b610b6b6002611c72565b610b73611515565b15610b915760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610bf857826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610beb91815260200190565b60405180910390a3610c01565b610c0133611c88565b610c0b8383611d04565b50610c166001611c72565b5050565b610c2e60c954610100900460ff1660021490565b15610c4c5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c5a60c95460ff1690565b60ff1603610c7b5760405163dfc60d8560e01b815260040160405180910390fd5b610c856002611c72565b610c8d611515565b15610d3a5761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610d1e575f5ffd5b505af1158015610d30573d5f5f3e3d5ffd5b5050505050610d43565b610d4333611c88565b610d4d3382611dce565b610ab46001611c72565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610d9f5760405162461bcd60e51b815260040161087590612e73565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dd16119fb565b6001600160a01b031614610df75760405162461bcd60e51b815260040161087590612ebf565b610e0082611a16565b610c1682826001611a1e565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eab5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610875565b505f5160206130dc5f395f51905f5290565b610ec5611f0b565b610afe5f611f65565b60655433906001600160a01b03168114610f3c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610875565b610ab481611f65565b6001600160a01b0381165f9081526101936020526040812054610833565b610f6b611f7e565b610afe336001611c6a565b5f6060805f5f5f606061015f545f5f1b148015610f94575061016054155b610fd85760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610875565b610fe0611fef565b610fe8611fff565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f6109eb6119fb565b606060ff805461090d90612e41565b5f338161103682866114eb565b9050838110156110965760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610875565b6110a382868684036116a3565b506001949350505050565b5f6109c3468484611b88565b5f3361099b81858561183e565b6110db60c954610100900460ff1660021490565b156110f95760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b6111138160016110ae565b6001600160a01b0316336001600160a01b03161461114457604051630d85cccf60e11b815260040160405180910390fd5b600261115260c95460ff1690565b60ff16036111735760405163dfc60d8560e01b815260040160405180910390fd5b61117d6002611c72565b61012f546001600160a01b0384811691161480156111ae575061012f60149054906101000a900460ff161515821515145b156111cc5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161123f6001611c72565b505050565b5f54600290610100900460ff1615801561126457505f5460ff8083169116105b6112805760405162461bcd60e51b815260040161087590612df3565b5f805461ffff191660ff83161761010017905561129d888861200f565b6112a78a8a61204b565b61131883838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f9201919091525061208592505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b1617179055604080516020601f850181900481028201810190925283815261139c9185908590819084018382808284375f92019190915250506040805180820190915260018152603160f81b602082015291506116529050565b5f805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050505050565b83421115611409576040516316ae274d60e11b815260040160405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886114378c6120b5565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f611491826120dd565b90505f6114a082878787612109565b9050896001600160a01b0316816001600160a01b0316146114d4576040516370ef21cb60e11b815260040160405180910390fd5b6114df8a8a8a6116a3565b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b0316158015906109eb57505061012f54600160a01b900460ff161590565b611548611f0b565b606580546001600160a01b0383166001600160a01b031990911681179091556115796033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b0319821663093e326b60e21b14806115e157506001600160e01b0319821663bb86ef9360e01b145b806115fc57506001600160e01b0319821663b8f2e0c560e01b145b8061161757506001600160e01b031982166336372b0760e01b145b8061163257506001600160e01b0319821663a219a02560e01b145b8061083357506001600160e01b031982166301ffc9a760e01b1492915050565b5f54610100900460ff166116785760405162461bcd60e51b815260040161087590612f2a565b6101616116858382612fc0565b506101626116938282612fc0565b50505f61015f8190556101605550565b6001600160a01b0383166117055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610875565b6001600160a01b0382166117665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610875565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6117d184846114eb565b90505f198114611838578181101561182b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610875565b61183884848484036116a3565b50505050565b6001600160a01b0383166118a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610875565b6001600160a01b0382166119045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610875565b61190f83838361212f565b6001600160a01b0383165f90815260fb6020526040902054818110156119865760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610875565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119e59086815260200190565b60405180910390a3611838565b5f6109eb61216a565b5f5160206130dc5f395f51905f52546001600160a01b031690565b610ab4611f0b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a515761123f836121dd565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611aab575060408051601f3d908101601f19168201909252611aa89181019061307a565b60015b611b0e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610875565b5f5160206130dc5f395f51905f528114611b7c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610875565b5061123f838383612278565b5f611b93848461229c565b905081158015611baa57506001600160a01b038116155b156109c357604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610875565b611bee60c954610100900460ff1660021490565b611c0b5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610c16611f0b565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b611ca96033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614158015611ce65750611cd08160016110ae565b6001600160a01b0316336001600160a01b031614155b15610c1657604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b038216611d5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610875565b611d655f838361212f565b8060fd5f828254611d769190612f0b565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611e2e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610875565b611e39825f8361212f565b6001600160a01b0382165f90815260fb602052604090205481811015611eac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610875565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b03163314610afe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610875565b606580546001600160a01b0319169055610ab48161233e565b611f9260c954610100900460ff1660021490565b15611fb05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611c60565b6060610161805461090d90612e41565b6060610162805461090d90612e41565b6001600160a01b0382161580612023575080155b8061202d57504681145b15610c165760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b0381166120735760405163538ba4f960e01b815260040160405180910390fd5b61207c8361238f565b61123f826123ed565b5f54610100900460ff166120ab5760405162461bcd60e51b815260040161087590612f2a565b610c16828261245d565b6001600160a01b0381165f908152610193602052604090208054600181018255905b50919050565b5f6108336120e96119f2565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f6121188787878761249c565b9150915061212581612559565b5095945050505050565b61214360c954610100900460ff1660021490565b156121615760405163bae6e2a960e01b815260040160405180910390fd5b61123f826126a2565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6121946126cb565b61219c612724565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381163b61224a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610875565b5f5160206130dc5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61228183612755565b5f8251118061228d5750805b1561123f576118388383612794565b6097545f906001600160a01b0316806122c857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561231a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae49190613091565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123b55760405162461bcd60e51b815260040161087590612f2a565b6123bd6127b9565b6123db6001600160a01b038216156123d55781611f65565b33611f65565b5060c9805461ff001916610100179055565b5f54610100900460ff166124135760405162461bcd60e51b815260040161087590612f2a565b6001600160401b0346111561243b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166124835760405162461bcd60e51b815260040161087590612f2a565b60fe61248f8382612fc0565b5060ff61123f8282612fc0565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156124d157505f90506003612550565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612522573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661254a575f60019250925050612550565b91505f90505b94509492505050565b5f81600481111561256c5761256c6130ac565b036125745750565b6001816004811115612588576125886130ac565b036125d55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610875565b60028160048111156125e9576125e96130ac565b036126365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610875565b600381600481111561264a5761264a6130ac565b03610ab45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610875565b306001600160a01b03821603610ab457604051630c292c9d60e21b815260040160405180910390fd5b5f5f6126d5611fef565b8051909150156126ec578051602090910120919050565b61015f5480156126fc5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f5f61272e611fff565b805190915015612745578051602090910120919050565b6101605480156126fc5792915050565b61275e816121dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606109c383836040518060600160405280602781526020016130fc602791396127df565b5f54610100900460ff16610afe5760405162461bcd60e51b815260040161087590612f2a565b60605f5f856001600160a01b0316856040516127fb91906130c0565b5f60405180830381855af49150503d805f8114612833576040519150601f19603f3d011682016040523d82523d5f602084013e612838565b606091505b509150915061284986838387612853565b9695505050505050565b606083156128c15782515f036128ba576001600160a01b0385163b6128ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610875565b5081610ae4565b610ae483838151156128d65781518083602001fd5b8060405162461bcd60e51b81526004016108759190612964565b5f60208284031215612900575f5ffd5b81356001600160e01b0319811681146109c3575f5ffd5b5f5b83811015612931578181015183820152602001612919565b50505f910152565b5f8151808452612950816020860160208601612917565b601f01601f19169290920160200192915050565b602081525f6109c36020830184612939565b6001600160a01b0381168114610ab4575f5ffd5b5f5f6040838503121561299b575f5ffd5b82356129a681612976565b946020939093013593505050565b5f5f5f606084860312156129c6575f5ffd5b83356129d181612976565b925060208401356129e181612976565b929592945050506040919091013590565b5f60208284031215612a02575f5ffd5b81356109c381612976565b80358015158114612a1c575f5ffd5b919050565b5f5f5f60608486031215612a33575f5ffd5b83356001600160401b0381168114612a49575f5ffd5b925060208401359150612a5e60408501612a0d565b90509250925092565b5f60208284031215612a77575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612aa3575f5ffd5b8235612aae81612976565b915060208301356001600160401b03811115612ac8575f5ffd5b8301601f81018513612ad8575f5ffd5b80356001600160401b03811115612af157612af1612a7e565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612b1f57612b1f612a7e565b604052818152828201602001871015612b36575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b60ff60f81b8816815260e060208201525f612b7360e0830189612939565b8281036040840152612b858189612939565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015612bda578351835260209384019390920191600101612bbc565b50909b9a5050505050505050505050565b5f5f60408385031215612bfc575f5ffd5b82359150612c0c60208401612a0d565b90509250929050565b5f5f60408385031215612c26575f5ffd5b8235612c3181612976565b9150612c0c60208401612a0d565b803560ff81168114612a1c575f5ffd5b5f5f83601f840112612c5f575f5ffd5b5081356001600160401b03811115612c75575f5ffd5b602083019150836020828501011115612c8c575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c031215612cab575f5ffd5b8935612cb681612976565b985060208a0135612cc681612976565b975060408a0135612cd681612976565b965060608a01359550612ceb60808b01612c3f565b945060a08a01356001600160401b03811115612d05575f5ffd5b612d118c828d01612c4f565b90955093505060c08a01356001600160401b03811115612d2f575f5ffd5b612d3b8c828d01612c4f565b915080935050809150509295985092959850929598565b5f5f5f5f5f5f5f60e0888a031215612d68575f5ffd5b8735612d7381612976565b96506020880135612d8381612976565b95506040880135945060608801359350612d9f60808901612c3f565b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215612dcd575f5ffd5b8235612dd881612976565b91506020830135612de881612976565b809150509250929050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600181811c90821680612e5557607f821691505b6020821081036120d757634e487b7160e01b5f52602260045260245ffd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561083357634e487b7160e01b5f52601160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561123f57805f5260205f20601f840160051c81016020851015612f9a5750805b601f840160051c820191505b81811015612fb9575f8155600101612fa6565b5050505050565b81516001600160401b03811115612fd957612fd9612a7e565b612fed81612fe78454612e41565b84612f75565b6020601f82116001811461301f575f83156130085750848201515b5f19600385901b1c1916600184901b178455612fb9565b5f84815260208120601f198516915b8281101561304e578785015182556020948501946001909201910161302e565b508482101561306b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6020828403121561308a575f5ffd5b5051919050565b5f602082840312156130a1575f5ffd5b81516109c381612976565b634e487b7160e01b5f52602160045260245ffd5b5f82516130d1818460208701612917565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f4fa37d5c3fc7776548c2846cbafe3d350dbf27f7f2ff5731c0762f3055cb3cc64736f6c634300081b0033