UNPKG

@perp/curie-deployments

Version:

Perpetual Protocol Curie (v2) contract artifacts (ABIs) and deployed addresses

584 lines 54.7 kB
{ "_format": "hh-sol-artifact-1", "contractName": "OtcMaker", "sourceName": "contracts/otcMaker/OtcMaker.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldCaller", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newCaller", "type": "address" } ], "name": "CallerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldFundOwner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newFundOwner", "type": "address" } ], "name": "FundOwnerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldPositionManager", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newPositionManager", "type": "address" } ], "name": "PositionManagerUpdated", "type": "event" }, { "inputs": [], "name": "candidate", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "merkleRedeem", "type": "address" }, { "internalType": "address", "name": "liquidityProvider", "type": "address" }, { "internalType": "uint256", "name": "week", "type": "uint256" }, { "internalType": "uint256", "name": "claimedBalance", "type": "uint256" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" } ], "name": "claimWeek", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getCaller", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getClearingHouse", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFundOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLimitOrderBook", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMarginRatioLimit", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPositionManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "clearingHouseArg", "type": "address" }, { "internalType": "address", "name": "limitOrderBookArg", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isMarginSufficient", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "baseToken", "type": "address" }, { "internalType": "bool", "name": "isBaseToQuote", "type": "bool" }, { "internalType": "bool", "name": "isExactInput", "type": "bool" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "oppositeAmountBound", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" }, { "internalType": "bytes32", "name": "referralCode", "type": "bytes32" } ], "internalType": "struct IClearingHouse.OpenPositionParams", "name": "params", "type": "tuple" } ], "name": "openPosition", "outputs": [ { "internalType": "uint256", "name": "base", "type": "uint256" }, { "internalType": "uint256", "name": "quote", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum ILimitOrderBook.OrderType", "name": "orderType", "type": "uint8" }, { "internalType": "uint256", "name": "salt", "type": "uint256" }, { "internalType": "address", "name": "trader", "type": "address" }, { "internalType": "address", "name": "baseToken", "type": "address" }, { "internalType": "bool", "name": "isBaseToQuote", "type": "bool" }, { "internalType": "bool", "name": "isExactInput", "type": "bool" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "oppositeAmountBound", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" }, { "internalType": "bytes32", "name": "referralCode", "type": "bytes32" }, { "internalType": "bool", "name": "reduceOnly", "type": "bool" }, { "internalType": "uint80", "name": "roundIdWhenCreated", "type": "uint80" }, { "internalType": "uint256", "name": "triggerPrice", "type": "uint256" } ], "internalType": "struct ILimitOrderBook.LimitOrder", "name": "limitOrderParams", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "liquidityBase", "type": "uint256" }, { "internalType": "uint256", "name": "liquidityQuote", "type": "uint256" }, { "internalType": "int24", "name": "lowerTick", "type": "int24" }, { "internalType": "int24", "name": "upperTick", "type": "int24" }, { "internalType": "uint256", "name": "minLiquidityBase", "type": "uint256" }, { "internalType": "uint256", "name": "minLiquidityQuote", "type": "uint256" } ], "internalType": "struct IOtcMakerStruct.JitLiquidityParams", "name": "jitLiquidityParams", "type": "tuple" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "openPositionFor", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newCaller", "type": "address" } ], "name": "setCaller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newFundOwner", "type": "address" } ], "name": "setFundOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "marginRatioLimitArg", "type": "uint24" } ], "name": "setMarginRatioLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newPositionManager", "type": "address" } ], "name": "setPositionManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b5061283a806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c575ff791161007c578063c575ff791461027d578063d544f20614610285578063dfbe807414610298578063e5596e0b146102a0578063f3fef3a3146102a8578063f63d5ea7146102bb5761014d565b80638da5cb5b1461022a57806399bb790514610232578063ab470f0514610247578063b6b1b6c31461024f578063bc5920ba14610262578063beb92f551461026a5761014d565b80636a22dede116101155780636a22dede146101ca5780636b9c5e3f146101df5780636c8381f8146101f2578063715018a6146101fa5780638421f3f21461020257806389476069146102175761014d565b806313af40351461015257806318c298e11461016757806347e7ef2414610191578063485cc955146101a45780635760f2e3146101b7575b600080fd5b610165610160366004611ea4565b6102ce565b005b61017a610175366004612109565b610429565b604051610188929190612327565b60405180910390f35b61016561019f366004611fbb565b6108b5565b6101656101b2366004611edc565b6109f7565b6101656101c5366004611ea4565b610c59565b6101d2610d1e565b604051610188919061227a565b6101656101ed366004611f14565b610d2d565b6101d2610dd5565b610165610de4565b61020a610e97565b604051610188919061231c565b610165610225366004611ea4565b610fca565b6101d26110a2565b61023a6110b1565b60405161018891906126cf565b6101d26110c3565b61017a61025d3660046121a5565b6110d2565b61016561119b565b610165610278366004611ea4565b611299565b6101d2611352565b6101656102933660046121bd565b611361565b6101d261150e565b6101d261151d565b6101656102b6366004611fbb565b61152c565b6101656102c9366004611ea4565b6115e2565b6102d661169b565b6001600160a01b03166102e76110a2565b6001600160a01b03161461032b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661036f576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156103bb576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610407576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b609b5460009081906001600160a01b031661044261169b565b6001600160a01b0316146104715760405162461bcd60e51b815260040161046890612335565b60405180910390fd5b60036104806020880188612002565b600381111561048b57fe5b146104a85760405162461bcd60e51b815260040161046890612354565b609f546000906001600160a01b0316636332fef6306104cd60808b0160608c01611ea4565b6040518363ffffffff1660e01b81526004016104ea92919061228e565b60606040518083038186803b15801561050257600080fd5b505afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a91906120b4565b609c546040805161012081019091529192506000916001600160a01b039091169063c35eb28c908061057260808d0160608e01611ea4565b6001600160a01b031681526020018a6000013581526020018a6020013581526020018a60400160208101906105a7919061201c565b60020b81526020016105bf60808c0160608d0161201c565b60020b81526020018a6080013581526020018a60a001358152602001600015158152602001428152506040518263ffffffff1660e01b81526004016106049190612413565b608060405180830381600087803b15801561061e57600080fd5b505af1158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190612055565b609d546040516394184a5560e01b81529192506001600160a01b0316906394184a559061068e908b908a908a90600090600401612496565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b5050609c546040805160e081019091526001600160a01b03909116925063cde109b69150806106f160808d0160608e01611ea4565b6001600160a01b0316815260200161070f60608c0160408d0161201c565b60020b815260200161072760808c0160608d0161201c565b60020b815260200161073c856060015161169f565b6001600160801b031681526020016000815260200160008152602001428152506040518263ffffffff1660e01b8152600401610778919061266a565b606060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906120b4565b506107d3610e97565b6107ef5760405162461bcd60e51b8152600401610468906123f4565b609f546000906001600160a01b0316636332fef63061081460808d0160608e01611ea4565b6040518363ffffffff1660e01b815260040161083192919061228e565b60606040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906120b4565b8351815191925061089291906116ec565b602080850151908301516108a5916116ec565b9450945050505094509492505050565b60a0546001600160a01b03166108c961169b565b6001600160a01b0316146108ef5760405162461bcd60e51b8152600401610468906123b4565b60a0546109089083906001600160a01b03163084611758565b609e5460405163095ea7b360e01b81526001600160a01b038481169263095ea7b39261093c929091169085906004016122a8565b602060405180830381600087803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190611fe6565b50609e546040516311f9fbc960e21b81526001600160a01b03909116906347e7ef24906109c190859085906004016122a8565b600060405180830381600087803b1580156109db57600080fd5b505af11580156109ef573d6000803e3d6000fd5b505050505050565b600054610100900460ff1680610a105750610a106117b8565b80610a1e575060005460ff16155b610a595760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015610a84576000805460ff1961ff0019909116610100171660011790555b610a8c6117c9565b610a9461169b565b609b80546001600160a01b0319166001600160a01b0392909216919091179055610abc61169b565b60a080546001600160a01b0319166001600160a01b0392909216919091179055610ae461169b565b60a180546001600160a01b03199081166001600160a01b0393841617909155609c805482168684161790819055609d805490921685841617909155604080516311b2515f60e31b815290519190921691638d928af8916004828101926020929190829003018186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611ec0565b609e80546001600160a01b0319166001600160a01b03928316179055609c5460408051636896fabf60e01b815290519190921691636896fabf916004808301926020929190829003018186803b158015610bea57600080fd5b505afa158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190611ec0565b609f80546001600160a01b0319166001600160a01b03929092169190911790558015610c54576000805461ff00191690555b505050565b610c6161169b565b6001600160a01b0316610c726110a2565b6001600160a01b031614610cb6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610cbf816118cb565b60a180546001600160a01b038381166001600160a01b03198316179092556040519116907f9ee681927833c2398c73d0f5b2a218383929087bada1b839781887af24e6bb0290610d12908390859061228e565b60405180910390a15050565b60a1546001600160a01b031690565b60a0546001600160a01b0316610d4161169b565b6001600160a01b031614610d675760405162461bcd60e51b8152600401610468906123b4565b60405163162d392d60e21b81526001600160a01b038716906358b4e4b490610d9b90889088908890889088906004016122c1565b600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b50505050505050505050565b6034546001600160a01b031690565b610dec61169b565b6001600160a01b0316610dfd6110a2565b6001600160a01b031614610e41576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b609c54604051635ae8095160e01b815260009182916001600160a01b0390911690635ae8095190610ecc90309060040161227a565b60206040518083038186803b158015610ee457600080fd5b505afa158015610ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1c919061203d565b609f54604051633666e41760e11b8152919250600091610fc091610fbb9162ffffff600160a01b830416916001600160a01b031690636ccdc82e90610f6590309060040161227a565b60206040518083038186803b158015610f7d57600080fd5b505afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb5919061203d565b906118f1565b611906565b9091121591505090565b60a0546001600160a01b0316610fde61169b565b6001600160a01b0316146110045760405162461bcd60e51b8152600401610468906123b4565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061103390309060040161227a565b60206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611083919061203d565b60a05490915061109e9083906001600160a01b031683611952565b5050565b6033546001600160a01b031690565b609f54600160a01b900462ffffff1690565b609b546001600160a01b031690565b60a15460009081906001600160a01b03166110eb61169b565b6001600160a01b0316146111115760405162461bcd60e51b815260040161046890612394565b609c5460405163b6b1b6c360e01b81526001600160a01b039091169063b6b1b6c3906111419086906004016125d8565b6040805180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906121f5565b91509150915091565b6034546001600160a01b03166111e0576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6111e861169b565b6034546001600160a01b03908116911614611233576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6112a161169b565b6001600160a01b03166112b26110a2565b6001600160a01b0316146112f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6112ff816118cb565b609b80546001600160a01b038381166001600160a01b03198316179092556040519116907f8ee0c0bf71c2ee4432c73fa249b11adfdf9ee8948168fb59639e8d240686208190610d12908390859061228e565b609c546001600160a01b031690565b61136961169b565b6001600160a01b031661137a6110a2565b6001600160a01b0316146113be576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609c5460408051632a8aa0a560e21b815290516000926001600160a01b03169163aa2a8294916004808301926020929190829003018186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190611ec0565b6001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561147357600080fd5b505afa158015611487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ab91906121d9565b90508062ffffff168262ffffff161180156114cd5750620f42408262ffffff16105b6114e95760405162461bcd60e51b8152600401610468906123d4565b50609f805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055565b609d546001600160a01b031690565b60a0546001600160a01b031690565b60a0546001600160a01b031661154061169b565b6001600160a01b0316146115665760405162461bcd60e51b8152600401610468906123b4565b609e5460405163f3fef3a360e01b81526001600160a01b039091169063f3fef3a39061159890859085906004016122a8565b600060405180830381600087803b1580156115b257600080fd5b505af11580156115c6573d6000803e3d6000fd5b505060a05461109e92508491506001600160a01b031683611952565b6115ea61169b565b6001600160a01b03166115fb6110a2565b6001600160a01b03161461163f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611648816118cb565b60a080546001600160a01b038381166001600160a01b03198316179092556040519116907fceeb903291fcb0b2c048267b2e6c7874698308e5fd1d7ef64a1b7c7a6680d77690610d12908390859061228e565b3390565b806001600160801b03811681146116e75760405162461bcd60e51b81526004018080602001828103825260278152602001806127146027913960400191505060405180910390fd5b919050565b60008183038183128015906117015750838113155b80611716575060008312801561171657508381135b6117515760405162461bcd60e51b81526004018080602001828103825260248152602001806127b76024913960400191505060405180910390fd5b9392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526117b29085906119a0565b50505050565b60006117c330611a51565b15905090565b600054610100900460ff16806117e257506117e26117b8565b806117f0575060005460ff16155b61182b5760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611856576000805460ff1961ff0019909116610100171660011790555b61185e611a57565b600061186861169b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156118c8576000805461ff00191690555b50565b6001600160a01b0381166118c85760405162461bcd60e51b815260040161046890612375565b6000611751838362ffffff16620f4240611b00565b60006001600160ff1b0382111561194e5760405162461bcd60e51b815260040180806020018281038252602881526020018061278f6028913960400191505060405180910390fd5b5090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c549084905b60006119f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611baf9092919063ffffffff16565b805190915015610c5457808060200190516020811015611a1457600080fd5b5051610c545760405162461bcd60e51b815260040180806020018281038252602a8152602001806127db602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff1680611a705750611a706117b8565b80611a7e575060005460ff16155b611ab95760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611ae4576000805460ff1961ff0019909116610100171660011790555b611aec611bc6565b80156118c8576000805461ff001916905550565b6000808060001985870986860292508281109083900303905080611b365760008411611b2b57600080fd5b508290049050611751565b808411611b4257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6060611bbe8484600085611c66565b949350505050565b600054610100900460ff1680611bdf5750611bdf6117b8565b80611bed575060005460ff16155b611c285760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611aec576000805460ff1961ff00199091166101001716600117905580156118c8576000805461ff001916905550565b606082471015611ca75760405162461bcd60e51b815260040180806020018281038252602681526020018061273b6026913960400191505060405180910390fd5b611cb085611a51565b611d01576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310611d3f5780518252601f199092019160209182019101611d20565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611da1576040519150601f19603f3d011682016040523d82523d6000602084013e611da6565b606091505b5091509150611db6828286611dc1565b979650505050505050565b60608315611dd0575081611751565b825115611de05782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e2a578181015183820152602001611e12565b50505050905090810190601f168015611e575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356116e7816126df565b80356116e7816126f4565b8035600481106116e757600080fd5b803569ffffffffffffffffffff811681146116e757600080fd5b600060208284031215611eb5578081fd5b8135611751816126df565b600060208284031215611ed1578081fd5b8151611751816126df565b60008060408385031215611eee578081fd5b8235611ef9816126df565b91506020830135611f09816126df565b809150509250929050565b60008060008060008060a08789031215611f2c578182fd5b8635611f37816126df565b95506020870135611f47816126df565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611f71578384fd5b818901915089601f830112611f84578384fd5b813581811115611f92578485fd5b8a60208083028501011115611fa5578485fd5b6020830194508093505050509295509295509295565b60008060408385031215611fcd578182fd5b8235611fd8816126df565b946020939093013593505050565b600060208284031215611ff7578081fd5b8151611751816126f4565b600060208284031215612013578081fd5b61175182611e7b565b60006020828403121561202d578081fd5b81358060020b8114611751578182fd5b60006020828403121561204e578081fd5b5051919050565b600060808284031215612066578081fd5b6040516080810181811067ffffffffffffffff8211171561208357fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6000606082840312156120c5578081fd5b6040516060810181811067ffffffffffffffff821117156120e257fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000806000808486036102a0811215612120578283fd5b6101c08082121561212f578384fd5b86955060c06101bf1983011215612144578384fd5b860193505061028085013567ffffffffffffffff80821115612164578384fd5b818701915087601f830112612177578384fd5b813581811115612185578485fd5b886020828501011115612196578485fd5b95989497505060200194505050565b600061010082840312156121b7578081fd5b50919050565b6000602082840312156121ce578081fd5b813561175181612702565b6000602082840312156121ea578081fd5b815161175181612702565b60008060408385031215612207578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b15159052565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6004811061225f57fe5b9052565b60020b9052565b69ffffffffffffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03861681526020810185905260408101849052608060608201819052810182905260006001600160fb1b038311156122fe578081fd5b60208302808560a08501379190910160a00190815295945050505050565b901515815260200190565b918252602082015260400190565b6020808252600590820152644f4d5f4e4360d81b604082015260600190565b6020808252600790820152664f4d5f4e4f4d4f60c81b604082015260600190565b6020808252600590820152644f4d5f5a4160d81b604082015260600190565b6020808252600690820152654f4d5f4e504d60d01b604082015260600190565b6020808252600690820152654f4d5f4e464f60d01b604082015260600190565b60208082526006908201526527a6afa4a6a960d11b604082015260600190565b6020808252600590820152644f4d5f494d60d81b604082015260600190565b81516001600160a01b03168152602080830151908201526040808301519082015260608083015161012083019161244c90840182612263565b50608083015161245f6080840182612263565b5060a083015160a083015260c083015160c083015260e083015161248660e0840182612225565b5061010092830151919092015290565b60006102006124ad836124a889611e7b565b612255565b602087013560208401526124c360408801611e65565b6124d06040850182612218565b506124dd60608801611e65565b6124ea6060850182612218565b506124f760808801611e70565b6125046080850182612225565b5061251160a08801611e70565b61251e60a0850182612225565b5060c087013560c084015260e087013560e084015261010080880135818501525061012061254d818901611e65565b61255982860182612218565b50506101408781013590840152610160612574818901611e70565b61258082860182612225565b5050610180612590818901611e8a565b61259c8286018261226a565b50506101a0808801358185015250806101c08401526125be818401868861222b565b9150506125cf6101e083018461226a565b95945050505050565b610100810182356125e8816126df565b6001600160a01b031682526020830135612601816126f4565b151560208301526040830135612616816126f4565b6126236040840182612225565b50606083013560608301526080830135608083015260a083013560a083015261264e60c08401611e65565b61265b60c0840182612218565b5060e092830135919092015290565b600060e08201905060018060a01b038351168252602083015160020b6020830152604083015160020b60408301526001600160801b0360608401511660608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b62ffffff91909116815260200190565b6001600160a01b03811681146118c857600080fd5b80151581146118c857600080fd5b62ffffff811681146118c857600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656453616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212204646fe9b2ed1107fecd4172008ab166dd33bbf3e7f848d951e7893326bb30c1964736f6c63430007060033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c575ff791161007c578063c575ff791461027d578063d544f20614610285578063dfbe807414610298578063e5596e0b146102a0578063f3fef3a3146102a8578063f63d5ea7146102bb5761014d565b80638da5cb5b1461022a57806399bb790514610232578063ab470f0514610247578063b6b1b6c31461024f578063bc5920ba14610262578063beb92f551461026a5761014d565b80636a22dede116101155780636a22dede146101ca5780636b9c5e3f146101df5780636c8381f8146101f2578063715018a6146101fa5780638421f3f21461020257806389476069146102175761014d565b806313af40351461015257806318c298e11461016757806347e7ef2414610191578063485cc955146101a45780635760f2e3146101b7575b600080fd5b610165610160366004611ea4565b6102ce565b005b61017a610175366004612109565b610429565b604051610188929190612327565b60405180910390f35b61016561019f366004611fbb565b6108b5565b6101656101b2366004611edc565b6109f7565b6101656101c5366004611ea4565b610c59565b6101d2610d1e565b604051610188919061227a565b6101656101ed366004611f14565b610d2d565b6101d2610dd5565b610165610de4565b61020a610e97565b604051610188919061231c565b610165610225366004611ea4565b610fca565b6101d26110a2565b61023a6110b1565b60405161018891906126cf565b6101d26110c3565b61017a61025d3660046121a5565b6110d2565b61016561119b565b610165610278366004611ea4565b611299565b6101d2611352565b6101656102933660046121bd565b611361565b6101d261150e565b6101d261151d565b6101656102b6366004611fbb565b61152c565b6101656102c9366004611ea4565b6115e2565b6102d661169b565b6001600160a01b03166102e76110a2565b6001600160a01b03161461032b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661036f576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156103bb576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610407576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b609b5460009081906001600160a01b031661044261169b565b6001600160a01b0316146104715760405162461bcd60e51b815260040161046890612335565b60405180910390fd5b60036104806020880188612002565b600381111561048b57fe5b146104a85760405162461bcd60e51b815260040161046890612354565b609f546000906001600160a01b0316636332fef6306104cd60808b0160608c01611ea4565b6040518363ffffffff1660e01b81526004016104ea92919061228e565b60606040518083038186803b15801561050257600080fd5b505afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a91906120b4565b609c546040805161012081019091529192506000916001600160a01b039091169063c35eb28c908061057260808d0160608e01611ea4565b6001600160a01b031681526020018a6000013581526020018a6020013581526020018a60400160208101906105a7919061201c565b60020b81526020016105bf60808c0160608d0161201c565b60020b81526020018a6080013581526020018a60a001358152602001600015158152602001428152506040518263ffffffff1660e01b81526004016106049190612413565b608060405180830381600087803b15801561061e57600080fd5b505af1158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190612055565b609d546040516394184a5560e01b81529192506001600160a01b0316906394184a559061068e908b908a908a90600090600401612496565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b5050609c546040805160e081019091526001600160a01b03909116925063cde109b69150806106f160808d0160608e01611ea4565b6001600160a01b0316815260200161070f60608c0160408d0161201c565b60020b815260200161072760808c0160608d0161201c565b60020b815260200161073c856060015161169f565b6001600160801b031681526020016000815260200160008152602001428152506040518263ffffffff1660e01b8152600401610778919061266a565b606060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906120b4565b506107d3610e97565b6107ef5760405162461bcd60e51b8152600401610468906123f4565b609f546000906001600160a01b0316636332fef63061081460808d0160608e01611ea4565b6040518363ffffffff1660e01b815260040161083192919061228e565b60606040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906120b4565b8351815191925061089291906116ec565b602080850151908301516108a5916116ec565b9450945050505094509492505050565b60a0546001600160a01b03166108c961169b565b6001600160a01b0316146108ef5760405162461bcd60e51b8152600401610468906123b4565b60a0546109089083906001600160a01b03163084611758565b609e5460405163095ea7b360e01b81526001600160a01b038481169263095ea7b39261093c929091169085906004016122a8565b602060405180830381600087803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190611fe6565b50609e546040516311f9fbc960e21b81526001600160a01b03909116906347e7ef24906109c190859085906004016122a8565b600060405180830381600087803b1580156109db57600080fd5b505af11580156109ef573d6000803e3d6000fd5b505050505050565b600054610100900460ff1680610a105750610a106117b8565b80610a1e575060005460ff16155b610a595760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015610a84576000805460ff1961ff0019909116610100171660011790555b610a8c6117c9565b610a9461169b565b609b80546001600160a01b0319166001600160a01b0392909216919091179055610abc61169b565b60a080546001600160a01b0319166001600160a01b0392909216919091179055610ae461169b565b60a180546001600160a01b03199081166001600160a01b0393841617909155609c805482168684161790819055609d805490921685841617909155604080516311b2515f60e31b815290519190921691638d928af8916004828101926020929190829003018186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611ec0565b609e80546001600160a01b0319166001600160a01b03928316179055609c5460408051636896fabf60e01b815290519190921691636896fabf916004808301926020929190829003018186803b158015610bea57600080fd5b505afa158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190611ec0565b609f80546001600160a01b0319166001600160a01b03929092169190911790558015610c54576000805461ff00191690555b505050565b610c6161169b565b6001600160a01b0316610c726110a2565b6001600160a01b031614610cb6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610cbf816118cb565b60a180546001600160a01b038381166001600160a01b03198316179092556040519116907f9ee681927833c2398c73d0f5b2a218383929087bada1b839781887af24e6bb0290610d12908390859061228e565b60405180910390a15050565b60a1546001600160a01b031690565b60a0546001600160a01b0316610d4161169b565b6001600160a01b031614610d675760405162461bcd60e51b8152600401610468906123b4565b60405163162d392d60e21b81526001600160a01b038716906358b4e4b490610d9b90889088908890889088906004016122c1565b600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b50505050505050505050565b6034546001600160a01b031690565b610dec61169b565b6001600160a01b0316610dfd6110a2565b6001600160a01b031614610e41576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b609c54604051635ae8095160e01b815260009182916001600160a01b0390911690635ae8095190610ecc90309060040161227a565b60206040518083038186803b158015610ee457600080fd5b505afa158015610ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1c919061203d565b609f54604051633666e41760e11b8152919250600091610fc091610fbb9162ffffff600160a01b830416916001600160a01b031690636ccdc82e90610f6590309060040161227a565b60206040518083038186803b158015610f7d57600080fd5b505afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb5919061203d565b906118f1565b611906565b9091121591505090565b60a0546001600160a01b0316610fde61169b565b6001600160a01b0316146110045760405162461bcd60e51b8152600401610468906123b4565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061103390309060040161227a565b60206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611083919061203d565b60a05490915061109e9083906001600160a01b031683611952565b5050565b6033546001600160a01b031690565b609f54600160a01b900462ffffff1690565b609b546001600160a01b031690565b60a15460009081906001600160a01b03166110eb61169b565b6001600160a01b0316146111115760405162461bcd60e51b815260040161046890612394565b609c5460405163b6b1b6c360e01b81526001600160a01b039091169063b6b1b6c3906111419086906004016125d8565b6040805180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906121f5565b91509150915091565b6034546001600160a01b03166111e0576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6111e861169b565b6034546001600160a01b03908116911614611233576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6112a161169b565b6001600160a01b03166112b26110a2565b6001600160a01b0316146112f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6112ff816118cb565b609b80546001600160a01b038381166001600160a01b03198316179092556040519116907f8ee0c0bf71c2ee4432c73fa249b11adfdf9ee8948168fb59639e8d240686208190610d12908390859061228e565b609c546001600160a01b031690565b61136961169b565b6001600160a01b031661137a6110a2565b6001600160a01b0316146113be576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609c5460408051632a8aa0a560e21b815290516000926001600160a01b03169163aa2a8294916004808301926020929190829003018186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190611ec0565b6001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561147357600080fd5b505afa158015611487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ab91906121d9565b90508062ffffff168262ffffff161180156114cd5750620f42408262ffffff16105b6114e95760405162461bcd60e51b8152600401610468906123d4565b50609f805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055565b609d546001600160a01b031690565b60a0546001600160a01b031690565b60a0546001600160a01b031661154061169b565b6001600160a01b0316146115665760405162461bcd60e51b8152600401610468906123b4565b609e5460405163f3fef3a360e01b81526001600160a01b039091169063f3fef3a39061159890859085906004016122a8565b600060405180830381600087803b1580156115b257600080fd5b505af11580156115c6573d6000803e3d6000fd5b505060a05461109e92508491506001600160a01b031683611952565b6115ea61169b565b6001600160a01b03166115fb6110a2565b6001600160a01b03161461163f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611648816118cb565b60a080546001600160a01b038381166001600160a01b03198316179092556040519116907fceeb903291fcb0b2c048267b2e6c7874698308e5fd1d7ef64a1b7c7a6680d77690610d12908390859061228e565b3390565b806001600160801b03811681146116e75760405162461bcd60e51b81526004018080602001828103825260278152602001806127146027913960400191505060405180910390fd5b919050565b60008183038183128015906117015750838113155b80611716575060008312801561171657508381135b6117515760405162461bcd60e51b81526004018080602001828103825260248152602001806127b76024913960400191505060405180910390fd5b9392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526117b29085906119a0565b50505050565b60006117c330611a51565b15905090565b600054610100900460ff16806117e257506117e26117b8565b806117f0575060005460ff16155b61182b5760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611856576000805460ff1961ff0019909116610100171660011790555b61185e611a57565b600061186861169b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156118c8576000805461ff00191690555b50565b6001600160a01b0381166118c85760405162461bcd60e51b815260040161046890612375565b6000611751838362ffffff16620f4240611b00565b60006001600160ff1b0382111561194e5760405162461bcd60e51b815260040180806020018281038252602881526020018061278f6028913960400191505060405180910390fd5b5090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c549084905b60006119f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611baf9092919063ffffffff16565b805190915015610c5457808060200190516020811015611a1457600080fd5b5051610c545760405162461bcd60e51b815260040180806020018281038252602a8152602001806127db602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff1680611a705750611a706117b8565b80611a7e575060005460ff16155b611ab95760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611ae4576000805460ff1961ff0019909116610100171660011790555b611aec611bc6565b80156118c8576000805461ff001916905550565b6000808060001985870986860292508281109083900303905080611b365760008411611b2b57600080fd5b508290049050611751565b808411611b4257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6060611bbe8484600085611c66565b949350505050565b600054610100900460ff1680611bdf5750611bdf6117b8565b80611bed575060005460ff16155b611c285760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611aec576000805460ff1961ff00199091166101001716600117905580156118c8576000805461ff001916905550565b606082471015611ca75760405162461bcd60e51b815260040180806020018281038252602681526020018061273b6026913960400191505060405180910390fd5b611cb085611a51565b611d01576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310611d3f5780518252601f199092019160209182019101611d20565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611da1576040519150601f19603f3d011682016040523d82523d6000602084013e611da6565b606091505b5091509150611db6828286611dc1565b979650505050505050565b60608315611dd0575081611751565b825115611de05782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e2a578181015183820152602001611e12565b50505050905090810190601f168015611e575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356116e7816126df565b80356116e7816126f4565b8035600481106116e757600080fd5b803569ffffffffffffffffffff811681146116e757600080fd5b600060208284031215611eb5578081fd5b8135611751816126df565b600060208284031215611ed1578081fd5b8151611751816126df565b60008060408385031215611eee578081fd5b8235611ef9816126df565b91506020830135611f09816126df565b809150509250929050565b60008060008060008060a08789031215611f2c578182fd5b8635611f37816126df565b95506