0 txs
0 calls
constructor
constructor((address factory, address events, address configs, address usdAsset, address automate, address taskCreator, address gainsTrading, address pyth) _params)
functions
automate
viewfunction automate() view returns (address)
availableFund
viewfunction availableFund() view returns (uint256)
availableFundD18
viewfunction availableFundD18() view returns (uint256)
dedicatedMsgSender
viewfunction dedicatedMsgSender() view returns (address)
delegates
viewfunction delegates(address delegate) view returns (bool)
ethToUsd
viewfunction ethToUsd(uint256 _amount) view returns (uint256)
executor
viewfunction executor() view returns (address)
getKeyIndex
viewfunction getKeyIndex(address _source, uint32 _sourceIndex) view returns (uint32 index)
getTraderPosition
viewfunction getTraderPosition(uint32 _index) view returns (tuple traderPosition)
hasCloseCharged
viewfunction hasCloseCharged(uint32 _index) view returns (bool)
isAuth
viewfunction isAuth(address msgSender) view returns (bool)
isOwner
viewfunction isOwner(address msgSender) view returns (bool)
lockedFund
viewfunction lockedFund() view returns (uint256)
lockedFundD18
viewfunction lockedFundD18() view returns (uint256)
owner
viewfunction owner() view returns (address)
positions
viewfunction positions(uint256 _key) view returns (tuple)
taskId
viewfunction taskId() view returns (uint256)
VERSION
viewfunction VERSION() view returns (bytes32)
addDelegate
nonpayablefunction addDelegate(address _delegate)
chargeCloseFee
nonpayablefunction chargeCloseFee(uint32 _index)
closePosition
nonpayablefunction closePosition(uint32 _index)
execute
payablefunction execute(uint8[] _commands, bytes[] _inputs) payable
init
nonpayablefunction init(address _owner, address _executor)
removeDelegate
nonpayablefunction removeDelegate(address _delegate)
setExecutor
nonpayablefunction setExecutor(address _executor)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
events
DelegatedCopyWalletAdded
event DelegatedCopyWalletAdded(address indexed caller, address indexed delegate)
DelegatedCopyWalletRemoved
event DelegatedCopyWalletRemoved(address indexed caller, address indexed delegate)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
errors
AlreadyCharged
error AlreadyCharged()
CannotExecuteTask
error CannotExecuteTask(uint256 taskId, address executor)
EthWithdrawalFailed
error EthWithdrawalFailed()
ExecutionFeeNotEnough
error ExecutionFeeNotEnough()
InsufficientAvailableFund
error InsufficientAvailableFund(uint256 available, uint256 required)
InvalidCollateralDelta
error InvalidCollateralDelta()
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidDelegateAddress
error InvalidDelegateAddress(address delegateAddress)
InvalidLeverage
error InvalidLeverage()
LengthMismatch
error LengthMismatch()
NoOpenPosition
error NoOpenPosition()
NoOrderFound
error NoOrderFound()
NoTaskFound
error NoTaskFound()
PositionExist
error PositionExist()
SourceMismatch
error SourceMismatch()
TradeMismatch
error TradeMismatch()
TradeOpening
error TradeOpening()
Unauthorized
error Unauthorized()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101c06040818152346200063e578190620046c7803803809162000024828662000643565b8439610100938491810103126200063e5780516001600160401b039284820184811183821017620006285783526200005c8162000667565b9384835260206200006f81840162000667565b80828601526200008186850162000667565b908187870152620000956060860162000667565b97886060880152620000aa6080870162000667565b93846080890152620000bf60a0880162000667565b8060a08a015260e0620000e981620000da60c08c0162000667565b9a60c08d019b8c520162000667565b990198895260018060a01b03808097169116968a519360c085019185831090831117620006285787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa908115620005da5789918e87928792620005e4575b50516331056e5760e21b81529283916004918391165afa908115620005da57908591859162000594575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa90811562000544578892918d869286926200054e575b5051632e8743fd60e21b81529384916004918391165afa9182156200054457918c9184938a9592620004f8575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004ec579087959493929181936200048f575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a0908152935161404a96909590876200067d883960805187818161071c01526132f2015260a05187612b95015260c05187505060e0518781816101f801526102a10152518681816107f201528181610ba001528181610ce201528181610e07015281816118ca0152818161194a01528181611f2d01528181611fba0152818161219701528181612ef6015281816130f7015281816138c90152613aca01525185818161066301528181610a2e015281816115bc015281816120ec01528181612858015281816130660152818161325f01528181613a310152613e9e0152518481816107be015281816108e001528181610b6801528181610caa015281816110380152818161157901528181611c930152818161215f015281816130c501528181613a9901528181613d850152613f88015251836106e0015251828181610f3b01528181610fdf015281816110b5015281816111080152818161133801528181611523015281816116000152818161174801528181611aac01528181611bb701528181611c3b01528181611ce201528181611d65015281816122c00152818161231c0152818161237a015281816123d601528181612474015281816124e20152818161267401528181612737015281816127c201528181612d33015261375d015251816134680152f35b9180949596508c809294503d8311620004e4575b620004af818362000643565b81010312620004e057620004c38362000667565b92015180151503620004dd57508492919083838162000264565b80fd5b5080fd5b503d620004a3565b508a51903d90823e3d90fd5b9250929350508381813d83116200053c575b62000516818362000643565b8101031262000538578792916024620005308e9362000667565b919062000230565b8280fd5b503d6200050a565b8c513d85823e3d90fd5b939450505081813d83116200058c575b6200056a818362000643565b81010312620005385790838c6004620005848b9562000667565b919062000203565b503d6200055e565b82819392503d8311620005d2575b620005ae818362000643565b81010312620005ce57602491620005c6869262000667565b9092620001cc565b8380fd5b503d620005a2565b8d513d86823e3d90fd5b9350505081813d831162000620575b620005ff818362000643565b81010312620005ce57518881168103620005ce57889085908e6004620001a2565b503d620005f3565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200062857604052565b51906001600160a01b03821682036200063e5756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe146132d4575080630b638e5414612cc85780631c3c0ea814612c9457806322bfbf9d14612be65780632520e7ff14612bb957806328f150eb14612b755780632f54bf6e14612b425780633322b23d14612b245780633732572514612a8757806351f954bf146129ce5780635595de8214612952578063587cde1e14612913578063608d60eb146105d257806367e7646f146105405780638da5cb5b14610519578063946d1480146104fb57806399fbab881461045e578063c34c08e514610437578063cea1fa0414610419578063d0cb3cd1146103fe578063d270444f146103db578063e71bdf411461032f578063f05ed16a14610309578063f09a401614610271578063f2fde38b146101885763ffa1ad7414610148573861000f565b346101835760003660031901126101835760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b34610183576020366003190112610183576101a1613329565b600054906001600160a01b0391828116330361026057826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604483600081938195637eecd31b60e11b845260048401523360248401525af180156102545761024b57005b61001b9061338c565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b346101835760403660031901126101835761028a613329565b6024356001600160a01b03808216820361018357807f00000000000000000000000000000000000000000000000000000000000000001633036102605761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3613dfe565b34610183576000366003190112610183576020610327601754613f58565b604051908152f35b3461018357602036600319011261018357610348613329565b6001600160a01b0390816000541633036102605716801580156103c3575b6103ab578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff60406000205416610366565b346101835760003660031901126101835760206103276103f9613d6a565b613f58565b34610183576000366003190112610183576020610327613d6a565b34610183576000366003190112610183576020601754604051908152f35b346101835760003660031901126101835760206001600160a01b0360165416604051908152f35b34610183576020366003190112610183576000606060405161047f816133bd565b8281528260208201528260408201520152600435600052601a602052608060406000206040516104ae816133bd565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b3461018357602036600319011261018357602061032760043561342d565b346101835760003660031901126101835760206001600160a01b0360005416604051908152f35b3461018357602036600319011261018357610559613329565b6001600160a01b0390816000541633036102605716801580156105b9575b6103ab57806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff6040600020541615610577565b60403660031901126101835760043567ffffffffffffffff8111610183576105fe90369060040161333f565b9060243567ffffffffffffffff81116101835761061f90369060040161333f565b92909161062a613547565b5a938281036128e85760005b838110610a9f57856001600160a01b03806016541633148015610a12575b610660575b6001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa918215610254576000926109e1575b506106bc6106c3916106ca93613e5a565b5a90613d5d565b3a90613410565b600c810290808204600c14901517156109cb57337f00000000000000000000000000000000000000000000000000000000000000008316036109bf575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156102545760009061097f575b60049150935b8061075d8661342d565b9460405193848092632cfc019d60e21b82525afa91821561025457600092610948575b508361078a613d6a565b811161089f575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af180156102545761086b575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561018357600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af180156102545761085c575b80610659565b6108659061338c565b80610856565b81813d8311610898575b61087f81836133d9565b81010312610183576108909061359d565b5084806107ec565b503d610875565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610914575b50506107ef565b81813d8311610941575b61092881836133d9565b81010312610183576109399061359d565b50848061090d565b503d61091e565b9080925081813d8311610978575b61096081836133d9565b8101031261018357610971906135aa565b9085610780565b503d610956565b506040813d6040116109b7575b81610999604093836133d9565b8101031261018357806109b1856004935192016135aa565b5061074d565b3d915061098c565b600a6004910493610753565b634e487b7160e01b600052601160045260246000fd5b91508482813d8311610a0b575b6109f881836133d9565b81010312610183579051906106bc6106ab565b503d6109ee565b50604051639ac2a01160e01b81523360048201526020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561025457600091610a66575b50610654565b90506020813d8211610a97575b81610a80602093836133d9565b8101031261018357610a919061359d565b83610a60565b3d9150610a73565b8060051b90600d82850135101561018357828110156128d2578186013591601e1987360301831215610183578287013567ffffffffffffffff811161018357360360208489010113610183576003858201351015610eae576001600160a01b036000541633036102605784810135610d905750908501602001356000811315610c4f576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610c16575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101835760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561025457600192610c07575b505b01610636565b610c109061338c565b87610bff565b6020813d602011610c47575b81610c2f602093836133d9565b8101031261018357610c409061359d565b5087610b95565b3d9150610c22565b60008112610c61575b50600190610c01565b610c6a81613f16565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610d57575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101835760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561025457600192610d48575b5090610c58565b610d519061338c565b87610d41565b6020813d602011610d88575b81610d70602093836133d9565b8101031261018357610d819061359d565b5087610cd7565b3d9150610d63565b840135600114610da4575b60019150610c01565b6020828701013515610d9b5760008080806020868b010135335af13d15610ea9573d67ffffffffffffffff8111610e935760405190610ded601f8201601f1916602001836133d9565b8152600060203d92013e5b15610e81576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610183576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561025457600192610e72575b50610d9b565b610e7b9061338c565b87610e6c565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b610df8565b9091610eb93361400a565b158061283c575b6102605760038286013503610f00575b50600c8185013511610ee55750600190610c01565b604051636bb50f4f60e11b8152908401356004820152602490fd5b84820135600403611270576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092611243575b505060a081015115611231576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b0381116109cb579089840160600135156111d357606902806001600160781b038116036109cb5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457611188575b506001600160781b038061108f6060945b82610100820151169062ffffff96879101511690613703565b1691169081156111725704166107d081108015611166575b611154576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561025457611145575b505b87610ed0565b61114e9061338c565b8761113d565b604051633fe89cb960e11b8152600490fd5b50620249f081116110a7565b634e487b7160e01b600052601260045260246000fd5b6020813d6020116111cb575b816111a1602093836133d9565b81010312610183576001600160781b0361108f6060946111c1839461359d565b5094505050611065565b3d9150611194565b90506001600160781b036101008301511681101561121f576001600160781b036101008301511603906001600160781b0382116109cb576001600160781b038061108f60609493611076565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6112629250803d10611269575b61125a81836133d9565b8101906135f4565b8980610f74565b503d611250565b848201356005036125775761016081880101359061ffff82161561256d575b61129f610140828a010135613e67565b8781016101400135611b255760408051828a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff1660348201526112f581605481015b03601f1981018352826133d9565b5190209182600052601b60205263ffffffff6040600020541680611a80575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610254578a92600091611a0f575b5063ffffffff9067ffffffffffffffff6101208660405196611393886133a0565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e08383010135168389015283610100838301013516610140890152010135166101608501525116602083015260405161143981613370565b6001600160a01b036020858d0101351681528a63ffffffff6040866020850193010135168152604082016000815263ffffffff60208601511687600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020848c61156b604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610254576119d6575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102545760009161199c575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e08101516116c381613e67565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761198d575b506103e86001600160781b0361179b8a840160c081013562ffffff169060a00135613703565b16049082600052601a602052604060002060606003604051926117bd846133bd565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166002600160791b038360011b16046002146001600160781b0383161517156109cb576118246002600160791b038360011b16613e87565b9161182e83613f16565b8260ff1c600003611846601791858101188254613e5a565b9055604051611854816133bd565b6001600160a01b036020848d01013516815260036020820160008152604083016001600160781b0385168152606084019187835288600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576001600160a01b0360206001600160781b039360405196634fb9b99360e01b885260048801528c010135166024850152600060448501521660648301526001608483015260a482015260008160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761197e575b505b61113f565b6119879061338c565b87611977565b6119969061338c565b89611775565b90506020813d6020116119ce575b816119b7602093836133d9565b81010312610183576119c8906135aa565b8c6115f5565b3d91506119aa565b6020813d602011611a07575b816119ef602093836133d9565b8101031261018357611a009061359d565b508b6115a6565b3d91506119e2565b9250506060823d606011611a78575b81611a2b606093836133d9565b810103126101835763ffffffff8a92611a6d6040805192611a4b84613370565b611a54816135be565b8452611a62602082016135be565b6020850152016135cf565b604082015290611372565b3d9150611a1e565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102545760a092600092611b08575b50500151611af6578a611314565b604051632d852ff160e21b8152600490fd5b611b1e9250803d106112695761125a81836133d9565b8c80611ae8565b90611b36610140838a010135613e67565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611b7681605481016112e7565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201529092906101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092612550575b505060a0810151156112315761ffff60408201511661ffff6060848d0101351614801590612538575b6125275789820161014001356001036124655760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b840160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761242c575b5063ffffffff6020820151169262ffffff606083015116906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835767ffffffffffffffff60e0858e61ffff95604051996324058ad3851b8b5260048b01526001600160781b0360a084840101351660248b015260448a015201013516606486015216608484015260008360a481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315610254578a9361241d575b505b610100828401013567ffffffffffffffff8116612363575b50610120828401013567ffffffffffffffff81166122a9575b5060606001600160781b03610100830151169101906001600160781b03611e116103e8928383611e0062ffffff938489511690613703565b160494511660a08688010135613703565b16049060009480600052601a602052604060002060405190611e32826133bd565b6001600160a01b03815416825260036001820154918260208501526002810154604085015201546060830152806001600160781b038516116000146122a057611e84906001600160781b038516613d5d565b905b818061208b575b505050600161014085889701013514612014575b6040516001600160a01b036020868f611eb9856133bd565b0101351681526001600160781b03831660208201526001600160781b0384166040820152600360608201878152838952601a6020526040808a20936001600160a01b038151166001600160a01b03198654161785556020810151600186015501516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561201057926001600160781b0360019381610140948f6020866001600160a01b039260049c9b6040519d8e634fb9b99360e01b815201520101351660248a01521660448801521660648601528b01013514608483015260a4820152818160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561200557611fee575b505061113f565b611ff8829161338c565b6120025780611fe7565b80fd5b6040513d84823e3d90fd5b8580fd5b93506001600160781b038216806002600160791b038460011b1604600214901517156120775761204f6002600160791b038360011b16613e87565b9361205985613f16565b8460ff1c8603612070601791878101188254613e5a565b9055611ea1565b634e487b7160e01b85526011600452602485fd5b909196506040820151809111612298575b50858060011b04600214861517156109cb5760606120bc8760011b613e87565b910151808211612290575b6120d46017918254613d5d565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092612254575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761221b575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af1948515610254578c95612207575b8080611e8d565b61221291965061338c565b6000948d612200565b6020813d60201161224c575b81612234602093836133d9565b81010312610183576122459061359d565b508f61218c565b3d9150612227565b9091506020813d602011612288575b81612270602093836133d9565b8101031261018357612281906135aa565b908f612125565b3d9150612263565b9050806120c7565b95508e61209c565b50600090611e86565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018357604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1928315610254578a9315611dc85761235d9061338c565b8b611dc8565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1928315610254578a9315611daf576124179061338c565b8b611daf565b6124269061338c565b8b611d95565b6020813d60201161245d575b81612445602093836133d9565b81010312610183576124569061359d565b508b611cc0565b3d9150612438565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018357604051926369f6bde160e01b845260048401526001600160781b0360a0838c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315610254578a93612518575b50611d97565b6125219061338c565b8b612512565b60405162e45f0360e21b8152600490fd5b50608080820151151590838c01013515151415611c19565b6125669250803d106112695761125a81836133d9565b8b80611bf0565b61012c915061128f565b8482013560060361265f576040602082890101359163ffffffff9182918a010135169060405160208101906125cf816112e786888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c6020526040600020916040519261260184613370565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c91015286161491821592612654575b50506126425761197992613721565b60405163c4d1e76d60e01b8152600490fd5b141590508b80612633565b848201356007036126d8576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af180156102545761197e575061113f565b600882860135036126e9575061113f565b600c82860135036119775786016040810135906020810135906060013567ffffffffffffffff81166127b8575b5067ffffffffffffffff821661272d575b50611977565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156101835760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af18015610254576127a9575b80612727565b6127b29061338c565b876127a3565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af180156102545715612716576128369061338c565b89612716565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025457600091612898575b5015610ec0565b90506020813d6020116128ca575b816128b3602093836133d9565b81010312610183576128c49061359d565b89612891565b3d91506128a6565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b34610183576020366003190112610183576001600160a01b03612934613329565b166000526001602052602060ff604060002054166040519015158152f35b346101835760403660031901126101835761296b613329565b6024359063ffffffff908183168093036101835760405160609190911b6bffffffffffffffffffffffff191660208281019182526034830194909452906129b581605481016112e7565b519020600052601b825260406000205416604051908152f35b34610183576020366003190112610183576129e7613316565b6129ef613547565b6001600160a01b039081600054163303610260576106599163ffffffff90818316600052601c6020526040600020916112e7612a7c60405194612a3186613370565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020915116613721565b34610183576020366003190112610183576060612aa2613316565b600060408051612ab181613370565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff60406000209160405192612ae884613370565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b34610183576000366003190112610183576020601854604051908152f35b34610183576020366003190112610183576020612b5d613329565b6001600160a01b038060005416911614604051908152f35b346101835760003660031901126101835760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610183576020366003190112610183576020612bdc612bd7613329565b61400a565b6040519015158152f35b34610183576020806003193601126101835763ffffffff80612c06613316565b16600052601c82526112e7612c77604060002060405190612c2682613370565b549060406001600160a01b038316958683528360a01c1692838884015260c01c910152604051928391868301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020600052601d815260ff604060002054166040519015158152f35b3461018357602036600319011261018357612cad613329565b6001600160a01b036000541633036102605761001b90613dfe565b346101835760208060031936011261018357612ce2613316565b90612ceb613547565b612cf43361400a565b1580613244575b610260576040516315878e0760e01b815230600482015263ffffffff831660248201526001600160a01b0391906101a09081816044817f000000000000000000000000000000000000000000000000000000000000000088165afa91821561025457600092613227575b505060a08101516132155763ffffffff809416600052601c82526040600020936112e7612de160405196612d9888613370565b54868116938489528160a01c169081878a015260c01c6040890152604051928391878301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601d835260ff6040600020541661320357836103e8612e25926001600160781b03938162ffffff60608761010081960151169201511690613703565b1604918216955116600095869184600052601a865260406000209660405197612e4d896133bd565b81815416895260019889820154808a8301526060600360028501549460408501958652015492019182528086116000146131fb57612e8b9086613d5d565b80928161300b575b5050505083948495612fa3575b50604051612ead816133bd565b82815260038882018581526040830186815260608401918983528a8952601a8c528560408a209551166001600160a01b0319865416178555518c850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001690813b15612f94578360c4926040519687958694634fb9b99360e01b86528a60048701526024860152806044860152606485015282608485015260a48401525af18015612f9857612f80575b506000908152601d90915260409020805460ff191682179055601555005b612f8a859161338c565b612f945783612f62565b8380fd5b6040513d87823e3d90fd5b9094506002600160791b0391929350871b1682810460021483151715612ff75790612fcf889392613e87565b93612fd985613f16565b612fee8560ff1c850386810118601754613e5a565b60175589612ea0565b634e487b7160e01b88526011600452602488fd5b909192939597949650518091116131f3575b5081891b828104600214831517156109cb5761303890613e87565b90518082116131eb575b61304e90601754613d5d565b601755604051632cfc019d60e21b81529088826004817f000000000000000000000000000000000000000000000000000000000000000089165afa918215610254576000926131b4575b5060405163a9059cbb60e01b81526001600160a01b038316600482015260248101829052898160448160007f00000000000000000000000000000000000000000000000000000000000000008b165af1801561025457613180575b50847f000000000000000000000000000000000000000000000000000000000000000016803b15610183576000928360649288946040519788968795633317f54960e21b8752166004860152602485015260448401525af1801561025457613164575b918280808b96949795612e93565b6131739193985093919361338c565b6000969188939193613156565b8981813d83116131ad575b61319581836133d9565b81010312610183576131a69061359d565b508b6130f3565b503d61318b565b9091508881813d83116131e4575b6131cc81836133d9565b81010312610183576131dd906135aa565b908b613098565b503d6131c2565b905080613042565b91508a61301d565b506000612e8b565b60405163361ec56f60e11b8152600490fd5b60405163a29ebd7360e01b8152600490fd5b61323d9250803d106112695761125a81836133d9565b8480612d65565b50604051639ac2a01160e01b815233600482015281816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102545760009161329f575b5015612cfb565b90508181813d83116132cd575b6132b681836133d9565b81010312610183576132c79061359d565b83613298565b503d6132ac565b34610183576000366003190112610183576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359063ffffffff8216820361018357565b600435906001600160a01b038216820361018357565b9181601f840112156101835782359167ffffffffffffffff8311610183576020808501948460051b01011161018357565b6060810190811067ffffffffffffffff821117610e9357604052565b67ffffffffffffffff8111610e9357604052565b6101a0810190811067ffffffffffffffff821117610e9357604052565b6080810190811067ffffffffffffffff821117610e9357604052565b90601f8019910116810190811067ffffffffffffffff821117610e9357604052565b519067ffffffffffffffff8216820361018357565b818102929181159184041417156109cb57565b8115611172570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610254576000916134c1575b50670de0b6b3a7640000916134b86134bd92613c7e565b613410565b0490565b6080813d821161353f575b816134d9608093836133d9565b8101031261353b57604051916134ee836133bd565b81518060070b810361353b578352613508602083016133fb565b60208401526040820151908160030b82036120025750604083015260609081015190820152670de0b6b3a76400006134a1565b5080fd5b3d91506134cc565b600260155414613558576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190811515820361018357565b51906001600160a01b038216820361018357565b519063ffffffff8216820361018357565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361018357565b90816101a0910312610183576040519061360d826133a0565b613616816135aa565b8252613624602082016135be565b6020830152604081015161ffff81168103610183576040830152606081015162ffffff811681036101835760608301526136606080820161359d565b608083015261367160a0820161359d565b60a083015260c081015160ff811681036101835760c083015260e081015160038110156101835760e083015261010080820151906001600160781b0382168203610183578301526101206136c68183016133fb565b908301526101406136d88183016133fb565b908301526101606136ea8183016133fb565b908301526136fc6101808092016135cf565b9082015290565b9190916001600160781b03808094169116029182169182036109cb57565b604080516315878e0760e01b81523060048083019190915263ffffffff86166024830152919490936101a09390926001600160a01b03929091907f00000000000000000000000000000000000000000000000000000000000000008416908688604481855afa978815613c5f576000978899613c40575b5050813b15613c3c5763ffffffff60248892838c51958694859363bdb340cd60e01b855216898401525af18015613c32579088939291613c1b575b506103e86137ff96976001600160781b03978162ffffff60608b61010081960151169201511690613703565b1604958616906000948591878352602098601a8a52868420875190613823826133bd565b8481541682526001810154808d840152606060036002840154938c860194855201549301928352808811600014613c145761385e9088613d5d565b8091816139d5575b505050508361396a575b50600387898b85808b5196613884886133bd565b169a8b8752601a838801938b8552828901958c875260608a01978c895252528c209551166001600160a01b0319865416178555516001850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001691823b15612010579285879360c49382968d519889978896634fb9b99360e01b88528701526024860152806044860152606485015282608485015260a48401525af180156139605761394c575b50508252601d905220805460ff19166001179055565b613956829161338c565b6120025780613936565b86513d84823e3d90fd5b90939495506002600160791b0391925060011b16838104600214841517156139c2579061399a8a95949392613e87565b916139a483613f16565b6139b98360ff1c880384810118601754613e5a565b60175538613870565b634e487b7160e01b865260118552602486fd5b919395979899509193955051809111613c0c575b508060011b81810460021482151715613bf957613a0590613e87565b9151808311613bf1575b613a1b90601754613d5d565b6017558b51632cfc019d60e21b8152918a8389817f00000000000000000000000000000000000000000000000000000000000000008a165afa928315613be757888e8d928c96613b9f575b505163a9059cbb60e01b81526001600160a01b038616918101918252602082018490529190829081906040015b03818d8b7f0000000000000000000000000000000000000000000000000000000000000000165af18015613b9557613b61575b50857f00000000000000000000000000000000000000000000000000000000000000001691823b15613b5d578d51633317f54960e21b8152938716848a01526024840152604483015287908290606490829084905af18015613b5357908b969594939291613b3c575b908180808a969594613866565b613b4a90979193929761338c565b95909138613b2f565b8b513d89823e3d90fd5b8980fd5b8b81813d8311613b8e575b613b7681836133d9565b81010312613b5d57613b879061359d565b5038613ac6565b503d613b6c565b8e513d8c823e3d90fd5b93949550505081813d8311613be0575b613bb981836133d9565b81010312613bdc5790808b8e8a613bd3613a9397966135aa565b96509192613a66565b8880fd5b503d613baf565b8d513d8b823e3d90fd5b915081613a0f565b634e487b7160e01b895260118852602489fd5b9050386139e9565b508561385e565b6137ff96613c2b6103e89261338c565b96506137d3565b88513d88823e3d90fd5b8680fd5b613c57929950803d106112695761125a81836133d9565b963880613798565b89513d6000823e3d90fd5b63ffffffff16604d81116109cb57600a0a90565b600080825160070b128015613d4d575b8015613d3b575b61200257604082015160030b8103808060030b03613d275760ff169167ffffffffffffffff9060068411613d00575116916006039060ff8211613cec575090613ce360ff613ce99316613c6a565b90613410565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff8211613cec575090613d2160ff613ce99316613c6a565b90613423565b634e487b7160e01b82526011600452602482fd5b5060fe19604083015160030b12613c95565b5080604083015160030b13613c8e565b919082039182116109cb57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025457600090613dcb575b613ce9915060175490613d5d565b6020823d8211613df6575b81613de3602093836133d9565b810103126120025750613ce99051613dbd565b3d9150613dd6565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b919082018092116109cb57565b60031115613e7157565b634e487b7160e01b600052602160045260246000fd5b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561025457600093613ee3575b5091613ce99192613423565b6020813d8211613f0e575b81613efb602093836133d9565b81010312612f9457519250613ce9613ed7565b3d9150613eee565b8060ff1c60000390810118613f29613d6a565b8111613f325750565b604490613f3d613d6a565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a7640000908181029181830414901517156109cb5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092613fd7575b50604d82116109cb57613ce991600a0a90613423565b90916020823d8211614002575b81613ff1602093836133d9565b810103126120025750519038613fc1565b3d9150613fe4565b6001600160a01b0380600054169116908114908115614027575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000a63ac5b5b0de2e5200f602b214fc33a4d7355cc8000000000000000000000000bd5662b3385f4951f1ba1c51705c85d4725f1d4a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c