0 txs
1.6k 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)
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
0x6101c0604081815234620006295781906200467580380380916200002482866200062e565b843961010093849181010312620006295780516001600160401b039284820184811183821017620006135783526200005c8162000652565b9384835260206200006f81840162000652565b80828601526200008186850162000652565b908187870152620000956060860162000652565b97886060880152620000aa6080870162000652565b93846080890152620000bf60a0880162000652565b8060a08a015260e0620000e981620000da60c08c0162000652565b9a60c08d019b8c520162000652565b990198895260018060a01b03808097169116968a519360c085019185831090831117620006135787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa908115620005c55789918e87928792620005cf575b50516331056e5760e21b81529283916004918391165afa908115620005c55790859185916200057f575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa9081156200052f578892918d8692869262000539575b5051632e8743fd60e21b81529384916004918391165afa9182156200052f57918c9184938a9592620004e3575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004d7579087959493929181936200047a575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a0908152935161400d9690959087620006688839608051878181610a5f0152613279015260a05187612eca015260c05187505060e05187818161020301526102a8015251868181610b3501528181610ecf015281816110110152818161113301528181611bf901528181611c790152818161225c015281816122e9015281816124d801528181613b3b0152613d0b0152518581816107d4015281816109a601528181610d5b015281816118d90152818161242d01528181612b8d015281816131e601528181613c7d0152613e5d015251848181610b0101528181610c2301528181610e9701528181610fd9015281816113580152818161189601528181611fc2015281816124a00152818161397701528181613cd90152613f4b01525183610a2301525182818161125b015281816112ff015281816113d50152818161142801528181611655015281816118400152818161191d01528181611a6501528181611ddb01528181611ee601528181611f6a0152818161201101528181612094015281816126010152818161265d015281816126bb01528181612717015281816127b501528181612823015281816129af01528181612a6c01528181612af7015281816130670152613741015251816134050152f35b9180949596508c809294503d8311620004cf575b6200049a81836200062e565b81010312620004cb57620004ae8362000652565b92015180151503620004c857508492919083838162000264565b80fd5b5080fd5b503d6200048e565b508a51903d90823e3d90fd5b9250929350508381813d831162000527575b6200050181836200062e565b81010312620005235787929160246200051b8e9362000652565b919062000230565b8280fd5b503d620004f5565b8c513d85823e3d90fd5b939450505081813d831162000577575b6200055581836200062e565b81010312620005235790838c60046200056f8b9562000652565b919062000203565b503d62000549565b82819392503d8311620005bd575b6200059981836200062e565b81010312620005b957602491620005b1869262000652565b9092620001cc565b8380fd5b503d6200058d565b8d513d86823e3d90fd5b9350505081813d83116200060b575b620005ea81836200062e565b81010312620005b957518881168103620005b957889085908e6004620001a2565b503d620005de565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200061357604052565b51906001600160a01b0382168203620006295756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe1461325b575080630b638e5414612ffd5780631c3c0ea814612fc957806322bfbf9d14612f1b5780632520e7ff14612eee57806328f150eb14612eaa5780632f54bf6e14612e775780633322b23d14612e595780633732572514612dbc57806351f954bf14612d035780635595de8214612c87578063587cde1e14612c48578063608d60eb1461091657806367e7646f146108845780638da5cb5b1461085d5780638f6e6aa814610520578063946d14801461050257806399fbab8814610465578063c34c08e51461043e578063cea1fa0414610420578063d0cb3cd114610405578063d270444f146103e2578063e71bdf4114610336578063f05ed16a14610310578063f09a40161461027c578063f2fde38b146101935763ffa1ad7414610153573861000f565b3461018e57600036600319011261018e5760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b3461018e57602036600319011261018e576101ac6132b0565b600054906001600160a01b0391828116330361026b57826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604483600081938195637eecd31b60e11b845260048401523360248401525af1801561025f5761025657005b61001b90613329565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b3461018e57604036600319011261018e576102956132b0565b61029d6132c6565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016330361026b5761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36139f0565b3461018e57600036600319011261018e57602061032e601754613f1b565b604051908152f35b3461018e57602036600319011261018e5761034f6132b0565b6001600160a01b03908160005416330361026b5716801580156103ca575b6103b2578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff6040600020541661036d565b3461018e57600036600319011261018e57602061032e61040061395c565b613f1b565b3461018e57600036600319011261018e57602061032e61395c565b3461018e57600036600319011261018e576020601754604051908152f35b3461018e57600036600319011261018e5760206001600160a01b0360165416604051908152f35b3461018e57602036600319011261018e57600060606040516104868161335a565b8281528260208201528260408201520152600435600052601a602052608060406000206040516104b58161335a565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b3461018e57602036600319011261018e57602061032e6004356133ca565b3461018e5760031960a03682011261018e5761053a6132b0565b906105436132c6565b9060443567ffffffffffffffff811161018e576105649036906004016132dc565b909360643567ffffffffffffffff811161018e576105869036906004016132dc565b95909360843567ffffffffffffffff811161018e576105a99036906004016132dc565b90926105b36134e4565b6001600160a01b03600054163314158061084d575b806107b8575b61026b576001600160a01b0385163b1561018e5794929061061d61060c604051978896633fe46ecd60e21b8852606060048901526064880191613547565b848682030160248701528a89613547565b92848403016044850152808352602083019060208160051b85010193836000915b83831061074f57505050505050918160006001600160a01b038282960393165af1801561025f57610740575b50916000926000915b8083106106fd576000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018890529160209183916044918391908a165af1801561025f576106c4575b6001601555005b6020813d6020116106f5575b816106dd60209383613376565b8101031261018e576106ee9061353a565b50806106bd565b3d91506106d0565b9091936107169061070f868486613584565b3590613594565b93600019811461072a576001019190610673565b634e487b7160e01b600052601160045260246000fd5b61074990613329565b8361066a565b9193959092949650601f198282030186528635601e198436030181121561018e5783019067ffffffffffffffff82351161018e5760208201823560051b3603811361018e576107a660209283926001953590613547565b9801960193019091889695949261063e565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091610814575b50156105ce565b90506020813d8211610845575b8161082e60209383613376565b8101031261018e5761083f9061353a565b8a61080d565b3d9150610821565b5061085733613fcd565b156105c8565b3461018e57600036600319011261018e5760206001600160a01b0360005416604051908152f35b3461018e57602036600319011261018e5761089d6132b0565b6001600160a01b03908160005416330361026b5716801580156108fd575b6103b257806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff60406000205416156108bb565b604036600319011261018e5760043567ffffffffffffffff811161018e576109429036906004016132dc565b9060243567ffffffffffffffff811161018e576109639036906004016132dc565b61096e9291926134e4565b5a93808203612c1d5760005b818110610dcc57856001600160a01b03806016541633148015610d3f575b6109a3576001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa91821561025f57600092610d0e575b506109ff610a0691610a0d93613594565b5a9061394f565b3a906133ad565b600c810290808204600c149015171561072a57337f0000000000000000000000000000000000000000000000000000000000000000831603610d02575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561025f57600090610cc2575b60049150935b80610aa0866133ca565b9460405193848092632cfc019d60e21b82525afa91821561025f57600092610c8b575b5083610acd61395c565b8111610be2575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af1801561025f57610bae575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561018e57600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af1801561025f57610b9f575b806106bd565b610ba890613329565b80610b99565b81813d8311610bdb575b610bc28183613376565b8101031261018e57610bd39061353a565b508480610b2f565b503d610bb8565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57610c57575b5050610b32565b81813d8311610c84575b610c6b8183613376565b8101031261018e57610c7c9061353a565b508480610c50565b503d610c61565b9080925081813d8311610cbb575b610ca38183613376565b8101031261018e57610cb4906135a1565b9085610ac3565b503d610c99565b506040813d604011610cfa575b81610cdc60409383613376565b8101031261018e5780610cf4856004935192016135a1565b50610a90565b3d9150610ccf565b600a6004910493610a96565b91508482813d8311610d38575b610d258183613376565b8101031261018e579051906109ff6109ee565b503d610d1b565b50604051639ac2a01160e01b81523360048201526020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561025f57600091610d93575b50610998565b90506020813d8211610dc4575b81610dad60209383613376565b8101031261018e57610dbe9061353a565b83610d8d565b3d9150610da0565b610dd7818386613584565b3590600d82101561018e5783811015612c07578060051b86013591601e198736030183121561018e578287013567ffffffffffffffff811161018e5736036020848901011361018e5760038110156111da576001600160a01b0360005416330361026b57806110bf5750908501602001356000811315610f7e576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57610f45575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e5760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561025f57600192610f36575b505b0161097a565b610f3f90613329565b87610f2e565b6020813d602011610f76575b81610f5e60209383613376565b8101031261018e57610f6f9061353a565b5087610ec4565b3d9150610f51565b60008112610f90575b50600190610f30565b610f9981613ed9565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611086575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e5760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561025f57600192611077575b5090610f87565b61108090613329565b87611070565b6020813d6020116110b7575b8161109f60209383613376565b8101031261018e576110b09061353a565b5087611006565b3d9150611092565b6001146110d0575b60019150610f30565b60208287010135156110c75760008080806020868b010135335af13d156111d5573d67ffffffffffffffff81116111bf5760405190611119601f8201601f191660200183613376565b8152600060203d92013e5b156111ad576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561025f5760019261119e575b506110c7565b6111a790613329565b87611198565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b611124565b90916111e533613fcd565b1580612b71575b61026b5760038203611223575b50600c811161120b5750600190610f30565b60249060405190636bb50f4f60e11b82526004820152fd5b60048203611590576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092611563575b505060a081015115611551576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b03811161072a579089840160600135156114f357606902806001600160781b0381160361072a5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f576114a8575b506001600160781b03806113af6060945b82610100820151169062ffffff968791015116906136fa565b1691169081156114925704166107d081108015611486575b611474576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561025f57611465575b505b876111f9565b61146e90613329565b8761145d565b604051633fe89cb960e11b8152600490fd5b50620249f081116113c7565b634e487b7160e01b600052601260045260246000fd5b6020813d6020116114eb575b816114c160209383613376565b8101031261018e576001600160781b036113af6060946114e1839461353a565b5094505050611385565b3d91506114b4565b90506001600160781b036101008301511681101561153f576001600160781b036101008301511603906001600160781b03821161072a576001600160781b03806113af60609493611396565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6115829250803d10611589575b61157a8183613376565b8101906135eb565b8980611294565b503d611570565b600582036128b85761016081880101359061ffff8216156128ae575b6115bc610140828a010135613a4c565b8781016101400135611e545760408051828a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff16603482015261161281605481015b03601f198101835282613376565b5190209182600052601b60205263ffffffff6040600020541680611daf575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025f578a92600091611d3e575b5063ffffffff9067ffffffffffffffff61012086604051966116b08861333d565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e0838301013516838901528361010083830101351661014089015201013516610160850152511660208301526040516117568161330d565b6001600160a01b036020858d0101351681528a63ffffffff6040866020850193010135168152604082016000815263ffffffff60208601511687600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020848c611888604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611d05575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091611ccb575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e08101516119e081613a4c565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611cbc575b506103e86001600160781b03611ab88a840160c081013562ffffff169060a001356136fa565b16049082600052601a60205260406000206060600360405192611ada8461335a565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166f01fffffffffffffffffffffffffffffe8360011b16046002146001600160781b03831615171561072a57611b536f01fffffffffffffffffffffffffffffe8360011b16613e46565b91611b5d83613ed9565b8260ff1c600003611b75601791858101188254613594565b9055604051611b838161335a565b6001600160a01b036020848d01013516815260036020820160008152604083016001600160781b0385168152606084019187835288600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e576001600160a01b0360206001600160781b039360405196634fb9b99360e01b885260048801528c010135166024850152600060448501521660648301526001608483015260a482015260008160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f57611cad575b505b61145f565b611cb690613329565b87611ca6565b611cc590613329565b89611a92565b90506020813d602011611cfd575b81611ce660209383613376565b8101031261018e57611cf7906135a1565b8c611912565b3d9150611cd9565b6020813d602011611d36575b81611d1e60209383613376565b8101031261018e57611d2f9061353a565b508b6118c3565b3d9150611d11565b9250506060823d606011611da7575b81611d5a60609383613376565b8101031261018e5763ffffffff8a92611d9c6040805192611d7a8461330d565b611d83816135b5565b8452611d91602082016135b5565b6020850152016135c6565b60408201529061168f565b3d9150611d4d565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f5760a092600092611e37575b50500151611e25578a611631565b604051632d852ff160e21b8152600490fd5b611e4d9250803d106115895761157a8183613376565b8c80611e17565b90611e65610140838a010135613a4c565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611ea58160548101611604565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201529092906101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092612891575b505060a0810151156115515761ffff60408201511661ffff6060848d0101351614801590612879575b6128685789820161014001356001036127a65760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b840160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f5761276d575b5063ffffffff6020820151169262ffffff606083015116906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5767ffffffffffffffff60e0858e61ffff95604051996324058ad3851b8b5260048b01526001600160781b0360a084840101351660248b015260448a015201013516606486015216608484015260008360a481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561025f578a9361275e575b505b610100828401013567ffffffffffffffff81166126a4575b50610120828401013567ffffffffffffffff81166125ea575b5060606001600160781b03610100830151169101906001600160781b036121406103e892838361212f62ffffff9384895116906136fa565b160494511660a086880101356136fa565b16049060009480600052601a6020526040600020604051906121618261335a565b6001600160a01b03815416825260036001820154918260208501526002810154604085015201546060830152806001600160781b038516116000146125e1576121b3906001600160781b03851661394f565b905b81806123cc575b505050600161014085889701013514612343575b6040516001600160a01b036020868f6121e88561335a565b0101351681526001600160781b03831660208201526001600160781b0384166040820152600360608201878152838952601a6020526040808a20936001600160a01b038151166001600160a01b03198654161785556020810151600186015501516002840155519101556001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561233f57926001600160781b0360019381610140948f6020866001600160a01b039260049c9b6040519d8e634fb9b99360e01b815201520101351660248a01521660448801521660648601528b01013514608483015260a4820152818160c481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156123345761231d575b505061145f565b6123278291613329565b6123315780612316565b80fd5b6040513d84823e3d90fd5b8580fd5b93506001600160781b038216806f01fffffffffffffffffffffffffffffe8460011b1604600214901517156123b8576123906f01fffffffffffffffffffffffffffffe8360011b16613e46565b9361239a85613ed9565b8460ff1c86036123b1601791878101188254613594565b90556121d0565b634e487b7160e01b85526011600452602485fd5b9091965060408201518091116125d9575b50858060011b046002148615171561072a5760606123fd8760011b613e46565b9101518082116125d1575b612415601791825461394f565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092612595575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025f5761255c575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af194851561025f578c95612548575b80806121bc565b612553919650613329565b6000948d612541565b6020813d60201161258d575b8161257560209383613376565b8101031261018e576125869061353a565b508f6124cd565b3d9150612568565b9091506020813d6020116125c9575b816125b160209383613376565b8101031261018e576125c2906135a1565b908f612466565b3d91506125a4565b905080612408565b95508e6123dd565b506000906121b5565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e57604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025f578a93156120f75761269e90613329565b8b6120f7565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025f578a93156120de5761275890613329565b8b6120de565b61276790613329565b8b6120c4565b6020813d60201161279e575b8161278660209383613376565b8101031261018e576127979061353a565b508b611fef565b3d9150612779565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018e57604051926369f6bde160e01b845260048401526001600160781b0360a0838c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561025f578a93612859575b506120c6565b61286290613329565b8b612853565b60405162e45f0360e21b8152600490fd5b50608080820151151590838c01013515151415611f48565b6128a79250803d106115895761157a8183613376565b8b80611f1f565b61012c91506115ac565b6006820361299d576040602082890101359163ffffffff9182918a0101351690604051602081019061290d8161160486888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c6020526040600020916040519261293f8461330d565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c91015286161491821592612992575b505061298057611ca892613718565b60405163c4d1e76d60e01b8152600490fd5b141590508b80612971565b60078203612a13576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af1801561025f57611cad575061145f565b60088203612a21575061145f565b600c8203611ca65786016040810135906020810135906060013567ffffffffffffffff8116612aed575b5067ffffffffffffffff8216612a62575b50611ca6565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561018e5760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af1801561025f57612ade575b80612a5c565b612ae790613329565b87612ad8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018e57604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af1801561025f5715612a4b57612b6b90613329565b89612a4b565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091612bcd575b50156111ec565b90506020813d602011612bff575b81612be860209383613376565b8101031261018e57612bf99061353a565b89612bc6565b3d9150612bdb565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b3461018e57602036600319011261018e576001600160a01b03612c696132b0565b166000526001602052602060ff604060002054166040519015158152f35b3461018e57604036600319011261018e57612ca06132b0565b6024359063ffffffff9081831680930361018e5760405160609190911b6bffffffffffffffffffffffff19166020828101918252603483019490945290612cea8160548101611604565b519020600052601b825260406000205416604051908152f35b3461018e57602036600319011261018e57612d1c61329d565b612d246134e4565b6001600160a01b03908160005416330361026b576106bd9163ffffffff90818316600052601c602052604060002091611604612db160405194612d668661330d565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020915116613718565b3461018e57602036600319011261018e576060612dd761329d565b600060408051612de68161330d565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff60406000209160405192612e1d8461330d565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b3461018e57600036600319011261018e576020601854604051908152f35b3461018e57602036600319011261018e576020612e926132b0565b6001600160a01b038060005416911614604051908152f35b3461018e57600036600319011261018e5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461018e57602036600319011261018e576020612f11612f0c6132b0565b613fcd565b6040519015158152f35b3461018e5760208060031936011261018e5763ffffffff80612f3b61329d565b16600052601c8252611604612fac604060002060405190612f5b8261330d565b549060406001600160a01b038316958683528360a01c1692838884015260c01c910152604051928391868301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020600052601d815260ff604060002054166040519015158152f35b3461018e57602036600319011261018e57612fe26132b0565b6001600160a01b0360005416330361026b5761001b906139f0565b3461018e5760208060031936011261018e5761301761329d565b906130206134e4565b61302933613fcd565b15806131cb575b61026b576040516315878e0760e01b815230600482015263ffffffff831660248201526001600160a01b03906101a09081816044817f000000000000000000000000000000000000000000000000000000000000000087165afa91821561025f576000926131ae575b505060a081015161319c5763ffffffff809416600052601c8352604060002093611604613115604051966130cc8861330d565b54858116938489528160a01c169081888a015260c01c6040890152604051928391888301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209182600052601d845260ff6040600020541661318a57601d9461315e6103e861316c946001600160781b03928162ffffff606086610100819601511692015116906136fa565b160416918291511684613a6c565b600052526040600020600160ff198254161790556001601555600080f35b60405163361ec56f60e11b8152600490fd5b60405163a29ebd7360e01b8152600490fd5b6131c49250803d106115895761157a8183613376565b8480613099565b50604051639ac2a01160e01b815233600482015281816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f57600091613226575b5015613030565b90508181813d8311613254575b61323d8183613376565b8101031261018e5761324e9061353a565b8361321f565b503d613233565b3461018e57600036600319011261018e576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359063ffffffff8216820361018e57565b600435906001600160a01b038216820361018e57565b602435906001600160a01b038216820361018e57565b9181601f8401121561018e5782359167ffffffffffffffff831161018e576020808501948460051b01011161018e57565b6060810190811067ffffffffffffffff8211176111bf57604052565b67ffffffffffffffff81116111bf57604052565b6101a0810190811067ffffffffffffffff8211176111bf57604052565b6080810190811067ffffffffffffffff8211176111bf57604052565b90601f8019910116810190811067ffffffffffffffff8211176111bf57604052565b519067ffffffffffffffff8216820361018e57565b8181029291811591840414171561072a57565b8115611492570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025f5760009161345e575b50670de0b6b3a76400009161345561345a92613870565b6133ad565b0490565b6080813d82116134dc575b8161347660809383613376565b810103126134d8576040519161348b8361335a565b81518060070b81036134d85783526134a560208301613398565b60208401526040820151908160030b82036123315750604083015260609081015190820152670de0b6b3a764000061343e565b5080fd5b3d9150613469565b6002601554146134f5576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190811515820361018e57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161018e5760209260051b809284830137010190565b9190811015612c075760051b0190565b9190820180921161072a57565b51906001600160a01b038216820361018e57565b519063ffffffff8216820361018e57565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361018e57565b90816101a091031261018e57604051906136048261333d565b61360d816135a1565b825261361b602082016135b5565b6020830152604081015161ffff8116810361018e576040830152606081015162ffffff8116810361018e5760608301526136576080820161353a565b608083015261366860a0820161353a565b60a083015260c081015160ff8116810361018e5760c083015260e0810151600381101561018e5760e083015261010080820151906001600160781b038216820361018e578301526101206136bd818301613398565b908301526101406136cf818301613398565b908301526101606136e1818301613398565b908301526136f36101808092016135c6565b9082015290565b9190916001600160781b038080941691160291821691820361072a57565b6040516315878e0760e01b815230600482015263ffffffff841660248201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001694936101a09392919084826044818a5afa91821561025f57600095869361383d575b5050863b156138395763ffffffff60248692836040519a8b94859363bdb340cd60e01b85521660048401525af195861561382e576040959661380f575b50906137ef6103e86137fa936001600160781b03928162ffffff606086610100819601511692015116906136fa565b160416809184613a6c565b8152601d60205220805460ff19166001179055565b6103e86137fa9392956138246137ef93613329565b95929350506137c0565b6040513d86823e3d90fd5b8480fd5b613854929350803d106115895761157a8183613376565b903880613783565b63ffffffff16604d811161072a57600a0a90565b600080825160070b12801561393f575b801561392d575b61233157604082015160030b8103808060030b036139195760ff169167ffffffffffffffff90600684116138f2575116916006039060ff82116138de5750906138d560ff6138db931661385c565b906133ad565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff82116138de57509061391360ff6138db931661385c565b906133c0565b634e487b7160e01b82526011600452602482fd5b5060fe19604083015160030b12613887565b5080604083015160030b13613880565b9190820391821161072a57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025f576000906139bd575b6138db91506017549061394f565b6020823d82116139e8575b816139d560209383613376565b8101031261233157506138db90516139af565b3d91506139c8565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b60031115613a5657565b634e487b7160e01b600052602160045260246000fd5b92600093808552602091601a83528560409485822090865191613a8e8361335a565b6001600160a01b039283825416815260018201548089830152606060036002850154948c850195865201549201918252808b11600014613e3f57613ad2908b61394f565b809281613c24575b5050505082613bcc575b600382885192613af38461335a565b16968783528a8184018b8152858b808701938a8552601a60608901968b88528d835252209551166001600160a01b0319865416178555516001850155516002840155519101557f00000000000000000000000000000000000000000000000000000000000000001691823b15613bc85760c4928895949286928851998a978896634fb9b99360e01b8852600488015260248701526044860152606485015282608485015260a48401525af1908115613bbf5750613bae575050565b613bb88291613329565b6123315750565b513d84823e3d90fd5b8780fd5b91508260011b83810460021484151715613c1057613be990613e46565b91613bf383613ed9565b613c088360ff1c8a0384810118601754613594565b601755613ae4565b634e487b7160e01b89526011600452602489fd5b9091929394955051809111613e37575b508160011b82810460021483151715613e2357613c5090613e46565b9051808211613e1b575b613c669060175461394f565b6017558751632cfc019d60e21b81529087826004817f000000000000000000000000000000000000000000000000000000000000000089165afa918215613e11578b92613dd6575b50885163a9059cbb60e01b81526001600160a01b03831660048201526024810182905288816044818f7f00000000000000000000000000000000000000000000000000000000000000008b165af18015613dcc57613d98575b50847f00000000000000000000000000000000000000000000000000000000000000001690813b15613d94578b928387936064938d519788968795633317f54960e21b8752166004860152602485015260448401525af18015613d8a57613d75575b908180808b9594613ada565b613d829098919298613329565b969038613d69565b87513d8b823e3d90fd5b8b80fd5b8881813d8311613dc5575b613dad8183613376565b81010312613d9457613dbe9061353a565b5038613d07565b503d613da3565b8a513d8e823e3d90fd5b9091508781813d8311613e0a575b613dee8183613376565b81010312613e0657613dff906135a1565b9038613cae565b8a80fd5b503d613de4565b89513d8d823e3d90fd5b905080613c5a565b634e487b7160e01b8b52601160045260248bfd5b915038613c34565b5084613ad2565b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561025f57600093613ea2575b50916138db91926133c0565b6020813d8211613ed1575b81613eba60209383613376565b81010312613ecd575192506138db613e96565b8380fd5b3d9150613ead565b8060ff1c60000390810118613eec61395c565b8111613ef55750565b604490613f0061395c565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a76400009081810291818304149015171561072a5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025f57600092613f9a575b50604d821161072a576138db91600a0a906133c0565b90916020823d8211613fc5575b81613fb460209383613376565b810103126123315750519038613f84565b3d9150613fa7565b6001600160a01b0380600054169116908114908115613fea575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc63000000000000000000000000a63ac5b5b0de2e5200f602b214fc33a4d7355cc8000000000000000000000000bd5662b3385f4951f1ba1c51705c85d4725f1d4a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c