@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
729 lines • 66.1 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ICPCrossChainTreasuryHub",
"sourceName": "contracts/presets/ICP/ICPCrossChainTreasuryHub.sol",
"abi": [
{
"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": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "destinationChain",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "treasuryAddress",
"type": "address"
}
],
"name": "DestinationChainUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "string",
"name": "destinationChain",
"type": "string"
}
],
"indexed": false,
"internalType": "struct ICPCrossChainTreasuryHub.EVMMessageData",
"name": "action",
"type": "tuple"
}
],
"name": "MessageSent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "MODULE_RESOURCE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "relatedExpertPanelName_",
"type": "string"
}
],
"name": "__ICPCrossChainTreasuryHub_init",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry_",
"type": "address"
},
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "relatedExpertPanelName_",
"type": "string"
}
],
"name": "__ICPCrossChainTreasuryHub_initAndSetDeps",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member_",
"type": "address"
},
{
"internalType": "string",
"name": "permission_",
"type": "string"
}
],
"name": "checkPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "destinationChain",
"type": "string"
}
],
"name": "destinationToData",
"outputs": [
{
"internalType": "string",
"name": "rpcUrl",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "treasuryAddress",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "messageId",
"type": "uint256"
}
],
"name": "evmMessages",
"outputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "string",
"name": "destinationChain",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "destinationChain_",
"type": "string"
}
],
"name": "getDestinationChainData",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "rpcUrl",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "treasuryAddress",
"type": "address"
}
],
"internalType": "struct ICPCrossChainTreasuryHub.CanisterConnectionData",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "messageId_",
"type": "uint256"
}
],
"name": "getEVMMessage",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "string",
"name": "destinationChain",
"type": "string"
}
],
"internalType": "struct ICPCrossChainTreasuryHub.EVMMessageData",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getInjector",
"outputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNextEVMMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account_",
"type": "address"
},
{
"internalType": "uint256",
"name": "proposalId_",
"type": "uint256"
}
],
"name": "getProposalKey",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account_",
"type": "address"
},
{
"internalType": "uint256",
"name": "proposalId_",
"type": "uint256"
}
],
"name": "getProposalMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResource",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResourceRecords",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "existingRole",
"type": "string"
},
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IDAOIntegration.ResourceRecords[]",
"name": "records_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "newModuleAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nextEVMMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "permissionManager",
"outputs": [
{
"internalType": "contract PermissionManager",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "proposalKey",
"type": "bytes32"
}
],
"name": "proposalToMessageId",
"outputs": [
{
"internalType": "uint256",
"name": "messageId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "uint256",
"name": "value_",
"type": "uint256"
}
],
"name": "redeemTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
},
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "string",
"name": "destination_",
"type": "string"
}
],
"name": "sendERC20EVM",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
},
{
"internalType": "string",
"name": "destination_",
"type": "string"
}
],
"name": "sendNativeEVM",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newModuleAddress_",
"type": "address"
}
],
"name": "setCanisterModuleAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry_",
"type": "address"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "setDependencies",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "destinationChain_",
"type": "string"
},
{
"internalType": "string",
"name": "destinationChainRpcUrl_",
"type": "string"
},
{
"internalType": "address",
"name": "treasuryAddress_",
"type": "address"
}
],
"name": "setDestinationChainData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"name": "setInjector",
"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": [
{
"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"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b506080516130bc61004c600039600081816107ce0152818161080e015281816109c901528181610a090152610a8501526130bc6000f3fe6080604052600436106101d15760003560e01c806391b691d0116100f7578063be12726d11610095578063ee0d8c7911610064578063ee0d8c791461054e578063f13bdd4d1461056e578063f9c2983114610590578063fb169458146105b057600080fd5b8063be12726d146104cb578063cc7a2049146104e1578063d8ad4e1c1461050e578063dad7f1101461052e57600080fd5b806396953088116100d15780639695308814610456578063a5a60e6914610476578063b7dfe49214610496578063bb65dc83146104b657600080fd5b806391b691d0146103e657806394f57e4e1461040657806395c70b541461042657600080fd5b80634d2f1ca91161016f5780635c60da1b1161013e5780635c60da1b1461036257806369130451146103775780637acfa7c0146103975780638cb941cc146103c657600080fd5b80634d2f1ca9146102e05780634f1ef2861461030d57806351ce28af1461032057806352d1902d1461034d57600080fd5b806331730730116101ab57806331730730146102575780633659cfe6146102755780633e3b5b19146102955780633ea0ae68146102c057600080fd5b806301ffc9a7146101dd5780630998bda7146102135780632b5c06bc1461023557600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611fc3565b6105dd565b60405161020a9190611fee565b60405180910390f35b34801561021f57600080fd5b5061023361022e3660046120f8565b61064a565b005b34801561024157600080fd5b5061024a610736565b60405161020a91906121c0565b34801561026357600080fd5b506002545b60405161020a91906121d7565b34801561028157600080fd5b5061023361029036600461220a565b6107c4565b3480156102a157600080fd5b50600080516020613020833981519152545b60405161020a9190612234565b3480156102cc57600080fd5b506102686102db366004612253565b61088c565b3480156102ec57600080fd5b506103006102fb366004612286565b6108bf565b60405161020a9190612302565b61023361031b366004612313565b6109bf565b34801561032c57600080fd5b5061026861033b366004612286565b60076020526000908152604090205481565b34801561035957600080fd5b50610268610a78565b34801561036e57600080fd5b506102b3610ad5565b34801561038357600080fd5b50610233610392366004612313565b610ae4565b3480156103a357600080fd5b506103b76103b2366004612335565b610b89565b60405161020a93929190612370565b3480156103d257600080fd5b506102336103e136600461220a565b610c48565b3480156103f257600080fd5b5061023361040136600461239d565b610c66565b34801561041257600080fd5b50610233610421366004612422565b610cca565b34801561043257600080fd5b50610446610441366004612286565b610dde565b60405161020a949392919061249e565b34801561046257600080fd5b506102336104713660046124d8565b610e9d565b34801561048257600080fd5b506003546102b3906001600160a01b031681565b3480156104a257600080fd5b506102336104b136600461220a565b610ee4565b3480156104c257600080fd5b5061024a610f2d565b3480156104d757600080fd5b5061026860025481565b3480156104ed57600080fd5b50600454610501906001600160a01b031681565b60405161020a919061254f565b34801561051a57600080fd5b506101fd610529366004612313565b610fbf565b34801561053a57600080fd5b50610233610549366004612253565b61103e565b34801561055a57600080fd5b50610268610569366004612253565b6110e1565b34801561057a57600080fd5b50610583611108565b60405161020a9190612683565b34801561059c57600080fd5b506102336105ab366004612694565b61167e565b3480156105bc57600080fd5b506105d06105cb366004612335565b6116b1565b60405161020a9190612753565b60006001600160e01b031982166363c8929f60e01b148061060e57506001600160e01b0319821663f13bdd4d60e01b145b8061062957506001600160e01b031982166336e447a160e21b145b8061064457506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054610100900460ff161580801561066a5750600054600160ff909116105b806106845750303b158015610684575060005460ff166001145b6106a95760405162461bcd60e51b81526004016106a0906127af565b60405180910390fd5b6000805460ff1916600117905580156106cc576000805461ff0019166101001790555b60086106d88382612899565b5060016106e58482612899565b508015610731576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906107289060019061296d565b60405180910390a15b505050565b60018054610743906127d5565b80601f016020809104026020016040519081016040528092919081815260200182805461076f906127d5565b80156107bc5780601f10610791576101008083540402835291602001916107bc565b820191906000526020600020905b81548152906001019060200180831161079f57829003601f168201915b505050505081565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361080c5760405162461bcd60e51b81526004016106a0906129c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e6117bd565b6001600160a01b0316146108645760405162461bcd60e51b81526004016106a090612a19565b61086d816117d9565b60408051600080825260208201909252610889918391906118dd565b50565b600082826040516020016108a1929190612a51565b60405160208183030381529060405280519060200120905092915050565b604080516080808201835260008083526020808401829052838501829052606080850181905286835260058252918590208551938401865280546001600160a01b039081168552600182015416918401919091526002810154948301949094526003840180549394929391840191610936906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610962906127d5565b80156109af5780601f10610984576101008083540402835291602001916109af565b820191906000526020600020905b81548152906001019060200180831161099257829003601f168201915b5050505050815250509050919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a075760405162461bcd60e51b81526004016106a0906129c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a396117bd565b6001600160a01b031614610a5f5760405162461bcd60e51b81526004016106a090612a19565b610a68826117d9565b610a74828260016118dd565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ac25760405162461bcd60e51b81526004016106a090612ac0565b5060008051602061304083398151915290565b6000610adf6117bd565b905090565b610aec6119bf565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b539190612adb565b600480546001600160a01b0319166001600160a01b03929092169190911790555033600080516020613020833981519152555050565b8051602081830181018051600682529282019190930120915280548190610baf906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb906127d5565b8015610c285780601f10610bfd57610100808354040283529160200191610c28565b820191906000526020600020905b815481529060010190602001808311610c0b57829003601f168201915b5050505060018301546002909301549192916001600160a01b0316905083565b610c506119bf565b6108898160008051602061302083398151915255565b610c8d6040518060400160405280600681526020016555504441544560d01b815250611a13565b610c9981468486611a39565b7f961bd08194ec78d46910644e00aa4ed559ba04205734f88af9d48ed977d609a28382604051610728929190612afc565b600054610100900460ff1615808015610cea5750600054600160ff909116105b80610d045750303b158015610d04575060005460ff166001145b610d205760405162461bcd60e51b81526004016106a0906127af565b6000805460ff191660011790558015610d43576000805461ff0019166101001790555b604080516000815260208101909152610d5d908590610ae4565b610d738460008051602061302083398151915255565b6008610d7f8382612899565b506001610d8c8482612899565b508015610dd8576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610dcf9060019061296d565b60405180910390a15b50505050565b60056020526000908152604090208054600182015460028301546003840180546001600160a01b039485169594909316939192610e1a906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e46906127d5565b8015610e935780601f10610e6857610100808354040283529160200191610e93565b820191906000526020600020905b815481529060010190602001808311610e7657829003601f168201915b5050505050905084565b610ec46040518060400160405280600681526020016555504441544560d01b815250611a13565b61073173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee848484611ac4565b610f0b6040518060400160405280600681526020016555504441544560d01b815250611a13565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b606060018054610f3c906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610f68906127d5565b8015610fb55780601f10610f8a57610100808354040283529160200191610fb5565b820191906000526020600020905b815481529060010190602001808311610f9857829003601f168201915b5050505050905090565b60048054604051633ca8e36d60e11b81526000926001600160a01b0390921691637951c6da91610ff6918791600191889101612b96565b602060405180830381865afa158015611013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110379190612bdd565b9392505050565b6110656040518060400160405280600681526020016555504441544560d01b815250611a13565b6000826001600160a01b03168260405161107e90612bfe565b60006040518083038185875af1925050503d80600081146110bb576040519150601f19603f3d011682016040523d82523d6000602084013e6110c0565b606091505b50509050806107315760405162461bcd60e51b81526004016106a090612c4a565b6000600760006110f1858561088c565b815260200190815260200160002054905092915050565b60408051600380825260808201909252606091816020015b61114460405180606001604052806060815260200160608152602001606081525090565b81526020019060019003908161112057905050905060006111bd60405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b815250815250611c4c565b9050604051806060016040528061125d600880546111da906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611206906127d5565b80156112535780601f1061122857610100808354040283529160200191611253565b820191906000526020600020905b81548152906001019060200180831161123657829003601f168201915b5050505050611cc5565b60008151811061126f5761126f612c5a565b6020026020010151815260200160018054611289906127d5565b80601f01602080910402602001604051908101604052809291908181526020018280546112b5906127d5565b80156113025780601f106112d757610100808354040283529160200191611302565b820191906000526020600020905b8154815290600101906020018083116112e557829003601f168201915b50505050508152602001828152508260008151811061132357611323612c5a565b6020026020010181905250600061136560405180602001604052806040518060400160405280600681526020016511561411549560d21b815250815250611cf9565b9050604051806060016040528061140560088054611382906127d5565b80601f01602080910402602001604051908101604052809291908181526020018280546113ae906127d5565b80156113fb5780601f106113d0576101008083540402835291602001916113fb565b820191906000526020600020905b8154815290600101906020018083116113de57829003601f168201915b5050505050611d3d565b60008151811061141757611417612c5a565b6020026020010151815260200160018054611431906127d5565b80601f016020809104026020016040519081016040528092919081815260200182805461145d906127d5565b80156114aa5780601f1061147f576101008083540402835291602001916114aa565b820191906000526020600020905b81548152906001019060200180831161148d57829003601f168201915b5050505050815260200182815250836001815181106114cb576114cb612c5a565b60200260200101819052506040518060600160405280611574600880546114f1906127d5565b80601f016020809104026020016040519081016040528092919081815260200182805461151d906127d5565b801561156a5780601f1061153f5761010080835404028352916020019161156a565b820191906000526020600020905b81548152906001019060200180831161154d57829003601f168201915b5050505050611d5e565b60008151811061158657611586612c5a565b60200260200101518152602001600180546115a0906127d5565b80601f01602080910402602001604051908101604052809291908181526020018280546115cc906127d5565b80156116195780601f106115ee57610100808354040283529160200191611619565b820191906000526020600020905b8154815290600101906020018083116115fc57829003601f168201915b5050505050815260200161165860405180602001604052806040518060400160405280600681526020016555504441544560d01b815250815250611cf9565b8152508360028151811061166e5761166e612c5a565b6020026020010181905250505090565b6116a56040518060400160405280600681526020016555504441544560d01b815250611a13565b610dd884848484611ac4565b6116de6040518060600160405280606081526020016000815260200160006001600160a01b031681525090565b6006826040516116ee9190612c92565b9081526020016040518091039020604051806060016040529081600082018054611717906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611743906127d5565b80156117905780601f1061176557610100808354040283529160200191611790565b820191906000526020600020905b81548152906001019060200180831161177357829003601f168201915b5050509183525050600182015460208201526002909101546001600160a01b031660409091015292915050565b600080516020613040833981519152546001600160a01b031690565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316638412ccd86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118529190612cbb565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190612adb565b9050336001600160a01b03821614610a745760405162461bcd60e51b81526004016106a090612d1f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156119105761073183611d7f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561196a575060408051601f3d908101601f1916820190925261196791810190612d3a565b60015b6119865760405162461bcd60e51b81526004016106a090612da4565b60008051602061304083398151915281146119b35760405162461bcd60e51b81526004016106a090612df8565b50610731838383611dd5565b60006119d76000805160206130208339815191525490565b90506001600160a01b03811615806119f757506001600160a01b03811633145b6108895760405162461bcd60e51b81526004016106a090612e3a565b611a1d3382610fbf565b6108895760405162461bcd60e51b81526004016106a090612e91565b60408051606081018252838152602081018590526001600160a01b0386168183015290518190600690611a6d908590612c92565b90815260405190819003602001902081518190611a8a9082612899565b5060208201516001820155604090910151600290910180546001600160a01b0319166001600160a01b039092169190911790555050505050565b611acd81611dfa565b6000336001600160a01b031663ab663d0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190612d3a565b905060025460076000611b44338561088c565b81526020019081526020016000208190555060006040518060800160405280876001600160a01b03168152602001866001600160a01b03168152602001858152602001848152509050806005600060026000815480929190611ba590612eb7565b9091555081526020808201929092526040908101600020835181546001600160a01b03199081166001600160a01b0392831617835593850151600183018054909516911617909255820151600282015560608201516003820190611c099082612899565b509050507fee7b7cbfff0d7ef5e8dce02f8a28da9c84d20231118ee331d9a13eff1cf4c82581604051611c3c9190612302565b60405180910390a1505050505050565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c6257505082518151919250908290600090611c8f57611c8f612c5a565b6020908102919091010152816001602002015181600181518110611cb557611cb5612c5a565b6020026020010181905250919050565b6060610644604051806020016040528084604051602001611ce69190612ed0565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b6060815260200190600190039081611d1057505082518151919250908290600090611cb557611cb5612c5a565b6060610644604051806020016040528084604051602001611ce69190612ef2565b6060610644604051806020016040528084604051602001611ce69190612f0b565b6001600160a01b0381163b611da65760405162461bcd60e51b81526004016106a090612f6c565b60008051602061304083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611dde83611e4e565b600082511180611deb5750805b1561073157610dd88383611e8e565b60006001600160a01b0316600682604051611e159190612c92565b908152604051908190036020019020600201546001600160a01b0316036108895760405162461bcd60e51b81526004016106a090612fcd565b611e5781611d7f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110378383604051806060016040528060278152602001613060602791396060600080856001600160a01b031685604051611ecb9190612c92565b600060405180830381855af49150503d8060008114611f06576040519150601f19603f3d011682016040523d82523d6000602084013e611f0b565b606091505b5091509150611f1c86838387611f26565b9695505050505050565b60608315611f65578251600003611f5e576001600160a01b0385163b611f5e5760405162461bcd60e51b81526004016106a09061300f565b5081611f6f565b611f6f8383611f77565b949350505050565b815115611f875781518083602001fd5b8060405162461bcd60e51b81526004016106a091906121c0565b6001600160e01b031981165b811461088957600080fd5b803561064481611fa1565b600060208284031215611fd857611fd8600080fd5b6000611f6f8484611fb8565b8015155b82525050565b602081016106448284611fe4565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff8211171561203857612038611ffc565b6040525050565b600061204a60405190565b90506120568282612012565b919050565b600067ffffffffffffffff82111561207557612075611ffc565b601f19601f8301165b60200192915050565b82818337506000910152565b60006120a66120a18461205b565b61203f565b9050828152602081018484840111156120c1576120c1600080fd5b6120cc848285612087565b509392505050565b600082601f8301126120e8576120e8600080fd5b8135611f6f848260208601612093565b6000806040838503121561210e5761210e600080fd5b823567ffffffffffffffff81111561212857612128600080fd5b612134858286016120d4565b925050602083013567ffffffffffffffff81111561215457612154600080fd5b612160858286016120d4565b9150509250929050565b60005b8381101561218557818101518382015260200161216d565b50506000910152565b6000612198825190565b8084526020840193506121af81856020860161216a565b601f01601f19169290920192915050565b60208082528101611037818461218e565b80611fe8565b6020810161064482846121d1565b60006001600160a01b038216610644565b611fad816121e5565b8035610644816121f6565b60006020828403121561221f5761221f600080fd5b6000611f6f84846121ff565b611fe8816121e5565b60208101610644828461222b565b80611fad565b803561064481612242565b6000806040838503121561226957612269600080fd5b600061227585856121ff565b925050602061216085828601612248565b60006020828403121561229b5761229b600080fd5b6000611f6f8484612248565b805160009060808401906122bb858261222b565b5060208301516122ce602086018261222b565b5060408301516122e160408601826121d1565b50606083015184820360608601526122f9828261218e565b95945050505050565b6020808252810161103781846122a7565b6000806040838503121561232957612329600080fd5b600061213485856121ff565b60006020828403121561234a5761234a600080fd5b813567ffffffffffffffff81111561236457612364600080fd5b611f6f848285016120d4565b60608082528101612381818661218e565b905061239060208301856121d1565b611f6f604083018461222b565b6000806000606084860312156123b5576123b5600080fd5b833567ffffffffffffffff8111156123cf576123cf600080fd5b6123db868287016120d4565b935050602084013567ffffffffffffffff8111156123fb576123fb600080fd5b612407868287016120d4565b9250506040612418868287016121ff565b9150509250925092565b60008060006060848603121561243a5761243a600080fd5b600061244686866121ff565b935050602084013567ffffffffffffffff81111561246657612466600080fd5b612472868287016120d4565b925050604084013567ffffffffffffffff81111561249257612492600080fd5b612418868287016120d4565b608081016124ac828761222b565b6124b9602083018661222b565b6124c660408301856121d1565b8181036060830152611f1c818461218e565b6000806000606084860312156124f0576124f0600080fd5b60006124fc86866121ff565b935050602061247286828701612248565b60006106446001600160a01b038316612524565b90565b6001600160a01b031690565b60006106448261250d565b600061064482612530565b611fe88161253b565b602081016106448284612546565b6000611037838361218e565b60200190565b6000612579825190565b808452602084019350836020820285016125938560200190565b60005b848110156125c757838303885281516125af848261255d565b93505060208201602098909801979150600101612596565b50909695505050505050565b80516060808452600091908401906125eb828261218e565b91505060208301518482036020860152612605828261218e565b915050604083015184820360408601526122f9828261256f565b600061103783836125d3565b6000612635825190565b8084526020840193508360208202850161264f8560200190565b60005b848110156125c7578383038852815161266b848261261f565b93505060208201602098909801979150600101612652565b60208082528101611037818461262b565b600080600080608085870312156126ad576126ad600080fd5b60006126b987876121ff565b94505060206126ca878288016121ff565b93505060406126db87828801612248565b925050606085013567ffffffffffffffff8111156126fb576126fb600080fd5b612707878288016120d4565b91505092959194509250565b805160608084526000919084019061272b828261218e565b915050602083015161274060208601826121d1565b5060408301516120cc604086018261222b565b602080825281016110378184612713565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015290505b60400190565b6020808252810161064481612764565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806127e957607f821691505b6020821081036127fb576127fb6127bf565b50919050565b60006106446125218381565b61281683612801565b815460001960089490940293841b1916921b91909117905550565b600061073181848461280d565b81811015610a7457612851600082612831565b60010161283e565b601f821115610731576000818152602090206020601f850104810160208510156128805750805b6128926020601f86010483018261283e565b5050505050565b815167ffffffffffffffff8111156128b3576128b3611ffc565b6128bd82546127d5565b6128c8828285612859565b506020601f8211600181146128fd57600083156128e55750848201515b600019600885021c1981166002850217855550612892565b600084815260208120601f198516915b8281101561292d578785015182556020948501946001909201910161290d565b508482101561294a5783870151600019601f87166008021c191681555b50505050600202600101905550565b600060ff8216610644565b611fe881612959565b602081016106448284612964565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b602082015290506127a9565b602080825281016106448161297b565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b602082015290506127a9565b60208082528101610644816129d2565b60006106448260601b90565b600061064482612a29565b611fe8612a4c826121e5565b612a35565b612a5b8184612a40565b60140161207e81836121d1565b60388152602081017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015290506127a9565b6020808252810161064481612a68565b8051610644816121f6565b600060208284031215612af057612af0600080fd5b6000611f6f8484612ad0565b60408082528101612b0d818561218e565b9050611037602083018461222b565b60008154612b29816127d5565b808552602085019450600182168015612b495760018114612b5f57612b8d565b60ff198316865260208215150286019350612b8d565b60008581526020902060005b83811015612b8757815488820152600190910190602001612b6b565b87019450505b50505092915050565b60608101612ba4828661222b565b8181036020830152612bb68185612b1c565b905081810360408301526122f9818461218e565b801515611fad565b805161064481612bca565b600060208284031215612bf257612bf2600080fd5b6000611f6f8484612bd2565b61205681612521565b60288152602081017f49435043726f7373436861696e54726561737572794875623a2073656e64696e815267339032b93937b91760c11b602082015290506127a9565b6020808252810161064481612c07565b634e487b7160e01b600052603260045260246000fd5b6000612c7a825190565b612c8881856020860161216a565b9290920192915050565b6106448183612c70565b6000610644826121e5565b611fad81612c9c565b805161064481612ca7565b600060208284031215612cd057612cd0600080fd5b6000611f6f8484612cb0565b60288152602081017f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f208152673ab833b930b2329760c11b602082015290506127a9565b6020808252810161064481612cdc565b805161064481612242565b600060208284031215612d4f57612d4f600080fd5b6000611f6f8484612d2f565b602e8152602081017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b602082015290506127a9565b6020808252810161064481612d5b565b60298152602081017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b602082015290506127a9565b6020808252810161064481612db4565b601a8152602081017f446570656e64616e743a206e6f7420616e20696e6a6563746f7200000000000081529050612569565b6020808252810161064481612e08565b602c8152602081017f49435043726f7373436861696e54726561737572794875623a207065726d697381526b39b4b7b7103232b734b2b21760a11b602082015290506127a9565b6020808252810161064481612e4a565b634e487b7160e01b600052601160045260246000fd5b600060018201612ec957612ec9612ea1565b5060010190565b6d2220a7a6b2b6b132b92937b6329d60911b81525b600e016106448183612c70565b6d2220a7a2bc3832b93a2937b6329d60911b8152612ee5565b6d2220a7ab37ba34b733a937b6329d60911b8152612ee5565b602d8152602081017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015290506127a9565b6020808252810161064481612f24565b60368152602081017f49435043726f7373436861696e54726561737572794875623a2064657374696e81527530ba34b7b71031b430b4b7103737ba103337bab7321760511b602082015290506127a9565b6020808252810161064481612f7c565b601d8152602081017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529050612569565b6020808252810161064481612fdd56fe3d1f25f1ac447e55e7fec744471c4dab1c6a2b6ffb897825f9ea3d2e8c9be583360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e912f2f659057ccab64ac458a1c125b6a00746ccd3f61d9210d1ccc81684cf1d64736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106101d15760003560e01c806391b691d0116100f7578063be12726d11610095578063ee0d8c7911610064578063ee0d8c791461054e578063f13bdd4d1461056e578063f9c2983114610590578063fb169458146105b057600080fd5b8063be12726d146104cb578063cc7a2049146104e1578063d8ad4e1c1461050e578063dad7f1101461052e57600080fd5b806396953088116100d15780639695308814610456578063a5a60e6914610476578063b7dfe49214610496578063bb65dc83146104b657600080fd5b806391b691d0146103e657806394f57e4e1461040657806395c70b541461042657600080fd5b80634d2f1ca91161016f5780635c60da1b1161013e5780635c60da1b1461036257806369130451146103775780637acfa7c0146103975780638cb941cc146103c657600080fd5b80634d2f1ca9146102e05780634f1ef2861461030d57806351ce28af1461032057806352d1902d1461034d57600080fd5b806331730730116101ab57806331730730146102575780633659cfe6146102755780633e3b5b19146102955780633ea0ae68146102c057600080fd5b806301ffc9a7146101dd5780630998bda7146102135780632b5c06bc1461023557600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611fc3565b6105dd565b60405161020a9190611fee565b60405180910390f35b34801561021f57600080fd5b5061023361022e3660046120f8565b61064a565b005b34801561024157600080fd5b5061024a610736565b60405161020a91906121c0565b34801561026357600080fd5b506002545b60405161020a91906121d7565b34801561028157600080fd5b5061023361029036600461220a565b6107c4565b3480156102a157600080fd5b50600080516020613020833981519152545b60405161020a9190612234565b3480156102cc57600080fd5b506102686102db366004612253565b61088c565b3480156102ec57600080fd5b506103006102fb366004612286565b6108bf565b60405161020a9190612302565b61023361031b366004612313565b6109bf565b34801561032c57600080fd5b5061026861033b366004612286565b60076020526000908152604090205481565b34801561035957600080fd5b50610268610a78565b34801561036e57600080fd5b506102b3610ad5565b34801561038357600080fd5b50610233610392366004612313565b610ae4565b3480156103a357600080fd5b506103b76103b2366004612335565b610b89565b60405161020a93929190612370565b3480156103d257600080fd5b506102336103e136600461220a565b610c48565b3480156103f257600080fd5b5061023361040136600461239d565b610c66565b34801561041257600080fd5b50610233610421366004612422565b610cca565b34801561043257600080fd5b50610446610441366004612286565b610dde565b60405161020a949392919061249e565b34801561046257600080fd5b506102336104713660046124d8565b610e9d565b34801561048257600080fd5b506003546102b3906001600160a01b031681565b3480156104a257600080fd5b506102336104b136600461220a565b610ee4565b3480156104c257600080fd5b5061024a610f2d565b3480156104d757600080fd5b5061026860025481565b3480156104ed57600080fd5b50600454610501906001600160a01b031681565b60405161020a919061254f565b34801561051a57600080fd5b506101fd610529366004612313565b610fbf565b34801561053a57600080fd5b50610233610549366004612253565b61103e565b34801561055a57600080fd5b50610268610569366004612253565b6110e1565b34801561057a57600080fd5b50610583611108565b60405161020a9190612683565b34801561059c57600080fd5b506102336105ab366004612694565b61167e565b3480156105bc57600080fd5b506105d06105cb366004612335565b6116b1565b60405161020a9190612753565b60006001600160e01b031982166363c8929f60e01b148061060e57506001600160e01b0319821663f13bdd4d60e01b145b8061062957506001600160e01b031982166336e447a160e21b145b8061064457506301ffc9a760e01b6001600160e01b03198316145b92915050565b600054610100900460ff161580801561066a5750600054600160ff909116105b806106845750303b158015610684575060005460ff166001145b6106a95760405162461bcd60e51b81526004016106a0906127af565b60405180910390fd5b6000805460ff1916600117905580156106cc576000805461ff0019166101001790555b60086106d88382612899565b5060016106e58482612899565b508015610731576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906107289060019061296d565b60405180910390a15b505050565b60018054610743906127d5565b80601f016020809104026020016040519081016040528092919081815260200182805461076f906127d5565b80156107bc5780601f10610791576101008083540402835291602001916107bc565b820191906000526020600020905b81548152906001019060200180831161079f57829003601f168201915b505050505081565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361080c5760405162461bcd60e51b81526004016106a0906129c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e6117bd565b6001600160a01b0316146108645760405162461bcd60e51b81526004016106a090612a19565b61086d816117d9565b60408051600080825260208201909252610889918391906118dd565b50565b600082826040516020016108a1929190612a51565b60405160208183030381529060405280519060200120905092915050565b604080516080808201835260008083526020808401829052838501829052606080850181905286835260058252918590208551938401865280546001600160a01b039081168552600182015416918401919091526002810154948301949094526003840180549394929391840191610936906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610962906127d5565b80156109af5780601f10610984576101008083540402835291602001916109af565b820191906000526020600020905b81548152906001019060200180831161099257829003601f168201915b5050505050815250509050919050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a075760405162461bcd60e51b81526004016106a0906129c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a396117bd565b6001600160a01b031614610a5f5760405162461bcd60e51b81526004016106a090612a19565b610a68826117d9565b610a74828260016118dd565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ac25760405162461bcd60e51b81526004016106a090612ac0565b5060008051602061304083398151915290565b6000610adf6117bd565b905090565b610aec6119bf565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b539190612adb565b600480546001600160a01b0319166001600160a01b03929092169190911790555033600080516020613020833981519152555050565b8051602081830181018051600682529282019190930120915280548190610baf906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb906127d5565b8015610c285780601f10610bfd57610100808354040283529160200191610c28565b820191906000526020600020905b815481529060010190602001808311610c0b57829003601f168201915b5050505060018301546002909301549192916001600160a01b0316905083565b610c506119bf565b6108898160008051602061302083398151915255565b610c8d6040518060400160405280600681526020016555504441544560d01b815250611a13565b610c9981468486611a39565b7f961bd08194ec78d46910644e00aa4ed559ba04205734f88af9d48ed977d609a28382604051610728929190612afc565b600054610100900460ff1615808015610cea5750600054600160ff909116105b80610d045750303b158015610d04575060005460ff166001145b610d205760405162461bcd60e51b81526004016106a0906127af565b6000805460ff191660011790558015610d43576000805461ff0019166101001790555b604080516000815260208101909152610d5d908590610ae4565b610d738460008051602061302083398151915255565b6008610d7f8382612899565b506001610d8c8482612899565b508015610dd8576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610dcf9060019061296d565b60405180910390a15b50505050565b60056020526000908152604090208054600182015460028301546003840180546001600160a01b039485169594909316939192610e1a906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e46906127d5565b8015610e935780601f10610e6857610100808354040283529160200191610e93565b820191906000526020600020905b815481529060010190602001808311610e7657829003601f168201915b5050505050905084565b610ec46040518060400160405280600681526020016555504441544560d01b815250611a13565b61073173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee848484611ac4565b610f0b6040518060400160405280600681526020016555504441544560d01b815250611a13565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b606060018054610f3c906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610f68906127d5565b8015610fb55780601f10610f8a57610100808354040283529160200191610fb5565b820191906000526020600020905b815481529060010190602001808311610f9857829003601f168201915b5050505050905090565b60048054604051633ca8e36d60e11b81526000926001600160a01b0390921691637951c6da91610ff6918791600191889101612b96565b602060405180830381865afa158015611013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110379190612bdd565b9392505050565b6110656040518060400160405280600681526020016555504441544560d01b815250611a13565b6000826001600160a01b03168260405161107e90612bfe565b60006040518083038185875af1925050503d80600081146110bb576040519150601f19603f3d011682016040523d82523d6000602084013e6110c0565b606091505b50509050806107315760405162461bcd60e51b81526004016106a090612c4a565b6000600760006110f1858561088c565b815260200190815260200160002054905092915050565b60408051600380825260808201909252606091816020015b61114460405180606001604052806060815260200160608152602001606081525090565b81526020019060019003908161112057905050905060006111bd60405180604001