diff --git a/Makefile b/Makefile index 26ace28a..b2626c59 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ .PHONY: compile_solidity_mock_euler_token compile_go_mock_euler_token compile_mock_euler_token .PHONY: compile_solidity_mock_creator compile_go_mock_creator .PHONY: compile_solidity_mock_marketplace compile_go_mock_marketplace +.PHONY: compile_solidity_mock_swivel compile_go_mock_swivel .PHONY: compile_mocks .PHONY: compile_solidity_sig_fake compile_go_sig_fake compile_sig_fake @@ -137,7 +138,17 @@ compile_go_mock_marketplace: compile_mock_marketplace: compile_solidity_mock_marketplace compile_go_mock_marketplace -compile_mocks: compile_mock_erc compile_mock_compound_token compile_mock_erc_4626 compile_mock_yearn_vault compile_mock_aave_token compile_mock_aave_pool compile_mock_euler_token compile_mock_creator compile_mock_marketplace +compile_solidity_mock_swivel: + @echo "compiling Mock Swivel solidity source into abi and bin files" + solc -o ./test/mocks --abi --bin --overwrite ./test/mocks/Swivel.sol + +compile_go_mock_swivel: + @echo "compiling abi and bin files to golang" + abigen --abi ./test/mocks/Swivel.abi --bin ./test/mocks/Swivel.bin -pkg mocks -type Swivel -out ./test/mocks/swivel.go + +compile_mock_swivel: compile_solidity_mock_swivel compile_go_mock_swivel + +compile_mocks: compile_mock_erc compile_mock_compound_token compile_mock_erc_4626 compile_mock_yearn_vault compile_mock_aave_token compile_mock_aave_pool compile_mock_euler_token compile_mock_creator compile_mock_marketplace compile_mock_swivel # -------------------------------------------------- FAKES ----------------------------------------------------------------------------------------------- diff --git a/build/marketplace/MarketPlace.bin b/build/marketplace/MarketPlace.bin index 5ed6ab0b..57501af4 100644 --- a/build/marketplace/MarketPlace.bin +++ b/build/marketplace/MarketPlace.bin @@ -1 +1 @@ -60a06040523480156200001157600080fd5b50604051620040eb380380620040eb833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b60805161403e620000ad600039600081816101ea0152610da8015261403e6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004613a3c565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004613a97565b61072e565b6101d561022d366004613a97565b610a29565b6101d5610240366004613be1565b610c32565b61029a610253366004613c74565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004613c74565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004613cb5565b611054565b6040519081526020016101b9565b61035c610378366004613a97565b611201565b61035c61038b366004613d08565b611523565b6101d561039e366004613d41565b60016020526000908152604090205460ff1681565b6101d56103c1366004613d5e565b611538565b6101d56103d4366004613a3c565b6115cc565b6101d56103e7366004613c74565b61177c565b6101d56103fa366004613a3c565b6119d7565b61035c61040d366004613a3c565b611c6b565b6101d5610420366004613d5e565b611f0b565b6101d5610433366004613a97565b611ff7565b6101d5610446366004613a3c565b6122de565b6002546101a5906001600160a01b031681565b6101d561046c366004613a97565b6123f5565b6101d561047f366004613d89565b6126dc565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190613db7565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190613db7565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613db7565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190613db7565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190613db7565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f898861277b565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e559190613dd4565b6040518963ffffffff1660e01b8152600401610e78989796959493929190613e5c565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190613ecd565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac9190613efc565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a8552835281842082516080810184528154831681526001820154831694810194909452600281015490911691830191909152600301546060820181905290910361132c576112f089898961177c565b61132c57604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820187905290911690639dc29fac906044016020604051808303816000875af115801561139a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113be9190613db7565b6113fa57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60008160600151600014611419576114148a8a8a88612976565b61141b565b845b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8e1660048201526001600160a01b038d8116602483015291821660448201528982166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613db7565b50604080516001600160a01b038881168252602082018490528a92908c169160ff8e16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49998505050505050505050565b600061152f8383612a05565b90505b92915050565b6002546000906001600160a01b031633811461158d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff80861660009081526001602052604081205490918791161561162257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af11580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190613db7565b61171b57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff8084166000908152600160205260408120549091859116156117d257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611879576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b834210156118b857604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b60006118c8878360000151612a05565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af115801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613db7565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611a2c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611a8057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b619190613db7565b611b9d57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f9190613db7565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611cc057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611d1457604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611dc657611d8a89898961177c565b611dc657604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e589190613db7565b611e9457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611ef75784935050610723565b611f0389898988612976565b935050610723565b6002546000906001600160a01b0316338114611f6057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b031615611fb857600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b031633811461204c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156120a057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af115801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190613db7565b6121bd57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af115801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613db7565b61228b57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b031633811461233357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190613db7565b979650505050505050565b6003546000906001600160a01b031633811461244a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561249e57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af115801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f9190613db7565b6125bb57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af1158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190613db7565b61268957604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b031633811461273157604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff831660011480612792575060ff83166002145b1561280057816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190613f15565b9050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161286857816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8416016128d057816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff84160161293857816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b0380881685529083528184208685528352818420825160808101845281548316808252600183015484169582019590955260028201549092169282019290925260039091015460608201529082906129e9908890612a05565b60608301519091506129fb8286613f61565b6123ea9190613f9e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841601612a3a576127f982612d65565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff841601612a6d576127f982613301565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612af957816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190613efc565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612c82576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8a9190613f15565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa9190613f15565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7a9190613efc565b915050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612d15576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612ad5573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612cf8565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dca9190613efc565b9050438103612e3c57826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e359190613efc565b9392505050565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea09190613f15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190613efc565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8b9190613efc565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff19190613efc565b90506000866001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130579190613f15565b6040517f15f240530000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490526001600160a01b0391909116906315f2405390606401602060405180830381865afa1580156130c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e99190613efc565b905065048c2739500081111561315b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b600061317b8461316b8843613fd9565b6131759085613f61565b906139d0565b90506000836131e6838b6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131759190613efc565b6131f09190613ff0565b905060006131fe8684613ff0565b905060008a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132649190613efc565b905080156132905761328b818461327b858c613ff0565b6132859190613fd9565b906139e5565b6132f2565b8a6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f29190613efc565b9b9a5050505050505050505050565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133669190613efc565b90504381036133ad57826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e11573d6000803e3d6000fd5b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134119190613f15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015613472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134969190613efc565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fc9190613efc565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561353e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135629190613efc565b90506000866001600160a01b03166361feacff6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c89190613efc565b90506000876001600160a01b031663dc028ab16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561360a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362e9190613efc565b9050600080896001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136959190613f15565b6001600160a01b03166315f240538888866136b0898b613ff0565b6136ba9190613ff0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935260248301919091526044820152606401602060405180830381865afa15801561371b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373f9190613efc565b905065048c273950008111156137b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b6137c9866137bf8a43613fd9565b6131759084613f61565b915050600084613811838c6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b61381b9190613ff0565b9050600084613862848d6001600160a01b0316638d02d9a16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b61386c9190613ff0565b90506000846138b3858e6001600160a01b031663dbfe7c196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b6138bd9190613ff0565b905060008c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139239190613efc565b9050801561395d57613958818361393a8688613ff0565b6139449190613ff0565b61394e8c89613ff0565b61327b908e613ff0565b6139bf565b8c6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139bf9190613efc565b9d9c50505050505050505050505050565b600061152f8383670de0b6b3a76400006139f6565b600061152f83670de0b6b3a7640000845b828202811515841585830485141716613a0e57600080fd5b0492915050565b60ff81168114613a2457600080fd5b50565b6001600160a01b0381168114613a2457600080fd5b600080600080600060a08688031215613a5457600080fd5b8535613a5f81613a15565b94506020860135613a6f81613a27565b9350604086013592506060860135613a8681613a27565b949793965091946080013592915050565b60008060008060008060c08789031215613ab057600080fd5b8635613abb81613a15565b95506020870135613acb81613a27565b9450604087013593506060870135613ae281613a27565b92506080870135613af281613a27565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112613b4757600080fd5b813567ffffffffffffffff80821115613b6257613b62613b07565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613ba857613ba8613b07565b81604052838152866020858801011115613bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215613bf957600080fd5b8535613c0481613a15565b9450602086013593506040860135613c1b81613a27565b9250606086013567ffffffffffffffff80821115613c3857600080fd5b613c4489838a01613b36565b93506080880135915080821115613c5a57600080fd5b50613c6788828901613b36565b9150509295509295909350565b600080600060608486031215613c8957600080fd5b8335613c9481613a15565b92506020840135613ca481613a27565b929592945050506040919091013590565b60008060008060808587031215613ccb57600080fd5b8435613cd681613a15565b93506020850135613ce681613a27565b9250604085013591506060850135613cfd81613a27565b939692955090935050565b60008060408385031215613d1b57600080fd5b8235613d2681613a15565b91506020830135613d3681613a27565b809150509250929050565b600060208284031215613d5357600080fd5b8135612e3581613a15565b600060208284031215613d7057600080fd5b8135612e3581613a27565b8015158114613a2457600080fd5b60008060408385031215613d9c57600080fd5b8235613da781613a15565b91506020830135613d3681613d7b565b600060208284031215613dc957600080fd5b8151612e3581613d7b565b600060208284031215613de657600080fd5b8151612e3581613a15565b6000815180845260005b81811015613e1757602081850181015186830182015201613dfb565b81811115613e29576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a0840152613ea081840187613df1565b905082810360c0840152613eb48186613df1565b91505060ff831660e08301529998505050505050505050565b60008060408385031215613ee057600080fd5b8251613eeb81613a27565b6020840151909250613d3681613a27565b600060208284031215613f0e57600080fd5b5051919050565b600060208284031215613f2757600080fd5b8151612e3581613a27565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f9957613f99613f32565b500290565b600082613fd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613feb57613feb613f32565b500390565b6000821982111561400357614003613f32565b50019056fea26469706673582212204f3e682b0b5d6ec788787fef26c30e6a82aee3b7efb7c55aa2c83d28a69169c364736f6c634300080d0033 \ No newline at end of file +60a06040523480156200001157600080fd5b506040516200418838038062004188833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b6080516140db620000ad600039600081816101ea0152610da801526140db6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004613ad9565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004613b34565b61072e565b6101d561022d366004613b34565b610a29565b6101d5610240366004613c7e565b610c32565b61029a610253366004613d11565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004613d11565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004613d52565b611054565b6040519081526020016101b9565b61035c610378366004613b34565b611201565b61035c61038b366004613da5565b6115c0565b6101d561039e366004613dde565b60016020526000908152604090205460ff1681565b6101d56103c1366004613dfb565b6115d5565b6101d56103d4366004613ad9565b611669565b6101d56103e7366004613d11565b611819565b6101d56103fa366004613ad9565b611a74565b61035c61040d366004613ad9565b611d08565b6101d5610420366004613dfb565b611fa8565b6101d5610433366004613b34565b612094565b6101d5610446366004613ad9565b61237b565b6002546101a5906001600160a01b031681565b6101d561046c366004613b34565b612492565b6101d561047f366004613e26565b612779565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190613e54565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190613e54565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613e54565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190613e54565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190613e54565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f8988612818565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e559190613e71565b6040518963ffffffff1660e01b8152600401610e78989796959493929190613ef9565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190613f6a565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac9190613f99565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156112ce57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b031661131657604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b03808d1685529083528184208b855283528184208251608081018452815483168152600182015483169481019490945260028101549091169183019190915260030154606082018190529091036113c85761138c8a8a8a611819565b6113c857604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190613e54565b61149657604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b600081606001516000146114b5576114b08b8b8b89612a13565b6114b7565b855b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8f1660048201526001600160a01b038e8116602483015291821660448201528a82166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af115801561153f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115639190613e54565b50604080516001600160a01b038981168252602082018490528b92908d169160ff8f16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49a9950505050505050505050565b60006115cc8383612aa2565b90505b92915050565b6002546000906001600160a01b031633811461162a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff8086166000908152600160205260408120549091879116156116bf57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c9190613e54565b6117b857604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff80841660009081526001602052604081205490918591161561186f57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611916576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b8342101561195557604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b6000611965878360000151612aa2565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af11580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c9190613e54565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611ac957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611b1d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613e54565b611c3a57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc9190613e54565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611d5d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611db157604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611e6357611e27898989611819565b611e6357604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef59190613e54565b611f3157604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611f945784935050610723565b611fa089898988612a13565b935050610723565b6002546000906001600160a01b0316338114611ffd57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b03161561205557600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b03163381146120e957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561213d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af11580156121fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221e9190613e54565b61225a57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec9190613e54565b61232857604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b03163381146123d057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190613e54565b979650505050505050565b6003546000906001600160a01b03163381146124e757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561253b57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af11580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c9190613e54565b61265857604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af11580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea9190613e54565b61272657604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b03163381146127ce57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff83166001148061282f575060ff83166002145b1561289d57816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190613fb2565b90506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161290557816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff84160161296d57816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff8416016129d557816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b038088168552908352818420868552835281842082516080810184528154831680825260018301548416958201959095526002820154909216928201929092526003909101546060820152908290612a86908890612aa2565b6060830151909150612a988286613ffe565b612487919061403b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841601612ad75761289682612e02565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff841601612b0a576128968261339e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612b9657816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190613f99565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612d1f576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c279190613fb2565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c979190613fb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190613f99565b9150506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612db2576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612b72573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612d95565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e679190613f99565b9050438103612ed957826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed29190613f99565b9392505050565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190613fb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc29190613f99565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130289190613f99565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561306a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308e9190613f99565b90506000866001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f49190613fb2565b6040517f15f240530000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490526001600160a01b0391909116906315f2405390606401602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190613f99565b905065048c273950008111156131f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b6000613218846132088843614076565b6132129085613ffe565b90613a6d565b9050600083613283838b6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132129190613f99565b61328d919061408d565b9050600061329b868461408d565b905060008a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133019190613f99565b9050801561332d576133288184613318858c61408d565b6133229190614076565b90613a82565b61338f565b8a6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561336b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338f9190613f99565b9b9a5050505050505050505050565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134039190613f99565b905043810361344a57826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eae573d6000803e3d6000fd5b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ae9190613fb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa15801561350f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135339190613f99565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135999190613f99565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ff9190613f99565b90506000866001600160a01b03166361feacff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136659190613f99565b90506000876001600160a01b031663dc028ab16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cb9190613f99565b9050600080896001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561370e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137329190613fb2565b6001600160a01b03166315f2405388888661374d898b61408d565b613757919061408d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935260248301919091526044820152606401602060405180830381865afa1580156137b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137dc9190613f99565b905065048c2739500081111561384e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b6138668661385c8a43614076565b6132129084613ffe565b9150506000846138ae838c6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b6138b8919061408d565b90506000846138ff848d6001600160a01b0316638d02d9a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b613909919061408d565b9050600084613950858e6001600160a01b031663dbfe7c196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b61395a919061408d565b905060008c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c09190613f99565b905080156139fa576139f581836139d7868861408d565b6139e1919061408d565b6139eb8c8961408d565b613318908e61408d565b613a5c565b8c6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5c9190613f99565b9d9c50505050505050505050505050565b60006115cc8383670de0b6b3a7640000613a93565b60006115cc83670de0b6b3a7640000845b828202811515841585830485141716613aab57600080fd5b0492915050565b60ff81168114613ac157600080fd5b50565b6001600160a01b0381168114613ac157600080fd5b600080600080600060a08688031215613af157600080fd5b8535613afc81613ab2565b94506020860135613b0c81613ac4565b9350604086013592506060860135613b2381613ac4565b949793965091946080013592915050565b60008060008060008060c08789031215613b4d57600080fd5b8635613b5881613ab2565b95506020870135613b6881613ac4565b9450604087013593506060870135613b7f81613ac4565b92506080870135613b8f81613ac4565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112613be457600080fd5b813567ffffffffffffffff80821115613bff57613bff613ba4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613c4557613c45613ba4565b81604052838152866020858801011115613c5e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215613c9657600080fd5b8535613ca181613ab2565b9450602086013593506040860135613cb881613ac4565b9250606086013567ffffffffffffffff80821115613cd557600080fd5b613ce189838a01613bd3565b93506080880135915080821115613cf757600080fd5b50613d0488828901613bd3565b9150509295509295909350565b600080600060608486031215613d2657600080fd5b8335613d3181613ab2565b92506020840135613d4181613ac4565b929592945050506040919091013590565b60008060008060808587031215613d6857600080fd5b8435613d7381613ab2565b93506020850135613d8381613ac4565b9250604085013591506060850135613d9a81613ac4565b939692955090935050565b60008060408385031215613db857600080fd5b8235613dc381613ab2565b91506020830135613dd381613ac4565b809150509250929050565b600060208284031215613df057600080fd5b8135612ed281613ab2565b600060208284031215613e0d57600080fd5b8135612ed281613ac4565b8015158114613ac157600080fd5b60008060408385031215613e3957600080fd5b8235613e4481613ab2565b91506020830135613dd381613e18565b600060208284031215613e6657600080fd5b8151612ed281613e18565b600060208284031215613e8357600080fd5b8151612ed281613ab2565b6000815180845260005b81811015613eb457602081850181015186830182015201613e98565b81811115613ec6576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a0840152613f3d81840187613e8e565b905082810360c0840152613f518186613e8e565b91505060ff831660e08301529998505050505050505050565b60008060408385031215613f7d57600080fd5b8251613f8881613ac4565b6020840151909250613dd381613ac4565b600060208284031215613fab57600080fd5b5051919050565b600060208284031215613fc457600080fd5b8151612ed281613ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561403657614036613fcf565b500290565b600082614071577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561408857614088613fcf565b500390565b600082198211156140a0576140a0613fcf565b50019056fea26469706673582212208eb745fee210abe7ebdd1da4c25060a81f88818d431c1920fe0b25be088b17ce64736f6c634300080d0033 \ No newline at end of file diff --git a/build/marketplace/MarketPlace.sol b/build/marketplace/MarketPlace.sol index fed62f2c..7e72571c 100644 --- a/build/marketplace/MarketPlace.sol +++ b/build/marketplace/MarketPlace.sol @@ -166,7 +166,12 @@ contract MarketPlace { /// @param t Address of the user receiving underlying /// @param a Amount of zcTokens being redeemed /// @return Amount of underlying being withdrawn (needed for 5095 return) - function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) public authorized(markets[p][u][m].zcToken) returns (uint256) { + function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) public authorized(markets[p][u][m].zcToken) unpaused(p) returns (uint256) { + /// @dev swiv needs to be set or the call to authRedeem there will be faulty + if (swivel == address(0)) { + revert Exception(21, 0, 0, address(0), address(0)); + } + Market memory market = markets[p][u][m]; // if the market has not matured, mature it... if (market.maturityRate == 0) { diff --git a/build/marketplace/marketplace.go b/build/marketplace/marketplace.go index dfaa54fc..21b1bdf6 100644 --- a/build/marketplace/marketplace.go +++ b/build/marketplace/marketplace.go @@ -31,7 +31,7 @@ var ( // MarketPlaceMetaData contains all meta data concerning the MarketPlace contract. var MarketPlaceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"Exception\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zcToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vaultTracker\",\"type\":\"address\"}],\"name\":\"Create\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zcTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CustodialExit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zcTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CustodialInitiate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"matured\",\"type\":\"uint256\"}],\"name\":\"Mature\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"P2pVaultExchange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"P2pZcTokenExchange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RedeemVaultInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RedeemZcToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferVaultNotional\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"authRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"burnZcTokenRemovingNotional\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"}],\"name\":\"cTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"createMarket\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"creator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"z\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"n\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"custodialExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"z\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"n\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"custodialInitiate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"}],\"name\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cTokenAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zcToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultTracker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maturityRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"}],\"name\":\"matureMarket\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"mintZcTokenAddingNotional\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"p2pVaultExchange\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"p2pZcTokenExchange\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"}],\"name\":\"redeemVaultInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"redeemZcToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"s\",\"type\":\"address\"}],\"name\":\"setSwivel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swivel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"transferVaultNotional\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"transferVaultNotionalFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620040eb380380620040eb833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b60805161403e620000ad600039600081816101ea0152610da8015261403e6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004613a3c565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004613a97565b61072e565b6101d561022d366004613a97565b610a29565b6101d5610240366004613be1565b610c32565b61029a610253366004613c74565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004613c74565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004613cb5565b611054565b6040519081526020016101b9565b61035c610378366004613a97565b611201565b61035c61038b366004613d08565b611523565b6101d561039e366004613d41565b60016020526000908152604090205460ff1681565b6101d56103c1366004613d5e565b611538565b6101d56103d4366004613a3c565b6115cc565b6101d56103e7366004613c74565b61177c565b6101d56103fa366004613a3c565b6119d7565b61035c61040d366004613a3c565b611c6b565b6101d5610420366004613d5e565b611f0b565b6101d5610433366004613a97565b611ff7565b6101d5610446366004613a3c565b6122de565b6002546101a5906001600160a01b031681565b6101d561046c366004613a97565b6123f5565b6101d561047f366004613d89565b6126dc565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190613db7565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190613db7565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613db7565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190613db7565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190613db7565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f898861277b565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e559190613dd4565b6040518963ffffffff1660e01b8152600401610e78989796959493929190613e5c565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190613ecd565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac9190613efc565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a8552835281842082516080810184528154831681526001820154831694810194909452600281015490911691830191909152600301546060820181905290910361132c576112f089898961177c565b61132c57604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820187905290911690639dc29fac906044016020604051808303816000875af115801561139a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113be9190613db7565b6113fa57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60008160600151600014611419576114148a8a8a88612976565b61141b565b845b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8e1660048201526001600160a01b038d8116602483015291821660448201528982166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613db7565b50604080516001600160a01b038881168252602082018490528a92908c169160ff8e16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49998505050505050505050565b600061152f8383612a05565b90505b92915050565b6002546000906001600160a01b031633811461158d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff80861660009081526001602052604081205490918791161561162257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af11580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190613db7565b61171b57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff8084166000908152600160205260408120549091859116156117d257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611879576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b834210156118b857604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b60006118c8878360000151612a05565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af115801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613db7565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611a2c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611a8057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b619190613db7565b611b9d57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f9190613db7565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611cc057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611d1457604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611dc657611d8a89898961177c565b611dc657604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e589190613db7565b611e9457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611ef75784935050610723565b611f0389898988612976565b935050610723565b6002546000906001600160a01b0316338114611f6057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b031615611fb857600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b031633811461204c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156120a057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af115801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190613db7565b6121bd57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af115801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613db7565b61228b57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b031633811461233357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190613db7565b979650505050505050565b6003546000906001600160a01b031633811461244a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561249e57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af115801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f9190613db7565b6125bb57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af1158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190613db7565b61268957604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b031633811461273157604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff831660011480612792575060ff83166002145b1561280057816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190613f15565b9050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161286857816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8416016128d057816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff84160161293857816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b0380881685529083528184208685528352818420825160808101845281548316808252600183015484169582019590955260028201549092169282019290925260039091015460608201529082906129e9908890612a05565b60608301519091506129fb8286613f61565b6123ea9190613f9e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841601612a3a576127f982612d65565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff841601612a6d576127f982613301565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612af957816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190613efc565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612c82576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8a9190613f15565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa9190613f15565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7a9190613efc565b915050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612d15576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612ad5573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612cf8565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dca9190613efc565b9050438103612e3c57826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e359190613efc565b9392505050565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea09190613f15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015612f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f259190613efc565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8b9190613efc565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff19190613efc565b90506000866001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130579190613f15565b6040517f15f240530000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490526001600160a01b0391909116906315f2405390606401602060405180830381865afa1580156130c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e99190613efc565b905065048c2739500081111561315b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b600061317b8461316b8843613fd9565b6131759085613f61565b906139d0565b90506000836131e6838b6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131759190613efc565b6131f09190613ff0565b905060006131fe8684613ff0565b905060008a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132649190613efc565b905080156132905761328b818461327b858c613ff0565b6132859190613fd9565b906139e5565b6132f2565b8a6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f29190613efc565b9b9a5050505050505050505050565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133669190613efc565b90504381036133ad57826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e11573d6000803e3d6000fd5b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134119190613f15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015613472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134969190613efc565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fc9190613efc565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561353e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135629190613efc565b90506000866001600160a01b03166361feacff6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c89190613efc565b90506000876001600160a01b031663dc028ab16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561360a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362e9190613efc565b9050600080896001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136959190613f15565b6001600160a01b03166315f240538888866136b0898b613ff0565b6136ba9190613ff0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935260248301919091526044820152606401602060405180830381865afa15801561371b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373f9190613efc565b905065048c273950008111156137b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b6137c9866137bf8a43613fd9565b6131759084613f61565b915050600084613811838c6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b61381b9190613ff0565b9050600084613862848d6001600160a01b0316638d02d9a16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b61386c9190613ff0565b90506000846138b3858e6001600160a01b031663dbfe7c196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c2573d6000803e3d6000fd5b6138bd9190613ff0565b905060008c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139239190613efc565b9050801561395d57613958818361393a8688613ff0565b6139449190613ff0565b61394e8c89613ff0565b61327b908e613ff0565b6139bf565b8c6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139bf9190613efc565b9d9c50505050505050505050505050565b600061152f8383670de0b6b3a76400006139f6565b600061152f83670de0b6b3a7640000845b828202811515841585830485141716613a0e57600080fd5b0492915050565b60ff81168114613a2457600080fd5b50565b6001600160a01b0381168114613a2457600080fd5b600080600080600060a08688031215613a5457600080fd5b8535613a5f81613a15565b94506020860135613a6f81613a27565b9350604086013592506060860135613a8681613a27565b949793965091946080013592915050565b60008060008060008060c08789031215613ab057600080fd5b8635613abb81613a15565b95506020870135613acb81613a27565b9450604087013593506060870135613ae281613a27565b92506080870135613af281613a27565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112613b4757600080fd5b813567ffffffffffffffff80821115613b6257613b62613b07565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613ba857613ba8613b07565b81604052838152866020858801011115613bc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215613bf957600080fd5b8535613c0481613a15565b9450602086013593506040860135613c1b81613a27565b9250606086013567ffffffffffffffff80821115613c3857600080fd5b613c4489838a01613b36565b93506080880135915080821115613c5a57600080fd5b50613c6788828901613b36565b9150509295509295909350565b600080600060608486031215613c8957600080fd5b8335613c9481613a15565b92506020840135613ca481613a27565b929592945050506040919091013590565b60008060008060808587031215613ccb57600080fd5b8435613cd681613a15565b93506020850135613ce681613a27565b9250604085013591506060850135613cfd81613a27565b939692955090935050565b60008060408385031215613d1b57600080fd5b8235613d2681613a15565b91506020830135613d3681613a27565b809150509250929050565b600060208284031215613d5357600080fd5b8135612e3581613a15565b600060208284031215613d7057600080fd5b8135612e3581613a27565b8015158114613a2457600080fd5b60008060408385031215613d9c57600080fd5b8235613da781613a15565b91506020830135613d3681613d7b565b600060208284031215613dc957600080fd5b8151612e3581613d7b565b600060208284031215613de657600080fd5b8151612e3581613a15565b6000815180845260005b81811015613e1757602081850181015186830182015201613dfb565b81811115613e29576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a0840152613ea081840187613df1565b905082810360c0840152613eb48186613df1565b91505060ff831660e08301529998505050505050505050565b60008060408385031215613ee057600080fd5b8251613eeb81613a27565b6020840151909250613d3681613a27565b600060208284031215613f0e57600080fd5b5051919050565b600060208284031215613f2757600080fd5b8151612e3581613a27565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f9957613f99613f32565b500290565b600082613fd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613feb57613feb613f32565b500390565b6000821982111561400357614003613f32565b50019056fea26469706673582212204f3e682b0b5d6ec788787fef26c30e6a82aee3b7efb7c55aa2c83d28a69169c364736f6c634300080d0033", + Bin: "0x60a06040523480156200001157600080fd5b506040516200418838038062004188833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b6080516140db620000ad600039600081816101ea0152610da801526140db6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004613ad9565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004613b34565b61072e565b6101d561022d366004613b34565b610a29565b6101d5610240366004613c7e565b610c32565b61029a610253366004613d11565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004613d11565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004613d52565b611054565b6040519081526020016101b9565b61035c610378366004613b34565b611201565b61035c61038b366004613da5565b6115c0565b6101d561039e366004613dde565b60016020526000908152604090205460ff1681565b6101d56103c1366004613dfb565b6115d5565b6101d56103d4366004613ad9565b611669565b6101d56103e7366004613d11565b611819565b6101d56103fa366004613ad9565b611a74565b61035c61040d366004613ad9565b611d08565b6101d5610420366004613dfb565b611fa8565b6101d5610433366004613b34565b612094565b6101d5610446366004613ad9565b61237b565b6002546101a5906001600160a01b031681565b6101d561046c366004613b34565b612492565b6101d561047f366004613e26565b612779565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190613e54565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190613e54565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613e54565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190613e54565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190613e54565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f8988612818565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e559190613e71565b6040518963ffffffff1660e01b8152600401610e78989796959493929190613ef9565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190613f6a565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac9190613f99565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156112ce57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b031661131657604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b03808d1685529083528184208b855283528184208251608081018452815483168152600182015483169481019490945260028101549091169183019190915260030154606082018190529091036113c85761138c8a8a8a611819565b6113c857604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190613e54565b61149657604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b600081606001516000146114b5576114b08b8b8b89612a13565b6114b7565b855b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8f1660048201526001600160a01b038e8116602483015291821660448201528a82166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af115801561153f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115639190613e54565b50604080516001600160a01b038981168252602082018490528b92908d169160ff8f16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49a9950505050505050505050565b60006115cc8383612aa2565b90505b92915050565b6002546000906001600160a01b031633811461162a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff8086166000908152600160205260408120549091879116156116bf57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c9190613e54565b6117b857604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff80841660009081526001602052604081205490918591161561186f57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611916576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b8342101561195557604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b6000611965878360000151612aa2565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af11580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c9190613e54565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611ac957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611b1d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613e54565b611c3a57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc9190613e54565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611d5d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611db157604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611e6357611e27898989611819565b611e6357604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef59190613e54565b611f3157604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611f945784935050610723565b611fa089898988612a13565b935050610723565b6002546000906001600160a01b0316338114611ffd57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b03161561205557600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b03163381146120e957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561213d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af11580156121fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221e9190613e54565b61225a57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec9190613e54565b61232857604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b03163381146123d057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190613e54565b979650505050505050565b6003546000906001600160a01b03163381146124e757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561253b57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af11580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c9190613e54565b61265857604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af11580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea9190613e54565b61272657604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b03163381146127ce57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff83166001148061282f575060ff83166002145b1561289d57816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190613fb2565b90506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161290557816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff84160161296d57816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff8416016129d557816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b038088168552908352818420868552835281842082516080810184528154831680825260018301548416958201959095526002820154909216928201929092526003909101546060820152908290612a86908890612aa2565b6060830151909150612a988286613ffe565b612487919061403b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841601612ad75761289682612e02565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff841601612b0a576128968261339e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612b9657816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b72573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128969190613f99565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612d1f576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c279190613fb2565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c979190613fb2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190613f99565b9150506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612db2576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612b72573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612d95565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e679190613f99565b9050438103612ed957826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed29190613f99565b9392505050565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190613fb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc29190613f99565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130289190613f99565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561306a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308e9190613f99565b90506000866001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f49190613fb2565b6040517f15f240530000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490526001600160a01b0391909116906315f2405390606401602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190613f99565b905065048c273950008111156131f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b6000613218846132088843614076565b6132129085613ffe565b90613a6d565b9050600083613283838b6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132129190613f99565b61328d919061408d565b9050600061329b868461408d565b905060008a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133019190613f99565b9050801561332d576133288184613318858c61408d565b6133229190614076565b90613a82565b61338f565b8a6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561336b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338f9190613f99565b9b9a5050505050505050505050565b600080826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134039190613f99565b905043810361344a57826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eae573d6000803e3d6000fd5b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561348a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ae9190613fb2565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa15801561350f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135339190613f99565b90506000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135999190613f99565b90506000856001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ff9190613f99565b90506000866001600160a01b03166361feacff6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136659190613f99565b90506000876001600160a01b031663dc028ab16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cb9190613f99565b9050600080896001600160a01b031663f3fdb15a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561370e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137329190613fb2565b6001600160a01b03166315f2405388888661374d898b61408d565b613757919061408d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935260248301919091526044820152606401602060405180830381865afa1580156137b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137dc9190613f99565b905065048c2739500081111561384e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f524154455f544f4f5f484947480000000000000000000000000000000000000060448201526064016104d5565b6138668661385c8a43614076565b6132129084613ffe565b9150506000846138ae838c6001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b6138b8919061408d565b90506000846138ff848d6001600160a01b0316638d02d9a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b613909919061408d565b9050600084613950858e6001600160a01b031663dbfe7c196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561325f573d6000803e3d6000fd5b61395a919061408d565b905060008c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561399c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c09190613f99565b905080156139fa576139f581836139d7868861408d565b6139e1919061408d565b6139eb8c8961408d565b613318908e61408d565b613a5c565b8c6001600160a01b031663675d972c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5c9190613f99565b9d9c50505050505050505050505050565b60006115cc8383670de0b6b3a7640000613a93565b60006115cc83670de0b6b3a7640000845b828202811515841585830485141716613aab57600080fd5b0492915050565b60ff81168114613ac157600080fd5b50565b6001600160a01b0381168114613ac157600080fd5b600080600080600060a08688031215613af157600080fd5b8535613afc81613ab2565b94506020860135613b0c81613ac4565b9350604086013592506060860135613b2381613ac4565b949793965091946080013592915050565b60008060008060008060c08789031215613b4d57600080fd5b8635613b5881613ab2565b95506020870135613b6881613ac4565b9450604087013593506060870135613b7f81613ac4565b92506080870135613b8f81613ac4565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112613be457600080fd5b813567ffffffffffffffff80821115613bff57613bff613ba4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613c4557613c45613ba4565b81604052838152866020858801011115613c5e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215613c9657600080fd5b8535613ca181613ab2565b9450602086013593506040860135613cb881613ac4565b9250606086013567ffffffffffffffff80821115613cd557600080fd5b613ce189838a01613bd3565b93506080880135915080821115613cf757600080fd5b50613d0488828901613bd3565b9150509295509295909350565b600080600060608486031215613d2657600080fd5b8335613d3181613ab2565b92506020840135613d4181613ac4565b929592945050506040919091013590565b60008060008060808587031215613d6857600080fd5b8435613d7381613ab2565b93506020850135613d8381613ac4565b9250604085013591506060850135613d9a81613ac4565b939692955090935050565b60008060408385031215613db857600080fd5b8235613dc381613ab2565b91506020830135613dd381613ac4565b809150509250929050565b600060208284031215613df057600080fd5b8135612ed281613ab2565b600060208284031215613e0d57600080fd5b8135612ed281613ac4565b8015158114613ac157600080fd5b60008060408385031215613e3957600080fd5b8235613e4481613ab2565b91506020830135613dd381613e18565b600060208284031215613e6657600080fd5b8151612ed281613e18565b600060208284031215613e8357600080fd5b8151612ed281613ab2565b6000815180845260005b81811015613eb457602081850181015186830182015201613e98565b81811115613ec6576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a0840152613f3d81840187613e8e565b905082810360c0840152613f518186613e8e565b91505060ff831660e08301529998505050505050505050565b60008060408385031215613f7d57600080fd5b8251613f8881613ac4565b6020840151909250613dd381613ac4565b600060208284031215613fab57600080fd5b5051919050565b600060208284031215613fc457600080fd5b8151612ed281613ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561403657614036613fcf565b500290565b600082614071577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561408857614088613fcf565b500390565b600082198211156140a0576140a0613fcf565b50019056fea26469706673582212208eb745fee210abe7ebdd1da4c25060a81f88818d431c1920fe0b25be088b17ce64736f6c634300080d0033", } // MarketPlaceABI is the input ABI used to generate the binding from. diff --git a/pkg/marketplacetesting/auth_redeem_test.go b/pkg/marketplacetesting/auth_redeem_test.go new file mode 100644 index 00000000..018accea --- /dev/null +++ b/pkg/marketplacetesting/auth_redeem_test.go @@ -0,0 +1,260 @@ +package marketplacetesting + +import ( + "math/big" + test "testing" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + assertions "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/suite" + "github.com/swivel-finance/gost/test/marketplace" + "github.com/swivel-finance/gost/test/mocks" +) + +type authRedeemSuite struct { + suite.Suite + Env *Env + Dep *Dep + Erc20 *mocks.Erc20Session + Erc4626 *mocks.Erc4626Session + CompoundToken *mocks.CompoundTokenSession + Creator *mocks.CreatorSession + ZcToken *mocks.ZcTokenSession + VaultTracker *mocks.VaultTrackerSession + Swivel *mocks.SwivelSession + MarketPlace *marketplace.MarketPlaceSession // *Session objects are created by the go bindings +} + +func (s *authRedeemSuite) SetupTest() { + var err error + assert := assertions.New(s.T()) + + s.Env = NewEnv(big.NewInt(ONE_ETH)) // each of the wallets in the env will begin with this balance + s.Dep, err = Deploy(s.Env) + assert.Nil(err) + + err = s.Env.Blockchain.AdjustTime(0) // set bc timestamp to 0 + assert.Nil(err) + + s.Env.Blockchain.Commit() + + s.Erc20 = &mocks.Erc20Session{ + Contract: s.Dep.Erc20, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + s.Erc4626 = &mocks.Erc4626Session{ + Contract: s.Dep.Erc4626, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + s.CompoundToken = &mocks.CompoundTokenSession{ + Contract: s.Dep.CompoundToken, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + s.Creator = &mocks.CreatorSession{ + Contract: s.Dep.Creator, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + s.ZcToken = &mocks.ZcTokenSession{ + Contract: s.Dep.ZcToken, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + s.VaultTracker = &mocks.VaultTrackerSession{ + Contract: s.Dep.VaultTracker, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + s.Swivel = &mocks.SwivelSession{ + Contract: s.Dep.Swivel, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + // binding owner to both, kind of why it exists - but could be any of the env wallets + s.MarketPlace = &marketplace.MarketPlaceSession{ + Contract: s.Dep.MarketPlace, + CallOpts: bind.CallOpts{From: s.Env.Owner.Opts.From, Pending: false}, + TransactOpts: bind.TransactOpts{ + From: s.Env.Owner.Opts.From, + Signer: s.Env.Owner.Opts.Signer, + }, + } + + // authRedeem requires that the swivel address be the actual mock + _, err = s.MarketPlace.SetSwivel(s.Dep.SwivelAddress) + assert.Nil(err) + s.Env.Blockchain.Commit() +} + +func (s *authRedeemSuite) TestAuthRedeemFailsOnPaused() { + assert := assertions.New(s.T()) + + underlying := s.Dep.Erc20Address + maturity := s.Dep.Maturity + amount := big.NewInt(123456789) + cToken := s.Dep.CompoundTokenAddress + + tx, err := s.Erc20.DecimalsReturns(uint8(18)) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.CompoundToken.UnderlyingReturns(underlying) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.Creator.CreateReturns(s.Dep.ZcTokenAddress, s.Dep.VaultTrackerAddress) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // a market must be created in order for the zcToken authorized check to succeed + tx, err = s.MarketPlace.CreateMarket( + uint8(1), + maturity, + cToken, + "awesome market", + "AM", + ) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // stub the returns for zctoken and vaulttracker + tx, err = s.ZcToken.BurnReturns(true) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.VaultTracker.MatureVaultReturns(true) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // move past the maturity date + err = s.Env.Blockchain.AdjustTime(MATURITY * time.Second) + assert.Nil(err) + s.Env.Blockchain.Commit() + + // force the paued modifier to fail here + tx, err = s.MarketPlace.Pause(uint8(1), true) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.ZcToken.AuthRedeem(uint8(1), underlying, maturity, s.Env.Owner.Opts.From, s.Env.User1.Opts.From, amount) + assert.Nil(tx) + assert.NotNil(err) + s.Env.Blockchain.Commit() + + // unpause so the other tests don't fail + tx, err = s.MarketPlace.Pause(uint8(1), false) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() +} + +func (s *authRedeemSuite) TestAuthRedeem() { + assert := assertions.New(s.T()) + + underlying := s.Dep.Erc20Address + maturity := s.Dep.Maturity + amount := big.NewInt(123456789) + cToken := s.Dep.CompoundTokenAddress + + tx, err := s.Erc20.DecimalsReturns(uint8(18)) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.CompoundToken.UnderlyingReturns(underlying) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.Creator.CreateReturns(s.Dep.ZcTokenAddress, s.Dep.VaultTrackerAddress) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // a market must be created in order for the zcToken authorized check to succeed + tx, err = s.MarketPlace.CreateMarket( + uint8(1), + maturity, + cToken, + "awesome market", + "AM", + ) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // stub the returns for zctoken and vaulttracker + tx, err = s.ZcToken.BurnReturns(true) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + tx, err = s.VaultTracker.MatureVaultReturns(true) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // move past the maturity date + err = s.Env.Blockchain.AdjustTime(MATURITY * time.Second) + assert.Nil(err) + s.Env.Blockchain.Commit() + + // we'll use the exposed `authRedeem` method on the ZcToken mock which will call it's redeemer (MarketPlace) thus preserving the sender we need + // and be passed directly thru to the MarketPlace.AuthRedeem method we are testing + tx, err = s.ZcToken.AuthRedeem(uint8(1), underlying, maturity, s.Env.Owner.Opts.From, s.Env.User1.Opts.From, amount) + assert.Nil(err) + assert.NotNil(tx) + s.Env.Blockchain.Commit() + + // the swivel mock should have seen the call + args, err := s.Swivel.AuthRedeemCalled(uint8(1)) + assert.Nil(err) + assert.NotNil(args) + assert.Equal(args.Underlying, underlying) + assert.Equal(args.One, cToken) + assert.Equal(args.Two, s.Env.User1.Opts.From) + assert.Equal(args.Amount, amount) +} + +func TestAuthRedeemSuite(t *test.T) { + suite.Run(t, &authRedeemSuite{}) +} diff --git a/pkg/marketplacetesting/dep.go b/pkg/marketplacetesting/dep.go index 3ae0fef1..6b89e99d 100644 --- a/pkg/marketplacetesting/dep.go +++ b/pkg/marketplacetesting/dep.go @@ -27,8 +27,9 @@ type Dep struct { Creator *mocks.Creator MarketPlaceAddress common.Address MarketPlace *marketplace.MarketPlace - Maturity *big.Int SwivelAddress common.Address + Swivel *mocks.Swivel + Maturity *big.Int ZcToken *mocks.ZcToken ZcTokenAddress common.Address VaultTracker *mocks.VaultTracker @@ -38,94 +39,100 @@ type Dep struct { func Deploy(e *Env) (*Dep, error) { maturity := big.NewInt(MATURITY) - ctAddress, _, ctContract, ctErr := mocks.DeployCompoundToken(e.Owner.Opts, e.Blockchain) + ctAddress, _, ctContract, err := mocks.DeployCompoundToken(e.Owner.Opts, e.Blockchain) - if ctErr != nil { - return nil, ctErr + if err != nil { + return nil, err } e.Blockchain.Commit() - erc4626Address, _, erc4626Contract, erc4626Err := mocks.DeployErc4626(e.Owner.Opts, e.Blockchain) + erc4626Address, _, erc4626Contract, err := mocks.DeployErc4626(e.Owner.Opts, e.Blockchain) - if erc4626Err != nil { - return nil, erc4626Err + if err != nil { + return nil, err } e.Blockchain.Commit() - erc20Address, _, erc20Contract, erc20Err := mocks.DeployErc20(e.Owner.Opts, e.Blockchain) + erc20Address, _, erc20Contract, err := mocks.DeployErc20(e.Owner.Opts, e.Blockchain) - if erc20Err != nil { - return nil, erc20Err + if err != nil { + return nil, err } e.Blockchain.Commit() - yvAddress, _, yvContract, yvErr := mocks.DeployYearnVault(e.Owner.Opts, e.Blockchain) + yvAddress, _, yvContract, err := mocks.DeployYearnVault(e.Owner.Opts, e.Blockchain) - if yvErr != nil { - return nil, yvErr + if err != nil { + return nil, err } e.Blockchain.Commit() - atAddress, _, atContract, atErr := mocks.DeployAaveToken(e.Owner.Opts, e.Blockchain) + atAddress, _, atContract, err := mocks.DeployAaveToken(e.Owner.Opts, e.Blockchain) - if atErr != nil { - return nil, atErr + if err != nil { + return nil, err } e.Blockchain.Commit() - apAddress, _, apContract, apErr := mocks.DeployAavePool(e.Owner.Opts, e.Blockchain) + apAddress, _, apContract, err := mocks.DeployAavePool(e.Owner.Opts, e.Blockchain) - if apErr != nil { - return nil, apErr + if err != nil { + return nil, err } e.Blockchain.Commit() - etAddress, _, etContract, etErr := mocks.DeployEulerToken(e.Owner.Opts, e.Blockchain) + etAddress, _, etContract, err := mocks.DeployEulerToken(e.Owner.Opts, e.Blockchain) - if etErr != nil { - return nil, etErr + if err != nil { + return nil, err } e.Blockchain.Commit() - crAddress, _, crContract, crErr := mocks.DeployCreator(e.Owner.Opts, e.Blockchain) + crAddress, _, crContract, err := mocks.DeployCreator(e.Owner.Opts, e.Blockchain) - if crErr != nil { - return nil, crErr + if err != nil { + return nil, err } e.Blockchain.Commit() - marketAddress, _, marketContract, marketErr := marketplace.DeployMarketPlace(e.Owner.Opts, e.Blockchain, crAddress) + swivAddress, _, swivContract, err := mocks.DeploySwivel(e.Owner.Opts, e.Blockchain) - if marketErr != nil { - return nil, marketErr + if err != nil { + return nil, err } e.Blockchain.Commit() - swivAddress := common.HexToAddress("0x123aBc") + marketAddress, _, marketContract, err := marketplace.DeployMarketPlace(e.Owner.Opts, e.Blockchain, crAddress) + + if err != nil { + return nil, err + } + + e.Blockchain.Commit() // NOTE the public properties on the mock can be changed per spec - zcAddress, _, zcContract, zcErr := mocks.DeployZcToken(e.Owner.Opts, e.Blockchain, uint8(1), erc20Address, big.NewInt(MATURITY), ctAddress, marketAddress, "", "", uint8(18)) + zcAddress, _, zcContract, err := mocks.DeployZcToken(e.Owner.Opts, e.Blockchain, uint8(1), erc20Address, big.NewInt(MATURITY), ctAddress, marketAddress, "", "", uint8(18)) - if zcErr != nil { - return nil, zcErr + if err != nil { + return nil, err } e.Blockchain.Commit() // NOTE same as ZcToken WRT properties... - vtAddress, _, vtContract, vtErr := mocks.DeployVaultTracker(e.Owner.Opts, e.Blockchain, uint8(1), big.NewInt(MATURITY), ctAddress, swivAddress, marketAddress) + vtAddress, _, vtContract, err := mocks.DeployVaultTracker(e.Owner.Opts, e.Blockchain, uint8(1), big.NewInt(MATURITY), ctAddress, swivAddress, marketAddress) - if vtErr != nil { - return nil, vtErr + if err != nil { + return nil, err } e.Blockchain.Commit() @@ -149,11 +156,12 @@ func Deploy(e *Env) (*Dep, error) { AavePoolAddress: apAddress, EulerToken: etContract, EulerTokenAddress: etAddress, - SwivelAddress: swivAddress, Maturity: maturity, ZcToken: zcContract, ZcTokenAddress: zcAddress, VaultTracker: vtContract, VaultTrackerAddress: vtAddress, + SwivelAddress: swivAddress, + Swivel: swivContract, }, nil } diff --git a/test/creator/Creator.bin b/test/creator/Creator.bin index 8c121546..91a73525 100644 --- a/test/creator/Creator.bin +++ b/test/creator/Creator.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50600080546001600160a01b03191633179055611cdc806100326000396000f3fe60806040523480156200001157600080fd5b50600436106200006f5760003560e01c80636363e86711620000565780636363e86714620000e7578063704b6c02146200012c578063f851a440146200014357600080fd5b80632e25d2a6146200007457806330568a8d14620000bf575b600080fd5b600154620000959073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620000d6620000d036600462000611565b62000164565b6040519015158152602001620000b6565b620000fe620000f836600462000694565b620002c7565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015201620000b6565b620000d66200013d36600462000611565b620004f7565b600054620000959073ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff16338114620001f0576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a4015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16156200027d576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602160048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b6001805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178155915050919050565b600154600090819073ffffffffffffffffffffffffffffffffffffffff1633811462000353576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b60015473ffffffffffffffffffffffffffffffffffffffff16620003df576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602260048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b60008d8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8d8d8d6040516200041b90620005cb565b620004309a99989796959493929190620007bb565b604051809103906000f0801580156200044d573d6000803e3d6000fd5b50905060008e8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200048790620005d9565b60ff9095168552602085019390935273ffffffffffffffffffffffffffffffffffffffff91821660408501528116606084015216608082015260a001604051809103906000f080158015620004e0573d6000803e3d6000fd5b50919f919e50909c50505050505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163381146200057f576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b6000805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b610b72806200084283390190565b6108f380620013b483390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200060c57600080fd5b919050565b6000602082840312156200062457600080fd5b6200062f82620005e7565b9392505050565b803560ff811681146200060c57600080fd5b60008083601f8401126200065b57600080fd5b50813567ffffffffffffffff8111156200067457600080fd5b6020830191508360208285010111156200068d57600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215620006b557600080fd5b620006c08b62000636565b9950620006d060208c01620005e7565b985060408b01359750620006e760608c01620005e7565b9650620006f760808c01620005e7565b955060a08b013567ffffffffffffffff808211156200071557600080fd5b620007238e838f0162000648565b909750955060c08d01359150808211156200073d57600080fd5b506200074c8d828e0162000648565b909450925062000761905060e08c0162000636565b90509295989b9194979a5092959850565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010060ff8d16835273ffffffffffffffffffffffffffffffffffffffff808d1660208501528b6040850152808b166060850152808a166080850152508060a08401526200080f818401888a62000772565b905082810360c08401526200082681868862000772565b91505060ff831660e08301529b9a505050505050505050505056fe60806040523480156200001157600080fd5b5060405162000b7238038062000b7283398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b6107d8806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba677414610495578063ee4db570146104ef578063fdfe5f4d1461050f57600080fd5b8063bba0ad3914610409578063e541efa21461042957600080fd5b80639dc29fac116100b25780639dc29fac1461036d578063b4c4a4c8146103b1578063b9bb928c146103c457600080fd5b80638ce744261461035857806395d89b411461036557600080fd5b8063313ce567116101245780636521b96a116101095780636521b96a146102cc57806369e527da146103155780636f307dc31461033557600080fd5b8063313ce5671461026857806340c10f191461028757600080fd5b806306fdde0314610156578063204f83f91461017457806323b872dd146101865780632ba29d3814610223575b600080fd5b61015e610555565b60405161016b91906105f0565b60405180910390f35b6004545b60405190815260200161016b565b61021361019436600461068c565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b604051901515815260200161016b565b6006546102439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6009546102759060ff1681565b60405160ff909116815260200161016b565b6102136102953660046106c8565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6103136102da3660046106f2565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b005b6005546102439073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16610243565b6003546102759060ff1681565b61015e6105e3565b61021361037b3660046106c8565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6103136103bf36600461071b565b600455565b6103136103d23660046106f2565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610178610417366004610734565b60006020819052908152604090205481565b610469610437366004610734565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161016b565b6103136104a3366004610734565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6101786104fd366004610734565b60016020526000908152604090205481565b61031361051d3660046106f2565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b600780546105629061074f565b80601f016020809104026020016040519081016040528092919081815260200182805461058e9061074f565b80156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b505050505081565b600880546105629061074f565b600060208083528351808285015260005b8181101561061d57858101830151858201604001528201610601565b8181111561062f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068757600080fd5b919050565b6000806000606084860312156106a157600080fd5b6106aa84610663565b92506106b860208501610663565b9150604084013590509250925092565b600080604083850312156106db57600080fd5b6106e483610663565b946020939093013593505050565b60006020828403121561070457600080fd5b8135801515811461071457600080fd5b9392505050565b60006020828403121561072d57600080fd5b5035919050565b60006020828403121561074657600080fd5b61071482610663565b600181811c9082168061076357607f821691505b60208210810361079c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220980d8d4b94b7cc21a6c0d4a0f6cf63be4557820bc7da9dc206b501059f54910764736f6c634300080d0033608060405234801561001057600080fd5b506040516108f33803806108f383398101604081905261002f916100a9565b6009805460ff191660ff9690961695909517909455600a92909255600480546001600160a01b03199081166001600160a01b039384161790915560058054821693831693909317909255600680549092169216919091179055610110565b80516001600160a01b03811681146100a457600080fd5b919050565b600080600080600060a086880312156100c157600080fd5b855160ff811681146100d257600080fd5b602087015190955093506100e86040870161008d565b92506100f66060870161008d565b91506101046080870161008d565b90509295509295909350565b6107d48061011f6000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806382cac89c116100e3578063b7dd34831161008c578063d6cb2c0d11610066578063d6cb2c0d146105f4578063da3de9e914610607578063e590c3621461064657600080fd5b8063b7dd34831461056d578063bbce23861461058d578063d0b9d032146105ad57600080fd5b8063a701da69116100bd578063a701da69146104cb578063b326258d14610513578063b4c4a4c81461055a57600080fd5b806382cac89c146104485780638ce7442614610468578063a01cfffb1461048757600080fd5b80633cc31443116101455780635dfe12ac1161011f5780635dfe12ac146103a3578063613a28d1146103e957806364ae3c9d1461042e57600080fd5b80633cc31443146103335780633dfa1f411461033c5780635c70b7c11461035c57600080fd5b806319caf46c1161017657806319caf46c146102b2578063204f83f91461030b5780632e25d2a61461031357600080fd5b8063012b264a1461019d5780630aa93b9b146101e75780631779467314610215575b600080fd5b6005546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102076101f53660046106db565b60016020526000908152604090205481565b6040519081526020016101de565b6102a26102233660046106fd565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff000000000000000000000000000000000000000016921691909117825551600190910155600c546301000000900460ff1690565b60405190151581526020016101de565b6102076102c03660046106db565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600b5490565b600a54610207565b6006546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020760085481565b61020761034a3660046106db565b60006020819052908152604090205481565b6103a161036a366004610739565b600c8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b005b6103a16103b1366004610739565b600c805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6102a26103f736600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260016020526040902055600c5462010000900460ff1690565b6102a261043c366004610785565b600855600c5460ff1690565b6007546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b6009546104759060ff1681565b60405160ff90911681526020016101de565b6102a261049536600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600c54610100900460ff1690565b6103a16104d9366004610739565b600c8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6102a261052136600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902055600c54640100000000900460ff1690565b6103a1610568366004610785565b600a55565b6004546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020761059b3660046106db565b60036020526000908152604090205481565b6103a16105bb366004610739565b600c80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6103a1610602366004610785565b600b55565b6103a1610615366004610739565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6106866106543660046106db565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101de565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b6106f6826106b2565b9392505050565b60008060006060848603121561071257600080fd5b61071b846106b2565b9250610729602085016106b2565b9150604084013590509250925092565b60006020828403121561074b57600080fd5b813580151581146106f657600080fd5b6000806040838503121561076e57600080fd5b610777836106b2565b946020939093013593505050565b60006020828403121561079757600080fd5b503591905056fea264697066735822122023d48e8ff42392ae9b9c81598a90f68d142f4b6ce71155c3400fcfeb94b6467264736f6c634300080d0033a26469706673582212200befe6600862b19f149a622ab1e4c5a2491ca3e3b7203dea5bd4e5a5817e292c64736f6c634300080d0033 \ No newline at end of file +608060405234801561001057600080fd5b50600080546001600160a01b03191633179055611e57806100326000396000f3fe60806040523480156200001157600080fd5b50600436106200006f5760003560e01c80636363e86711620000565780636363e86714620000e7578063704b6c02146200012c578063f851a440146200014357600080fd5b80632e25d2a6146200007457806330568a8d14620000bf575b600080fd5b600154620000959073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620000d6620000d036600462000611565b62000164565b6040519015158152602001620000b6565b620000fe620000f836600462000694565b620002c7565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015201620000b6565b620000d66200013d36600462000611565b620004f7565b600054620000959073ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff16338114620001f0576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a4015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16156200027d576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602160048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b6001805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178155915050919050565b600154600090819073ffffffffffffffffffffffffffffffffffffffff1633811462000353576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b60015473ffffffffffffffffffffffffffffffffffffffff16620003df576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602260048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b60008d8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8d8d8d6040516200041b90620005cb565b620004309a99989796959493929190620007bb565b604051809103906000f0801580156200044d573d6000803e3d6000fd5b50905060008e8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200048790620005d9565b60ff9095168552602085019390935273ffffffffffffffffffffffffffffffffffffffff91821660408501528116606084015216608082015260a001604051809103906000f080158015620004e0573d6000803e3d6000fd5b50919f919e50909c50505050505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163381146200057f576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b6000805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b610ced806200084283390190565b6108f3806200152f83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200060c57600080fd5b919050565b6000602082840312156200062457600080fd5b6200062f82620005e7565b9392505050565b803560ff811681146200060c57600080fd5b60008083601f8401126200065b57600080fd5b50813567ffffffffffffffff8111156200067457600080fd5b6020830191508360208285010111156200068d57600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215620006b557600080fd5b620006c08b62000636565b9950620006d060208c01620005e7565b985060408b01359750620006e760608c01620005e7565b9650620006f760808c01620005e7565b955060a08b013567ffffffffffffffff808211156200071557600080fd5b620007238e838f0162000648565b909750955060c08d01359150808211156200073d57600080fd5b506200074c8d828e0162000648565b909450925062000761905060e08c0162000636565b90509295989b9194979a5092959850565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010060ff8d16835273ffffffffffffffffffffffffffffffffffffffff808d1660208501528b6040850152808b166060850152808a166080850152508060a08401526200080f818401888a62000772565b905082810360c08401526200082681868862000772565b91505060ff831660e08301529b9a505050505050505050505056fe60806040523480156200001157600080fd5b5060405162000ced38038062000ced83398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b610953806200039a6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba6774146104c3578063ee4db5701461051d578063fdfe5f4d1461053d57600080fd5b8063bba0ad3914610437578063e541efa21461045757600080fd5b80639dc29fac116100b25780639dc29fac1461039b578063b4c4a4c8146103df578063b9bb928c146103f257600080fd5b80638ce744261461038657806395d89b411461039357600080fd5b806340c10f19116101245780636521b96a116101095780636521b96a146102fc57806369e527da146103435780636f307dc31461036357600080fd5b806340c10f19146102a257806352bc9430146102e757600080fd5b806323b872dd1161015557806323b872dd146101a15780632ba29d381461023e578063313ce5671461028357600080fd5b806306fdde0314610171578063204f83f91461018f575b600080fd5b610179610583565b60405161018691906106e4565b60405180910390f35b6004545b604051908152602001610186565b61022e6101af366004610780565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b6040519015158152602001610186565b60065461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b6009546102909060ff1681565b60405160ff9091168152602001610186565b61022e6102b03660046107bc565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6102fa6102f53660046107e6565b610611565b005b6102fa61030a366004610854565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60055461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1661025e565b6003546102909060ff1681565b6101796106d7565b61022e6103a93660046107bc565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6102fa6103ed36600461087d565b600455565b6102fa610400366004610854565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610193610445366004610896565b60006020819052908152604090205481565b610497610465366004610896565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610186565b6102fa6104d1366004610896565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61019361052b366004610896565b60016020526000908152604090205481565b6102fa61054b366004610854565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60078054610590906108b1565b80601f01602080910402602001604051908101604052809291908181526020018280546105bc906108b1565b80156106095780601f106105de57610100808354040283529160200191610609565b820191906000526020600020905b8154815290600101906020018083116105ec57829003601f168201915b505050505081565b6006546040517f52bc943000000000000000000000000000000000000000000000000000000000815260ff8816600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018790528581166064830152848116608483015260a48201849052909116906352bc94309060c4016020604051808303816000875af11580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610904565b50505050505050565b60088054610590906108b1565b600060208083528351808285015260005b81811015610711578581018301518582016040015282016106f5565b81811115610723576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077b57600080fd5b919050565b60008060006060848603121561079557600080fd5b61079e84610757565b92506107ac60208501610757565b9150604084013590509250925092565b600080604083850312156107cf57600080fd5b6107d883610757565b946020939093013593505050565b60008060008060008060c087890312156107ff57600080fd5b863560ff8116811461081057600080fd5b955061081e60208801610757565b94506040870135935061083360608801610757565b925061084160808801610757565b915060a087013590509295509295509295565b60006020828403121561086657600080fd5b8135801515811461087657600080fd5b9392505050565b60006020828403121561088f57600080fd5b5035919050565b6000602082840312156108a857600080fd5b61087682610757565b600181811c908216806108c557607f821691505b6020821081036108fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561091657600080fd5b505191905056fea2646970667358221220ab82732e8b4d0f87d0e20dedbcdfd9a4708dd121141f10519c014c70dccfd0f764736f6c634300080d0033608060405234801561001057600080fd5b506040516108f33803806108f383398101604081905261002f916100a9565b6009805460ff191660ff9690961695909517909455600a92909255600480546001600160a01b03199081166001600160a01b039384161790915560058054821693831693909317909255600680549092169216919091179055610110565b80516001600160a01b03811681146100a457600080fd5b919050565b600080600080600060a086880312156100c157600080fd5b855160ff811681146100d257600080fd5b602087015190955093506100e86040870161008d565b92506100f66060870161008d565b91506101046080870161008d565b90509295509295909350565b6107d48061011f6000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806382cac89c116100e3578063b7dd34831161008c578063d6cb2c0d11610066578063d6cb2c0d146105f4578063da3de9e914610607578063e590c3621461064657600080fd5b8063b7dd34831461056d578063bbce23861461058d578063d0b9d032146105ad57600080fd5b8063a701da69116100bd578063a701da69146104cb578063b326258d14610513578063b4c4a4c81461055a57600080fd5b806382cac89c146104485780638ce7442614610468578063a01cfffb1461048757600080fd5b80633cc31443116101455780635dfe12ac1161011f5780635dfe12ac146103a3578063613a28d1146103e957806364ae3c9d1461042e57600080fd5b80633cc31443146103335780633dfa1f411461033c5780635c70b7c11461035c57600080fd5b806319caf46c1161017657806319caf46c146102b2578063204f83f91461030b5780632e25d2a61461031357600080fd5b8063012b264a1461019d5780630aa93b9b146101e75780631779467314610215575b600080fd5b6005546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102076101f53660046106db565b60016020526000908152604090205481565b6040519081526020016101de565b6102a26102233660046106fd565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff000000000000000000000000000000000000000016921691909117825551600190910155600c546301000000900460ff1690565b60405190151581526020016101de565b6102076102c03660046106db565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600b5490565b600a54610207565b6006546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020760085481565b61020761034a3660046106db565b60006020819052908152604090205481565b6103a161036a366004610739565b600c8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b005b6103a16103b1366004610739565b600c805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6102a26103f736600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260016020526040902055600c5462010000900460ff1690565b6102a261043c366004610785565b600855600c5460ff1690565b6007546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b6009546104759060ff1681565b60405160ff90911681526020016101de565b6102a261049536600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600c54610100900460ff1690565b6103a16104d9366004610739565b600c8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6102a261052136600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902055600c54640100000000900460ff1690565b6103a1610568366004610785565b600a55565b6004546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020761059b3660046106db565b60036020526000908152604090205481565b6103a16105bb366004610739565b600c80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6103a1610602366004610785565b600b55565b6103a1610615366004610739565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6106866106543660046106db565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101de565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b6106f6826106b2565b9392505050565b60008060006060848603121561071257600080fd5b61071b846106b2565b9250610729602085016106b2565b9150604084013590509250925092565b60006020828403121561074b57600080fd5b813580151581146106f657600080fd5b6000806040838503121561076e57600080fd5b610777836106b2565b946020939093013593505050565b60006020828403121561079757600080fd5b503591905056fea264697066735822122023d48e8ff42392ae9b9c81598a90f68d142f4b6ce71155c3400fcfeb94b6467264736f6c634300080d0033a2646970667358221220a6381d37ef0d6232ef4c7dff2373c17b31791019389453994ff859df12547c3564736f6c634300080d0033 \ No newline at end of file diff --git a/test/creator/IRedeemer.abi b/test/creator/IRedeemer.abi new file mode 100644 index 00000000..35d9fb3c --- /dev/null +++ b/test/creator/IRedeemer.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"authRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/test/creator/IRedeemer.bin b/test/creator/IRedeemer.bin new file mode 100644 index 00000000..e69de29b diff --git a/test/creator/ZcToken.abi b/test/creator/ZcToken.abi index bf8b284b..f2ca8226 100644 --- a/test/creator/ZcToken.abi +++ b/test/creator/ZcToken.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint8","name":"p","type":"uint8"},{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"c","type":"address"},{"internalType":"address","name":"r","type":"address"},{"internalType":"string","name":"n","type":"string"},{"internalType":"string","name":"s","type":"string"},{"internalType":"uint8","name":"d","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"burnCalled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"burnReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maturity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"maturityReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintCalled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"mintReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocol","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferFromCalled","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"transferFromReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"}],"name":"underlyingReturns","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint8","name":"p","type":"uint8"},{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"c","type":"address"},{"internalType":"address","name":"r","type":"address"},{"internalType":"string","name":"n","type":"string"},{"internalType":"string","name":"s","type":"string"},{"internalType":"uint8","name":"d","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"p","type":"uint8"},{"internalType":"address","name":"u","type":"address"},{"internalType":"uint256","name":"m","type":"uint256"},{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"authRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"burnCalled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"burnReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maturity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"maturityReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintCalled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"mintReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocol","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"f","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferFromCalled","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"b","type":"bool"}],"name":"transferFromReturns","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"}],"name":"underlyingReturns","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/test/creator/ZcToken.bin b/test/creator/ZcToken.bin index acef5d90..342d6145 100644 --- a/test/creator/ZcToken.bin +++ b/test/creator/ZcToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405162000b7238038062000b7283398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b6107d8806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba677414610495578063ee4db570146104ef578063fdfe5f4d1461050f57600080fd5b8063bba0ad3914610409578063e541efa21461042957600080fd5b80639dc29fac116100b25780639dc29fac1461036d578063b4c4a4c8146103b1578063b9bb928c146103c457600080fd5b80638ce744261461035857806395d89b411461036557600080fd5b8063313ce567116101245780636521b96a116101095780636521b96a146102cc57806369e527da146103155780636f307dc31461033557600080fd5b8063313ce5671461026857806340c10f191461028757600080fd5b806306fdde0314610156578063204f83f91461017457806323b872dd146101865780632ba29d3814610223575b600080fd5b61015e610555565b60405161016b91906105f0565b60405180910390f35b6004545b60405190815260200161016b565b61021361019436600461068c565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b604051901515815260200161016b565b6006546102439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6009546102759060ff1681565b60405160ff909116815260200161016b565b6102136102953660046106c8565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6103136102da3660046106f2565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b005b6005546102439073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16610243565b6003546102759060ff1681565b61015e6105e3565b61021361037b3660046106c8565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6103136103bf36600461071b565b600455565b6103136103d23660046106f2565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610178610417366004610734565b60006020819052908152604090205481565b610469610437366004610734565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161016b565b6103136104a3366004610734565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6101786104fd366004610734565b60016020526000908152604090205481565b61031361051d3660046106f2565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b600780546105629061074f565b80601f016020809104026020016040519081016040528092919081815260200182805461058e9061074f565b80156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b505050505081565b600880546105629061074f565b600060208083528351808285015260005b8181101561061d57858101830151858201604001528201610601565b8181111561062f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068757600080fd5b919050565b6000806000606084860312156106a157600080fd5b6106aa84610663565b92506106b860208501610663565b9150604084013590509250925092565b600080604083850312156106db57600080fd5b6106e483610663565b946020939093013593505050565b60006020828403121561070457600080fd5b8135801515811461071457600080fd5b9392505050565b60006020828403121561072d57600080fd5b5035919050565b60006020828403121561074657600080fd5b61071482610663565b600181811c9082168061076357607f821691505b60208210810361079c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220980d8d4b94b7cc21a6c0d4a0f6cf63be4557820bc7da9dc206b501059f54910764736f6c634300080d0033 \ No newline at end of file +60806040523480156200001157600080fd5b5060405162000ced38038062000ced83398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b610953806200039a6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba6774146104c3578063ee4db5701461051d578063fdfe5f4d1461053d57600080fd5b8063bba0ad3914610437578063e541efa21461045757600080fd5b80639dc29fac116100b25780639dc29fac1461039b578063b4c4a4c8146103df578063b9bb928c146103f257600080fd5b80638ce744261461038657806395d89b411461039357600080fd5b806340c10f19116101245780636521b96a116101095780636521b96a146102fc57806369e527da146103435780636f307dc31461036357600080fd5b806340c10f19146102a257806352bc9430146102e757600080fd5b806323b872dd1161015557806323b872dd146101a15780632ba29d381461023e578063313ce5671461028357600080fd5b806306fdde0314610171578063204f83f91461018f575b600080fd5b610179610583565b60405161018691906106e4565b60405180910390f35b6004545b604051908152602001610186565b61022e6101af366004610780565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b6040519015158152602001610186565b60065461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b6009546102909060ff1681565b60405160ff9091168152602001610186565b61022e6102b03660046107bc565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6102fa6102f53660046107e6565b610611565b005b6102fa61030a366004610854565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60055461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1661025e565b6003546102909060ff1681565b6101796106d7565b61022e6103a93660046107bc565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6102fa6103ed36600461087d565b600455565b6102fa610400366004610854565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610193610445366004610896565b60006020819052908152604090205481565b610497610465366004610896565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610186565b6102fa6104d1366004610896565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61019361052b366004610896565b60016020526000908152604090205481565b6102fa61054b366004610854565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60078054610590906108b1565b80601f01602080910402602001604051908101604052809291908181526020018280546105bc906108b1565b80156106095780601f106105de57610100808354040283529160200191610609565b820191906000526020600020905b8154815290600101906020018083116105ec57829003601f168201915b505050505081565b6006546040517f52bc943000000000000000000000000000000000000000000000000000000000815260ff8816600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018790528581166064830152848116608483015260a48201849052909116906352bc94309060c4016020604051808303816000875af11580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610904565b50505050505050565b60088054610590906108b1565b600060208083528351808285015260005b81811015610711578581018301518582016040015282016106f5565b81811115610723576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077b57600080fd5b919050565b60008060006060848603121561079557600080fd5b61079e84610757565b92506107ac60208501610757565b9150604084013590509250925092565b600080604083850312156107cf57600080fd5b6107d883610757565b946020939093013593505050565b60008060008060008060c087890312156107ff57600080fd5b863560ff8116811461081057600080fd5b955061081e60208801610757565b94506040870135935061083360608801610757565b925061084160808801610757565b915060a087013590509295509295509295565b60006020828403121561086657600080fd5b8135801515811461087657600080fd5b9392505050565b60006020828403121561088f57600080fd5b5035919050565b6000602082840312156108a857600080fd5b61087682610757565b600181811c908216806108c557607f821691505b6020821081036108fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561091657600080fd5b505191905056fea2646970667358221220ab82732e8b4d0f87d0e20dedbcdfd9a4708dd121141f10519c014c70dccfd0f764736f6c634300080d0033 \ No newline at end of file diff --git a/test/creator/ZcToken.sol b/test/creator/ZcToken.sol index 7fb8f301..6ef38b8a 100644 --- a/test/creator/ZcToken.sol +++ b/test/creator/ZcToken.sol @@ -7,6 +7,11 @@ pragma solidity ^0.8.13; +// present so that we can force a call from the mock to the consumer for testing of authRedeem +interface IRedeemer { + function authRedeem(uint8, address, uint256, address, address, uint256) external returns (uint256); +} + contract ZcToken { // a struct to hold the arguments passed to transferFrom struct TransferFromArgs { @@ -102,4 +107,9 @@ contract ZcToken { function transferFromReturns(bool b) public { transferFromReturn = b; } + + // force a call from the mock to the redeemer's auth redeem function + function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) external { + IRedeemer(redeemer).authRedeem(p, u, m, f, t, a); + } } diff --git a/test/creator/creator.go b/test/creator/creator.go index beb4a0e9..41ebe5e5 100644 --- a/test/creator/creator.go +++ b/test/creator/creator.go @@ -31,7 +31,7 @@ var ( // CreatorMetaData contains all meta data concerning the Creator contract. var CreatorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"Exception\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sw\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"d\",\"type\":\"uint8\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketPlace\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"m\",\"type\":\"address\"}],\"name\":\"setMarketPlace\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055611cdc806100326000396000f3fe60806040523480156200001157600080fd5b50600436106200006f5760003560e01c80636363e86711620000565780636363e86714620000e7578063704b6c02146200012c578063f851a440146200014357600080fd5b80632e25d2a6146200007457806330568a8d14620000bf575b600080fd5b600154620000959073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620000d6620000d036600462000611565b62000164565b6040519015158152602001620000b6565b620000fe620000f836600462000694565b620002c7565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015201620000b6565b620000d66200013d36600462000611565b620004f7565b600054620000959073ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff16338114620001f0576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a4015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16156200027d576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602160048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b6001805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178155915050919050565b600154600090819073ffffffffffffffffffffffffffffffffffffffff1633811462000353576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b60015473ffffffffffffffffffffffffffffffffffffffff16620003df576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602260048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b60008d8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8d8d8d6040516200041b90620005cb565b620004309a99989796959493929190620007bb565b604051809103906000f0801580156200044d573d6000803e3d6000fd5b50905060008e8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200048790620005d9565b60ff9095168552602085019390935273ffffffffffffffffffffffffffffffffffffffff91821660408501528116606084015216608082015260a001604051809103906000f080158015620004e0573d6000803e3d6000fd5b50919f919e50909c50505050505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163381146200057f576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b6000805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b610b72806200084283390190565b6108f380620013b483390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200060c57600080fd5b919050565b6000602082840312156200062457600080fd5b6200062f82620005e7565b9392505050565b803560ff811681146200060c57600080fd5b60008083601f8401126200065b57600080fd5b50813567ffffffffffffffff8111156200067457600080fd5b6020830191508360208285010111156200068d57600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215620006b557600080fd5b620006c08b62000636565b9950620006d060208c01620005e7565b985060408b01359750620006e760608c01620005e7565b9650620006f760808c01620005e7565b955060a08b013567ffffffffffffffff808211156200071557600080fd5b620007238e838f0162000648565b909750955060c08d01359150808211156200073d57600080fd5b506200074c8d828e0162000648565b909450925062000761905060e08c0162000636565b90509295989b9194979a5092959850565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010060ff8d16835273ffffffffffffffffffffffffffffffffffffffff808d1660208501528b6040850152808b166060850152808a166080850152508060a08401526200080f818401888a62000772565b905082810360c08401526200082681868862000772565b91505060ff831660e08301529b9a505050505050505050505056fe60806040523480156200001157600080fd5b5060405162000b7238038062000b7283398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b6107d8806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba677414610495578063ee4db570146104ef578063fdfe5f4d1461050f57600080fd5b8063bba0ad3914610409578063e541efa21461042957600080fd5b80639dc29fac116100b25780639dc29fac1461036d578063b4c4a4c8146103b1578063b9bb928c146103c457600080fd5b80638ce744261461035857806395d89b411461036557600080fd5b8063313ce567116101245780636521b96a116101095780636521b96a146102cc57806369e527da146103155780636f307dc31461033557600080fd5b8063313ce5671461026857806340c10f191461028757600080fd5b806306fdde0314610156578063204f83f91461017457806323b872dd146101865780632ba29d3814610223575b600080fd5b61015e610555565b60405161016b91906105f0565b60405180910390f35b6004545b60405190815260200161016b565b61021361019436600461068c565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b604051901515815260200161016b565b6006546102439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6009546102759060ff1681565b60405160ff909116815260200161016b565b6102136102953660046106c8565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6103136102da3660046106f2565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b005b6005546102439073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16610243565b6003546102759060ff1681565b61015e6105e3565b61021361037b3660046106c8565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6103136103bf36600461071b565b600455565b6103136103d23660046106f2565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610178610417366004610734565b60006020819052908152604090205481565b610469610437366004610734565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161016b565b6103136104a3366004610734565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6101786104fd366004610734565b60016020526000908152604090205481565b61031361051d3660046106f2565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b600780546105629061074f565b80601f016020809104026020016040519081016040528092919081815260200182805461058e9061074f565b80156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b505050505081565b600880546105629061074f565b600060208083528351808285015260005b8181101561061d57858101830151858201604001528201610601565b8181111561062f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068757600080fd5b919050565b6000806000606084860312156106a157600080fd5b6106aa84610663565b92506106b860208501610663565b9150604084013590509250925092565b600080604083850312156106db57600080fd5b6106e483610663565b946020939093013593505050565b60006020828403121561070457600080fd5b8135801515811461071457600080fd5b9392505050565b60006020828403121561072d57600080fd5b5035919050565b60006020828403121561074657600080fd5b61071482610663565b600181811c9082168061076357607f821691505b60208210810361079c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220980d8d4b94b7cc21a6c0d4a0f6cf63be4557820bc7da9dc206b501059f54910764736f6c634300080d0033608060405234801561001057600080fd5b506040516108f33803806108f383398101604081905261002f916100a9565b6009805460ff191660ff9690961695909517909455600a92909255600480546001600160a01b03199081166001600160a01b039384161790915560058054821693831693909317909255600680549092169216919091179055610110565b80516001600160a01b03811681146100a457600080fd5b919050565b600080600080600060a086880312156100c157600080fd5b855160ff811681146100d257600080fd5b602087015190955093506100e86040870161008d565b92506100f66060870161008d565b91506101046080870161008d565b90509295509295909350565b6107d48061011f6000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806382cac89c116100e3578063b7dd34831161008c578063d6cb2c0d11610066578063d6cb2c0d146105f4578063da3de9e914610607578063e590c3621461064657600080fd5b8063b7dd34831461056d578063bbce23861461058d578063d0b9d032146105ad57600080fd5b8063a701da69116100bd578063a701da69146104cb578063b326258d14610513578063b4c4a4c81461055a57600080fd5b806382cac89c146104485780638ce7442614610468578063a01cfffb1461048757600080fd5b80633cc31443116101455780635dfe12ac1161011f5780635dfe12ac146103a3578063613a28d1146103e957806364ae3c9d1461042e57600080fd5b80633cc31443146103335780633dfa1f411461033c5780635c70b7c11461035c57600080fd5b806319caf46c1161017657806319caf46c146102b2578063204f83f91461030b5780632e25d2a61461031357600080fd5b8063012b264a1461019d5780630aa93b9b146101e75780631779467314610215575b600080fd5b6005546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102076101f53660046106db565b60016020526000908152604090205481565b6040519081526020016101de565b6102a26102233660046106fd565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff000000000000000000000000000000000000000016921691909117825551600190910155600c546301000000900460ff1690565b60405190151581526020016101de565b6102076102c03660046106db565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600b5490565b600a54610207565b6006546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020760085481565b61020761034a3660046106db565b60006020819052908152604090205481565b6103a161036a366004610739565b600c8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b005b6103a16103b1366004610739565b600c805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6102a26103f736600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260016020526040902055600c5462010000900460ff1690565b6102a261043c366004610785565b600855600c5460ff1690565b6007546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b6009546104759060ff1681565b60405160ff90911681526020016101de565b6102a261049536600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600c54610100900460ff1690565b6103a16104d9366004610739565b600c8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6102a261052136600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902055600c54640100000000900460ff1690565b6103a1610568366004610785565b600a55565b6004546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020761059b3660046106db565b60036020526000908152604090205481565b6103a16105bb366004610739565b600c80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6103a1610602366004610785565b600b55565b6103a1610615366004610739565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6106866106543660046106db565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101de565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b6106f6826106b2565b9392505050565b60008060006060848603121561071257600080fd5b61071b846106b2565b9250610729602085016106b2565b9150604084013590509250925092565b60006020828403121561074b57600080fd5b813580151581146106f657600080fd5b6000806040838503121561076e57600080fd5b610777836106b2565b946020939093013593505050565b60006020828403121561079757600080fd5b503591905056fea264697066735822122023d48e8ff42392ae9b9c81598a90f68d142f4b6ce71155c3400fcfeb94b6467264736f6c634300080d0033a26469706673582212200befe6600862b19f149a622ab1e4c5a2491ca3e3b7203dea5bd4e5a5817e292c64736f6c634300080d0033", + Bin: "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055611e57806100326000396000f3fe60806040523480156200001157600080fd5b50600436106200006f5760003560e01c80636363e86711620000565780636363e86714620000e7578063704b6c02146200012c578063f851a440146200014357600080fd5b80632e25d2a6146200007457806330568a8d14620000bf575b600080fd5b600154620000959073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620000d6620000d036600462000611565b62000164565b6040519015158152602001620000b6565b620000fe620000f836600462000694565b620002c7565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015201620000b6565b620000d66200013d36600462000611565b620004f7565b600054620000959073ffffffffffffffffffffffffffffffffffffffff1681565b6000805473ffffffffffffffffffffffffffffffffffffffff16338114620001f0576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a4015b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16156200027d576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602160048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b6001805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116178155915050919050565b600154600090819073ffffffffffffffffffffffffffffffffffffffff1633811462000353576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b60015473ffffffffffffffffffffffffffffffffffffffff16620003df576001546040517f6d4c6c89000000000000000000000000000000000000000000000000000000008152602260048201526000602482018190526044820181905273ffffffffffffffffffffffffffffffffffffffff9092166064820152608481019190915260a401620001e7565b60008d8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d8d8d8d8d6040516200041b90620005cb565b620004309a99989796959493929190620007bb565b604051809103906000f0801580156200044d573d6000803e3d6000fd5b50905060008e8d8d8d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200048790620005d9565b60ff9095168552602085019390935273ffffffffffffffffffffffffffffffffffffffff91821660408501528116606084015216608082015260a001604051809103906000f080158015620004e0573d6000803e3d6000fd5b50919f919e50909c50505050505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163381146200057f576040517f6d4c6c8900000000000000000000000000000000000000000000000000000000815260006004820181905260248201819052604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8216608482015260a401620001e7565b6000805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b610ced806200084283390190565b6108f3806200152f83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200060c57600080fd5b919050565b6000602082840312156200062457600080fd5b6200062f82620005e7565b9392505050565b803560ff811681146200060c57600080fd5b60008083601f8401126200065b57600080fd5b50813567ffffffffffffffff8111156200067457600080fd5b6020830191508360208285010111156200068d57600080fd5b9250929050565b6000806000806000806000806000806101008b8d031215620006b557600080fd5b620006c08b62000636565b9950620006d060208c01620005e7565b985060408b01359750620006e760608c01620005e7565b9650620006f760808c01620005e7565b955060a08b013567ffffffffffffffff808211156200071557600080fd5b620007238e838f0162000648565b909750955060c08d01359150808211156200073d57600080fd5b506200074c8d828e0162000648565b909450925062000761905060e08c0162000636565b90509295989b9194979a5092959850565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010060ff8d16835273ffffffffffffffffffffffffffffffffffffffff808d1660208501528b6040850152808b166060850152808a166080850152508060a08401526200080f818401888a62000772565b905082810360c08401526200082681868862000772565b91505060ff831660e08301529b9a505050505050505050505056fe60806040523480156200001157600080fd5b5060405162000ced38038062000ced83398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b610953806200039a6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba6774146104c3578063ee4db5701461051d578063fdfe5f4d1461053d57600080fd5b8063bba0ad3914610437578063e541efa21461045757600080fd5b80639dc29fac116100b25780639dc29fac1461039b578063b4c4a4c8146103df578063b9bb928c146103f257600080fd5b80638ce744261461038657806395d89b411461039357600080fd5b806340c10f19116101245780636521b96a116101095780636521b96a146102fc57806369e527da146103435780636f307dc31461036357600080fd5b806340c10f19146102a257806352bc9430146102e757600080fd5b806323b872dd1161015557806323b872dd146101a15780632ba29d381461023e578063313ce5671461028357600080fd5b806306fdde0314610171578063204f83f91461018f575b600080fd5b610179610583565b60405161018691906106e4565b60405180910390f35b6004545b604051908152602001610186565b61022e6101af366004610780565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b6040519015158152602001610186565b60065461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b6009546102909060ff1681565b60405160ff9091168152602001610186565b61022e6102b03660046107bc565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6102fa6102f53660046107e6565b610611565b005b6102fa61030a366004610854565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60055461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1661025e565b6003546102909060ff1681565b6101796106d7565b61022e6103a93660046107bc565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6102fa6103ed36600461087d565b600455565b6102fa610400366004610854565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610193610445366004610896565b60006020819052908152604090205481565b610497610465366004610896565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610186565b6102fa6104d1366004610896565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61019361052b366004610896565b60016020526000908152604090205481565b6102fa61054b366004610854565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60078054610590906108b1565b80601f01602080910402602001604051908101604052809291908181526020018280546105bc906108b1565b80156106095780601f106105de57610100808354040283529160200191610609565b820191906000526020600020905b8154815290600101906020018083116105ec57829003601f168201915b505050505081565b6006546040517f52bc943000000000000000000000000000000000000000000000000000000000815260ff8816600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018790528581166064830152848116608483015260a48201849052909116906352bc94309060c4016020604051808303816000875af11580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610904565b50505050505050565b60088054610590906108b1565b600060208083528351808285015260005b81811015610711578581018301518582016040015282016106f5565b81811115610723576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077b57600080fd5b919050565b60008060006060848603121561079557600080fd5b61079e84610757565b92506107ac60208501610757565b9150604084013590509250925092565b600080604083850312156107cf57600080fd5b6107d883610757565b946020939093013593505050565b60008060008060008060c087890312156107ff57600080fd5b863560ff8116811461081057600080fd5b955061081e60208801610757565b94506040870135935061083360608801610757565b925061084160808801610757565b915060a087013590509295509295509295565b60006020828403121561086657600080fd5b8135801515811461087657600080fd5b9392505050565b60006020828403121561088f57600080fd5b5035919050565b6000602082840312156108a857600080fd5b61087682610757565b600181811c908216806108c557607f821691505b6020821081036108fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561091657600080fd5b505191905056fea2646970667358221220ab82732e8b4d0f87d0e20dedbcdfd9a4708dd121141f10519c014c70dccfd0f764736f6c634300080d0033608060405234801561001057600080fd5b506040516108f33803806108f383398101604081905261002f916100a9565b6009805460ff191660ff9690961695909517909455600a92909255600480546001600160a01b03199081166001600160a01b039384161790915560058054821693831693909317909255600680549092169216919091179055610110565b80516001600160a01b03811681146100a457600080fd5b919050565b600080600080600060a086880312156100c157600080fd5b855160ff811681146100d257600080fd5b602087015190955093506100e86040870161008d565b92506100f66060870161008d565b91506101046080870161008d565b90509295509295909350565b6107d48061011f6000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806382cac89c116100e3578063b7dd34831161008c578063d6cb2c0d11610066578063d6cb2c0d146105f4578063da3de9e914610607578063e590c3621461064657600080fd5b8063b7dd34831461056d578063bbce23861461058d578063d0b9d032146105ad57600080fd5b8063a701da69116100bd578063a701da69146104cb578063b326258d14610513578063b4c4a4c81461055a57600080fd5b806382cac89c146104485780638ce7442614610468578063a01cfffb1461048757600080fd5b80633cc31443116101455780635dfe12ac1161011f5780635dfe12ac146103a3578063613a28d1146103e957806364ae3c9d1461042e57600080fd5b80633cc31443146103335780633dfa1f411461033c5780635c70b7c11461035c57600080fd5b806319caf46c1161017657806319caf46c146102b2578063204f83f91461030b5780632e25d2a61461031357600080fd5b8063012b264a1461019d5780630aa93b9b146101e75780631779467314610215575b600080fd5b6005546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6102076101f53660046106db565b60016020526000908152604090205481565b6040519081526020016101de565b6102a26102233660046106fd565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff000000000000000000000000000000000000000016921691909117825551600190910155600c546301000000900460ff1690565b60405190151581526020016101de565b6102076102c03660046106db565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600b5490565b600a54610207565b6006546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020760085481565b61020761034a3660046106db565b60006020819052908152604090205481565b6103a161036a366004610739565b600c8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b005b6103a16103b1366004610739565b600c805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6102a26103f736600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260016020526040902055600c5462010000900460ff1690565b6102a261043c366004610785565b600855600c5460ff1690565b6007546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b6009546104759060ff1681565b60405160ff90911681526020016101de565b6102a261049536600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600c54610100900460ff1690565b6103a16104d9366004610739565b600c8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6102a261052136600461075b565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902055600c54640100000000900460ff1690565b6103a1610568366004610785565b600a55565b6004546101bd9073ffffffffffffffffffffffffffffffffffffffff1681565b61020761059b3660046106db565b60036020526000908152604090205481565b6103a16105bb366004610739565b600c80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6103a1610602366004610785565b600b55565b6103a1610615366004610739565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6106866106543660046106db565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101de565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b6106f6826106b2565b9392505050565b60008060006060848603121561071257600080fd5b61071b846106b2565b9250610729602085016106b2565b9150604084013590509250925092565b60006020828403121561074b57600080fd5b813580151581146106f657600080fd5b6000806040838503121561076e57600080fd5b610777836106b2565b946020939093013593505050565b60006020828403121561079757600080fd5b503591905056fea264697066735822122023d48e8ff42392ae9b9c81598a90f68d142f4b6ce71155c3400fcfeb94b6467264736f6c634300080d0033a2646970667358221220a6381d37ef0d6232ef4c7dff2373c17b31791019389453994ff859df12547c3564736f6c634300080d0033", } // CreatorABI is the input ABI used to generate the binding from. diff --git a/test/marketplace/MarketPlace.bin b/test/marketplace/MarketPlace.bin index 7f9c6295..ef16c6a6 100644 --- a/test/marketplace/MarketPlace.bin +++ b/test/marketplace/MarketPlace.bin @@ -1 +1 @@ -60a06040523480156200001157600080fd5b50604051620033fd380380620033fd833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b608051613350620000ad600039600081816101ea0152610da801526133506000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004612d7e565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004612dd9565b61072e565b6101d561022d366004612dd9565b610a29565b6101d5610240366004612f23565b610c32565b61029a610253366004612fb6565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004612fb6565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004612ff7565b611054565b6040519081526020016101b9565b61035c610378366004612dd9565b611201565b61035c61038b36600461304a565b611523565b6101d561039e366004613083565b60016020526000908152604090205460ff1681565b6101d56103c13660046130a7565b611538565b6101d56103d4366004612d7e565b6115cc565b6101d56103e7366004612fb6565b61177c565b6101d56103fa366004612d7e565b6119d7565b61035c61040d366004612d7e565b611c6b565b6101d56104203660046130a7565b611f0b565b6101d5610433366004612dd9565b611ff7565b6101d5610446366004612d7e565b6122de565b6002546101a5906001600160a01b031681565b6101d561046c366004612dd9565b6123f5565b6101d561047f3660046130d2565b6126dc565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190613100565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190613100565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613100565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190613100565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190613100565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f898861277b565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e55919061311d565b6040518963ffffffff1660e01b8152600401610e789897969594939291906131a5565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190613216565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac9190613245565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a8552835281842082516080810184528154831681526001820154831694810194909452600281015490911691830191909152600301546060820181905290910361132c576112f089898961177c565b61132c57604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820187905290911690639dc29fac906044016020604051808303816000875af115801561139a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113be9190613100565b6113fa57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60008160600151600014611419576114148a8a8a88612976565b61141b565b845b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8e1660048201526001600160a01b038d8116602483015291821660448201528982166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613100565b50604080516001600160a01b038881168252602082018490528a92908c169160ff8e16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49998505050505050505050565b600061152f8383612a05565b90505b92915050565b6002546000906001600160a01b031633811461158d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff80861660009081526001602052604081205490918791161561162257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af11580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190613100565b61171b57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff8084166000908152600160205260408120549091859116156117d257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611879576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b834210156118b857604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b60006118c8878360000151612a05565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af115801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613100565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611a2c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611a8057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b619190613100565b611b9d57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f9190613100565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611cc057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611d1457604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611dc657611d8a89898961177c565b611dc657604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e589190613100565b611e9457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611ef75784935050610723565b611f0389898988612976565b935050610723565b6002546000906001600160a01b0316338114611f6057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b031615611fb857600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b031633811461204c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156120a057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af115801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190613100565b6121bd57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af115801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613100565b61228b57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b031633811461233357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190613100565b979650505050505050565b6003546000906001600160a01b031633811461244a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561249e57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af115801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f9190613100565b6125bb57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af1158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190613100565b61268957604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b031633811461273157604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff831660011480612792575060ff83166002145b1561280057816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f9919061325e565b9050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161286857816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8416016128d057816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff84160161293857816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b0380881685529083528184208685528352818420825160808101845281548316808252600183015484169582019590955260028201549092169282019290925260039091015460608201529082906129e9908890612a05565b60608301519091506129fb828661327b565b6123ea91906132df565b600060ff831660011480612a1c575060ff83166002145b15612a8357816001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190613245565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612aeb57816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5f573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612c74576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c919061325e565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec919061325e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6c9190613245565b915050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612d07576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612a5f573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612cea565b60ff81168114612d6657600080fd5b50565b6001600160a01b0381168114612d6657600080fd5b600080600080600060a08688031215612d9657600080fd5b8535612da181612d57565b94506020860135612db181612d69565b9350604086013592506060860135612dc881612d69565b949793965091946080013592915050565b60008060008060008060c08789031215612df257600080fd5b8635612dfd81612d57565b95506020870135612e0d81612d69565b9450604087013593506060870135612e2481612d69565b92506080870135612e3481612d69565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612e8957600080fd5b813567ffffffffffffffff80821115612ea457612ea4612e49565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612eea57612eea612e49565b81604052838152866020858801011115612f0357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215612f3b57600080fd5b8535612f4681612d57565b9450602086013593506040860135612f5d81612d69565b9250606086013567ffffffffffffffff80821115612f7a57600080fd5b612f8689838a01612e78565b93506080880135915080821115612f9c57600080fd5b50612fa988828901612e78565b9150509295509295909350565b600080600060608486031215612fcb57600080fd5b8335612fd681612d57565b92506020840135612fe681612d69565b929592945050506040919091013590565b6000806000806080858703121561300d57600080fd5b843561301881612d57565b9350602085013561302881612d69565b925060408501359150606085013561303f81612d69565b939692955090935050565b6000806040838503121561305d57600080fd5b823561306881612d57565b9150602083013561307881612d69565b809150509250929050565b60006020828403121561309557600080fd5b81356130a081612d57565b9392505050565b6000602082840312156130b957600080fd5b81356130a081612d69565b8015158114612d6657600080fd5b600080604083850312156130e557600080fd5b82356130f081612d57565b91506020830135613078816130c4565b60006020828403121561311257600080fd5b81516130a0816130c4565b60006020828403121561312f57600080fd5b81516130a081612d57565b6000815180845260005b8181101561316057602081850181015186830182015201613144565b81811115613172576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a08401526131e98184018761313a565b905082810360c08401526131fd818661313a565b91505060ff831660e08301529998505050505050505050565b6000806040838503121561322957600080fd5b825161323481612d69565b602084015190925061307881612d69565b60006020828403121561325757600080fd5b5051919050565b60006020828403121561327057600080fd5b81516130a081612d69565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b600082613315577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212201582e0d650303e0c0b7f5dab1362d35e784cb36ff8dd7991f738956aaf72cedc64736f6c634300080d0033 \ No newline at end of file +60a06040523480156200001157600080fd5b506040516200349a3803806200349a833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b6080516133ed620000ad600039600081816101ea0152610da801526133ed6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004612e1b565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004612e76565b61072e565b6101d561022d366004612e76565b610a29565b6101d5610240366004612fc0565b610c32565b61029a610253366004613053565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004613053565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004613094565b611054565b6040519081526020016101b9565b61035c610378366004612e76565b611201565b61035c61038b3660046130e7565b6115c0565b6101d561039e366004613120565b60016020526000908152604090205460ff1681565b6101d56103c1366004613144565b6115d5565b6101d56103d4366004612e1b565b611669565b6101d56103e7366004613053565b611819565b6101d56103fa366004612e1b565b611a74565b61035c61040d366004612e1b565b611d08565b6101d5610420366004613144565b611fa8565b6101d5610433366004612e76565b612094565b6101d5610446366004612e1b565b61237b565b6002546101a5906001600160a01b031681565b6101d561046c366004612e76565b612492565b6101d561047f36600461316f565b612779565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610613919061319d565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e1919061319d565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b8919061319d565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610986919061319d565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b91919061319d565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f8988612818565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5591906131ba565b6040518963ffffffff1660e01b8152600401610e78989796959493929190613242565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba91906132b3565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac91906132e2565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156112ce57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b031661131657604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b03808d1685529083528184208b855283528184208251608081018452815483168152600182015483169481019490945260028101549091169183019190915260030154606082018190529091036113c85761138c8a8a8a611819565b6113c857604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a919061319d565b61149657604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b600081606001516000146114b5576114b08b8b8b89612a13565b6114b7565b855b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8f1660048201526001600160a01b038e8116602483015291821660448201528a82166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af115801561153f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611563919061319d565b50604080516001600160a01b038981168252602082018490528b92908d169160ff8f16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49a9950505050505050505050565b60006115cc8383612aa2565b90505b92915050565b6002546000906001600160a01b031633811461162a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff8086166000908152600160205260408120549091879116156116bf57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c919061319d565b6117b857604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff80841660009081526001602052604081205490918591161561186f57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611916576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b8342101561195557604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b6000611965878360000151612aa2565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af11580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c919061319d565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611ac957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611b1d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe919061319d565b611c3a57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc919061319d565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611d5d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611db157604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611e6357611e27898989611819565b611e6357604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef5919061319d565b611f3157604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611f945784935050610723565b611fa089898988612a13565b935050610723565b6002546000906001600160a01b0316338114611ffd57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b03161561205557600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b03163381146120e957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561213d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af11580156121fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221e919061319d565b61225a57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec919061319d565b61232857604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b03163381146123d057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612487919061319d565b979650505050505050565b6003546000906001600160a01b03163381146124e757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561253b57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af11580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c919061319d565b61265857604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af11580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea919061319d565b61272657604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b03163381146127ce57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff83166001148061282f575060ff83166002145b1561289d57816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289691906132fb565b90506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161290557816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff84160161296d57816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff8416016129d557816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b038088168552908352818420868552835281842082516080810184528154831680825260018301548416958201959095526002820154909216928201929092526003909101546060820152908290612a86908890612aa2565b6060830151909150612a988286613318565b612487919061337c565b600060ff831660011480612ab9575060ff83166002145b15612b2057816001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289691906132e2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612b8857816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612d11576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1991906132fb565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8991906132fb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0991906132e2565b9150506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612da4576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612afc573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612d87565b60ff81168114612e0357600080fd5b50565b6001600160a01b0381168114612e0357600080fd5b600080600080600060a08688031215612e3357600080fd5b8535612e3e81612df4565b94506020860135612e4e81612e06565b9350604086013592506060860135612e6581612e06565b949793965091946080013592915050565b60008060008060008060c08789031215612e8f57600080fd5b8635612e9a81612df4565b95506020870135612eaa81612e06565b9450604087013593506060870135612ec181612e06565b92506080870135612ed181612e06565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612f2657600080fd5b813567ffffffffffffffff80821115612f4157612f41612ee6565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612f8757612f87612ee6565b81604052838152866020858801011115612fa057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215612fd857600080fd5b8535612fe381612df4565b9450602086013593506040860135612ffa81612e06565b9250606086013567ffffffffffffffff8082111561301757600080fd5b61302389838a01612f15565b9350608088013591508082111561303957600080fd5b5061304688828901612f15565b9150509295509295909350565b60008060006060848603121561306857600080fd5b833561307381612df4565b9250602084013561308381612e06565b929592945050506040919091013590565b600080600080608085870312156130aa57600080fd5b84356130b581612df4565b935060208501356130c581612e06565b92506040850135915060608501356130dc81612e06565b939692955090935050565b600080604083850312156130fa57600080fd5b823561310581612df4565b9150602083013561311581612e06565b809150509250929050565b60006020828403121561313257600080fd5b813561313d81612df4565b9392505050565b60006020828403121561315657600080fd5b813561313d81612e06565b8015158114612e0357600080fd5b6000806040838503121561318257600080fd5b823561318d81612df4565b9150602083013561311581613161565b6000602082840312156131af57600080fd5b815161313d81613161565b6000602082840312156131cc57600080fd5b815161313d81612df4565b6000815180845260005b818110156131fd576020818501810151868301820152016131e1565b8181111561320f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a0840152613286818401876131d7565b905082810360c084015261329a81866131d7565b91505060ff831660e08301529998505050505050505050565b600080604083850312156132c657600080fd5b82516132d181612e06565b602084015190925061311581612e06565b6000602082840312156132f457600080fd5b5051919050565b60006020828403121561330d57600080fd5b815161313d81612e06565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613377577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b6000826133b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212202335ffefc6469611f7d74b615d554c13928afd67f27948e4220ac823fb53219964736f6c634300080d0033 \ No newline at end of file diff --git a/test/marketplace/MarketPlace.sol b/test/marketplace/MarketPlace.sol index fed62f2c..7e72571c 100644 --- a/test/marketplace/MarketPlace.sol +++ b/test/marketplace/MarketPlace.sol @@ -166,7 +166,12 @@ contract MarketPlace { /// @param t Address of the user receiving underlying /// @param a Amount of zcTokens being redeemed /// @return Amount of underlying being withdrawn (needed for 5095 return) - function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) public authorized(markets[p][u][m].zcToken) returns (uint256) { + function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) public authorized(markets[p][u][m].zcToken) unpaused(p) returns (uint256) { + /// @dev swiv needs to be set or the call to authRedeem there will be faulty + if (swivel == address(0)) { + revert Exception(21, 0, 0, address(0), address(0)); + } + Market memory market = markets[p][u][m]; // if the market has not matured, mature it... if (market.maturityRate == 0) { diff --git a/test/marketplace/marketplace.go b/test/marketplace/marketplace.go index 50a14e95..5ee36341 100644 --- a/test/marketplace/marketplace.go +++ b/test/marketplace/marketplace.go @@ -31,7 +31,7 @@ var ( // MarketPlaceMetaData contains all meta data concerning the MarketPlace contract. var MarketPlaceMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"Exception\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zcToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vaultTracker\",\"type\":\"address\"}],\"name\":\"Create\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zcTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CustodialExit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zcTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nTarget\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CustodialInitiate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"matured\",\"type\":\"uint256\"}],\"name\":\"Mature\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"P2pVaultExchange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"P2pZcTokenExchange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RedeemVaultInterest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RedeemZcToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maturity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferVaultNotional\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"authRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"burnZcTokenRemovingNotional\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"}],\"name\":\"cTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"createMarket\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"creator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"z\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"n\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"custodialExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"z\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"n\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"custodialInitiate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"}],\"name\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cTokenAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zcToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultTracker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maturityRate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"}],\"name\":\"matureMarket\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"mintZcTokenAddingNotional\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"p2pVaultExchange\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"p2pZcTokenExchange\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"}],\"name\":\"redeemVaultInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"redeemZcToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"s\",\"type\":\"address\"}],\"name\":\"setSwivel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swivel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"transferVaultNotional\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"transferVaultNotionalFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620033fd380380620033fd833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b608051613350620000ad600039600081816101ea0152610da801526133506000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004612d7e565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004612dd9565b61072e565b6101d561022d366004612dd9565b610a29565b6101d5610240366004612f23565b610c32565b61029a610253366004612fb6565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004612fb6565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004612ff7565b611054565b6040519081526020016101b9565b61035c610378366004612dd9565b611201565b61035c61038b36600461304a565b611523565b6101d561039e366004613083565b60016020526000908152604090205460ff1681565b6101d56103c13660046130a7565b611538565b6101d56103d4366004612d7e565b6115cc565b6101d56103e7366004612fb6565b61177c565b6101d56103fa366004612d7e565b6119d7565b61035c61040d366004612d7e565b611c6b565b6101d56104203660046130a7565b611f0b565b6101d5610433366004612dd9565b611ff7565b6101d5610446366004612d7e565b6122de565b6002546101a5906001600160a01b031681565b6101d561046c366004612dd9565b6123f5565b6101d561047f3660046130d2565b6126dc565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190613100565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e19190613100565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613100565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190613100565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190613100565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f898861277b565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e55919061311d565b6040518963ffffffff1660e01b8152600401610e789897969594939291906131a5565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba9190613216565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac9190613245565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a8552835281842082516080810184528154831681526001820154831694810194909452600281015490911691830191909152600301546060820181905290910361132c576112f089898961177c565b61132c57604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820187905290911690639dc29fac906044016020604051808303816000875af115801561139a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113be9190613100565b6113fa57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60008160600151600014611419576114148a8a8a88612976565b61141b565b845b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8e1660048201526001600160a01b038d8116602483015291821660448201528982166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190613100565b50604080516001600160a01b038881168252602082018490528a92908c169160ff8e16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49998505050505050505050565b600061152f8383612a05565b90505b92915050565b6002546000906001600160a01b031633811461158d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff80861660009081526001602052604081205490918791161561162257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af11580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190613100565b61171b57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff8084166000908152600160205260408120549091859116156117d257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611879576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b834210156118b857604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b60006118c8878360000151612a05565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af115801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613100565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611a2c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611a8057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b619190613100565b611b9d57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f9190613100565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611cc057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611d1457604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611dc657611d8a89898961177c565b611dc657604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e589190613100565b611e9457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611ef75784935050610723565b611f0389898988612976565b935050610723565b6002546000906001600160a01b0316338114611f6057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b031615611fb857600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b031633811461204c57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156120a057604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af115801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190613100565b6121bd57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af115801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613100565b61228b57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b031633811461233357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea9190613100565b979650505050505050565b6003546000906001600160a01b031633811461244a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561249e57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af115801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f9190613100565b6125bb57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af1158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190613100565b61268957604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b031633811461273157604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff831660011480612792575060ff83166002145b1561280057816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f9919061325e565b9050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161286857816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8416016128d057816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff84160161293857816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d5573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b0380881685529083528184208685528352818420825160808101845281548316808252600183015484169582019590955260028201549092169282019290925260039091015460608201529082906129e9908890612a05565b60608301519091506129fb828661327b565b6123ea91906132df565b600060ff831660011480612a1c575060ff83166002145b15612a8357816001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190613245565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612aeb57816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5f573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612c74576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7c919061325e565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec919061325e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6c9190613245565b915050611532565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612d07576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612a5f573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612cea565b60ff81168114612d6657600080fd5b50565b6001600160a01b0381168114612d6657600080fd5b600080600080600060a08688031215612d9657600080fd5b8535612da181612d57565b94506020860135612db181612d69565b9350604086013592506060860135612dc881612d69565b949793965091946080013592915050565b60008060008060008060c08789031215612df257600080fd5b8635612dfd81612d57565b95506020870135612e0d81612d69565b9450604087013593506060870135612e2481612d69565b92506080870135612e3481612d69565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612e8957600080fd5b813567ffffffffffffffff80821115612ea457612ea4612e49565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612eea57612eea612e49565b81604052838152866020858801011115612f0357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215612f3b57600080fd5b8535612f4681612d57565b9450602086013593506040860135612f5d81612d69565b9250606086013567ffffffffffffffff80821115612f7a57600080fd5b612f8689838a01612e78565b93506080880135915080821115612f9c57600080fd5b50612fa988828901612e78565b9150509295509295909350565b600080600060608486031215612fcb57600080fd5b8335612fd681612d57565b92506020840135612fe681612d69565b929592945050506040919091013590565b6000806000806080858703121561300d57600080fd5b843561301881612d57565b9350602085013561302881612d69565b925060408501359150606085013561303f81612d69565b939692955090935050565b6000806040838503121561305d57600080fd5b823561306881612d57565b9150602083013561307881612d69565b809150509250929050565b60006020828403121561309557600080fd5b81356130a081612d57565b9392505050565b6000602082840312156130b957600080fd5b81356130a081612d69565b8015158114612d6657600080fd5b600080604083850312156130e557600080fd5b82356130f081612d57565b91506020830135613078816130c4565b60006020828403121561311257600080fd5b81516130a0816130c4565b60006020828403121561312f57600080fd5b81516130a081612d57565b6000815180845260005b8181101561316057602081850181015186830182015201613144565b81811115613172576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a08401526131e98184018761313a565b905082810360c08401526131fd818661313a565b91505060ff831660e08301529998505050505050505050565b6000806040838503121561322957600080fd5b825161323481612d69565b602084015190925061307881612d69565b60006020828403121561325757600080fd5b5051919050565b60006020828403121561327057600080fd5b81516130a081612d69565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b600082613315577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212201582e0d650303e0c0b7f5dab1362d35e784cb36ff8dd7991f738956aaf72cedc64736f6c634300080d0033", + Bin: "0x60a06040523480156200001157600080fd5b506040516200349a3803806200349a833981016040819052620000349162000058565b600280546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b6080516133ed620000ad600039600081816101ea0152610da801526133ed6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80635ac86ab7116100e3578063b79eb9261161008c578063f851a44011610066578063f851a4401461044b578063fcbaab2e1461045e578063fe3ee1691461047157600080fd5b8063b79eb92614610412578063c06760c714610425578063db8509011461043857600080fd5b8063872e9f6c116100bd578063872e9f6c146103d957806387e157c1146103ec5780639f6eddc4146103ff57600080fd5b80635ac86ab714610390578063704b6c02146103b35780637dcad278146103c657600080fd5b8063174d2548116101455780633a660bd81161011f5780633a660bd81461034957806352bc94301461036a5780635755d7631461037d57600080fd5b8063174d254814610232578063305a21bf1461024557806335bdafab146102cf57600080fd5b806302d05d3f1161017657806302d05d3f146101e55780630f0016b61461020c57806315042ddf1461021f57600080fd5b8063012b264a1461019257806301cc6448146101c2575b600080fd5b6003546101a5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d56101d0366004612e1b565b610484565b60405190151581526020016101b9565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b6101d561021a366004612e76565b61072e565b6101d561022d366004612e76565b610a29565b6101d5610240366004612fc0565b610c32565b61029a610253366004613053565b6000602081815293815260408082208552928152828120909352825290208054600182015460028301546003909301546001600160a01b0392831693918316929091169084565b6040516101b994939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6101a56102dd366004613053565b60ff929092166000908152602081815260408083206001600160a01b039485168452825280832094835293815290839020835160808101855281548416808252600183015485169382019390935260028201549093169383019390935260039092015460609091015290565b61035c610357366004613094565b611054565b6040519081526020016101b9565b61035c610378366004612e76565b611201565b61035c61038b3660046130e7565b6115c0565b6101d561039e366004613120565b60016020526000908152604090205460ff1681565b6101d56103c1366004613144565b6115d5565b6101d56103d4366004612e1b565b611669565b6101d56103e7366004613053565b611819565b6101d56103fa366004612e1b565b611a74565b61035c61040d366004612e1b565b611d08565b6101d5610420366004613144565b611fa8565b6101d5610433366004612e76565b612094565b6101d5610446366004612e1b565b61237b565b6002546101a5906001600160a01b031681565b6101d561046c366004612e76565b612492565b6101d561047f36600461316f565b612779565b6003546000906001600160a01b03163381146104de57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4015b60405180910390fd5b60ff8088166000908152600160205260409020548891161561053257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928816600484015260248301879052916340c10f19906044016020604051808303816000875af11580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610613919061319d565b61064f57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156106bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e1919061319d565b61071d57604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60019350505b505095945050505050565b6003546000906001600160a01b031633811461078357604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156107d757604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b8919061319d565b6108f457604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015610962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610986919061319d565b6109c257604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f34fa475e6431f76e8146368a631a5a0ef8ee78b77d3359d0f8e50de4d7a4ff8b906060015b60405180910390a45060019998505050505050505050565b6003546000906001600160a01b0316338114610a7e57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80891660009081526001602052604090205489911615610ad257604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b8552909252918290206002015491517f1779467300000000000000000000000000000000000000000000000000000000815288821660048201528782166024820152604481018790529116906317794673906064016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b91919061319d565b610bcd57604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252878116602083015291810186905288918a169060ff8c16907f4a50decadd365d7ca023f61a307490ce8e696b1b81e112ae6f743b3366d13b6c9060600160405180910390a450600198975050505050505050565b6002546000906001600160a01b0316338114610c8757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615610cdb57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b0316610d2357604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000610d2f8988612818565b60ff8a166000908152602081815260408083206001600160a01b0380861685529083528184208d8552909252909120600201549192501615610da357604051636d4c6c8960e01b8152601660048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636363e8678c858d8d600360009054906101000a90046001600160a01b03168e8e8b6001600160a01b031663313ce5676040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5591906131ba565b6040518963ffffffff1660e01b8152600401610e78989796959493929190613242565b60408051808303816000875af1158015610e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eba91906132b3565b9150915060405180608001604052808a6001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b0316815260200160008152506000808d60ff1660ff1681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060820151816003015590505089836001600160a01b03168c60ff167f39fc19388929259a60a8806c6aecb45c336e28e3295fa6fed5813474e6d2b7e88c868660405161103b939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a45060019a9950505050505050505050565b6003546000906001600160a01b03163381146110a957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808716600090815260016020526040902054879116156110fd57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a811685529083528184208985529092528083206002015490517f19caf46c00000000000000000000000000000000000000000000000000000000815287831660048201529116906319caf46c906024016020604051808303816000875af1158015611188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ac91906132e2565b6040516001600160a01b038781168252919250879189169060ff8b16907f602f2da12d1008cffacf50314af0e5f78e8759bba815d4221b390e0b9e73639a9060200160405180910390a4979650505050505050565b60ff86166000908152602081815260408083206001600160a01b03808a1685529083528184208885529092528220600101541633811461127a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff808916600090815260016020526040902054899116156112ce57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546001600160a01b031661131657604051636d4c6c8960e01b8152601560048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b03808d1685529083528184208b855283528184208251608081018452815483168152600182015483169481019490945260028101549091169183019190915260030154606082018190529091036113c85761138c8a8a8a611819565b6113c857604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a919061319d565b61149657604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b600081606001516000146114b5576114b08b8b8b89612a13565b6114b7565b855b60035483516040517f8bfa66be00000000000000000000000000000000000000000000000000000000815260ff8f1660048201526001600160a01b038e8116602483015291821660448201528a82166064820152608481018490529293501690638bfa66be9060a4016020604051808303816000875af115801561153f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611563919061319d565b50604080516001600160a01b038981168252602082018490528b92908d169160ff8f16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a49a9950505050505050505050565b60006115cc8383612aa2565b90505b92915050565b6002546000906001600160a01b031633811461162a57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b600280546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b60ff8086166000908152600160205260408120549091879116156116bf57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517f177946730000000000000000000000000000000000000000000000000000000081523360048201528682166024820152604481018690529116906317794673906064016020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c919061319d565b6117b857604051636d4c6c8960e01b8152601b60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080513381526001600160a01b038681166020830152918101859052869188169060ff8a16907fe401e2d61a180e97aba5ebeb66d643bbc7e6516b91281ff0e480dac7e206c88f9060600160405180910390a45060019695505050505050565b60ff80841660009081526001602052604081205490918591161561186f57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff85166000908152602081815260408083206001600160a01b038089168552908352818420878552835292819020815160808101835281548516815260018201548516938101939093526002810154909316908201526003909101546060820181905215611916576060810151604051636d4c6c8960e01b815260176004820152602481019190915260006044820181905260648201819052608482015260a4016104d5565b8342101561195557604051636d4c6c8960e01b81526018600482015242602482015260448101859052600060648201819052608482015260a4016104d5565b6000611965878360000151612aa2565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a8552909252918290206003018390558482015191517f64ae3c9d0000000000000000000000000000000000000000000000000000000081526004810184905292935016906364ae3c9d906024016020604051808303816000875af11580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c919061319d565b506040805182815242602082015286916001600160a01b0389169160ff8b16917fa43c0392e4bc23fcadd5a4c4d6d69a1148b6bcec3ac53d7654921bcc33f5addf910160405180910390a45060019695505050505050565b6003546000906001600160a01b0316338114611ac957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611b1d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b038b811685529083528184208a85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292881660048401526024830187905291639dc29fac906044016020604051808303816000875af1158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe919061319d565b611c3a57604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517f613a28d10000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063613a28d1906044016020604051808303816000875af1158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc919061319d565b61071d57604051636d4c6c8960e01b8152601a60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b6003546000906001600160a01b0316338114611d5d57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff80881660009081526001602052604090205488911615611db157604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff88166000908152602081815260408083206001600160a01b03808c1685529083528184208a85528352818420825160808101845281548316815260018201548316948101949094526002810154909116918301919091526003015460608201819052909103611e6357611e27898989611819565b611e6357604051636d4c6c8960e01b8152601e60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690639dc29fac906044016020604051808303816000875af1158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef5919061319d565b611f3157604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038881168252602082018890528992908b169160ff8d16917f1d3b3ead9f6b17c584914d99c0019883ab43e6e354df48d46185e166f43c68b4910160405180910390a48060600151600003611f945784935050610723565b611fa089898988612a13565b935050610723565b6002546000906001600160a01b0316338114611ffd57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b6003546001600160a01b03161561205557600354604051636d4c6c8960e01b815260146004820152600060248201819052604482018190526001600160a01b039092166064820152608481019190915260a4016104d5565b600380546001600160a01b0385167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790556001915050919050565b6003546000906001600160a01b03163381146120e957604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561213d57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f40c10f19000000000000000000000000000000000000000000000000000000008152928916600484015260248301879052916340c10f19906044016020604051808303816000875af11580156121fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221e919061319d565b61225a57604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60408082015190517fa01cfffb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018890529091169063a01cfffb906044016020604051808303816000875af11580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec919061319d565b61232857604051636d4c6c8960e01b8152601960048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f4ccb07dd34f02abf1c514fa611ba589e66ca2f7bcdb3c0cb3b65852354da439890606001610a11565b6003546000906001600160a01b03163381146123d057604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff87166000908152602081815260408083206001600160a01b038a81168552908352818420898552909252918290206002015491517fb326258d00000000000000000000000000000000000000000000000000000000815286821660048201526024810186905291169063b326258d906044016020604051808303816000875af1158015612463573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612487919061319d565b979650505050505050565b6003546000906001600160a01b03163381146124e757604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8089166000908152600160205260409020548991161561253b57604051636d4c6c8960e01b8152600160048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60ff89166000908152602081815260408083206001600160a01b038c811685529083528184208b85528352928190208151608081018352815485168152600182015485169381018490526002820154851681840152600390910154606082015290517f9dc29fac00000000000000000000000000000000000000000000000000000000815292891660048401526024830187905291639dc29fac906044016020604051808303816000875af11580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c919061319d565b61265857604051636d4c6c8960e01b8152601d60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b60208101516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201889052909116906340c10f19906044016020604051808303816000875af11580156126c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ea919061319d565b61272657604051636d4c6c8960e01b8152601c60048201526000602482018190526044820181905260648201819052608482015260a4016104d5565b604080516001600160a01b038981168252888116602083015291810187905289918b169060ff8d16907f0c5d0fa58187faeb475ea625004aed68162ededc2acf69844eed15a090a02b3290606001610a11565b6002546000906001600160a01b03163381146127ce57604051636d4c6c8960e01b81526000600482018190526024820181905260448201523360648201526001600160a01b038216608482015260a4016104d5565b60ff8416600090815260016020819052604090912080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905591505092915050565b600060ff83166001148061282f575060ff83166002145b1561289d57816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289691906132fb565b90506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff84160161290557816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff84160161296d57816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff8416016129d557816001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612872573d6000803e3d6000fd5b60ff84166000908152602081815260408083206001600160a01b038088168552908352818420868552835281842082516080810184528154831680825260018301548416958201959095526002820154909216928201929092526003909101546060820152908290612a86908890612aa2565b6060830151909150612a988286613318565b612487919061337c565b600060ff831660011480612ab9575060ff83166002145b15612b2057816001600160a01b031663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289691906132e2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff841601612b8857816001600160a01b03166399530b066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff841601612d11576000829050806001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1991906132fb565b6001600160a01b031663d15e0053826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8991906132fb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0991906132e2565b9150506115cf565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60ff841601612da4576040517f010ad6d10000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b0383169063010ad6d1906024015b602060405180830381865afa158015612afc573d6000803e3d6000fd5b6040517f07a2d13a0000000000000000000000000000000000000000000000000000000081526a52b7d2dcc80cd2e400000060048201526001600160a01b038316906307a2d13a90602401612d87565b60ff81168114612e0357600080fd5b50565b6001600160a01b0381168114612e0357600080fd5b600080600080600060a08688031215612e3357600080fd5b8535612e3e81612df4565b94506020860135612e4e81612e06565b9350604086013592506060860135612e6581612e06565b949793965091946080013592915050565b60008060008060008060c08789031215612e8f57600080fd5b8635612e9a81612df4565b95506020870135612eaa81612e06565b9450604087013593506060870135612ec181612e06565b92506080870135612ed181612e06565b8092505060a087013590509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612f2657600080fd5b813567ffffffffffffffff80821115612f4157612f41612ee6565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612f8757612f87612ee6565b81604052838152866020858801011115612fa057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215612fd857600080fd5b8535612fe381612df4565b9450602086013593506040860135612ffa81612e06565b9250606086013567ffffffffffffffff8082111561301757600080fd5b61302389838a01612f15565b9350608088013591508082111561303957600080fd5b5061304688828901612f15565b9150509295509295909350565b60008060006060848603121561306857600080fd5b833561307381612df4565b9250602084013561308381612e06565b929592945050506040919091013590565b600080600080608085870312156130aa57600080fd5b84356130b581612df4565b935060208501356130c581612e06565b92506040850135915060608501356130dc81612e06565b939692955090935050565b600080604083850312156130fa57600080fd5b823561310581612df4565b9150602083013561311581612e06565b809150509250929050565b60006020828403121561313257600080fd5b813561313d81612df4565b9392505050565b60006020828403121561315657600080fd5b813561313d81612e06565b8015158114612e0357600080fd5b6000806040838503121561318257600080fd5b823561318d81612df4565b9150602083013561311581613161565b6000602082840312156131af57600080fd5b815161313d81613161565b6000602082840312156131cc57600080fd5b815161313d81612df4565b6000815180845260005b818110156131fd576020818501810151868301820152016131e1565b8181111561320f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff8b1683526001600160a01b03808b16602085015289604085015280891660608501528088166080850152508060a0840152613286818401876131d7565b905082810360c084015261329a81866131d7565b91505060ff831660e08301529998505050505050505050565b600080604083850312156132c657600080fd5b82516132d181612e06565b602084015190925061311581612e06565b6000602082840312156132f457600080fd5b5051919050565b60006020828403121561330d57600080fd5b815161313d81612e06565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613377577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b6000826133b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212202335ffefc6469611f7d74b615d554c13928afd67f27948e4220ac823fb53219964736f6c634300080d0033", } // MarketPlaceABI is the input ABI used to generate the binding from. diff --git a/test/mocks/Swivel.abi b/test/mocks/Swivel.abi new file mode 100644 index 00000000..086563c6 --- /dev/null +++ b/test/mocks/Swivel.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"uint8","name":"p","type":"uint8"},{"internalType":"address","name":"u","type":"address"},{"internalType":"address","name":"c","type":"address"},{"internalType":"address","name":"t","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"authRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"authRedeemCalled","outputs":[{"internalType":"address","name":"underlying","type":"address"},{"internalType":"address","name":"one","type":"address"},{"internalType":"address","name":"two","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"name":"authRedeemReturns","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/test/mocks/Swivel.bin b/test/mocks/Swivel.bin new file mode 100644 index 00000000..2955ed15 --- /dev/null +++ b/test/mocks/Swivel.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506105ea806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806349be053c146100465780636dd086cc146100625780638bfa66be14610095575b600080fd5b610060600480360381019061005b91906103ca565b6100c5565b005b61007c60048036038101906100779190610430565b6100cf565b60405161008c94939291906104ad565b60405180910390f35b6100af60048036038101906100aa919061051e565b61015f565b6040516100bc9190610599565b60405180910390f35b8060018190555050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000610169610325565b85816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816060018181525050806000808960ff1660ff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015590505060015491505095945050505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b6000819050919050565b6103a781610394565b81146103b257600080fd5b50565b6000813590506103c48161039e565b92915050565b6000602082840312156103e0576103df61038f565b5b60006103ee848285016103b5565b91505092915050565b600060ff82169050919050565b61040d816103f7565b811461041857600080fd5b50565b60008135905061042a81610404565b92915050565b6000602082840312156104465761044561038f565b5b60006104548482850161041b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006104888261045d565b9050919050565b6104988161047d565b82525050565b6104a781610394565b82525050565b60006080820190506104c2600083018761048f565b6104cf602083018661048f565b6104dc604083018561048f565b6104e9606083018461049e565b95945050505050565b6104fb8161047d565b811461050657600080fd5b50565b600081359050610518816104f2565b92915050565b600080600080600060a0868803121561053a5761053961038f565b5b60006105488882890161041b565b955050602061055988828901610509565b945050604061056a88828901610509565b935050606061057b88828901610509565b925050608061058c888289016103b5565b9150509295509295909350565b60006020820190506105ae600083018461049e565b9291505056fea2646970667358221220f2aab749b56e0893530d9eb12d29694f2797b876835d3e19c504ca01fa4b8fde64736f6c634300080d0033 \ No newline at end of file diff --git a/test/mocks/Swivel.sol b/test/mocks/Swivel.sol new file mode 100644 index 00000000..80e7f51c --- /dev/null +++ b/test/mocks/Swivel.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: UNLICENSED + +pragma solidity ^0.8.13; + +/// @dev Swivel is a mock whose bindings are imported by unit tests in any pkg/*testing that needs it +contract Swivel { + struct MethodArgs { + address underlying; + address one; // variable use addresses + address two; + uint256 amount; + } + + mapping (uint8 => MethodArgs) public authRedeemCalled; + + uint256 private authRedeemReturn; + + function authRedeemReturns(uint256 a) external { + authRedeemReturn = a; + } + + function authRedeem(uint8 p, address u, address c, address t, uint256 a) external returns (uint256) { + MethodArgs memory args; + args.underlying = u; + args.one = c; + args.two = t; + args.amount = a; + authRedeemCalled[p] = args; + return authRedeemReturn; + } +} diff --git a/test/mocks/swivel.go b/test/mocks/swivel.go new file mode 100644 index 00000000..504cb358 --- /dev/null +++ b/test/mocks/swivel.go @@ -0,0 +1,299 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package mocks + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// SwivelMetaData contains all meta data concerning the Swivel contract. +var SwivelMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"authRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"authRedeemCalled\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"one\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"two\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"authRedeemReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b506105ea806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806349be053c146100465780636dd086cc146100625780638bfa66be14610095575b600080fd5b610060600480360381019061005b91906103ca565b6100c5565b005b61007c60048036038101906100779190610430565b6100cf565b60405161008c94939291906104ad565b60405180910390f35b6100af60048036038101906100aa919061051e565b61015f565b6040516100bc9190610599565b60405180910390f35b8060018190555050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000610169610325565b85816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816060018181525050806000808960ff1660ff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015590505060015491505095945050505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b6000819050919050565b6103a781610394565b81146103b257600080fd5b50565b6000813590506103c48161039e565b92915050565b6000602082840312156103e0576103df61038f565b5b60006103ee848285016103b5565b91505092915050565b600060ff82169050919050565b61040d816103f7565b811461041857600080fd5b50565b60008135905061042a81610404565b92915050565b6000602082840312156104465761044561038f565b5b60006104548482850161041b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006104888261045d565b9050919050565b6104988161047d565b82525050565b6104a781610394565b82525050565b60006080820190506104c2600083018761048f565b6104cf602083018661048f565b6104dc604083018561048f565b6104e9606083018461049e565b95945050505050565b6104fb8161047d565b811461050657600080fd5b50565b600081359050610518816104f2565b92915050565b600080600080600060a0868803121561053a5761053961038f565b5b60006105488882890161041b565b955050602061055988828901610509565b945050604061056a88828901610509565b935050606061057b88828901610509565b925050608061058c888289016103b5565b9150509295509295909350565b60006020820190506105ae600083018461049e565b9291505056fea2646970667358221220f2aab749b56e0893530d9eb12d29694f2797b876835d3e19c504ca01fa4b8fde64736f6c634300080d0033", +} + +// SwivelABI is the input ABI used to generate the binding from. +// Deprecated: Use SwivelMetaData.ABI instead. +var SwivelABI = SwivelMetaData.ABI + +// SwivelBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SwivelMetaData.Bin instead. +var SwivelBin = SwivelMetaData.Bin + +// DeploySwivel deploys a new Ethereum contract, binding an instance of Swivel to it. +func DeploySwivel(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Swivel, error) { + parsed, err := SwivelMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SwivelBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Swivel{SwivelCaller: SwivelCaller{contract: contract}, SwivelTransactor: SwivelTransactor{contract: contract}, SwivelFilterer: SwivelFilterer{contract: contract}}, nil +} + +// Swivel is an auto generated Go binding around an Ethereum contract. +type Swivel struct { + SwivelCaller // Read-only binding to the contract + SwivelTransactor // Write-only binding to the contract + SwivelFilterer // Log filterer for contract events +} + +// SwivelCaller is an auto generated read-only Go binding around an Ethereum contract. +type SwivelCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SwivelTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SwivelTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SwivelFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SwivelFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SwivelSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SwivelSession struct { + Contract *Swivel // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SwivelCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SwivelCallerSession struct { + Contract *SwivelCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SwivelTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SwivelTransactorSession struct { + Contract *SwivelTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SwivelRaw is an auto generated low-level Go binding around an Ethereum contract. +type SwivelRaw struct { + Contract *Swivel // Generic contract binding to access the raw methods on +} + +// SwivelCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SwivelCallerRaw struct { + Contract *SwivelCaller // Generic read-only contract binding to access the raw methods on +} + +// SwivelTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SwivelTransactorRaw struct { + Contract *SwivelTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSwivel creates a new instance of Swivel, bound to a specific deployed contract. +func NewSwivel(address common.Address, backend bind.ContractBackend) (*Swivel, error) { + contract, err := bindSwivel(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Swivel{SwivelCaller: SwivelCaller{contract: contract}, SwivelTransactor: SwivelTransactor{contract: contract}, SwivelFilterer: SwivelFilterer{contract: contract}}, nil +} + +// NewSwivelCaller creates a new read-only instance of Swivel, bound to a specific deployed contract. +func NewSwivelCaller(address common.Address, caller bind.ContractCaller) (*SwivelCaller, error) { + contract, err := bindSwivel(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SwivelCaller{contract: contract}, nil +} + +// NewSwivelTransactor creates a new write-only instance of Swivel, bound to a specific deployed contract. +func NewSwivelTransactor(address common.Address, transactor bind.ContractTransactor) (*SwivelTransactor, error) { + contract, err := bindSwivel(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SwivelTransactor{contract: contract}, nil +} + +// NewSwivelFilterer creates a new log filterer instance of Swivel, bound to a specific deployed contract. +func NewSwivelFilterer(address common.Address, filterer bind.ContractFilterer) (*SwivelFilterer, error) { + contract, err := bindSwivel(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SwivelFilterer{contract: contract}, nil +} + +// bindSwivel binds a generic wrapper to an already deployed contract. +func bindSwivel(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(SwivelABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Swivel *SwivelRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Swivel.Contract.SwivelCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Swivel *SwivelRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Swivel.Contract.SwivelTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Swivel *SwivelRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Swivel.Contract.SwivelTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Swivel *SwivelCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Swivel.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Swivel *SwivelTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Swivel.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Swivel *SwivelTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Swivel.Contract.contract.Transact(opts, method, params...) +} + +// AuthRedeemCalled is a free data retrieval call binding the contract method 0x6dd086cc. +// +// Solidity: function authRedeemCalled(uint8 ) view returns(address underlying, address one, address two, uint256 amount) +func (_Swivel *SwivelCaller) AuthRedeemCalled(opts *bind.CallOpts, arg0 uint8) (struct { + Underlying common.Address + One common.Address + Two common.Address + Amount *big.Int +}, error) { + var out []interface{} + err := _Swivel.contract.Call(opts, &out, "authRedeemCalled", arg0) + + outstruct := new(struct { + Underlying common.Address + One common.Address + Two common.Address + Amount *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Underlying = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.One = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + outstruct.Two = *abi.ConvertType(out[2], new(common.Address)).(*common.Address) + outstruct.Amount = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// AuthRedeemCalled is a free data retrieval call binding the contract method 0x6dd086cc. +// +// Solidity: function authRedeemCalled(uint8 ) view returns(address underlying, address one, address two, uint256 amount) +func (_Swivel *SwivelSession) AuthRedeemCalled(arg0 uint8) (struct { + Underlying common.Address + One common.Address + Two common.Address + Amount *big.Int +}, error) { + return _Swivel.Contract.AuthRedeemCalled(&_Swivel.CallOpts, arg0) +} + +// AuthRedeemCalled is a free data retrieval call binding the contract method 0x6dd086cc. +// +// Solidity: function authRedeemCalled(uint8 ) view returns(address underlying, address one, address two, uint256 amount) +func (_Swivel *SwivelCallerSession) AuthRedeemCalled(arg0 uint8) (struct { + Underlying common.Address + One common.Address + Two common.Address + Amount *big.Int +}, error) { + return _Swivel.Contract.AuthRedeemCalled(&_Swivel.CallOpts, arg0) +} + +// AuthRedeem is a paid mutator transaction binding the contract method 0x8bfa66be. +// +// Solidity: function authRedeem(uint8 p, address u, address c, address t, uint256 a) returns(uint256) +func (_Swivel *SwivelTransactor) AuthRedeem(opts *bind.TransactOpts, p uint8, u common.Address, c common.Address, t common.Address, a *big.Int) (*types.Transaction, error) { + return _Swivel.contract.Transact(opts, "authRedeem", p, u, c, t, a) +} + +// AuthRedeem is a paid mutator transaction binding the contract method 0x8bfa66be. +// +// Solidity: function authRedeem(uint8 p, address u, address c, address t, uint256 a) returns(uint256) +func (_Swivel *SwivelSession) AuthRedeem(p uint8, u common.Address, c common.Address, t common.Address, a *big.Int) (*types.Transaction, error) { + return _Swivel.Contract.AuthRedeem(&_Swivel.TransactOpts, p, u, c, t, a) +} + +// AuthRedeem is a paid mutator transaction binding the contract method 0x8bfa66be. +// +// Solidity: function authRedeem(uint8 p, address u, address c, address t, uint256 a) returns(uint256) +func (_Swivel *SwivelTransactorSession) AuthRedeem(p uint8, u common.Address, c common.Address, t common.Address, a *big.Int) (*types.Transaction, error) { + return _Swivel.Contract.AuthRedeem(&_Swivel.TransactOpts, p, u, c, t, a) +} + +// AuthRedeemReturns is a paid mutator transaction binding the contract method 0x49be053c. +// +// Solidity: function authRedeemReturns(uint256 a) returns() +func (_Swivel *SwivelTransactor) AuthRedeemReturns(opts *bind.TransactOpts, a *big.Int) (*types.Transaction, error) { + return _Swivel.contract.Transact(opts, "authRedeemReturns", a) +} + +// AuthRedeemReturns is a paid mutator transaction binding the contract method 0x49be053c. +// +// Solidity: function authRedeemReturns(uint256 a) returns() +func (_Swivel *SwivelSession) AuthRedeemReturns(a *big.Int) (*types.Transaction, error) { + return _Swivel.Contract.AuthRedeemReturns(&_Swivel.TransactOpts, a) +} + +// AuthRedeemReturns is a paid mutator transaction binding the contract method 0x49be053c. +// +// Solidity: function authRedeemReturns(uint256 a) returns() +func (_Swivel *SwivelTransactorSession) AuthRedeemReturns(a *big.Int) (*types.Transaction, error) { + return _Swivel.Contract.AuthRedeemReturns(&_Swivel.TransactOpts, a) +} diff --git a/test/mocks/zctoken.go b/test/mocks/zctoken.go index 030065a6..45da5c79 100644 --- a/test/mocks/zctoken.go +++ b/test/mocks/zctoken.go @@ -30,8 +30,8 @@ var ( // ZcTokenMetaData contains all meta data concerning the ZcToken contract. var ZcTokenMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"r\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"d\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"burnCalled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"burnReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maturity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"maturityReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintCalled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"mintReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocol\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"transferFromCalled\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"transferFromReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"}],\"name\":\"underlyingReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162000b7238038062000b7283398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b6107d8806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba677414610495578063ee4db570146104ef578063fdfe5f4d1461050f57600080fd5b8063bba0ad3914610409578063e541efa21461042957600080fd5b80639dc29fac116100b25780639dc29fac1461036d578063b4c4a4c8146103b1578063b9bb928c146103c457600080fd5b80638ce744261461035857806395d89b411461036557600080fd5b8063313ce567116101245780636521b96a116101095780636521b96a146102cc57806369e527da146103155780636f307dc31461033557600080fd5b8063313ce5671461026857806340c10f191461028757600080fd5b806306fdde0314610156578063204f83f91461017457806323b872dd146101865780632ba29d3814610223575b600080fd5b61015e610555565b60405161016b91906105f0565b60405180910390f35b6004545b60405190815260200161016b565b61021361019436600461068c565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b604051901515815260200161016b565b6006546102439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016b565b6009546102759060ff1681565b60405160ff909116815260200161016b565b6102136102953660046106c8565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6103136102da3660046106f2565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b005b6005546102439073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16610243565b6003546102759060ff1681565b61015e6105e3565b61021361037b3660046106c8565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6103136103bf36600461071b565b600455565b6103136103d23660046106f2565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610178610417366004610734565b60006020819052908152604090205481565b610469610437366004610734565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161016b565b6103136104a3366004610734565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6101786104fd366004610734565b60016020526000908152604090205481565b61031361051d3660046106f2565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b600780546105629061074f565b80601f016020809104026020016040519081016040528092919081815260200182805461058e9061074f565b80156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b505050505081565b600880546105629061074f565b600060208083528351808285015260005b8181101561061d57858101830151858201604001528201610601565b8181111561062f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461068757600080fd5b919050565b6000806000606084860312156106a157600080fd5b6106aa84610663565b92506106b860208501610663565b9150604084013590509250925092565b600080604083850312156106db57600080fd5b6106e483610663565b946020939093013593505050565b60006020828403121561070457600080fd5b8135801515811461071457600080fd5b9392505050565b60006020828403121561072d57600080fd5b5035919050565b60006020828403121561074657600080fd5b61071482610663565b600181811c9082168061076357607f821691505b60208210810361079c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220980d8d4b94b7cc21a6c0d4a0f6cf63be4557820bc7da9dc206b501059f54910764736f6c634300080d0033", + ABI: "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"c\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"r\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"d\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"m\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"authRedeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"burnCalled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"burnReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maturity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"maturityReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintCalled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"mintReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocol\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"f\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"t\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"transferFromCalled\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"}],\"name\":\"transferFromReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"u\",\"type\":\"address\"}],\"name\":\"underlyingReturns\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162000ced38038062000ced83398101604081905262000034916200027c565b600380546001600160a01b03808a16610100026001600160a81b031990921660ff8c1617919091179091556004879055600580548783166001600160a01b03199182161790915560068054928716929091169190911790558251620000a1906007906020860190620000da565b508151620000b7906008906020850190620000da565b506009805460ff191660ff92909216919091179055506200038a95505050505050565b828054620000e8906200034e565b90600052602060002090601f0160209004810192826200010c576000855562000157565b82601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b5b808211156200016557600081556001016200016a565b805160ff811681146200019257600080fd5b919050565b80516001600160a01b03811681146200019257600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d757600080fd5b81516001600160401b0380821115620001f457620001f4620001af565b604051601f8301601f19908116603f011681019082821181831017156200021f576200021f620001af565b816040528381526020925086838588010111156200023c57600080fd5b600091505b8382101562000260578582018301518183018401529082019062000241565b83821115620002725760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200029a57600080fd5b620002a58962000180565b9750620002b560208a0162000197565b965060408901519550620002cc60608a0162000197565b9450620002dc60808a0162000197565b60a08a01519094506001600160401b0380821115620002fa57600080fd5b620003088c838d01620001c5565b945060c08b01519150808211156200031f57600080fd5b506200032e8b828c01620001c5565b9250506200033f60e08a0162000180565b90509295985092959890939650565b600181811c908216806200036357607f821691505b6020821081036200038457634e487b7160e01b600052602260045260246000fd5b50919050565b610953806200039a6000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80638ce74426116100cd578063bba0ad3911610081578063e7ba677411610066578063e7ba6774146104c3578063ee4db5701461051d578063fdfe5f4d1461053d57600080fd5b8063bba0ad3914610437578063e541efa21461045757600080fd5b80639dc29fac116100b25780639dc29fac1461039b578063b4c4a4c8146103df578063b9bb928c146103f257600080fd5b80638ce744261461038657806395d89b411461039357600080fd5b806340c10f19116101245780636521b96a116101095780636521b96a146102fc57806369e527da146103435780636f307dc31461036357600080fd5b806340c10f19146102a257806352bc9430146102e757600080fd5b806323b872dd1161015557806323b872dd146101a15780632ba29d381461023e578063313ce5671461028357600080fd5b806306fdde0314610171578063204f83f91461018f575b600080fd5b610179610583565b60405161018691906106e4565b60405180910390f35b6004545b604051908152602001610186565b61022e6101af366004610780565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526020808201938452948416600090815260029095529320925183547fffffffffffffffffffffffff0000000000000000000000000000000000000000169216919091178255516001909101556009546301000000900460ff1690565b6040519015158152602001610186565b60065461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b6009546102909060ff1681565b60405160ff9091168152602001610186565b61022e6102b03660046107bc565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526001602052604090205560095462010000900460ff1690565b6102fa6102f53660046107e6565b610611565b005b6102fa61030a366004610854565b600980549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60055461025e9073ffffffffffffffffffffffffffffffffffffffff1681565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1661025e565b6003546102909060ff1681565b6101796106d7565b61022e6103a93660046107bc565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208190526040902055600954610100900460ff1690565b6102fa6103ed36600461087d565b600455565b6102fa610400366004610854565b60098054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b610193610445366004610896565b60006020819052908152604090205481565b610497610465366004610896565b6002602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610186565b6102fa6104d1366004610896565b6003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b61019361052b366004610896565b60016020526000908152604090205481565b6102fa61054b366004610854565b6009805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60078054610590906108b1565b80601f01602080910402602001604051908101604052809291908181526020018280546105bc906108b1565b80156106095780601f106105de57610100808354040283529160200191610609565b820191906000526020600020905b8154815290600101906020018083116105ec57829003601f168201915b505050505081565b6006546040517f52bc943000000000000000000000000000000000000000000000000000000000815260ff8816600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018790528581166064830152848116608483015260a48201849052909116906352bc94309060c4016020604051808303816000875af11580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610904565b50505050505050565b60088054610590906108b1565b600060208083528351808285015260005b81811015610711578581018301518582016040015282016106f5565b81811115610723576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461077b57600080fd5b919050565b60008060006060848603121561079557600080fd5b61079e84610757565b92506107ac60208501610757565b9150604084013590509250925092565b600080604083850312156107cf57600080fd5b6107d883610757565b946020939093013593505050565b60008060008060008060c087890312156107ff57600080fd5b863560ff8116811461081057600080fd5b955061081e60208801610757565b94506040870135935061083360608801610757565b925061084160808801610757565b915060a087013590509295509295509295565b60006020828403121561086657600080fd5b8135801515811461087657600080fd5b9392505050565b60006020828403121561088f57600080fd5b5035919050565b6000602082840312156108a857600080fd5b61087682610757565b600181811c908216806108c557607f821691505b6020821081036108fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60006020828403121561091657600080fd5b505191905056fea2646970667358221220ab82732e8b4d0f87d0e20dedbcdfd9a4708dd121141f10519c014c70dccfd0f764736f6c634300080d0033", } // ZcTokenABI is the input ABI used to generate the binding from. @@ -556,6 +556,27 @@ func (_ZcToken *ZcTokenCallerSession) Underlying() (common.Address, error) { return _ZcToken.Contract.Underlying(&_ZcToken.CallOpts) } +// AuthRedeem is a paid mutator transaction binding the contract method 0x52bc9430. +// +// Solidity: function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) returns() +func (_ZcToken *ZcTokenTransactor) AuthRedeem(opts *bind.TransactOpts, p uint8, u common.Address, m *big.Int, f common.Address, t common.Address, a *big.Int) (*types.Transaction, error) { + return _ZcToken.contract.Transact(opts, "authRedeem", p, u, m, f, t, a) +} + +// AuthRedeem is a paid mutator transaction binding the contract method 0x52bc9430. +// +// Solidity: function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) returns() +func (_ZcToken *ZcTokenSession) AuthRedeem(p uint8, u common.Address, m *big.Int, f common.Address, t common.Address, a *big.Int) (*types.Transaction, error) { + return _ZcToken.Contract.AuthRedeem(&_ZcToken.TransactOpts, p, u, m, f, t, a) +} + +// AuthRedeem is a paid mutator transaction binding the contract method 0x52bc9430. +// +// Solidity: function authRedeem(uint8 p, address u, uint256 m, address f, address t, uint256 a) returns() +func (_ZcToken *ZcTokenTransactorSession) AuthRedeem(p uint8, u common.Address, m *big.Int, f common.Address, t common.Address, a *big.Int) (*types.Transaction, error) { + return _ZcToken.Contract.AuthRedeem(&_ZcToken.TransactOpts, p, u, m, f, t, a) +} + // Burn is a paid mutator transaction binding the contract method 0x9dc29fac. // // Solidity: function burn(address f, uint256 a) returns(bool)