0 txs
4.9k 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)
claimRewards
nonpayablefunction claimRewards(address _claimContract, address _claimToken, uint256[] _epochs, uint256[] _rewardAmounts, bytes32[][] _proofs)
closePosition
nonpayablefunction closePosition(uint32 _index, uint64 _expectedPrice)
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()
InvalidSource
error InvalidSource()
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
0x6101c0604081815234620006295781906200470e80380380916200002482866200062e565b843961010093849181010312620006295780516001600160401b039284820184811183821017620006135783526200005c8162000652565b9384835260206200006f81840162000652565b80828601526200008186850162000652565b908187870152620000956060860162000652565b97886060880152620000aa6080870162000652565b93846080890152620000bf60a0880162000652565b8060a08a015260e0620000e981620000da60c08c0162000652565b9a60c08d019b8c520162000652565b990198895260018060a01b03808097169116968a519360c085019185831090831117620006135787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa908115620005c55789918e87928792620005cf575b50516331056e5760e21b81529283916004918391165afa908115620005c55790859185916200057f575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa9081156200052f578892918d8692869262000539575b5051632e8743fd60e21b81529384916004918391165afa9182156200052f57918c9184938a9592620004e3575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004d7579087959493929181936200047a575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a090815293516140a69690959087620006688839608051878181610a5f0152613301015260a05187612f52015260c05187505060e05187818161020301526102a8015251868181610b3501528181610ecf015281816110110152818161113301528181611c0f01528181611c8f01528181612284015281816123110152818161250001528181613bd40152613da40152518581816107d4015281816109a601528181610d5b015281816118ef0152818161245501528181612c570152818161326e01528181613d160152613ef6015251848181610b0101528181610c2301528181610e9701528181610fd901528181611358015281816118ac01528181611fea015281816124c801528181613a1001528181613d720152613fe401525183610a2301525182818161125b015281816112ff015281816113d5015281816114280152818161166b015281816118560152818161193301528181611a7b01528181611df101528181611f0e01528181611f9201528181612039015281816120bc0152818161262901528181612685015281816126e30152818161273f015281816127dd0152818161286101528181612a7901528181612b3601528181612bc1015281816130ef01526137d00152518161348d0152f35b9180949596508c809294503d8311620004cf575b6200049a81836200062e565b81010312620004cb57620004ae8362000652565b92015180151503620004c857508492919083838162000264565b80fd5b5080fd5b503d6200048e565b508a51903d90823e3d90fd5b9250929350508381813d831162000527575b6200050181836200062e565b81010312620005235787929160246200051b8e9362000652565b919062000230565b8280fd5b503d620004f5565b8c513d85823e3d90fd5b939450505081813d831162000577575b6200055581836200062e565b81010312620005235790838c60046200056f8b9562000652565b919062000203565b503d62000549565b82819392503d8311620005bd575b6200059981836200062e565b81010312620005b957602491620005b1869262000652565b9092620001cc565b8380fd5b503d6200058d565b8d513d86823e3d90fd5b9350505081813d83116200060b575b620005ea81836200062e565b81010312620005b957518881168103620005b957889085908e6004620001a2565b503d620005de565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200061357604052565b51906001600160a01b0382168203620006295756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe146132e3575080630b638e54146130855780631c3c0ea81461305157806322bfbf9d14612fa35780632520e7ff14612f7657806328f150eb14612f325780632f54bf6e14612eff5780632f798f8714612e885780633322b23d14612e6a5780633732572514612dcd5780635595de8214612d51578063587cde1e14612d12578063608d60eb1461091657806367e7646f146108845780638da5cb5b1461085d5780638f6e6aa814610520578063946d14801461050257806399fbab8814610465578063c34c08e51461043e578063cea1fa0414610420578063d0cb3cd114610405578063d270444f146103e2578063e71bdf4114610336578063f05ed16a14610310578063f09a40161461027c578063f2fde38b146101935763ffa1ad7414610153573861000f565b3461018e57600036600319011261018e5760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b3461018e57602036600319011261018e576101ac613338565b600054906001600160a01b0391828116330361026b57826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604483600081938195637eecd31b60e11b845260048401523360248401525af1801561025f5761025657005b61001b906133b1565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b3461018e57604036600319011261018e57610295613338565b61029d61334e565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016330361026b5761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3613a89565b3461018e57600036600319011261018e57602061032e601754613fb4565b604051908152f35b3461018e57602036600319011261018e5761034f613338565b6001600160a01b03908160005416330361026b5716801580156103ca575b6103b2578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff6040600020541661036d565b3461018e57600036600319011261018e57602061032e6104006139f5565b613fb4565b3461018e57600036600319011261018e57602061032e6139f5565b3461018e57600036600319011261018e576020601754604051908152f35b3461018e57600036600319011261018e5760206001600160a01b0360165416604051908152f35b3461018e57602036600319011261018e5760006060604051610486816133e2565b8281528260208201528260408201520152600435600052601a602052608060406000206040516104b5816133e2565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b3461018e57602036600319011261018e57602061032e600435613452565b3461018e5760031960a03682011261018e5761053a613338565b9061054361334e565b9060443567ffffffffffffffff811161018e57610564903690600401613364565b909360643567ffffffffffffffff811161018e57610586903690600401613364565b95909360843567ffffffffffffffff811161018e576105a9903690600401613364565b90926105b361356c565b6001600160a01b03600054163314158061084d575b806107b8575b61026b576001600160a01b0385163b1561018e5794929061061d61060c604051978896633fe46ecd60e21b88526060600489015260648801916135cf565b848682030160248701528a896135cf565b92848403016044850152808352602083019060208160051b85010193836000915b83831061074f57505050505050918160006001600160a01b038282960393165af1801561025f57610740575b50916000926000915b8083106106fd576000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018890529160209183916044918391908a165af1801561025f576106c4575b6001601555005b6020813d6020116106f5575b816106dd602093836133fe565b8101031261018e576106ee906135c2565b50806106bd565b3d91506106d0565b9091936107169061070f86848661360c565b359061361c565b93600019811461072a576001019190610673565b634e487b7160e01b600052601160045260246000fd5b610749906133b1565b8361066a565b9193959092949650601f198282030186528635601e198436030181121561018e5783019067ffffffffffffffff82351161018e5760208201823560051b3603811361018e576107a6602092839260019535906135cf565b9801960193019091889695949261063e565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091610814575b50156105ce565b90506020813d8211610845575b8161082e602093836133fe565b8101031261018e5761083f906135c2565b8a61080d565b3d9150610821565b5061085733614066565b156105c8565b3461018e57600036600319011261018e5760206001600160a01b0360005416604051908152f35b3461018e57602036600319011261018e5761089d613338565b6001600160a01b03908160005416330361026b5716801580156108fd575b6103b257806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff60406000205416156108bb565b604036600319011261018e5760043567ffffffffffffffff811161018e57610942903690600401613364565b9060243567ffffffffffffffff811161018e57610963903690600401613364565b61096e92919261356c565b5a93808203612ce75760005b818110610dcc57856001600160a01b03806016541633148015610d3f575b6109a3576001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa91821561025f57600092610d0e575b506109ff610a0691610a0d9361361c565b5a906139e8565b3a90613435565b600c810290808204600c149015171561072a57337f0000000000000000000000000000000000000000000000000000000000000000831603610d02575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561025f57600090610cc2575b60049150935b80610aa086613452565b9460405193848092632cfc019d60e21b82525afa91821561025f57600092610c8b575b5083610acd6139f5565b8111610be2575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af1801561025f57610bae575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561018e57600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af1801561025f57610b9f575b806106bd565b610ba8906133b1565b80610b99565b81813d8311610bdb575b610bc281836133fe565b8101031261018e57610bd3906135c2565b508480610b2f565b503d610bb8565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57610c57575b5050610b32565b81813d8311610c84575b610c6b81836133fe565b8101031261018e57610c7c906135c2565b508480610c50565b503d610c61565b9080925081813d8311610cbb575b610ca381836133fe565b8101031261018e57610cb490613629565b9085610ac3565b503d610c99565b506040813d604011610cfa575b81610cdc604093836133fe565b8101031261018e5780610cf485600493519201613629565b50610a90565b3d9150610ccf565b600a6004910493610a96565b91508482813d8311610d38575b610d2581836133fe565b8101031261018e579051906109ff6109ee565b503d610d1b565b50604051639ac2a01160e01b81523360048201526020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561025f57600091610d93575b50610998565b90506020813d8211610dc4575b81610dad602093836133fe565b8101031261018e57610dbe906135c2565b83610d8d565b3d9150610da0565b610dd781838661360c565b3590600d82101561018e5783811015612cd1578060051b86013591601e198736030183121561018e578287013567ffffffffffffffff811161018e5736036020848901011361018e5760038110156111da576001600160a01b0360005416330361026b57806110bf5750908501602001356000811315610f7e576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57610f45575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e5760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561025f57600192610f36575b505b0161097a565b610f3f906133b1565b87610f2e565b6020813d602011610f76575b81610f5e602093836133fe565b8101031261018e57610f6f906135c2565b5087610ec4565b3d9150610f51565b60008112610f90575b50600190610f30565b610f9981613f72565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611086575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e5760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561025f57600192611077575b5090610f87565b611080906133b1565b87611070565b6020813d6020116110b7575b8161109f602093836133fe565b8101031261018e576110b0906135c2565b5087611006565b3d9150611092565b6001146110d0575b60019150610f30565b60208287010135156110c75760008080806020868b010135335af13d156111d5573d67ffffffffffffffff81116111bf5760405190611119601f8201601f1916602001836133fe565b8152600060203d92013e5b156111ad576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561025f5760019261119e575b506110c7565b6111a7906133b1565b87611198565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b611124565b90916111e533614066565b1580612c3b575b61026b5760038203611223575b50600c811161120b5750600190610f30565b60249060405190636bb50f4f60e11b82526004820152fd5b60048203611590576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092611563575b505060a081015115611551576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b03811161072a579089840160600135156114f357606902806001600160781b0381160361072a5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f576114a8575b506001600160781b03806113af6060945b82610100820151169062ffffff96879101511690613782565b1691169081156114925704166107d081108015611486575b611474576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561025f57611465575b505b876111f9565b61146e906133b1565b8761145d565b604051633fe89cb960e11b8152600490fd5b50620249f081116113c7565b634e487b7160e01b600052601260045260246000fd5b6020813d6020116114eb575b816114c1602093836133fe565b8101031261018e576001600160781b036113af6060946114e183946135c2565b5094505050611385565b3d91506114b4565b90506001600160781b036101008301511681101561153f576001600160781b036101008301511603906001600160781b03821161072a576001600160781b03806113af60609493611396565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6115829250803d10611589575b61157a81836133fe565b810190613673565b8980611294565b503d611570565b600582036128f65761016081880101359061ffff8216156128ec575b6115bc610140828a010135613ae5565b8781016101400135611e7c57306001600160a01b036020838b0101351614611e6a5760408051828a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff16603482015261162881605481015b03601f1981018352826133fe565b5190209182600052601b60205263ffffffff6040600020541680611dc5575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025f578a92600091611d54575b5063ffffffff9067ffffffffffffffff61012086604051966116c6886133c5565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e08383010135168389015283610100838301013516610140890152010135166101608501525116602083015260405161176c81613395565b6001600160a01b036020858d0101351681528a63ffffffff6040866020850193010135168152604082016000815263ffffffff60208601511687600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020848c61189e604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611d1b575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091611ce1575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e08101516119f681613ae5565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611cd2575b506103e86001600160781b03611ace8a840160c081013562ffffff169060a00135613782565b16049082600052601a60205260406000206060600360405192611af0846133e2565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166f01fffffffffffffffffffffffffffffe8360011b16046002146001600160781b03831615171561072a57611b696f01fffffffffffffffffffffffffffffe8360011b16613edf565b91611b7383613f72565b8260ff1c600003611b8b60179185810118825461361c565b9055604051611b99816133e2565b6001600160a01b036020848d01013516815260036020820160008152604083016001600160781b0385168152606084019187835288600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e576001600160a01b0360206001600160781b039360405196634fb9b99360e01b885260048801528c010135166024850152600060448501521660648301526001608483015260a482015260008160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611cc3575b505b61145f565b611ccc906133b1565b87611cbc565b611cdb906133b1565b89611aa8565b90506020813d602011611d13575b81611cfc602093836133fe565b8101031261018e57611d0d90613629565b8c611928565b3d9150611cef565b6020813d602011611d4c575b81611d34602093836133fe565b8101031261018e57611d45906135c2565b508b6118d9565b3d9150611d27565b9250506060823d606011611dbd575b81611d70606093836133fe565b8101031261018e5763ffffffff8a92611db26040805192611d9084613395565b611d998161363d565b8452611da76020820161363d565b60208501520161364e565b6040820152906116a5565b3d9150611d63565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f5760a092600092611e4d575b50500151611e3b578a611647565b604051632d852ff160e21b8152600490fd5b611e639250803d106115895761157a81836133fe565b8c80611e2d565b604051638154374b60e01b8152600490fd5b90611e8d610140838a010135613ae5565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611ecd816054810161161a565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201529092906101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f576000926128cf575b505060a0810151156115515761ffff60408201511661ffff6060848d01013516148015906128b7575b6128a65789820161014001356001036127ce5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b840160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57612795575b5063ffffffff6020820151169262ffffff606083015116906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5767ffffffffffffffff60e0858e61ffff95604051996324058ad3851b8b5260048b01526001600160781b0360a084840101351660248b015260448a015201013516606486015216608484015260008360a481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561025f578a93612786575b505b610100828401013567ffffffffffffffff81166126cc575b50610120828401013567ffffffffffffffff8116612612575b5060606001600160781b03610100830151169101906001600160781b036121686103e892838361215762ffffff938489511690613782565b160494511660a08688010135613782565b16049060009480600052601a602052604060002060405190612189826133e2565b6001600160a01b03815416825260036001820154918260208501526002810154604085015201546060830152806001600160781b03851611600014612609576121db906001600160781b0385166139e8565b905b81806123f4575b50505060016101408588970101351461236b575b6040516001600160a01b036020868f612210856133e2565b0101351681526001600160781b03831660208201526001600160781b0384166040820152600360608201878152838952601a6020526040808a20936001600160a01b038151166001600160a01b03198654161785556020810151600186015501516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561236757926001600160781b0360019381610140948f6020866001600160a01b039260049c9b6040519d8e634fb9b99360e01b815201520101351660248a01521660448801521660648601528b01013514608483015260a4820152818160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561235c57612345575b505061145f565b61234f82916133b1565b612359578061233e565b80fd5b6040513d84823e3d90fd5b8580fd5b93506001600160781b038216806f01fffffffffffffffffffffffffffffe8460011b1604600214901517156123e0576123b86f01fffffffffffffffffffffffffffffe8360011b16613edf565b936123c285613f72565b8460ff1c86036123d960179187810118825461361c565b90556121f8565b634e487b7160e01b85526011600452602485fd5b909196506040820151809111612601575b50858060011b046002148615171561072a5760606124258760011b613edf565b9101518082116125f9575b61243d60179182546139e8565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f576000926125bd575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57612584575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af194851561025f578c95612570575b80806121e4565b61257b9196506133b1565b6000948d612569565b6020813d6020116125b5575b8161259d602093836133fe565b8101031261018e576125ae906135c2565b508f6124f5565b3d9150612590565b9091506020813d6020116125f1575b816125d9602093836133fe565b8101031261018e576125ea90613629565b908f61248e565b3d91506125cc565b905080612430565b95508e612405565b506000906121dd565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e57604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025f578a931561211f576126c6906133b1565b8b61211f565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025f578a931561210657612780906133b1565b8b612106565b61278f906133b1565b8b6120ec565b6020813d6020116127c6575b816127ae602093836133fe565b8101031261018e576127bf906135c2565b508b612017565b3d91506127a1565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018e57604051926353e562b960e11b845260048401526001600160781b0360a0838c0101351660248401526000604484015267ffffffffffffffff60e0838c010135166064840152600083608481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561025f578a93612897575b506120ee565b6128a0906133b1565b8b612891565b60405162e45f0360e21b8152600490fd5b50608080820151151590838c01013515151415611f70565b6128e59250803d106115895761157a81836133fe565b8b80611f47565b61012c91506115ac565b60068203612a67578601602081013590606081013590604001356001600160a01b03808416903082146129e057604051606086901b6bffffffffffffffffffffffff19166020820190815263ffffffff948516603483018190529161295e816054810161161a565b5190209283600052601b60205284604060002054169485600052601c6020526040600020604080519161299083613395565b54958616928383528660a01c169586602084015260c01c91015214918215926129d5575b50506129c357611cbe936137a0565b60405163c4d1e76d60e01b8152600490fd5b141590508c806129b4565b9050611cbe935063ffffffff90818316600052601c60205260406000209161161a612a5c60405194612a1186613395565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209151166137a0565b60078203612add576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af1801561025f57611cc3575061145f565b60088203612aeb575061145f565b600c8203611cbc5786016040810135906020810135906060013567ffffffffffffffff8116612bb7575b5067ffffffffffffffff8216612b2c575b50611cbc565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561018e5760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af1801561025f57612ba8575b80612b26565b612bb1906133b1565b87612ba2565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af1801561025f5715612b1557612c35906133b1565b89612b15565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091612c97575b50156111ec565b90506020813d602011612cc9575b81612cb2602093836133fe565b8101031261018e57612cc3906135c2565b89612c90565b3d9150612ca5565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b3461018e57602036600319011261018e576001600160a01b03612d33613338565b166000526001602052602060ff604060002054166040519015158152f35b3461018e57604036600319011261018e57612d6a613338565b6024359063ffffffff9081831680930361018e5760405160609190911b6bffffffffffffffffffffffff19166020828101918252603483019490945290612db4816054810161161a565b519020600052601b825260406000205416604051908152f35b3461018e57602036600319011261018e576060612de8613325565b600060408051612df781613395565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff60406000209160405192612e2e84613395565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b3461018e57600036600319011261018e576020601854604051908152f35b3461018e57604036600319011261018e57612ea1613325565b60243567ffffffffffffffff8116810361018e57612ebd61356c565b6001600160a01b03918260005416330361026b576106bd9263ffffffff90818316600052601c60205260406000209161161a612a5c60405194612a1186613395565b3461018e57602036600319011261018e576020612f1a613338565b6001600160a01b038060005416911614604051908152f35b3461018e57600036600319011261018e5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461018e57602036600319011261018e576020612f99612f94613338565b614066565b6040519015158152f35b3461018e5760208060031936011261018e5763ffffffff80612fc3613325565b16600052601c825261161a613034604060002060405190612fe382613395565b549060406001600160a01b038316958683528360a01c1692838884015260c01c910152604051928391868301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020600052601d815260ff604060002054166040519015158152f35b3461018e57602036600319011261018e5761306a613338565b6001600160a01b0360005416330361026b5761001b90613a89565b3461018e5760208060031936011261018e5761309f613325565b906130a861356c565b6130b133614066565b1580613253575b61026b576040516315878e0760e01b815230600482015263ffffffff831660248201526001600160a01b03906101a09081816044817f000000000000000000000000000000000000000000000000000000000000000087165afa91821561025f57600092613236575b505060a08101516132245763ffffffff809416600052601c835260406000209361161a61319d6040519661315488613395565b54858116938489528160a01c169081888a015260c01c6040890152604051928391888301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209182600052601d845260ff6040600020541661321257601d946131e66103e86131f4946001600160781b03928162ffffff60608661010081960151169201511690613782565b160416918291511684613b05565b600052526040600020600160ff198254161790556001601555600080f35b60405163361ec56f60e11b8152600490fd5b60405163a29ebd7360e01b8152600490fd5b61324c9250803d106115895761157a81836133fe565b8480613121565b50604051639ac2a01160e01b815233600482015281816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f576000916132ae575b50156130b8565b90508181813d83116132dc575b6132c581836133fe565b8101031261018e576132d6906135c2565b836132a7565b503d6132bb565b3461018e57600036600319011261018e576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359063ffffffff8216820361018e57565b600435906001600160a01b038216820361018e57565b602435906001600160a01b038216820361018e57565b9181601f8401121561018e5782359167ffffffffffffffff831161018e576020808501948460051b01011161018e57565b6060810190811067ffffffffffffffff8211176111bf57604052565b67ffffffffffffffff81116111bf57604052565b6101a0810190811067ffffffffffffffff8211176111bf57604052565b6080810190811067ffffffffffffffff8211176111bf57604052565b90601f8019910116810190811067ffffffffffffffff8211176111bf57604052565b519067ffffffffffffffff8216820361018e57565b8181029291811591840414171561072a57565b8115611492570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f576000916134e6575b50670de0b6b3a7640000916134dd6134e292613909565b613435565b0490565b6080813d8211613564575b816134fe608093836133fe565b810103126135605760405191613513836133e2565b81518060070b810361356057835261352d60208301613420565b60208401526040820151908160030b82036123595750604083015260609081015190820152670de0b6b3a76400006134c6565b5080fd5b3d91506134f1565b60026015541461357d576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190811515820361018e57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161018e5760209260051b809284830137010190565b9190811015612cd15760051b0190565b9190820180921161072a57565b51906001600160a01b038216820361018e57565b519063ffffffff8216820361018e57565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361018e57565b90816101a091031261018e576040519061368c826133c5565b61369581613629565b82526136a36020820161363d565b6020830152604081015161ffff8116810361018e576040830152606081015162ffffff8116810361018e5760608301526136df608082016135c2565b60808301526136f060a082016135c2565b60a083015260c081015160ff8116810361018e5760c083015260e0810151600381101561018e5760e083015261010080820151906001600160781b038216820361018e57830152610120613745818301613420565b90830152610140613757818301613420565b90830152610160613769818301613420565b9083015261377b61018080920161364e565b9082015290565b9190916001600160781b038080941691160291821691820361072a57565b6040516315878e0760e01b815230600482015263ffffffff841660248201529394936101a0936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908583604481855afa92831561025f5760009687946138d6575b5050813b15612367576040516336ce736b60e01b815263ffffffff909116600482015267ffffffffffffffff9097166024880152849087908183816044810103925af19586156138cb57604095966138ac575b509061388c6103e8613897936001600160781b03928162ffffff60608661010081960151169201511690613782565b160416809184613b05565b8152601d60205220805460ff19166001179055565b6103e86138979392956138c161388c936133b1565b959293505061385d565b6040513d86823e3d90fd5b6138ed929450803d106115895761157a81836133fe565b91388061380a565b63ffffffff16604d811161072a57600a0a90565b600080825160070b1280156139d8575b80156139c6575b61235957604082015160030b8103808060030b036139b25760ff169167ffffffffffffffff906006841161398b575116916006039060ff821161397757509061396e60ff61397493166138f5565b90613435565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff82116139775750906139ac60ff61397493166138f5565b90613448565b634e487b7160e01b82526011600452602482fd5b5060fe19604083015160030b12613920565b5080604083015160030b13613919565b9190820391821161072a57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025f57600090613a56575b6139749150601754906139e8565b6020823d8211613a81575b81613a6e602093836133fe565b8101031261235957506139749051613a48565b3d9150613a61565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b60031115613aef57565b634e487b7160e01b600052602160045260246000fd5b92600093808552602091601a83528560409485822090865191613b27836133e2565b6001600160a01b039283825416815260018201548089830152606060036002850154948c850195865201549201918252808b11600014613ed857613b6b908b6139e8565b809281613cbd575b5050505082613c65575b600382885192613b8c846133e2565b16968783528a8184018b8152858b808701938a8552601a60608901968b88528d835252209551166001600160a01b0319865416178555516001850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001691823b15613c615760c4928895949286928851998a978896634fb9b99360e01b8852600488015260248701526044860152606485015282608485015260a48401525af1908115613c585750613c47575050565b613c5182916133b1565b6123595750565b513d84823e3d90fd5b8780fd5b91508260011b83810460021484151715613ca957613c8290613edf565b91613c8c83613f72565b613ca18360ff1c8a038481011860175461361c565b601755613b7d565b634e487b7160e01b89526011600452602489fd5b9091929394955051809111613ed0575b508160011b82810460021483151715613ebc57613ce990613edf565b9051808211613eb4575b613cff906017546139e8565b6017558751632cfc019d60e21b81529087826004817f000000000000000000000000000000000000000000000000000000000000000089165afa918215613eaa578b92613e6f575b50885163a9059cbb60e01b81526001600160a01b03831660048201526024810182905288816044818f7f00000000000000000000000000000000000000000000000000000000000000008b165af18015613e6557613e31575b50847f00000000000000000000000000000000000000000000000000000000000000001690813b15613e2d578b928387936064938d519788968795633317f54960e21b8752166004860152602485015260448401525af18015613e2357613e0e575b908180808b9594613b73565b613e1b90989192986133b1565b969038613e02565b87513d8b823e3d90fd5b8b80fd5b8881813d8311613e5e575b613e4681836133fe565b81010312613e2d57613e57906135c2565b5038613da0565b503d613e3c565b8a513d8e823e3d90fd5b9091508781813d8311613ea3575b613e8781836133fe565b81010312613e9f57613e9890613629565b9038613d47565b8a80fd5b503d613e7d565b89513d8d823e3d90fd5b905080613cf3565b634e487b7160e01b8b52601160045260248bfd5b915038613ccd565b5084613b6b565b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561025f57600093613f3b575b50916139749192613448565b6020813d8211613f6a575b81613f53602093836133fe565b81010312613f6657519250613974613f2f565b8380fd5b3d9150613f46565b8060ff1c60000390810118613f856139f5565b8111613f8e5750565b604490613f996139f5565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a76400009081810291818304149015171561072a5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092614033575b50604d821161072a5761397491600a0a90613448565b90916020823d821161405e575b8161404d602093836133fe565b81010312612359575051903861401d565b3d9150614040565b6001600160a01b0380600054169116908114908115614083575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000a63ac5b5b0de2e5200f602b214fc33a4d7355cc8000000000000000000000000bd5662b3385f4951f1ba1c51705c85d4725f1d4a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c