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

893 lines
45 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "BridgeRegistry",
"sourceName": "contracts/bridge/interop/BridgeRegistry.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"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": [],
"name": "DestinationNotFound",
"type": "error"
},
{
"inputs": [],
"name": "EnforcedPause",
"type": "error"
},
{
"inputs": [],
"name": "ExpectedPause",
"type": "error"
},
{
"inputs": [],
"name": "InvalidAmount",
"type": "error"
},
{
"inputs": [],
"name": "InvalidDestination",
"type": "error"
},
{
"inputs": [],
"name": "InvalidFee",
"type": "error"
},
{
"inputs": [],
"name": "TokenNotAllowed",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "chainName",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "minFinalityBlocks",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timeoutSeconds",
"type": "uint256"
}
],
"name": "DestinationRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "enabled",
"type": "bool"
}
],
"name": "DestinationUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"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"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint256",
"name": "settlementTime",
"type": "uint256"
}
],
"name": "RouteHealthUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "riskLevel",
"type": "uint8"
}
],
"name": "TokenRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "allowed",
"type": "bool"
}
],
"name": "TokenUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REGISTRAR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowedTokens",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "destinationChainIds",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "destinations",
"outputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "string",
"name": "chainName",
"type": "string"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "minFinalityBlocks",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeoutSeconds",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "feeRecipient",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAllDestinations",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAllTokens",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "getRouteHealthScore",
"outputs": [
{
"internalType": "uint256",
"name": "score",
"type": "uint256"
}
],
"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": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "string",
"name": "chainName",
"type": "string"
},
{
"internalType": "uint256",
"name": "minFinalityBlocks",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeoutSeconds",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "feeRecipient",
"type": "address"
}
],
"name": "registerDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "allowedDestinations",
"type": "uint256[]"
},
{
"internalType": "uint8",
"name": "riskLevel",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "bridgeFeeBps",
"type": "uint256"
}
],
"name": "registerToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "registeredTokens",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"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": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "routeHealth",
"outputs": [
{
"internalType": "uint256",
"name": "successCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "failureCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastUpdate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "avgSettlementTime",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "tokenConfigs",
"outputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "allowed",
"type": "bool"
},
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "riskLevel",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "bridgeFeeBps",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
}
],
"name": "updateDestination",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"internalType": "uint256",
"name": "settlementTime",
"type": "uint256"
}
],
"name": "updateRouteHealth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "bool",
"name": "allowed",
"type": "bool"
}
],
"name": "updateToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "destinationChainId",
"type": "uint256"
}
],
"name": "validateBridgeRequest",
"outputs": [
{
"internalType": "bool",
"name": "isValid",
"type": "bool"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6080346200008657601f62001b8a38819003918201601f19168301916001600160401b038311848410176200008b578084926020946040528339810103126200008657516001600160a01b03811681036200008657620000759060ff19600154166001556200006e81620000a1565b5062000121565b506040516119a69081620001c48239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200011d57818052816020526040822081835260205260408220600160ff19825416179055339160008051602062001b6a8339815191528180a4600190565b5090565b6001600160a01b031660008181527f01ddc098da42acdf4176da08ec75800bc0fb2bce2be978b2037bcb0ae696651960205260408120549091907fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092389060ff16620001be57808352826020526040832082845260205260408320600160ff1982541617905560008051602062001b6a833981519152339380a4600190565b50509056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146111e3575080630c69f089146111a65780630ce7fc031461116f57806316affdcf146110085780631b69dc5f14610f90578063248a9ca314610f615780632a5c792a14610e995780632f298cb114610df75780632f2ff15d14610db857806336568abe14610d715780633f4ba83a14610d0757806344acb03414610c515780635c975abb14610c2e5780637747592214610c005780638456cb5914610b935780638dd4ba2e14610aca57806391d1485414610a7d5780639a0ba2ea14610a3b5780639fd9f829146109d1578063a217fddf146109b5578063b3cbf396146108e4578063c66ab8f214610566578063c79083a6146101fd578063d547741f146101bc578063e744092e1461017d5763f68e95531461013d57600080fd5b346101785760003660031901126101785760206040517fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092388152f35b600080fd5b34610178576020366003190112610178576001600160a01b0361019e611236565b166000526005602052602060ff604060002054166040519015158152f35b34610178576040366003190112610178576101fb6004356101db61124c565b908060005260006020526101f6600160406000200154611857565b6118fb565b005b346101785760c036600319011261017857610216611236565b67ffffffffffffffff60643511610178573660236064350112156101785767ffffffffffffffff6064356004013511610178573660246064356004013560051b606435010111610178576084359060ff82168203610178576102766117a3565b61271060a435116105545760405161028d8161132f565b60018060a01b038216815260016020820152602435604082015260443560608201526040516102c860206064356004013560051b018261134b565b60643560048101358252602401602082015b60246064356004013560051b60643501018210610544575050608082015260ff831660a08083019190915260a43560c08301526001600160a01b03838116600090815260036020908152604090912084518154928601516001600160a81b031990931693169290921790151590921b60ff60a01b169190911781556040820151600182015560608201516002820155608082015180519067ffffffffffffffff82116104c357600160401b82116104c3576020906003840154836003860155808410610524575b500160038301600052602060002060005b8381106105105750505050600560c0600483019360ff60a0820151169460ff199586825416179055015191015560018060a01b03821660005260056020526001604060002091825416179055600080600754915b8281106104d9575b501561045f575b5060607fe0f9d9f6513407c33f321aab72163ef2b4d57bf4185ea0aaf27e6d21d8b10bfc9160ff604051946024358652604435602087015216604085015260018060a01b031692a2005b600160401b8110156104c3577fe0f9d9f6513407c33f321aab72163ef2b4d57bf4185ea0aaf27e6d21d8b10bfc9161049f826001606094016007556112af565b81546001600160a01b0384811660039390931b92831b921b19161790559150610415565b634e487b7160e01b600052604160045260246000fd5b6104e2816112af565b905460039190911b1c6001600160a01b039081169085161461050657600101610406565b505060018461040e565b6001906020845194019381840155016103b2565b61053e90600386016000528484600020918201910161178c565b876103a1565b81358152602091820191016102da565b6040516358d620b360e01b8152600490fd5b346101785760c03660031901126101785760243567ffffffffffffffff811161017857366023820112156101785767ffffffffffffffff816004013511610178573660248260040135830101116101785760a435906001600160a01b0382168203610178576105d36117a3565b6127106084351161055457604051916105eb8361132f565b60043583526040519061060c6020601f19601f86600401350116018361134b565b60048301358083526024840160208401376000602084600401358401015260208401918252600160408501526044356060850152606435608085015260843560a085015260018060a01b031660c08401526004356000526002602052604060002090835182555192835167ffffffffffffffff81116104c35761069260018401546112f5565b601f81116108a4575b506020601f821160011461083557819293949560009261082a575b50508160011b916000199060031b1c19161760018301555b6106ed60408201511515600284019060ff801983541691151516179055565b6006600392606083015160038201556080830151600482015560a08301516005820155019060c060018060a01b03910151166bffffffffffffffffffffffff60a01b82541617905560008091600654925b8381106107ff575b5050156107c6575b507ff745b9d42adc396c1a5d208d09f9e127eb77497b84d13cf34cdd1ce4fea464be60405160608152826004013560608201528260040135602484016080830137600060808460040135830101526044356020820152606435604082015260808160043594601f8019916004013501168101030190a2005b600160401b8110156104c3578060016107e29201600655611262565b81549060031b90600435821b91600019901b19161790558161074e565b61080881611262565b600435915490841b1c1461081e5760010161073e565b50505060018380610746565b0151905085806106b6565b6001840160005260206000209060005b601f198416811061088c575060019394959683601f19811610610873575b505050811b0160018301556106ce565b015160001960f88460031b161c19169055858080610863565b9091602060018192858b015181550193019101610845565b6108d490600185016000526020600020601f840160051c810191602085106108da575b601f0160051c019061178c565b8561069b565b90915081906108c7565b34610178576040366003190112610178576108fd611236565b6109056112e6565b61090d6117a3565b6001600160a01b03918216600081815260036020526040902054909216156109a3576000828152600360209081526040909120805460ff60a01b191683151560a01b60ff60a01b161790557fdcb2804db02b95bdd568fd11a31c5577ffdf36538c0f670e92930d9c1e8518ab91600582526109988160406000209060ff801983541691151516179055565b6040519015158152a2005b60405163514e24c360e11b8152600490fd5b3461017857600036600319011261017857602060405160008152f35b34610178576040366003190112610178576109ea61124c565b600435600052600460205260406000209060018060a01b0316600052602052608060406000208054906001810154906003600282015491015491604051938452602084015260408301526060820152f35b346101785760203660031901126101785760043560075481101561017857610a646020916112af565b905460405160039290921b1c6001600160a01b03168152f35b3461017857604036600319011261017857610a9661124c565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b34610178576020806003193601126101785760043560005260026020526040600020805490610afb6001820161136d565b60ff600283015416916003810154906004810154600582015491600660018060a01b03910154169260405196875260e060208801528451948560e089015260005b868110610b7e57505086975061010096956000888789010152151560408701526060860152608085015260a084015260c0830152601f80199101168101030190f35b8181018a015189820161010001528901610b3c565b3461017857600036600319011261017857610bac61181d565b60015460ff8116610bee5760019060ff1916176001557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b60405163d93c066560e01b8152600490fd5b34610178576040366003190112610178576020610c26610c1e61124c565b6004356116c6565b604051908152f35b3461017857600036600319011261017857602060ff600154166040519015158152f35b3461017857600036600319011261017857604051806006548083526020809301809160066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9060005b86828210610cf3578686610cb38288038361134b565b604051928392818401908285525180915260408401929160005b828110610cdc57505050500390f35b835185528695509381019392810192600101610ccd565b835485529093019260019283019201610c9d565b3461017857600036600319011261017857610d2061181d565b60015460ff811615610d5f5760ff19166001557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b604051638dfc202b60e01b8152600490fd5b3461017857604036600319011261017857610d8a61124c565b336001600160a01b03821603610da6576101fb906004356118fb565b60405163334bd91960e11b8152600490fd5b34610178576040366003190112610178576101fb600435610dd761124c565b90806000526000602052610df2600160406000200154611857565b61187d565b3461017857604036600319011261017857600435610e136112e6565b610e1b6117a3565b8160005260026020526040600020541580610e90575b610e7e5760207fdc736f6cd05ab410329cc6c864dc5f7230c3ca81b584f1ab4d9cf817839de9069183600052600282526109988160026040600020019060ff801983541691151516179055565b6040516327da4d2160e01b8152600490fd5b50811515610e31565b3461017857600036600319011261017857604051806007548083526020809301809160076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889060005b86828210610f44578686610efb8288038361134b565b604051928392818401908285525180915260408401929160005b828110610f2457505050500390f35b83516001600160a01b031685528695509381019392810192600101610f15565b83546001600160a01b031685529093019260019283019201610ee5565b346101785760203660031901126101785760043560005260006020526020600160406000200154604051908152f35b346101785760203660031901126101785760c06001600160a01b0380610fb4611236565b1660005260036020526040600020805490600181015460028201549060ff60058160048601541694015494604051968116875260a01c161515602086015260408501526060840152608083015260a0820152f35b346101785760803660031901126101785760043561102461124c565b9060443580151581036101785760643561103c6117a3565b82600052600460205260406000209360018060a01b031693846000526020526040600020918060001461113f5761107383546116b7565b80845592600184036110d2577f33853ee252765e6ebf1edd5f0ad5b9398efa2732351ca470bb9b14ea25c4fe7593508260038201555b6002429101556110cd60405192839283602090939291936040810194151581520152565b0390a3005b600381018054946000198101908082116111295761111d86611118611122947f33853ee252765e6ebf1edd5f0ad5b9398efa2732351ca470bb9b14ea25c4fe759a611412565b611445565b611425565b90556110a9565b634e487b7160e01b600052601160045260246000fd5b8260017f33853ee252765e6ebf1edd5f0ad5b9398efa2732351ca470bb9b14ea25c4fe75940161112281546116b7565b346101785760203660031901126101785760043560065481101561017857611198602091611262565b90546040519160031b1c8152f35b34610178576060366003190112610178576111cf6111c2611236565b6044359060243590611452565b604080519215158352602083019190915290f35b34610178576020366003190112610178576004359063ffffffff60e01b821680920361017857602091637965db0b60e01b8114908115611225575b5015158152f35b6301ffc9a760e01b1490508361121e565b600435906001600160a01b038216820361017857565b602435906001600160a01b038216820361017857565b6006548110156112995760066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600090565b634e487b7160e01b600052603260045260246000fd5b6007548110156112995760076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880190600090565b60243590811515820361017857565b90600182811c92168015611325575b602083101461130f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611304565b60e0810190811067ffffffffffffffff8211176104c357604052565b90601f8019910116810190811067ffffffffffffffff8211176104c357604052565b90604051918260008254611380816112f5565b908184526020946001916001811690816000146113f057506001146113b1575b5050506113af9250038361134b565b565b600090815285812095935091905b8183106113d85750506113af93508201013880806113a0565b855488840185015294850194879450918301916113bf565b925050506113af94925060ff191682840152151560051b8201013880806113a0565b8181029291811591840414171561112957565b811561142f570490565b634e487b7160e01b600052601260045260246000fd5b9190820180921161112957565b919290600690600085815260209060028252604096878220928851986114778a61132f565b84548a526001996114898b870161136d565b8382015260ff60028701541615998a1583830152600387015460608301526004870154608083015260059a60058801549260a0810198848a5260018060a01b039b8c9101541660c08201525115806116ae575b61169d5761164e5790888c9594939216908115611680575085526003825280852081516115088161132f565b815499808b16825260ff8583019b60a01c1615158b528683015492848301938452600281015494606084019586526003820190519081998a928983549182815201928d52898d20918d5b8b83821061166a5750505050506005929161156e91038a61134b565b88608085015260ff60048201541660a085015201549a60c083019b8c52511591821561165e575b505061164e57518710908115611643575b5061163557839284998b82519b5b8c8110611604575b50505050505090919293949550156115fb57506115f16115f893926115e8926127109384915183611412565b04935190611412565b0490611445565b90565b94505050508190565b858582851b860101511461161a57018c906115b4565b50999a508a9994503893508392508291508190508b816115bc565b505050955050505090508190565b9050518611386115a6565b5050505050955050505090508190565b51161590503880611595565b845486528e965090940193928101928101611552565b9796505050505050506127109394506116999250611412565b0490565b505050505050955050505090508190565b508515156114dc565b60001981146111295760010190565b919060009283526004602052604083209060018060a01b0316835260205260408220604051906080820182811067ffffffffffffffff821117611778579061173491604052805480845260036001830154928360208701526002810154604087015201546060850152611445565b90811561176f57516127109081810291818304149015171561175b576115f8929350611425565b634e487b7160e01b84526011600452602484fd5b50611388925050565b634e487b7160e01b85526041600452602485fd5b818110611797575050565b6000815560010161178c565b3360009081527f01ddc098da42acdf4176da08ec75800bc0fb2bce2be978b2037bcb0ae696651960205260409020547fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092389060ff16156117ff5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156117ff5750565b80600052600060205260406000203360005260205260ff60406000205416156117ff5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146118f657808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146118f65780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fea264697066735822122073da332471340881bc4b12fb6c6c514fa82892569eb0556b90e6267cab2e001d64736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146111e3575080630c69f089146111a65780630ce7fc031461116f57806316affdcf146110085780631b69dc5f14610f90578063248a9ca314610f615780632a5c792a14610e995780632f298cb114610df75780632f2ff15d14610db857806336568abe14610d715780633f4ba83a14610d0757806344acb03414610c515780635c975abb14610c2e5780637747592214610c005780638456cb5914610b935780638dd4ba2e14610aca57806391d1485414610a7d5780639a0ba2ea14610a3b5780639fd9f829146109d1578063a217fddf146109b5578063b3cbf396146108e4578063c66ab8f214610566578063c79083a6146101fd578063d547741f146101bc578063e744092e1461017d5763f68e95531461013d57600080fd5b346101785760003660031901126101785760206040517fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092388152f35b600080fd5b34610178576020366003190112610178576001600160a01b0361019e611236565b166000526005602052602060ff604060002054166040519015158152f35b34610178576040366003190112610178576101fb6004356101db61124c565b908060005260006020526101f6600160406000200154611857565b6118fb565b005b346101785760c036600319011261017857610216611236565b67ffffffffffffffff60643511610178573660236064350112156101785767ffffffffffffffff6064356004013511610178573660246064356004013560051b606435010111610178576084359060ff82168203610178576102766117a3565b61271060a435116105545760405161028d8161132f565b60018060a01b038216815260016020820152602435604082015260443560608201526040516102c860206064356004013560051b018261134b565b60643560048101358252602401602082015b60246064356004013560051b60643501018210610544575050608082015260ff831660a08083019190915260a43560c08301526001600160a01b03838116600090815260036020908152604090912084518154928601516001600160a81b031990931693169290921790151590921b60ff60a01b169190911781556040820151600182015560608201516002820155608082015180519067ffffffffffffffff82116104c357600160401b82116104c3576020906003840154836003860155808410610524575b500160038301600052602060002060005b8381106105105750505050600560c0600483019360ff60a0820151169460ff199586825416179055015191015560018060a01b03821660005260056020526001604060002091825416179055600080600754915b8281106104d9575b501561045f575b5060607fe0f9d9f6513407c33f321aab72163ef2b4d57bf4185ea0aaf27e6d21d8b10bfc9160ff604051946024358652604435602087015216604085015260018060a01b031692a2005b600160401b8110156104c3577fe0f9d9f6513407c33f321aab72163ef2b4d57bf4185ea0aaf27e6d21d8b10bfc9161049f826001606094016007556112af565b81546001600160a01b0384811660039390931b92831b921b19161790559150610415565b634e487b7160e01b600052604160045260246000fd5b6104e2816112af565b905460039190911b1c6001600160a01b039081169085161461050657600101610406565b505060018461040e565b6001906020845194019381840155016103b2565b61053e90600386016000528484600020918201910161178c565b876103a1565b81358152602091820191016102da565b6040516358d620b360e01b8152600490fd5b346101785760c03660031901126101785760243567ffffffffffffffff811161017857366023820112156101785767ffffffffffffffff816004013511610178573660248260040135830101116101785760a435906001600160a01b0382168203610178576105d36117a3565b6127106084351161055457604051916105eb8361132f565b60043583526040519061060c6020601f19601f86600401350116018361134b565b60048301358083526024840160208401376000602084600401358401015260208401918252600160408501526044356060850152606435608085015260843560a085015260018060a01b031660c08401526004356000526002602052604060002090835182555192835167ffffffffffffffff81116104c35761069260018401546112f5565b601f81116108a4575b506020601f821160011461083557819293949560009261082a575b50508160011b916000199060031b1c19161760018301555b6106ed60408201511515600284019060ff801983541691151516179055565b6006600392606083015160038201556080830151600482015560a08301516005820155019060c060018060a01b03910151166bffffffffffffffffffffffff60a01b82541617905560008091600654925b8381106107ff575b5050156107c6575b507ff745b9d42adc396c1a5d208d09f9e127eb77497b84d13cf34cdd1ce4fea464be60405160608152826004013560608201528260040135602484016080830137600060808460040135830101526044356020820152606435604082015260808160043594601f8019916004013501168101030190a2005b600160401b8110156104c3578060016107e29201600655611262565b81549060031b90600435821b91600019901b19161790558161074e565b61080881611262565b600435915490841b1c1461081e5760010161073e565b50505060018380610746565b0151905085806106b6565b6001840160005260206000209060005b601f198416811061088c575060019394959683601f19811610610873575b505050811b0160018301556106ce565b015160001960f88460031b161c19169055858080610863565b9091602060018192858b015181550193019101610845565b6108d490600185016000526020600020601f840160051c810191602085106108da575b601f0160051c019061178c565b8561069b565b90915081906108c7565b34610178576040366003190112610178576108fd611236565b6109056112e6565b61090d6117a3565b6001600160a01b03918216600081815260036020526040902054909216156109a3576000828152600360209081526040909120805460ff60a01b191683151560a01b60ff60a01b161790557fdcb2804db02b95bdd568fd11a31c5577ffdf36538c0f670e92930d9c1e8518ab91600582526109988160406000209060ff801983541691151516179055565b6040519015158152a2005b60405163514e24c360e11b8152600490fd5b3461017857600036600319011261017857602060405160008152f35b34610178576040366003190112610178576109ea61124c565b600435600052600460205260406000209060018060a01b0316600052602052608060406000208054906001810154906003600282015491015491604051938452602084015260408301526060820152f35b346101785760203660031901126101785760043560075481101561017857610a646020916112af565b905460405160039290921b1c6001600160a01b03168152f35b3461017857604036600319011261017857610a9661124c565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b34610178576020806003193601126101785760043560005260026020526040600020805490610afb6001820161136d565b60ff600283015416916003810154906004810154600582015491600660018060a01b03910154169260405196875260e060208801528451948560e089015260005b868110610b7e57505086975061010096956000888789010152151560408701526060860152608085015260a084015260c0830152601f80199101168101030190f35b8181018a015189820161010001528901610b3c565b3461017857600036600319011261017857610bac61181d565b60015460ff8116610bee5760019060ff1916176001557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b60405163d93c066560e01b8152600490fd5b34610178576040366003190112610178576020610c26610c1e61124c565b6004356116c6565b604051908152f35b3461017857600036600319011261017857602060ff600154166040519015158152f35b3461017857600036600319011261017857604051806006548083526020809301809160066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9060005b86828210610cf3578686610cb38288038361134b565b604051928392818401908285525180915260408401929160005b828110610cdc57505050500390f35b835185528695509381019392810192600101610ccd565b835485529093019260019283019201610c9d565b3461017857600036600319011261017857610d2061181d565b60015460ff811615610d5f5760ff19166001557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b604051638dfc202b60e01b8152600490fd5b3461017857604036600319011261017857610d8a61124c565b336001600160a01b03821603610da6576101fb906004356118fb565b60405163334bd91960e11b8152600490fd5b34610178576040366003190112610178576101fb600435610dd761124c565b90806000526000602052610df2600160406000200154611857565b61187d565b3461017857604036600319011261017857600435610e136112e6565b610e1b6117a3565b8160005260026020526040600020541580610e90575b610e7e5760207fdc736f6cd05ab410329cc6c864dc5f7230c3ca81b584f1ab4d9cf817839de9069183600052600282526109988160026040600020019060ff801983541691151516179055565b6040516327da4d2160e01b8152600490fd5b50811515610e31565b3461017857600036600319011261017857604051806007548083526020809301809160076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889060005b86828210610f44578686610efb8288038361134b565b604051928392818401908285525180915260408401929160005b828110610f2457505050500390f35b83516001600160a01b031685528695509381019392810192600101610f15565b83546001600160a01b031685529093019260019283019201610ee5565b346101785760203660031901126101785760043560005260006020526020600160406000200154604051908152f35b346101785760203660031901126101785760c06001600160a01b0380610fb4611236565b1660005260036020526040600020805490600181015460028201549060ff60058160048601541694015494604051968116875260a01c161515602086015260408501526060840152608083015260a0820152f35b346101785760803660031901126101785760043561102461124c565b9060443580151581036101785760643561103c6117a3565b82600052600460205260406000209360018060a01b031693846000526020526040600020918060001461113f5761107383546116b7565b80845592600184036110d2577f33853ee252765e6ebf1edd5f0ad5b9398efa2732351ca470bb9b14ea25c4fe7593508260038201555b6002429101556110cd60405192839283602090939291936040810194151581520152565b0390a3005b600381018054946000198101908082116111295761111d86611118611122947f33853ee252765e6ebf1edd5f0ad5b9398efa2732351ca470bb9b14ea25c4fe759a611412565b611445565b611425565b90556110a9565b634e487b7160e01b600052601160045260246000fd5b8260017f33853ee252765e6ebf1edd5f0ad5b9398efa2732351ca470bb9b14ea25c4fe75940161112281546116b7565b346101785760203660031901126101785760043560065481101561017857611198602091611262565b90546040519160031b1c8152f35b34610178576060366003190112610178576111cf6111c2611236565b6044359060243590611452565b604080519215158352602083019190915290f35b34610178576020366003190112610178576004359063ffffffff60e01b821680920361017857602091637965db0b60e01b8114908115611225575b5015158152f35b6301ffc9a760e01b1490508361121e565b600435906001600160a01b038216820361017857565b602435906001600160a01b038216820361017857565b6006548110156112995760066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190600090565b634e487b7160e01b600052603260045260246000fd5b6007548110156112995760076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880190600090565b60243590811515820361017857565b90600182811c92168015611325575b602083101461130f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611304565b60e0810190811067ffffffffffffffff8211176104c357604052565b90601f8019910116810190811067ffffffffffffffff8211176104c357604052565b90604051918260008254611380816112f5565b908184526020946001916001811690816000146113f057506001146113b1575b5050506113af9250038361134b565b565b600090815285812095935091905b8183106113d85750506113af93508201013880806113a0565b855488840185015294850194879450918301916113bf565b925050506113af94925060ff191682840152151560051b8201013880806113a0565b8181029291811591840414171561112957565b811561142f570490565b634e487b7160e01b600052601260045260246000fd5b9190820180921161112957565b919290600690600085815260209060028252604096878220928851986114778a61132f565b84548a526001996114898b870161136d565b8382015260ff60028701541615998a1583830152600387015460608301526004870154608083015260059a60058801549260a0810198848a5260018060a01b039b8c9101541660c08201525115806116ae575b61169d5761164e5790888c9594939216908115611680575085526003825280852081516115088161132f565b815499808b16825260ff8583019b60a01c1615158b528683015492848301938452600281015494606084019586526003820190519081998a928983549182815201928d52898d20918d5b8b83821061166a5750505050506005929161156e91038a61134b565b88608085015260ff60048201541660a085015201549a60c083019b8c52511591821561165e575b505061164e57518710908115611643575b5061163557839284998b82519b5b8c8110611604575b50505050505090919293949550156115fb57506115f16115f893926115e8926127109384915183611412565b04935190611412565b0490611445565b90565b94505050508190565b858582851b860101511461161a57018c906115b4565b50999a508a9994503893508392508291508190508b816115bc565b505050955050505090508190565b9050518611386115a6565b5050505050955050505090508190565b51161590503880611595565b845486528e965090940193928101928101611552565b9796505050505050506127109394506116999250611412565b0490565b505050505050955050505090508190565b508515156114dc565b60001981146111295760010190565b919060009283526004602052604083209060018060a01b0316835260205260408220604051906080820182811067ffffffffffffffff821117611778579061173491604052805480845260036001830154928360208701526002810154604087015201546060850152611445565b90811561176f57516127109081810291818304149015171561175b576115f8929350611425565b634e487b7160e01b84526011600452602484fd5b50611388925050565b634e487b7160e01b85526041600452602485fd5b818110611797575050565b6000815560010161178c565b3360009081527f01ddc098da42acdf4176da08ec75800bc0fb2bce2be978b2037bcb0ae696651960205260409020547fedcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c3092389060ff16156117ff5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156117ff5750565b80600052600060205260406000203360005260205260ff60406000205416156117ff5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146118f657808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146118f65780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fea264697066735822122073da332471340881bc4b12fb6c6c514fa82892569eb0556b90e6267cab2e001d64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}