Files
smom-dbis-138/artifacts/contracts/bridge/adapters/evm/EVMAdapter.sol/EVMAdapter.json
2026-03-02 12:14:09 -08:00

730 lines
42 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "EVMAdapter",
"sourceName": "contracts/bridge/adapters/evm/EVMAdapter.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "address",
"name": "_bridge",
"type": "address"
},
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_chainName",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
}
],
"name": "EVMBridgeConfirmed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "destinationChainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "EVMBridgeInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "BRIDGE_OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "recipient",
"type": "bytes"
}
],
"name": "bridge",
"outputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "bridgeRequests",
"outputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destinationData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "enum IChainAdapter.BridgeStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "completedAt",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "cancelBridge",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "chainId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "chainName",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
}
],
"name": "confirmBridge",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
}
],
"name": "estimateFee",
"outputs": [
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "getBridgeStatus",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destinationData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "enum IChainAdapter.BridgeStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "completedAt",
"type": "uint256"
}
],
"internalType": "struct IChainAdapter.BridgeRequest",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getChainIdentifier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getChainType",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_isActive",
"type": "bool"
}
],
"name": "setIsActive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "universalBridge",
"outputs": [
{
"internalType": "contract UniversalCCIPBridge",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
}
],
"name": "validateDestination",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x60a060405234620002aa5762001ce8803803806200001d81620002af565b928339810190608081830312620002aa576200003981620002d5565b906020916200004a838301620002d5565b93604083015190606084015160018060401b0394858211620002aa570194601f92828488011215620002aa5786518681116200027f57601f1997620000958287018a168501620002af565b94828652848383010111620002aa57839060005b8381106200029557505060009185010152620000d6600195868055620000cf81620002ea565b506200036a565b50600380546001600160a01b0319166001600160a01b0390991698909817885560805281519485116200027f576002548481811c9116801562000274575b828210146200025e5783811162000212575b5080928511600114620001a85750839450908392916000946200019c575b50501b9160001990841b1c1916176002555b805460ff60a01b1916600160a01b1790556040516118bb90816200040d823960805181818161024e01528181610470015281816105b401528181610d130152610db40152f35b01519250388062000144565b929484908116600260005284600020946000905b88838310620001f75750505010620001de575b505050811b0160025562000156565b015160001983861b60f8161c19169055388080620001cf565b858701518855909601959485019487935090810190620001bc565b6002600052816000208480880160051c82019284891062000254575b0160051c019085905b8281106200024757505062000126565b6000815501859062000237565b925081926200022e565b634e487b7160e01b600052602260045260246000fd5b90607f169062000114565b634e487b7160e01b600052604160045260246000fd5b818101830151878201840152859201620000a9565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200027f57604052565b51906001600160a01b0382168203620002aa57565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200036657818052816020526040822081835260205260408220600160ff19825416179055339160008051602062001cc88339815191528180a4600190565b5090565b6001600160a01b031660008181527f0d4654aaffc87c2c9a3fd6a99770bc308fad799420104834ddcca8973d00903960205260408120549091907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff166200040757808352826020526040832082845260205260408320600160ff1982541617905560008051602062001cc8833981519152339380a4600190565b50509056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146112ee575080631c93b03a146112be57806322f3e2d414611298578063248a9ca3146112695780632750fc78146111d65780632b368ac21461118a5780632f2ff15d1461114b57806336568abe146111045780634be40fd1146110c957806360b414111461101f5780636cb4dfc014610fda5780637ecebe0014610fa05780638d75141514610e5c57806391542ad614610e3357806391d1485414610de6578063941b968214610d9057806397e67c3b14610d365780639a8a059214610cfb578063a1f2fce914610bd5578063a217fddf14610bb9578063d046b4e214610a4d578063d547741f14610a0c5763f33ffba31461011c57600080fd5b608036600319011261063f576101306114d9565b6044356001600160401b03811161063f5761014f903690600401611505565b6064356001600160401b03811161063f5761016e903690600401611505565b50506002600154146109fa57600260015560ff60035460a01c16156109c2576024351561098f576040516301b2d37f60e61b8152602060048201526024810182905281836044830137600060448383010152602081604481601f19601f8701168101030181305afa90811561064b57600091610960575b5015610925576101f581836115e2565b90336000526005602052604060002092835493600019851461090f57600185019055604051933360601b60208601526bffffffffffffffffffffffff19808760601b1660348701526024356048870152841660688601527f0000000000000000000000000000000000000000000000000000000000000000607c860152609c8501524260bc85015260bc84528360e08101106001600160401b0360e0860111176106575760e0840160405283516020850120936001600160a01b03861661078b57506024353410610753575b604051916102ce8361137b565b3383526001600160a01b038616602084015260243560408401526102f181611634565b916102ff60405193846113b2565b818352368282011161063f578160009260209283860137830101526060820152826080820152600160a08201524260c0820152600060e082015282600052600460205260406000209060018060a01b038151166bffffffffffffffffffffffff60a01b9081845416178355600183019060018060a01b03602084015116908254161790556040810151600283015560608101518051906001600160401b0382116106575781906103b26003860154611341565b601f8111610700575b50602090601f831160011461068e57600092610683575b50508160011b916000199060031b1c19161760038301555b6080810151600483015560a0810151600681101561066d5760079160e09160ff8019600587015416911617600585015560c081015160068501550151910155604051806101208101106001600160401b036101208301111761065757602081610120610594930160405260018060a01b0386168152602435828201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201528360601c606082015260006080820152600060a0820152600060c08201526040516104bf81611397565b6000815260e08201526040516104d481611397565b6000815261010082015260018060a01b036003541660405180809581946303f8d1cb60e21b835286600484015260018060a01b0381511660248401528681015160448401526001600160401b03604082015116606484015260018060a01b036060820151166084840152608081015160a484015260a0810151151560c484015260c0810151151560e484015261010061057f60e0830151610120610104870152610144860190611499565b91015183820360231901610124850152611499565b039134905af1801561064b5761061b575b506020926040519160243583527f00000000000000000000000000000000000000000000000000000000000000008584015260601c604083015260018060a01b031690827f718ccd86fa9e2db3b0ddf032894609ba94c677b884ca88d4093985ddc1dcc38560603393a460018055604051908152f35b602090813d8311610644575b61063181836113b2565b8101031261063f57386105a5565b600080fd5b503d610627565b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b0151905038806103d2565b9250600385016000526020600020906000935b601f19841685106106e5576001945083601f198116106106cc575b505050811b0160038301556103ea565b015160001960f88460031b161c191690553880806106bc565b818101518355602094850194600190930192909101906106a1565b909150600385016000526020600020601f840160051c81016020851061074c575b90849392915b601f830160051c8201811061073d5750506103bb565b60008155859450600101610727565b5080610721565b60405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152606490fd5b6323b872dd60e01b6101008201523361010482015230610124820152602435610144820152606460e082019081526001600160401b0361018083019081119111176106575761018081016040526107ee9060e0016001600160a01b038716611780565b60035460405163095ea7b360e01b602082018181526001600160a01b039093166024808401829052356044808501919091528352909260009081906108346064866113b2565b845190826001600160a01b038d165af161084c6117f2565b816108e0575b50806108cd575b15610867575b5050506102c1565b604051926020840152602483015260006044830152604482528160808101106001600160401b0360808401111761065757608082016040526108c5916108b6906001600160a01b038916611780565b6001600160a01b038716611780565b38808061085f565b506001600160a01b0388163b1515610859565b80518015925082156108f5575b505038610852565b610908925060208091830101910161164f565b38806108ed565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103232b9ba34b730ba34b7b760691b6044820152606490fd5b610982915060203d602011610988575b61097a81836113b2565b81019061164f565b386101e5565b503d610970565b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f4164617074657220696e61637469766560801b6044820152606490fd5b604051633ee5aeb560e01b8152600490fd5b3461063f57604036600319011261063f57610a4b600435610a2b6114ef565b90806000526000602052610a46600160406000200154611667565b61170b565b005b3461063f5760208060031936011261063f57600435600052600481526040600020600581019060ff825416600681101561066d578015908115610bae575b5015610b795780546001600160a01b0390811633819003610b3f576001830154821680610af15750506000808360028295948395541691015490828215610ae8575bf11561064b575b805460ff1916600517905560405160018152f35b506108fc610acd565b6002939093015460405163a9059cbb60e01b878201526001600160a01b039290921660248301526044808301919091528152610b3a92909150610b356064836113b2565b611780565b610ad4565b60405162461bcd60e51b81526004810186905260126024820152712737ba103932b8bab2b9ba1039b2b73232b960711b6044820152606490fd5b60405162461bcd60e51b815260048101849052600d60248201526c10d85b9b9bdd0818d85b98d95b609a1b6044820152606490fd5b600191501484610a8b565b3461063f57600036600319011261063f57602060405160008152f35b3461063f57604036600319011261063f573360009081527f0d4654aaffc87c2c9a3fd6a99770bc308fad799420104834ddcca8973d0090396020526040902054600435907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff1615610cdd5750806000526004602052604060002060058101805460ff8116600681101561066d57600103610ca75760029060ff1916179055600742910155602435907f3c8e13f10125f1f6ad8fea5c48cb7d4fcfea8a5711fed4b5cc6b859420467a22600080a3005b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073746174757360901b6044820152606490fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461063f57600036600319011261063f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461063f57600036600319011261063f5760405160408101908082106001600160401b0383111761065757610d8c91604052600381526245564d60e81b6020820152604051918291602083526020830190611499565b0390f35b3461063f57600036600319011261063f57610d8c610dac6113d3565b6040519182917f00000000000000000000000000000000000000000000000000000000000000008352604060208401526040830190611499565b3461063f57604036600319011261063f57610dff6114ef565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461063f57600036600319011261063f576003546040516001600160a01b039091168152602090f35b3461063f5760208060031936011261063f57600060e0604051610e7e8161137b565b82815282848201528260408201526060808201528260808201528260a08201528260c082015201526004356000526004815260406000209060405190610ec38261137b565b82546001600160a01b039081168352600184015481168284019081526002850154604085019081529194909290610efc60038201611532565b93606086019485526004820154946080870195865260ff6005840154169460a0880195600681101561066d57610f91938a918852600760068701549660c08c0197885201549660e08b019788526040519b8c9b828d525116908b0152511660408901525160608801525193610f7f610100958660808a0152610120890190611499565b955160a08801525160c08701906115d5565b5160e085015251908301520390f35b3461063f57602036600319011261063f576001600160a01b03610fc16114d9565b1660005260056020526020604060002054604051908152f35b3461063f57602036600319011261063f576004356001600160401b03811161063f5761101561100f6020923690600401611505565b90611613565b6040519015158152f35b3461063f57602036600319011261063f576004356000526004602052604060002060018060a01b039081815416916001820154169060028101549261106660038301611532565b916110bb6004820154936110ab60ff600585015416916007600686015495015495604051998a99610100928b5260208b015260408a01528060608a0152880190611499565b94608087015260a08601906115d5565b60c084015260e08301520390f35b3461063f57600036600319011261063f5760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b3461063f57604036600319011261063f5761111d6114ef565b336001600160a01b0382160361113957610a4b9060043561170b565b60405163334bd91960e11b8152600490fd5b3461063f57604036600319011261063f57610a4b60043561116a6114ef565b90806000526000602052611185600160406000200154611667565b61168d565b3461063f57606036600319011261063f576111a36114d9565b506044356001600160401b03811161063f576111c3903690600401611505565b5050602060405166038d7ea4c680008152f35b3461063f57602036600319011261063f5760043580151580910361063f573360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff161561124a576003805460ff60a01b191660a09290921b60ff60a01b16919091179055005b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b3461063f57602036600319011261063f5760043560005260006020526020600160406000200154604051908152f35b3461063f57600036600319011261063f57602060ff60035460a01c166040519015158152f35b3461063f57600036600319011261063f57610d8c6112da6113d3565b604051918291602083526020830190611499565b3461063f57602036600319011261063f576004359063ffffffff60e01b821680920361063f57602091637965db0b60e01b8114908115611330575b5015158152f35b6301ffc9a760e01b14905083611329565b90600182811c92168015611371575b602083101461135b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611350565b61010081019081106001600160401b0382111761065757604052565b602081019081106001600160401b0382111761065757604052565b90601f801991011681019081106001600160401b0382111761065757604052565b60405190600082600254916113e783611341565b808352926020906001908181169081156114755750600114611414575b5050611412925003836113b2565b565b91509260026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace936000925b82841061145d57506114129450505081016020013880611404565b85548885018301529485019487945092810192611442565b9150506020925061141294915060ff191682840152151560051b8201013880611404565b919082519283825260005b8481106114c5575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016114a4565b600435906001600160a01b038216820361063f57565b602435906001600160a01b038216820361063f57565b9181601f8401121561063f578235916001600160401b03831161063f576020838186019501011161063f57565b9060405191826000825461154581611341565b908184526020946001916001811690816000146115b35750600114611574575b505050611412925003836113b2565b600090815285812095935091905b81831061159b5750506114129350820101388080611565565b85548884018501529485019487945091830191611582565b9250505061141294925060ff191682840152151560051b820101388080611565565b90600682101561066d5752565b6bffffffffffffffffffffffff19903581811693926014811061160457505050565b60140360031b82901b16169150565b906014810361162d57611625916115e2565b60601c151590565b5050600090565b6001600160401b03811161065757601f01601f191660200190565b9081602091031261063f5751801515810361063f5790565b80600052600060205260406000203360005260205260ff6040600020541615610cdd5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461170657808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146117065780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b6000806117a99260018060a01b03169360208151910182865af16117a26117f2565b9083611822565b80519081151591826117d7575b50506117bf5750565b60249060405190635274afe760e01b82526004820152fd5b6117ea925060208091830101910161164f565b1538806117b6565b3d1561181d573d9061180382611634565b9161181160405193846113b2565b82523d6000602084013e565b606090565b90611849575080511561183757805190602001fd5b604051630a12f52160e11b8152600490fd5b8151158061187c575b61185a575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561185256fea2646970667358221220c0c7ff03592a8802ebbdebb1f79469a7b4d2c2648be51755411aeecaecb372f764736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146112ee575080631c93b03a146112be57806322f3e2d414611298578063248a9ca3146112695780632750fc78146111d65780632b368ac21461118a5780632f2ff15d1461114b57806336568abe146111045780634be40fd1146110c957806360b414111461101f5780636cb4dfc014610fda5780637ecebe0014610fa05780638d75141514610e5c57806391542ad614610e3357806391d1485414610de6578063941b968214610d9057806397e67c3b14610d365780639a8a059214610cfb578063a1f2fce914610bd5578063a217fddf14610bb9578063d046b4e214610a4d578063d547741f14610a0c5763f33ffba31461011c57600080fd5b608036600319011261063f576101306114d9565b6044356001600160401b03811161063f5761014f903690600401611505565b6064356001600160401b03811161063f5761016e903690600401611505565b50506002600154146109fa57600260015560ff60035460a01c16156109c2576024351561098f576040516301b2d37f60e61b8152602060048201526024810182905281836044830137600060448383010152602081604481601f19601f8701168101030181305afa90811561064b57600091610960575b5015610925576101f581836115e2565b90336000526005602052604060002092835493600019851461090f57600185019055604051933360601b60208601526bffffffffffffffffffffffff19808760601b1660348701526024356048870152841660688601527f0000000000000000000000000000000000000000000000000000000000000000607c860152609c8501524260bc85015260bc84528360e08101106001600160401b0360e0860111176106575760e0840160405283516020850120936001600160a01b03861661078b57506024353410610753575b604051916102ce8361137b565b3383526001600160a01b038616602084015260243560408401526102f181611634565b916102ff60405193846113b2565b818352368282011161063f578160009260209283860137830101526060820152826080820152600160a08201524260c0820152600060e082015282600052600460205260406000209060018060a01b038151166bffffffffffffffffffffffff60a01b9081845416178355600183019060018060a01b03602084015116908254161790556040810151600283015560608101518051906001600160401b0382116106575781906103b26003860154611341565b601f8111610700575b50602090601f831160011461068e57600092610683575b50508160011b916000199060031b1c19161760038301555b6080810151600483015560a0810151600681101561066d5760079160e09160ff8019600587015416911617600585015560c081015160068501550151910155604051806101208101106001600160401b036101208301111761065757602081610120610594930160405260018060a01b0386168152602435828201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201528360601c606082015260006080820152600060a0820152600060c08201526040516104bf81611397565b6000815260e08201526040516104d481611397565b6000815261010082015260018060a01b036003541660405180809581946303f8d1cb60e21b835286600484015260018060a01b0381511660248401528681015160448401526001600160401b03604082015116606484015260018060a01b036060820151166084840152608081015160a484015260a0810151151560c484015260c0810151151560e484015261010061057f60e0830151610120610104870152610144860190611499565b91015183820360231901610124850152611499565b039134905af1801561064b5761061b575b506020926040519160243583527f00000000000000000000000000000000000000000000000000000000000000008584015260601c604083015260018060a01b031690827f718ccd86fa9e2db3b0ddf032894609ba94c677b884ca88d4093985ddc1dcc38560603393a460018055604051908152f35b602090813d8311610644575b61063181836113b2565b8101031261063f57386105a5565b600080fd5b503d610627565b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b0151905038806103d2565b9250600385016000526020600020906000935b601f19841685106106e5576001945083601f198116106106cc575b505050811b0160038301556103ea565b015160001960f88460031b161c191690553880806106bc565b818101518355602094850194600190930192909101906106a1565b909150600385016000526020600020601f840160051c81016020851061074c575b90849392915b601f830160051c8201811061073d5750506103bb565b60008155859450600101610727565b5080610721565b60405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152606490fd5b6323b872dd60e01b6101008201523361010482015230610124820152602435610144820152606460e082019081526001600160401b0361018083019081119111176106575761018081016040526107ee9060e0016001600160a01b038716611780565b60035460405163095ea7b360e01b602082018181526001600160a01b039093166024808401829052356044808501919091528352909260009081906108346064866113b2565b845190826001600160a01b038d165af161084c6117f2565b816108e0575b50806108cd575b15610867575b5050506102c1565b604051926020840152602483015260006044830152604482528160808101106001600160401b0360808401111761065757608082016040526108c5916108b6906001600160a01b038916611780565b6001600160a01b038716611780565b38808061085f565b506001600160a01b0388163b1515610859565b80518015925082156108f5575b505038610852565b610908925060208091830101910161164f565b38806108ed565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103232b9ba34b730ba34b7b760691b6044820152606490fd5b610982915060203d602011610988575b61097a81836113b2565b81019061164f565b386101e5565b503d610970565b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601060248201526f4164617074657220696e61637469766560801b6044820152606490fd5b604051633ee5aeb560e01b8152600490fd5b3461063f57604036600319011261063f57610a4b600435610a2b6114ef565b90806000526000602052610a46600160406000200154611667565b61170b565b005b3461063f5760208060031936011261063f57600435600052600481526040600020600581019060ff825416600681101561066d578015908115610bae575b5015610b795780546001600160a01b0390811633819003610b3f576001830154821680610af15750506000808360028295948395541691015490828215610ae8575bf11561064b575b805460ff1916600517905560405160018152f35b506108fc610acd565b6002939093015460405163a9059cbb60e01b878201526001600160a01b039290921660248301526044808301919091528152610b3a92909150610b356064836113b2565b611780565b610ad4565b60405162461bcd60e51b81526004810186905260126024820152712737ba103932b8bab2b9ba1039b2b73232b960711b6044820152606490fd5b60405162461bcd60e51b815260048101849052600d60248201526c10d85b9b9bdd0818d85b98d95b609a1b6044820152606490fd5b600191501484610a8b565b3461063f57600036600319011261063f57602060405160008152f35b3461063f57604036600319011261063f573360009081527f0d4654aaffc87c2c9a3fd6a99770bc308fad799420104834ddcca8973d0090396020526040902054600435907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff1615610cdd5750806000526004602052604060002060058101805460ff8116600681101561066d57600103610ca75760029060ff1916179055600742910155602435907f3c8e13f10125f1f6ad8fea5c48cb7d4fcfea8a5711fed4b5cc6b859420467a22600080a3005b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073746174757360901b6044820152606490fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3461063f57600036600319011261063f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461063f57600036600319011261063f5760405160408101908082106001600160401b0383111761065757610d8c91604052600381526245564d60e81b6020820152604051918291602083526020830190611499565b0390f35b3461063f57600036600319011261063f57610d8c610dac6113d3565b6040519182917f00000000000000000000000000000000000000000000000000000000000000008352604060208401526040830190611499565b3461063f57604036600319011261063f57610dff6114ef565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461063f57600036600319011261063f576003546040516001600160a01b039091168152602090f35b3461063f5760208060031936011261063f57600060e0604051610e7e8161137b565b82815282848201528260408201526060808201528260808201528260a08201528260c082015201526004356000526004815260406000209060405190610ec38261137b565b82546001600160a01b039081168352600184015481168284019081526002850154604085019081529194909290610efc60038201611532565b93606086019485526004820154946080870195865260ff6005840154169460a0880195600681101561066d57610f91938a918852600760068701549660c08c0197885201549660e08b019788526040519b8c9b828d525116908b0152511660408901525160608801525193610f7f610100958660808a0152610120890190611499565b955160a08801525160c08701906115d5565b5160e085015251908301520390f35b3461063f57602036600319011261063f576001600160a01b03610fc16114d9565b1660005260056020526020604060002054604051908152f35b3461063f57602036600319011261063f576004356001600160401b03811161063f5761101561100f6020923690600401611505565b90611613565b6040519015158152f35b3461063f57602036600319011261063f576004356000526004602052604060002060018060a01b039081815416916001820154169060028101549261106660038301611532565b916110bb6004820154936110ab60ff600585015416916007600686015495015495604051998a99610100928b5260208b015260408a01528060608a0152880190611499565b94608087015260a08601906115d5565b60c084015260e08301520390f35b3461063f57600036600319011261063f5760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b3461063f57604036600319011261063f5761111d6114ef565b336001600160a01b0382160361113957610a4b9060043561170b565b60405163334bd91960e11b8152600490fd5b3461063f57604036600319011261063f57610a4b60043561116a6114ef565b90806000526000602052611185600160406000200154611667565b61168d565b3461063f57606036600319011261063f576111a36114d9565b506044356001600160401b03811161063f576111c3903690600401611505565b5050602060405166038d7ea4c680008152f35b3461063f57602036600319011261063f5760043580151580910361063f573360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff161561124a576003805460ff60a01b191660a09290921b60ff60a01b16919091179055005b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b3461063f57602036600319011261063f5760043560005260006020526020600160406000200154604051908152f35b3461063f57600036600319011261063f57602060ff60035460a01c166040519015158152f35b3461063f57600036600319011261063f57610d8c6112da6113d3565b604051918291602083526020830190611499565b3461063f57602036600319011261063f576004359063ffffffff60e01b821680920361063f57602091637965db0b60e01b8114908115611330575b5015158152f35b6301ffc9a760e01b14905083611329565b90600182811c92168015611371575b602083101461135b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611350565b61010081019081106001600160401b0382111761065757604052565b602081019081106001600160401b0382111761065757604052565b90601f801991011681019081106001600160401b0382111761065757604052565b60405190600082600254916113e783611341565b808352926020906001908181169081156114755750600114611414575b5050611412925003836113b2565b565b91509260026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace936000925b82841061145d57506114129450505081016020013880611404565b85548885018301529485019487945092810192611442565b9150506020925061141294915060ff191682840152151560051b8201013880611404565b919082519283825260005b8481106114c5575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016114a4565b600435906001600160a01b038216820361063f57565b602435906001600160a01b038216820361063f57565b9181601f8401121561063f578235916001600160401b03831161063f576020838186019501011161063f57565b9060405191826000825461154581611341565b908184526020946001916001811690816000146115b35750600114611574575b505050611412925003836113b2565b600090815285812095935091905b81831061159b5750506114129350820101388080611565565b85548884018501529485019487945091830191611582565b9250505061141294925060ff191682840152151560051b820101388080611565565b90600682101561066d5752565b6bffffffffffffffffffffffff19903581811693926014811061160457505050565b60140360031b82901b16169150565b906014810361162d57611625916115e2565b60601c151590565b5050600090565b6001600160401b03811161065757601f01601f191660200190565b9081602091031261063f5751801515810361063f5790565b80600052600060205260406000203360005260205260ff6040600020541615610cdd5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461170657808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146117065780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b6000806117a99260018060a01b03169360208151910182865af16117a26117f2565b9083611822565b80519081151591826117d7575b50506117bf5750565b60249060405190635274afe760e01b82526004820152fd5b6117ea925060208091830101910161164f565b1538806117b6565b3d1561181d573d9061180382611634565b9161181160405193846113b2565b82523d6000602084013e565b606090565b90611849575080511561183757805190602001fd5b604051630a12f52160e11b8152600490fd5b8151158061187c575b61185a575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561185256fea2646970667358221220c0c7ff03592a8802ebbdebb1f79469a7b4d2c2648be51755411aeecaecb372f764736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}