1 tx
65 calls
constructor
constructor(address rs, address ds)
functions
assetStore
viewfunction assetStore() view returns (address)
BPS_DIVIDER
viewfunction BPS_DIVIDER() view returns (uint256)
chainlink
viewfunction chainlink() view returns (address)
CONTRACT
viewfunction CONTRACT() view returns (bytes32)
DS
viewfunction DS() view returns (address)
funding
viewfunction funding() view returns (address)
fundingStore
viewfunction fundingStore() view returns (address)
fundStore
viewfunction fundStore() view returns (address)
getPnL
viewfunction getPnL(address asset, string market, bool isLong, uint256 price, uint256 positionPrice, uint256 size, int256 fundingTracker) view returns (int256 pnl, int256 fundingFee)
gov
viewfunction gov() view returns (address)
marketStore
viewfunction marketStore() view returns (address)
orderStore
viewfunction orderStore() view returns (address)
pool
viewfunction pool() view returns (address)
poolStore
viewfunction poolStore() view returns (address)
positionStore
viewfunction positionStore() view returns (address)
rewards
viewfunction rewards() view returns (address)
riskStore
viewfunction riskStore() view returns (address)
roleStore
viewfunction roleStore() view returns (address)
stakingStore
viewfunction stakingStore() view returns (address)
UNIT
viewfunction UNIT() view returns (uint256)
addMargin
payablefunction addMargin(address asset, string market, uint256 margin) payable
closePositionWithoutProfit
nonpayablefunction closePositionWithoutProfit(address _asset, string _market)
creditFee
nonpayablefunction creditFee(uint256 orderId, address user, address asset, string market, uint256 fee, bool isLiquidation, address keeper)
decreasePosition
nonpayablefunction decreasePosition(uint256 orderId, uint256 price, address keeper)
increasePosition
nonpayablefunction increasePosition(uint256 orderId, uint256 price, address keeper)
link
nonpayablefunction link()
removeMargin
nonpayablefunction removeMargin(address asset, string market, uint256 margin)
setGov
nonpayablefunction setGov(address _gov)
events
FeePaid
event FeePaid(uint256 indexed orderId, address indexed user, address indexed asset, string market, uint256 fee, uint256 poolFee, uint256 stakingFee, uint256 treasuryFee, uint256 keeperFee, bool isLiquidation)
MarginDecreased
event MarginDecreased(address indexed user, address indexed asset, string market, uint256 marginDiff, uint256 positionMargin)
MarginIncreased
event MarginIncreased(address indexed user, address indexed asset, string market, uint256 marginDiff, uint256 positionMargin)
PositionDecreased
event PositionDecreased(uint256 indexed orderId, address indexed user, address indexed asset, string market, bool isLong, uint256 size, uint256 margin, uint256 price, uint256 positionMargin, uint256 positionSize, uint256 positionPrice, int256 fundingTracker, uint256 fee, int256 pnl, int256 pnlUsd, int256 fundingFee)
PositionIncreased
event PositionIncreased(uint256 indexed orderId, address indexed user, address indexed asset, string market, bool isLong, uint256 size, uint256 margin, uint256 price, uint256 positionMargin, uint256 positionSize, uint256 positionPrice, int256 fundingTracker, uint256 fee)
SetGov
event SetGov(address prevGov, address nextGov)
errors
No errors.
creation bytecode
0x608034620000ce57601f620049f138819003918201601f19168301916001600160401b03831184841017620000d3578084926040948552833981010312620000ce5780516001600160a01b03808216929091839003620000ce576020015191818316809303620000ce577f53351836099c03ffc3b1727d8abd4b0222afa87d4ed76ae3102d51369ef7f785604060005460018060a01b0319943386831617600055825191168152336020820152a181600154161760015560025416176002556040516149079081620000ea8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe61014080604052600436101561001457600080fd5b600090813560e01c908163077d17f81461338d5750806312d43a511461336657806316f0115b1461333d5780631c4695f414612c8c5780632ac38dbd14612c635780633157d39d14612c3a5780633f34b2b2146125705780634242bac01461254757806346ffceec1461243a5780634a4a7b0414612411578063597a0e36146123e85780635f7ddaaa146123bf57806360465d11146123965780636c366094146120cc5780637c4283bc146120af578063835f16511461203e578063861b6a90146120155780639c3feeb714611fec5780639d8e217714611fc95780639ec5a89414611fa0578063a9aa28e114610b6e578063b2515698146106e7578063b253e5e6146106be578063b8d2c69314610695578063cb4c86b71461066c578063cfad57a2146105f6578063f36fdc03146101815763fc833ac61461015657600080fd5b3461017e578060031936011261017e5760206040516000805160206148b28339815191528152f35b80fd5b503461017e57604036600319011261017e5761019b6133b2565b6024356001600160401b0381116105ce576101ba903690600401613496565b6009546040516306e32f3b60e11b81526001600160a01b03918216949093919290918685806101ef8585883360048601613a25565b0381895afa9485156104eb5787956105d2575b5061021260808601511515613a4e565b8660808601516060870151151597803b156105ce578291829160405180948180946305dfed9960e11b82528c8c169e8f60048401526080602484015261025c608484018d8d613a04565b916044840152606483015203925af180156105ab576105ba575b5084600c5416803b156105b657816040518092635ff2138760e01b82528a6004830152604060248301528183816102b1604482018b8b613a04565b03925af180156105ab57610597575b505083600654169487604051809763349f642f60e11b82526020600483015281806102ef602482018989613a04565b03915afa958615610568578896610573575b50602085604081600f5416980151166024604051809981936341976e0960e01b835260048301525afa95861561056857889661052f575b50610344861515613b83565b876103726060830151151560e08401516080850151908a60c08701519361036c368b8b613441565b8b614595565b50126104fa5784889560095416803b156104f65760405163e512766b60e01b815290879082908183816103ab8b8b8e3360048601613a25565b03925af19081156104eb5787916104d3575b50506004541660a08201948551823b156104cf576103f69288928360405180968195829463078d3b7960e01b84523390600485016139e2565b03925af19081156104c45786916104ac575b50507f5a3ca482b3cc533b228c98d56dbb9e80ed3986e661e13396977a90a594476b8c9360608201511596608083015191519061045b60c060e086015195015195604051976101a0808a52890191613a04565b986020870152826040870152816060870152608086015260a085015260c084015260e0830152610100820152826101208201528261014082015282610160820152826101808201528033940390a480f35b6104b5906133f2565b6104c0578438610408565b8480fd5b6040513d88823e3d90fd5b8780fd5b6104dc906133f2565b6104e75785386103bd565b8580fd5b6040513d89823e3d90fd5b8680fd5b60405162461bcd60e51b815260206004820152600d60248201526c21706e6c2d706f73697469766560981b6044820152606490fd5b9095506020813d602011610560575b8161054b60209383613405565b8101031261055b57519438610338565b600080fd5b3d915061053e565b6040513d8a823e3d90fd5b6105909196503d808a833e6105888183613405565b810190613a86565b9438610301565b6105a0906133f2565b6104f65786386102c0565b6040513d84823e3d90fd5b5080fd5b6105c3906133f2565b6104f6578638610276565b8280fd5b6105ef9195503d8089833e6105e78183613405565b81019061378a565b9338610202565b503461017e57602036600319011261017e577f53351836099c03ffc3b1727d8abd4b0222afa87d4ed76ae3102d51369ef7f78560406106336133b2565b83546001600160a01b038082169261064c33851461350a565b166001600160a01b0319919091168117855582519182526020820152a180f35b503461017e578060031936011261017e57600c546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e57600b546040516001600160a01b039091168152602090f35b503461017e576106f6366134c3565b600754604051637699d2c160e11b815292949290602090829060049082906001600160a01b03165afa80156104c4578690610b33575b610737915015613bb8565b60065460405163349f642f60e11b8152602060048201529290869084906001600160a01b0316818061076d602482018b8b613a04565b03915afa9283156104c4578693610b17575b506009546040516306e32f3b60e11b815293906001600160a01b03168785806107ae8a8a883360048601613a25565b0381845afa948515610568578895610afb575b506107d160808601511515613a4e565b6107e08460a087015111613bee565b6107ee8460a087015161395f565b6080860151670de0b6b3a7640000908082029082820403610a2c5782610813916138a7565b6060850151828102928184041490151715610a2c5711610ac657600f5460409384015193516341976e0960e01b81526001600160a01b0394851660048201528a94909160209183916024918391165afa908115610abb57899188918691610a7d575b5090816108876108b194931515613b83565b606082015115159060e0830151916108ab8d60c06080870151960151963691613441565b8a614595565b508381126109ab575b5060a0860152803b156105b6578160405180926378eaac7d60e01b82528183816108e78b600483016138c7565b03925af180156105ab57610997575b506004546001600160a01b0316803b156105b65781604051809263078d3b7960e01b825281838161092c8a338b600485016139e2565b03925af180156105ab57610983575b505061097d60a07f0f449301999d3383602e2a69160bbb040a065132cd68168def96131d8b9946a394015160405193849360018060a01b031697339785613c24565b0390a380f35b61098c906133f2565b6104e757853861093b565b6109a0906133f2565b6104e75785386108f6565b6109b691935061396c565b604051630d61264760e31b8152602081600481865afa908115610a72578a91610a40575b50612710908103818111610a2c576109f29085613871565b041115610a01578791386108ba565b606460405162461bcd60e51b8152602060048201526004602482015263085d5c1b60e21b6044820152fd5b634e487b7160e01b8b52601160045260248bfd5b90506020813d602011610a6a575b81610a5b60209383613405565b8101031261055b5751386109da565b3d9150610a4e565b6040513d8c823e3d90fd5b95505050506020833d602011610ab3575b81610a9b60209383613405565b8101031261055b576108b188878b9551909192610875565b3d9150610a8e565b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152600d60248201526c216d61782d6c6576657261676560981b6044820152606490fd5b610b109195503d808a833e6105e78183613405565b93386107c1565b610b2c9193503d8088833e6105888183613405565b913861077f565b506020813d602011610b66575b81610b4d60209383613405565b810103126104e757610b6161073791613550565b61072c565b3d9150610b40565b503461017e57610b7d366133c8565b60015460405163ac4ab3fb60e01b81523360048201526000805160206148b2833981519152602482015292939192906001600160a01b0316602082604481845afa9182156104c4578692611f60575b50610bd860249261355d565b600754604051634a83e9cd60e11b81526004810185905292879184919082906001600160a01b03165afa9182156104c4578692611f44575b506009546020830151604080850151606086015191516306e32f3b60e11b8152938a9385936001600160a01b039283169385938493610c5793928216911660048501613848565b03915afa9081156104eb578791611f2a575b5060018060a01b0360208401511687526010602052610ca0602060408920606086015190826040519483868095519384920161359a565b8201908152030190205460025460405162498bff60e81b815260206004820181905260136024830152726d696e506f736974696f6e486f6c6454696d6560681b60448301529091829060649082906001600160a01b03165afa8015611f1f578990611eeb575b610d1191504261395f565b1115611eb557608081015160a08401519081811115611eaf575080945b610d3986809361395f565b9589948a9061014088015115611e7c575b610d66610d5b8460e08b0151613871565b60a08a0151906138a7565b9060448d60018060a01b0360208c015116928b6020606060018060a01b03604084015116920151926040519586809263ac4ab3fb60e01b82523360048301526000805160206148b283398151915260248301525afa948515611e71578f94879496611e24575b50610dd9610ddf9661355d565b89613c48565b600e54602089015160408a01518e926001600160a01b0390811692811691610e09918691166146e5565b823b1561193c57610e339284928360405180968195829463869307df60e01b845260048401613944565b03925af180156105ab57611e10575b505061014088015115611e0857935b8b60018060a01b036009541660018060a01b0360408b01511660608b01519160a08c01519060608b0151151593813b156104e757858094610ea8604051978896879586946305dfed9960e11b865260048601613735565b03925af180156105ab57611df0575b50600c5460408a015160608b01516001600160a01b039283169290911690823b1561193c57610eff92849283604051809681958294635ff2138760e01b845260048401613768565b03925af180156105ab5785898f85948e94611dd3575b5060408401516060948501519483015160e084015160c090940151610f48975095901515916001600160a01b0316614595565b948190610f67610f5c8260a08d0151613871565b60808c0151906138a7565b92610f7560a08c015161396c565b12611d19575050509050610f8c60a087015161396c565b9260a08701516080880151948360808a01525b600a5460408c01516001600160a01b039182169116813b156104e757859160448392604051948593849263e3af01bb60e01b845260048401528760248401525af1908115611af4578591611d05575b50811215611c7557610fff8161396c565b600d5460208d015160408e015160608f01516001600160a01b039182169392821692909116803b15611c715784938980946110506040519788968795869463b931db6d60e01b8652600486016139b0565b03925af180156104c4578a918791611c5a575b505061106e9161389a565b828110611c44575b505b6080890151611be15760095460208c015160408d015160608e01516001600160a01b039182169392821692909116803b156104cf576110d1938880946040519687958694859363e512766b60e01b855260048501613848565b03925af1908115611af4578591611bcd575b50505b6007546001600160a01b0316803b156104c057848091602460405180948193634cc8221560e01b83528d60048401525af1908115611af4578591611bb9575b505060045460408c015160208d01516001600160a01b03908116979181169216803b156104f657611170978780946040519a8b958694859363078d3b7960e01b8552600485016139e2565b03925af1938415611bad578e958c95611b8b575b5050600160a01b600190036020850151169781600160a01b600190036040870151169a8b606088015197610100015115159860a08301519060808401519260e08501519460c00151956111d6916146e5565b976040519c8d9c8d9c8d6101a081526101a0016111f291613710565b9c6020015260408d015260608c015260808b015260a08a015260c089015260e0880152610100870152610120860152610140850152610160840152610180830152037f5a3ca482b3cc533b228c98d56dbb9e80ed3986e661e13396977a90a594476b8c91a46101408201511580611b82575b61126c578580f35b60018060a01b036020830151169160608101519160018060a01b03604083015116946112b361010084015115159360a06112aa8460e0840151613871565b910151906138a7565b9160405194856101c08101106001600160401b036101c088011117611b6c578a976020976101c088016040528988528888015260408701526060860152608085015260a08401528460c084015260e083015261010082015282610120820152826101408201524261016082015282610180820152826101a082015260018060a01b036007541660405180948180946367637b9160e01b82528660048301528051602483015260018060a01b038782015116604483015260018060a01b0360408201511660648301526101a061139960608301516101c060848601526101e4850190613710565b91608081015160a485015260a081015160c485015260c081015160e485015260e0810151610104850152610100810151151561012485015260ff6101208201511661014485015261014081015115156101648501526101608101516101848501526101808101516101a485015201516101c483015203925af1908115610abb578491611b3a575b5060015460405163ac4ab3fb60e01b81523360048201526000805160206148b2833981519152602482015290602090829060449082906001600160a01b03165afa8015611af4578590611aff575b611478915061355d565b600754604051634a83e9cd60e11b815260048101839052908590829060249082906001600160a01b03165afa908115611af4578591611ad2575b50600a546040820151606083015160a0840151889390926001600160a01b039081169116803b156104c057849261150d92604051958694859384936362b3866f60e01b85526004850152606060248501526064840190613710565b90604483015203915afa80156105ab57611abe575b506009546040830151606084015160a08501516101008601511515936001600160a01b03938416939192911690813b156104e7578580946115796040519788968795869463428d156160e01b865260048601613735565b03925af180156105ab57611aaa575b50600c54604083015160608401516001600160a01b039283169290911690823b1561193c576115d092849283604051809681958294635ff2138760e01b845260048401613768565b03925af180156105ab57611a96575b50506009546020820151604080840151606085015191516306e32f3b60e11b8152969389936001600160a01b039182169385938a93849361162893928216911660048501613848565b0381845afa9586156105ab578296611a7a575b50611682611669611655608089015160e08a015190613871565b6116638a60a0890151613871565b9061389a565b61167c608089015160a08801519061389a565b906138a7565b6080870151156119b8575b61169f60a0860151608089015161389a565b60808801526116b6608086015160a089015161389a565b60a088015260e0870152803b156105b6578160405180926378eaac7d60e01b82528183816116e78c600483016138c7565b03925af180156105ab576119a4575b506007546001600160a01b0316803b156105b657818091602460405180948193634cc8221560e01b83528a60048401525af180156105ab57611990575b5050602082810151604080850151606086015160e0870151600154935163ac4ab3fb60e01b81523360048201526000805160206148b283398151915260248201529695909491936001600160a01b03938416939283169288916044918391165afa958615611985578b96611940575b506117af6117b59661355d565b87613c48565b600e546020820151604083015160e084015188936001600160a01b03908116938116926117e39291166146e5565b823b1561193c5761180d9284928360405180968195829463869307df60e01b845260048401613944565b03925af180156105ab57611928575b50506118ec7f3a1062142d0d194eaf2928092e53c3f84f5602268f2b82effd44010aff82cb909160018060a01b03602082015116875260106020526040872060608201516020611875604051928381519384920161359a565b81019182526020814293030190205560018060a01b036020820151169460018060a01b036040830151169660608301519261010081015115159260a08201519260808301519060a08301519060808401519260e060c081870151960151960151966040519a8b9a6101408c526101408c0190613710565b9860208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301520390a438808080808580f35b611931906133f2565b6104c057843861181c565b8380fd5b95506020863d60201161197d575b8161195b60209383613405565b81010312611979576117af6119726117b597613550565b96506117a2565b8a80fd5b3d915061194e565b6040513d8d823e3d90fd5b611999906133f2565b6104e7578538611733565b6119ad906133f2565b6104e75785386116f6565b6020858101516001600160a01b0390811689526040808801805183168b8501526060808a018051848e015242610100808f01919091528b01511515918d019190915260055491519051925163183bb37960e01b8152949385939281169284928392611a2892911660048401613768565b03915afa908115610abb578491611a45575b5060c088015261168d565b9350506020833d602011611a72575b81611a6160209383613405565b8101031261055b5788925138611a3a565b3d9150611a54565b611a8f9196503d8084833e6105e78183613405565b943861163b565b611a9f906133f2565b6104c05784386115df565b611ab3906133f2565b6104c0578438611588565b611ac7906133f2565b6104c0578438611522565b611aee91503d8087833e611ae68183613405565b81019061360d565b386114b2565b6040513d87823e3d90fd5b506020813d602011611b32575b81611b1960209383613405565b810103126104c057611b2d61147891613550565b61146e565b3d9150611b0c565b90506020813d602011611b64575b81611b5560209383613405565b8101031261055b575138611420565b3d9150611b48565b634e487b7160e01b600052604160045260246000fd5b50821515611264565b90929550611b9a9194506133f2565b611ba9578b9289928e38611184565b8c80fd5b604051903d90823e3d90fd5b611bc2906133f2565b61193c578338611125565b611bd6906133f2565b61193c5783386110e3565b6009546001600160a01b0316803b156104c05784611c1781928c6040519485809481936378eaac7d60e01b8352600483016138c7565b03925af1908115611af4578591611c30575b50506110e6565b611c39906133f2565b61193c578338611c29565b94611663611c5392968461395f565b9338611076565b611c659192506133f2565b6104c057888538611063565b8880fd5b600d5460208c015160408d015160608e01519397936001600160a01b039182169392821692909116803b156104cf578893888094611cc9604051978896879586946309a599fb60e31b8652600486016139b0565b03925af1908115611af4578591611cf1575b5050611ceb90611663898461395f565b93611078565b611cfa906133f2565b61193c578338611cdb565b611d0e906133f2565b61193c578338610fee565b611d3e90611d2f8460a08d9a97989a015161395f565b60a08c015260808b015161395f565b60808a01526005546040808d015160608e0151915163183bb37960e01b81529260209284926001600160a01b039283169284928392611d81921660048401613768565b03915afa908115611af4578591611d9e575b5060c08a0152610f9f565b9450506020843d602011611dcb575b81611dba60209383613405565b8101031261055b578e935138611d93565b3d9150611dad565b92505050611de191506133f2565b61017e57808985898f38610f15565b611df9906133f2565b611e04578b38610eb7565b8b80fd5b508a93610e51565b611e19906133f2565b611e04578b38610e42565b9350935093506020823d602011611e69575b81611e4360209383613405565b81010312611e6557610ddf938e93610dd9611e5e8895613550565b9650610dcc565b8f80fd5b3d9150611e36565b6040513d85823e3d90fd5b955050611e9b611e90826080890151613871565b60a0880151906138a7565b611ea981608089015161395f565b95610d4a565b94610d2e565b60405162461bcd60e51b815260206004820152600e60248201526d216d696e2d686f6c642d74696d6560901b6044820152606490fd5b506020813d602011611f17575b81611f0560209383613405565b8101031261055b57610d119051610d06565b3d9150611ef8565b6040513d8b823e3d90fd5b611f3e91503d8089833e6105e78183613405565b38610c69565b611f599192503d8088833e611ae68183613405565b9038610c10565b91506020823d602011611f98575b81611f7b60209383613405565b810103126104e757610bd8611f91602493613550565b9250610bcc565b3d9150611f6e565b503461017e578060031936011261017e57600e546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576020604051670de0b6b3a76400008152f35b503461017e578060031936011261017e57600f546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e57600a546040516001600160a01b039091168152602090f35b503461017e5760e036600319011261017e576120586133b2565b90602435906001600160401b03821161017e575061207a903690600401613478565b60443591821515830361055b576040926120a39260c4359260a435926084359260643592614595565b82519182526020820152f35b503461017e578060031936011261017e5760206040516127108152f35b506120d6366134c3565b9260018060a01b039160046020846007541660405192838092637699d2c160e11b82525afa80156104eb57879061235c575b612113915015613bb8565b849280600954168760405180926306e32f3b60e11b8252818061213c888c8b3360048601613a25565b03915afa908115610568578891612342575b50608081019461216086511515613a4e565b888386169889156000146122e35750905034948360045416803b156105ce578683916121a5938260405180968195829463e4652f4960e01b84523390600485016139e2565b03925af180156105ab576122cf575b50505b6121c2841515613bee565b60a08101946121d285875161389a565b865251670de0b6b3a76400009080820290828204036122bb5786516121f6916138a7565b1061228657879160095416803b156105ce576040516378eaac7d60e01b8152918391839182908490829061222d90600483016138c7565b03925af180156105ab57612272575b505061097d7f69dea4780434a9e7bcd91f9c264463d2db6f4f8088762fd4b51b944b57908e789351604051938493339785613c24565b61227b906133f2565b6104e757853861223c565b60405162461bcd60e51b815260206004820152600d60248201526c216d696e2d6c6576657261676560981b6044820152606490fd5b634e487b7160e01b8a52601160045260248afd5b6122d8906133f2565b6104cf5787386121b4565b909195846004541691823b1561193c576123189284928360405180968195829463e4652f4960e01b84523390600485016139e2565b03925af180156105ab5761232e575b50506121b7565b612337906133f2565b6104cf578738612327565b61235691503d808a833e6105e78183613405565b3861214e565b506020813d821161238e575b8161237560209383613405565b810103126104f65761238961211391613550565b612108565b3d9150612368565b503461017e578060031936011261017e576008546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576003546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576001546040516001600160a01b039091168152602090f35b503461017e5760e036600319011261017e576001600160a01b03602435818116810361055b5760443590828216820361055b576064356001600160401b0381116104c05761248c903690600401613478565b9060a43591821515830361055b5760c43593858516850361055b576020604496600154166040519788809263ac4ab3fb60e01b82523360048301526000805160206148b283398151915260248301525afa9586156104eb578796612507575b506124f86125049661355d565b608435926004356140aa565b80f35b95506020863d821161253f575b8161252160209383613405565b810103126104f6576124f861253861250497613550565b96506124eb565b3d9150612514565b503461017e578060031936011261017e576002546040516001600160a01b039091168152602090f35b503461017e5761257f366133c8565b60015460405163ac4ab3fb60e01b81523360048201526000805160206148b283398151915260248201529293919290602090829060449082906001600160a01b03165afa8015611af4578590612bff575b6125da915061355d565b600754604051634a83e9cd60e11b815260048101839052908590829060249082906001600160a01b03165afa908115611af4578591612be5575b50600a546040820151606083015160a08401519288926001600160a01b0390811692911690813b1561193c5761266e92604051958694859384936362b3866f60e01b85526004850152606060248501526064840190613710565b90604483015203915afa80156104c457612bd2575b506009546040820151606083015160a08401516101008501518994901515936001600160a01b0390811693911690813b156104e7578580946126db6040519788968795869463428d156160e01b865260048601613735565b03925af180156105ab57612bbe575b50600c54604083015160608401516001600160a01b039283169290911690823b1561193c5761273292849283604051809681958294635ff2138760e01b845260048401613768565b03925af180156105ab57612baa575b50506009546020820151604080840151606085015191516306e32f3b60e11b8152969389936001600160a01b039182169385938a93849361278a93928216911660048501613848565b0381845afa9586156105ab578296612b8e575b506127b7611669611655608089015160e08a015190613871565b608087015115612acc575b6127d460a0860151608089015161389a565b60808801526127eb608086015160a089015161389a565b60a088015260e0870152803b156105b6578160405180926378eaac7d60e01b825281838161281c8c600483016138c7565b03925af180156105ab57612ab8575b506007546001600160a01b0316803b156105b657818091602460405180948193634cc8221560e01b83528a60048401525af180156105ab57612aa4575b5050602082810151604080850151606086015160e0870151600154935163ac4ab3fb60e01b81523360048201526000805160206148b283398151915260248201529695909491936001600160a01b03938416939283169288916044918391165afa958615611985578b96612a63575b506117af6128e49661355d565b600e546020820151604083015160e084015188936001600160a01b03908116938116926129129291166146e5565b823b1561193c5761293c9284928360405180968195829463869307df60e01b845260048401613944565b03925af180156105ab57612a4f575b5050612a197f3a1062142d0d194eaf2928092e53c3f84f5602268f2b82effd44010aff82cb909160018060a01b036020820151168752601060205260408720606082015160206129a4604051928381519384920161359a565b81019182526020814293030190205560018060a01b036020820151169460018060a01b036040830151169660608301519261010081015115159260a08201519260808301519060a08301519060808401519260e060c081870151960151960151966040519a8b9a610140808d528c0190613710565b9860208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301520390a480f35b612a58906133f2565b6104c057843861294b565b95506020863d602011612a9c575b81612a7e60209383613405565b81010312611979576117af612a956128e497613550565b96506128d7565b3d9150612a71565b612aad906133f2565b6104e7578538612868565b612ac1906133f2565b6104e757853861282b565b6020858101516001600160a01b0390811689526040808801805183168b8501526060808a018051848e015242610100808f01919091528b01511515918d019190915260055491519051925163183bb37960e01b8152949385939281169284928392612b3c92911660048401613768565b03915afa908115610abb578491612b59575b5060c08801526127c2565b9350506020833d602011612b86575b81612b7560209383613405565b8101031261055b5788925138612b4e565b3d9150612b68565b612ba39196503d8084833e6105e78183613405565b943861279d565b612bb3906133f2565b6104c0578438612741565b612bc7906133f2565b6104c05784386126ea565b612bde909591956133f2565b9338612683565b612bf991503d8087833e611ae68183613405565b38612614565b506020813d602011612c32575b81612c1960209383613405565b810103126104c057612c2d6125da91613550565b6125d0565b3d9150612c0c565b503461017e578060031936011261017e576009546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e5780546001600160a01b0390612cb5908216331461350a565b8060025416906040519163bf40fac160e01b908184526020918260048601526024600a8187015260449169417373657453746f726560b01b8388015260649085888381885afa978815611f1f578998613306575b508660018060a01b031998168860035416176003556040519481865286600487015260099586858201526846756e6453746f726560b81b8682015287818581855afa80156119855789918c916132ce575b5016896004541617600455604051828152876004820152600c858201526b46756e64696e6753746f726560a01b8682015287818581855afa80156119855789918c91613296575b5016896005541617600555604051828152876004820152600b858201526a4d61726b657453746f726560a81b8682015287818581855afa80156119855789918c9161325e575b5016896006541617600655604051828152876004820152600a85820152694f7264657253746f726560b01b8682015287818581855afa80156119855789918c91613226575b5016896007541617600755604051828152876004820152868582015268506f6f6c53746f726560b81b8682015287818581855afa80156119855789918c916131ee575b5016896008541617600855604051828152876004820152600d858201526c506f736974696f6e53746f726560981b8682015287818581855afa80156119855789918c916131b6575b5016898754161786556040518281528760048201528685820152685269736b53746f726560b81b8682015287818581855afa80156119855789918c9161317e575b501689600a541617600a55604051828152876004820152600c858201526b5374616b696e6753746f726560a01b8682015287818581855afa80156119855789918c91613146575b501689600b541617600b556040518281528760048201526007858201526646756e64696e6760c81b8682015287818581855afa80156119855789918c9161310e575b501689600c541617600c5560405182815287600482015260048582015263141bdbdb60e21b8682015287818581855afa80156119855789918c916130d6575b501689600d541617600d5560405194828652876004870152600785870152665265776172647360c81b8187015287868581855afa9586156119855788968a918d9161308c575b509068436861696e6c696e6b60b81b9291168b600e541617600e55604051978896879586528860048701528501528301525afa918215611af4578592613056575b50501690600f541617600f5580f35b90809250813d8311613085575b61306d8183613405565b8101031261193c5761307e9061353c565b3880613047565b503d613063565b92978092508391503d83116130cf575b6130a68183613405565b81010312611979578795896130c768436861696e6c696e6b60b81b9361353c565b909192613006565b503d61309c565b809250898092503d8311613107575b6130ef8183613405565b8101031261197957613101899161353c565b38612fc0565b503d6130e5565b809250898092503d831161313f575b6131278183613405565b8101031261197957613139899161353c565b38612f81565b503d61311d565b809250898092503d8311613177575b61315f8183613405565b8101031261197957613171899161353c565b38612f3f565b503d613155565b809250898092503d83116131af575b6131978183613405565b81010312611979576131a9899161353c565b38612ef8565b503d61318d565b809250898092503d83116131e7575b6131cf8183613405565b81010312611979576131e1899161353c565b38612eb7565b503d6131c5565b809250898092503d831161321f575b6132078183613405565b8101031261197957613219899161353c565b38612e6f565b503d6131fd565b809250898092503d8311613257575b61323f8183613405565b8101031261197957613251899161353c565b38612e2c565b503d613235565b809250898092503d831161328f575b6132778183613405565b8101031261197957613289899161353c565b38612de7565b503d61326d565b809250898092503d83116132c7575b6132af8183613405565b81010312611979576132c1899161353c565b38612da1565b503d6132a5565b809250898092503d83116132ff575b6132e78183613405565b81010312611979576132f9899161353c565b38612d5a565b503d6132dd565b9097508581813d8311613336575b61331e8183613405565b81010312611c715761332f9061353c565b9638612d09565b503d613314565b503461017e578060031936011261017e57600d546040516001600160a01b039091168152602090f35b503461017e578060031936011261017e57546040516001600160a01b039091168152602090f35b9050346105b657816003193601126105b6576004546001600160a01b03168152602090f35b600435906001600160a01b038216820361055b57565b606090600319011261055b5760043590602435906044356001600160a01b038116810361055b5790565b6001600160401b038111611b6c57604052565b90601f801991011681019081106001600160401b03821117611b6c57604052565b6001600160401b038111611b6c57601f01601f191660200190565b92919261344d82613426565b9161345b6040519384613405565b82948184528183011161055b578281602093846000960137010152565b9080601f8301121561055b5781602061349393359101613441565b90565b9181601f8401121561055b578235916001600160401b03831161055b576020838186019501011161055b57565b90606060031983011261055b576004356001600160a01b038116810361055b5791602435906001600160401b03821161055b5761350291600401613496565b909160443590565b1561351157565b606460405162461bcd60e51b815260206004820152600460248201526310b3b7bb60e11b6044820152fd5b51906001600160a01b038216820361055b57565b5190811515820361055b57565b1561356457565b60405162461bcd60e51b815260206004820152600e60248201526d21636f6e74726163742d726f6c6560901b6044820152606490fd5b60005b8381106135ad5750506000910152565b818101518382015260200161359d565b81601f8201121561055b5780516135d381613426565b926135e16040519485613405565b8184526020828401011161055b57613493916020808501910161359a565b519060ff8216820361055b57565b60208183031261055b5780516001600160401b039182821161055b5701906101c092838382031261055b5760405193840184811083821117611b6c576040528251845261365c6020840161353c565b602085015261366d6040840161353c565b6040850152606083015191821161055b576136899183016135bd565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101006136c4818301613550565b908301526101206136d68183016135ff565b908301526101406136e8818301613550565b90830152610160808201519083015261018080820151908301526101a0809101519082015290565b906020916137298151809281855285808601910161359a565b601f01601f1916010190565b9294939060609261375b9160018060a01b03168552608060208601526080850190613710565b9460408401521515910152565b6001600160a01b03909116815260406020820181905261349392910190613710565b60208183031261055b5780516001600160401b039182821161055b57019061012092838382031261055b5760405193840184811083821117611b6c576040526137d28361353c565b84526137e06020840161353c565b6020850152604083015191821161055b576137fc9183016135bd565b604083015261380d60608201613550565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100809101519082015290565b6001600160a01b0391821681529116602082015260606040820181905261349392910190613710565b8181029291811591840414171561388457565b634e487b7160e01b600052601160045260246000fd5b9190820180921161388457565b81156138b1570490565b634e487b7160e01b600052601260045260246000fd5b6020815260018060a01b038083511660208301526020830151166040820152604082015161390361012091826060850152610140840190613710565b92606081015115156080840152608081015160a084015260a081015160c084015260c081015160e084015260e0810151906101009182850152015191015290565b6001600160a01b039091168152602081019190915260400190565b9190820391821161388457565b60008190039190600160ff1b81146001166138845760001983050361388457565b818102929160008212600160ff1b82141661388457818405149015171561388457565b9493926139dd9160609360018060a01b038092168852166020870152608060408701526080860190613710565b930152565b6001600160a01b03918216815291166020820152604081019190915260600190565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b0391821681529116602082015260606040820181905261349393910191613a04565b15613a5557565b60405162461bcd60e51b815260206004820152600960248201526810b837b9b4ba34b7b760b91b6044820152606490fd5b60208183031261055b5780516001600160401b039182821161055b5701906101a092838382031261055b5760405193840184811083821117611b6c57604052825182811161055b5781613ada9185016135bd565b8452602083015191821161055b57613af39183016135bd565b6020830152613b046040820161353c565b6040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201519083015261012080820151908301526101408082015190830152610160613b6a818301613550565b90830152613b7c610180809201613550565b9082015290565b15613b8a57565b60405162461bcd60e51b815260206004820152600660248201526521707269636560d01b6044820152606490fd5b15613bbf57565b60405162461bcd60e51b8152602060048201526007602482015266085c185d5cd95960ca1b6044820152606490fd5b15613bf557565b60405162461bcd60e51b815260206004820152600760248201526610b6b0b933b4b760c91b6044820152606490fd5b90613c3e9060409396959496606084526060840191613a04565b9460208201520152565b60a0529390600084156140a257670de0b6b3a764000092838602956101009680885204840361408e576001600160a01b03938282861661401b575b613c8e81895161395f565b86600b5416936040928351958693846374d6f48760e11b92838252602096879160049b8c915afa8015614011578a90613fe2575b613cd3915061271091829184613871565b0460c0528b6008541692875190815286818b81875afa908115613fd8578b91613fa9575b5091613d2191613d0f613d1c99989796959483613871565b0497889160c0519061395f565b61395f565b95610120968752813b15613f1f57898987969594938a838f9a95613d5c965196879586948593631c25e23360e11b8552049d8e918401613944565b03925af18015613f3757613f96575b508a600b5416803b15613f1f578989613da0928d838c8a519687958694859363a17dc11560e01b855260c05104918401613944565b03925af18015613f3757908a91613f82575b50508a8854168b6002541690848060648c8951958693849263bf40fac160e01b84528301526008602483015267747265617375727960c01b60448301525afa918215613f78578b92613f41575b50803b15611979578b8b918a838b613e328f8c519889978896879563078d3b7960e01b8060e052875251049285016139e2565b03925af18015613f3757908a91613f23575b5050868b895416910497813b15613f1f579189918b838b95613e7489519788968795869460e051865285016139e2565b03925af18015613f1557908891613f01575b50508482519a60809b808d5260e090528b5160e001613ea491613710565b9b5104908a510152885101528160c0510487516060015251048580510152845160a00152835160c001528160a051935192839216951693037fbb0d4da169ea2d966558d16e35bc499237141e230d0b86ea69ecb65c5b65db2291a4565b613f0a906133f2565b6104f6578638613e86565b83513d8a823e3d90fd5b8980fd5b613f2c906133f2565b611c71578838613e44565b85513d8c823e3d90fd5b9091508481813d8311613f71575b613f598183613405565b8101031261197957613f6a9061353c565b9038613dff565b503d613f4f565b86513d8d823e3d90fd5b613f8b906133f2565b611c71578838613db2565b613fa2909991996133f2565b9738613d6b565b90508681813d8311613fd1575b613fc08183613405565b810103126119795751613d21613cf7565b503d613fb6565b88513d8d823e3d90fd5b508581813d831161400a575b613ff88183613405565b81010312613f1f57613cd39051613cc2565b503d613fee565b87513d8c823e3d90fd5b5060046020866009541660405192838092632bdc62f560e21b82525afa908115610abb57849161405b575b50614055612710918951613871565b04613c83565b90506020813d8211614086575b8161407560209383613405565b8101031261193c5751614055614046565b3d9150614068565b634e487b7160e01b82526011600452602482fd5b505050505050565b9591939594929461010052608052806101205260009480156140a257670de0b6b3a764000081028060a05204670de0b6b3a76400000361454d5784906001600160a01b03166144cf575b60046141028260a05161395f565b95602060018060a01b03600b5416604051938480926374d6f48760e11b82528460c0525afa80156143de578190614499575b614145925061271092839189613871565b049660018060a01b0360085416926040516374d6f48760e11b815260c05181600481885afa908115610abb5790849392918b959161445c575b508291614191613d1c9261419a95613871565b049a8b9261395f565b92803b156105b65781876141d292670de0b6b3a7640000838d60405196879586948593631c25e23360e11b8552049060048401613944565b03925af180156105ab5761444d575b50600b546001600160a01b0316803b156105b65760405163a17dc11560e01b81529082908290818381614222670de0b6b3a76400008a048e60048401613944565b03925af180156105ab57908291614439575b505060018060a01b036004541660018060a01b03600254166040519063bf40fac160e01b825260c05160048301526008602483015267747265617375727960c01b60448301528160648160c051935afa908115611e715783916143ff575b50813b156105ce57876142ca9284928360405180968195829463078d3b7960e01b8452670de0b6b3a76400008d0491600485016139e2565b03925af180156105ab579082916143eb575b50506004546001600160a01b0316803b156105b65781906040518060e05263078d3b7960e01b905260e0519081614325670de0b6b3a76400008904610120518c600485016139e2565b03908360e051915af180156143de576143ca575b50670de0b6b3a764000092918380928161435e6040519a60e08c5260e08c0190613710565b9a8160a0510460c0518c01520460408a01520460608801520460808601520460a0840152151560c083015260018060a01b0316917fbb0d4da169ea2d966558d16e35bc499237141e230d0b86ea69ecb65c5b65db2260018060a01b0360805116928061010051930390a4565b806143d660e0516133f2565b156143395780fd5b50604051903d90823e3d90fd5b6143f4906133f2565b61017e5780386142dc565b905060c0513d8111614432575b6144168183613405565b8160c05191810103126105ce5761442c9061353c565b38614292565b503d61440c565b614442906133f2565b61017e578038614234565b614456906133f2565b386141e1565b91929394505060c0513d8111614492575b6144778183613405565b8160c051918101031261193c5751899392919061419a61417e565b503d61446d565b509060c0513d81116144c8575b6144b08183613405565b8160c05191810103126105b657906141459151614134565b503d6144a6565b50600954604051632bdc62f560e21b815290602090829060049082906001600160a01b03165afa908115611af457859161451a575b506145146127109160a051613871565b046140f4565b90506020813d8211614545575b8161453460209383613405565b810103126104c05751614514614504565b3d9150614527565b634e487b7160e01b85526011600452602485fd5b8181039291600013801582851316918412161761388457565b81156138b157600160ff1b8114600019831416613884570590565b9493969592909196811580156146dd575b80156146d5575b6146c5579160209161460b93896000146146af576145d76145d1826145dc94614561565b8861398d565b61457a565b955b60055460405163183bb37960e01b81529485936001600160a01b0390921692849283929160048401613768565b03915afa9081156146a357600091614670575b509161463861463e9269021e19e0c9bab240000094614561565b9061398d565b0580936000146146555761465191614561565b9190565b81019060008483129112908015821691151617613884579190565b906020823d821161469b575b8161468960209383613405565b8101031261017e57505161463861461e565b3d915061467c565b6040513d6000823e3d90fd5b6145d76145d16146bf9383614561565b956145de565b5050505050509050600090600090565b5084156145ad565b5080156145a6565b60018060a01b03808060035416926040809160248251809681936330af0bbf60e21b835216978860048301525afa9283156148345760009361483f575b5081600f54169260209283809201511660248351809681936341976e0960e01b835260048301525afa92831561483457600093614805575b5060129380614786575b505050614771919261398d565b604d82116138845761349391600a0a9061457a565b829450918192600492519283809263313ce56760e01b82525afa9182156147fb57506000916147c0575b5060ff1691506147713880614764565b919282813d83116147f4575b6147d68183613405565b8101031261017e57509060ff6147ee614771936135ff565b906147b0565b503d6147cc565b513d6000823e3d90fd5b90928282813d831161482d575b61481c8183613405565b8101031261017e575051913861475a565b503d614812565b50513d6000823e3d90fd5b81818195933d83116148aa575b6148568183613405565b810103126105b657835191848301908382106001600160401b03831117614896575084528051825261488a9060200161353c565b60208201529138614722565b634e487b7160e01b81526041600452602490fd5b503d61484c56fea66b7a3e6b19d24ccb6f717fc232a1bb0278a7f83f8e2211835fc4ed0fe69f19a26469706673582212207f15f29278181f5ff0c66811f6093c72aed0094b2f62f1cc593722a9fc80b91664736f6c63430008110033000000000000000000000000e5da4704a582fe799dcd1dff31dc2ed2e0bdc961000000000000000000000000a64694e51b22a081ea1e4051ef4ea1b715b47026