0 txs
0 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)
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
0x608034620000ce57601f620048a238819003918201601f19168301916001600160401b03831184841017620000d3578084926040948552833981010312620000ce5780516001600160a01b03808216929091839003620000ce576020015191818316809303620000ce577f53351836099c03ffc3b1727d8abd4b0222afa87d4ed76ae3102d51369ef7f785604060005460018060a01b0319943386831617600055825191168152336020820152a181600154161760015560025416176002556040516147b89081620000ea8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe61022080604052600436101561001457600080fd5b60006101005260003560e01c908163077d17f81461334f5750806312d43a511461332557806316f0115b146132f95780631c4695f414612c985780632ac38dbd14612c6c5780633157d39d14612c405780633f34b2b2146125be5780634242bac01461259257806346ffceec146124865780634a4a7b041461245a578063597a0e361461242e5780635f7ddaaa1461240257806360465d11146123d65780636c366094146121095780637c4283bc146120e9578063835f16511461207c578063861b6a90146120505780639c3feeb7146120245780639d8e217714611ffe578063a9aa28e114610bd9578063b251569814610746578063b253e5e61461071a578063b8d2c693146106ee578063cb4c86b7146106c2578063cfad57a214610646578063f36fdc03146101855763fc833ac61461014f57600080fd5b3461017e57610100518060031936011261017b5760206040516000805160206147638339815191528152f35b80fd5b6101005180fd5b3461017e57604036600319011261017e5761019e613373565b6024356001600160401b03811161017e576101bd903690600401613457565b6009546040516306e32f3b60e11b8152610100519094929392916001600160a01b03169085806101f387878733600486016139cb565b0381845afa948515610542576101005195610623575b50610219608086015115156139f4565b608085015160608601511515823b1561017e576040516305dfed9960e11b81526001600160a01b0385166004820152608060248201529283928392839190610265608484018b8b6139aa565b91604484015260648301526101005194859103925af180156105425761060d575b50600c546001600160a01b0316803b1561017e5760408051635ff2138760e01b81526001600160a01b03841660048201526024810191909152610100519091829081806102d7604482018a8a6139aa565b039161010051905af18015610542576105f7575b5060065460405163349f642f60e11b8152602060048201526101005190939184906001600160a01b03168180610325602482018a886139aa565b03915afa9283156105425761010051936105d4575b50600e5460409384015193516341976e0960e01b81526001600160a01b0394851660048201529360209185916024918391165afa92831561054257610100519361059b575b5061038b831515613b29565b6103b86060860151151560e08701516080880151908660c08a0151936103b2368b89613402565b886145f2565b506101005113610566576009546001600160a01b0316803b1561017e5760405163e512766b60e01b8152610100519091829081806103fc8a888a33600486016139cb565b039161010051905af1801561054257610550575b5060045460a0860180519096916001600160a01b031690813b1561017e57604051809263078d3b7960e01b825281806104526101005195338b60048501613988565b039161010051905af1801561054257610525575b507f5a3ca482b3cc533b228c98d56dbb9e80ed3986e661e13396977a90a594476b8c956060820151159460808301519151906104b860c060e086015195015195604051996101a0808c528b01916139aa565b966020890152826040890152816060890152608088015260a087015260c086015260e0850152610100840152610100516101208401526101005161014084015261010051610160840152610100516101808401526101005193849160018060a01b0316938033940390a480f35b61052e906133b3565b61010051958661053e5795610466565b8680fd5b6040513d61010051823e3d90fd5b610559906133b3565b6101005180156104105780fd5b60405162461bcd60e51b815260206004820152600d60248201526c21706e6c2d706f73697469766560981b6044820152606490fd5b9092506020813d6020116105cc575b816105b7602093836133c6565b810103126105c75751918561037f565b600080fd5b3d91506105aa565b6105f091933d8091833e6105e881836133c6565b810190613a2c565b918561033a565b610600906133b3565b6101005180156102eb5780fd5b610616906133b3565b6101005180156102865780fd5b61063f91953d8091833e61063781836133c6565b81019061374b565b9385610209565b3461017e57602036600319011261017e577f53351836099c03ffc3b1727d8abd4b0222afa87d4ed76ae3102d51369ef7f7856040610682613373565b61010051546001600160a01b038082169261069e3385146134cb565b16809160018060a01b03191617610100515582519182526020820152a16101005180f35b3461017e57610100518060031936011261017b57600c546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b576006546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b57600b546040516001600160a01b039091168152602090f35b3461017e5761075436613484565b600754604051637699d2c160e11b81529294919290602090829060049082906001600160a01b03165afa8015610542576101005190610b9e575b610799915015613b5e565b60065460405163349f642f60e11b81526020600482015261010051909182906001600160a01b031681806107d1602482018b8b6139aa565b03915afa908115610542576101005191610b85575b5060018060a01b0360095416604051916306e32f3b60e11b83526101005183806108168a8a8933600486016139cb565b0381855afa928315610542576101005193610b6a575b5061083c608084015115156139f4565b61084b8560a085015111613b94565b6108598560a0850151613905565b906080840151670de0b6b3a7640000908082029082820403610ab3578361087f91613868565b6060830151828102928184041490151715610ab35711610b3557600e5460409182015191516341976e0960e01b81526001600160a01b0392831660048201529160209183916024918391165afa801561054257610100518991610aff575b61091892506108ed811515613b29565b606086015115159060e0870151906080880151926109128c60c08b0151963691613402565b8a6145f2565b50610100518112610a33575b5060a0830152803b1561017e576040516378eaac7d60e01b8152610100519091829081806109558760048301613888565b039161010051905af1801561054257610a1d575b506004546001600160a01b0316803b1561017e5760405163078d3b7960e01b8152610100519091829081806109a389338a60048501613988565b039161010051905af1801561054257610a07575b5060a001516040516001600160a01b039092169433947f0f449301999d3383602e2a69160bbb040a065132cd68168def96131d8b9946a39484936109fd93909285613bca565b0390a36101005180f35b610a10906133b3565b6101005180156109b75780fd5b610a26906133b3565b6101005180156109695780fd5b610a3c90613912565b604051630d61264760e31b8152602081600481875afa908115610542576101005191610acd575b50612710908103818111610ab357610a7b9084613832565b041115610a885787610924565b606460405162461bcd60e51b8152602060048201526004602482015263085d5c1b60e21b6044820152fd5b634e487b7160e01b61010051526011600452602461010051fd5b90506020813d602011610af7575b81610ae8602093836133c6565b810103126105c7575189610a63565b3d9150610adb565b50506020813d602011610b2d575b81610b1a602093836133c6565b810103126105c7578761091891516108dd565b3d9150610b0d565b60405162461bcd60e51b815260206004820152600d60248201526c216d61782d6c6576657261676560981b6044820152606490fd5b610b7e91933d8091833e61063781836133c6565b918761082c565b610b98913d8091833e6105e881836133c6565b856107e6565b506020813d602011610bd1575b81610bb8602093836133c6565b8101031261017e57610bcc61079991613511565b61078e565b3d9150610bab565b3461017e57610be736613389565b60e05260a05260015460405163ac4ab3fb60e01b815233600482015260008051602061476383398151915260248201526001600160a01b0390911690602081604481855afa8015610542576101005190611fc3575b610c46915061351e565b600754604051634a83e9cd60e11b81526004810184905261010051909291839060249082906001600160a01b03165afa801561054257610cdf9261010051918261014052611fa5575b505060095461014051602081015160408083015160609093015190516306e32f3b60e11b8152610100519096909487946001600160a01b0391821694869485949390928116911660048501613809565b03915afa918215610542576101005192611f8a575b5060808201516101405160a00151939084811115611f84575083915b610d1b838096613905565b60c0526101005180608052926101405161014081015115611f55575b50610d5a610d4c8260e0610140510151613832565b60a061014051015190613868565b916101405190604460018060a01b03602084015116916020606060018060a01b03604087015116950151916040519384809263ac4ab3fb60e01b825233600483015260008051602061476383398151915260248301525afa80156105425786926101005191611f10575b5093610dd2610ddc9561351e565b60e0519388613bee565b610140805190810151610100519390849015611f085750925b60018060a01b036009541660018060a01b036040840151169260a060608201519101519060608a0151151593833b1561017b575090610e5394939291604051958694859384936305dfed9960e11b85526101005198600486016136f6565b039161010051905af1801561054257611ef2575b50600c546101405160408101516060909101516001600160a01b039283169290911690823b1561017e57610eb5926040518080958194635ff2138760e01b8352610100519660048401613729565b039161010051905af1801561054257611edc575b50610f026101405182606060018060a01b0360408401511692015191606089015115159060e08a01519160c08b01519460a051926145f2565b968192610f21610f168260a08b0151613832565b60808a015190613868565b92610f2f60a08a0151613912565b12611e185750505050610f4560a0850151613912565b9460a0850151936080860151906101005160808801525b600a5461014051604001516001600160a01b039081169116803b1561017e576040519163e3af01bb60e01b83526004830152896024830152816044816101005180945af1801561054257611e02575b506101005180891215611d655750610fc288613912565b600d546101405160208101516040820151606090920151926001600160a01b039182169282169116803b1561017e576110199385926040519586948593849363b931db6d60e01b8552610100519860048601613956565b039161010051905af1908115610542578691611d4b575b5061103a9161385b565b868110611d37575b505b6080870151611cd05760095461014051602081015160408201516060909201516001600160a01b039283169391831692909116803b1561017e576110a39360405180958194829363e512766b60e01b8452610100519760048501613809565b039161010051905af1801561054257611cba575b505b6007546001600160a01b0316803b1561017e5760405190634cc8221560e01b8252866004830152816024816101005180945af1801561054257611ca4575b506004546101405160408101516020909101516001600160a01b03908116939181169216803b1561017e576111479360405180958194829363078d3b7960e01b8452610100519760048501613988565b039161010051905af1801561054257611c87575b50602493949596610140519360018060a01b036020860151169760018060a01b0360408701511661012052610100606087015196015115159960a081015160808201519060c060e084015193015193604060018060a01b036003541681519c8d80926330af0bbf60e21b82526101205160048301525afa9a8b1561054257610100519b611c22575b50600e5460209b8c01516040516341976e0960e01b81526001600160a01b0391821660048201529c918d916024918391165afa9a8b1561054257610100519b611bee575b5060129a61012051611b78575b61123e9088613933565b9a604d8111610ab3577f5a3ca482b3cc533b228c98d56dbb9e80ed3986e661e13396977a90a594476b8c9b61127691600a0a906145d7565b9761128e6040519b6101a08d526101a08d01906136d1565b9e60208c015260408b015260608a015260a05160808a015260a089015260c088015260e08701526101008601526101208501526101408401526101608301526101808201528061012051950390a4610140516101408101511580611b6d575b6112f9575b6101005180f35b60018060a01b0360208201511690606081015160018060a01b0360408301511690611336610d4c61010085015115159460e060c051910151613832565b9160405194856101c08101106001600160401b036101c088011117611b57576101c08601604052610100518652602086015260408501526060840152608051608084015260c05160a08401526101005160c084015260e083015261010082015261010051610120820152610100516101408201524261016082015261010051610180820152610100516101a0820152602060018060a01b03600754169160405192838080936367637b9160e01b82528560048301528051602483015260018060a01b038682015116604483015260018060a01b0360408201511660648301526101a061143360608301516101c060848601526101e48501906136d1565b91608081015160a485015260a081015160c485015260c081015160e485015260e0810151610104850152610100810151151561012485015260ff6101208201511661014485015261014081015115156101648501526101608101516101848501526101808101516101a485015201516101c4830152039161010051905af1908115610542576101005191611b25575b5060015460405163ac4ab3fb60e01b8152336004820152600080516020614763833981519152602482015290602090829060449082906001600160a01b03165afa8015610542576101005190611aea575b61151d915061351e565b600754604051634a83e9cd60e11b81526004810183905261010051909291839060249082906001600160a01b03165afa918215610542576101005192611ac7575b50600a546040830151606084015160a0850151909290916001600160a01b039081169116803b1561017e576115b26040519485936362b3866f60e01b855260048501526060602485015260648401906136d1565b9260448301528180610100519403915afa801561054257611ab1575b506009546040830151606084015160a085015161010086015191936001600160a01b0393841693921515921690813b1561017e57611628946040519586948593849363428d156160e01b85526101005198600486016136f6565b039161010051905af1801561054257611a9b575b50600c54604083015160608401516001600160a01b039283169290911690823b1561017e57611685926040518080958194635ff2138760e01b8352610100519660048401613729565b039161010051905af1801561054257611a85575b506009546020830151604080850151606086015191516306e32f3b60e11b8152610100519095946001600160a01b03908116949193879384936116e493918216911660048501613809565b0381845afa928315610542576101005193611a6a575b5061174361172a611714608086015160e087015190613832565b61172460a05160a0890151613832565b9061385b565b61173d608086015160a08801519061385b565b90613868565b6080840151156119a8575b61176060a0860151608086015161385b565b6080850152611777608086015160a086015161385b565b60a085015260e0840152803b1561017e576040516378eaac7d60e01b8152610100519091829081806117ac8860048301613888565b039161010051905af1801561054257611992575b506007546001600160a01b0316803b1561017e5760405190634cc8221560e01b8252826004830152816024816101005180945af180156105425761197c575b50602083810151604080860151606087015160e0880151600154935163ac4ab3fb60e01b81523360048201526000805160206147638339815191526024820152956001600160a01b039586169591949293821692909187916044918391165afa94851561054257610100519561193b575b5061187d6118879561351e565b60e0519386613bee565b6000805160206147438339815191526118ff60018060a01b036020860151169360018060a01b036040870151169560608101519161010082015115159160a081015191608082015160a082015160808301519160e060c08186015195015195015195604051998a996101408b526101408b01906136d1565b9760208a01526040890152606088015260a051608088015260a087015260c086015260e08501526101008401526101208301520390a4806112f2565b94506020853d602011611974575b81611956602093836133c6565b8101031261017e5761187d61196d61188796613511565b9550611870565b3d9150611949565b611985906133b3565b6101005180156117ff5780fd5b61199b906133b3565b6101005180156117c05780fd5b6020858101516001600160a01b039081168652604080880180518316888501526060808a018051848b015242610100808c01919091528b01511515918a019190915260055491519051925163183bb37960e01b8152949385939281169284928392611a1892911660048401613729565b03915afa908115610542576101005191611a38575b5060c085015261174e565b90506020813d602011611a62575b81611a53602093836133c6565b810103126105c7575186611a2d565b3d9150611a46565b611a7e91933d8091833e61063781836133c6565b91846116fa565b611a8e906133b3565b6101005180156116995780fd5b611aa4906133b3565b61010051801561163c5780fd5b611aba906133b3565b6101005180156115ce5780fd5b611ae391923d8091833e611adb81836133c6565b8101906135ce565b908261155e565b506020813d602011611b1d575b81611b04602093836133c6565b8101031261017e57611b1861151d91613511565b611513565b3d9150611af7565b90506020813d602011611b4f575b81611b40602093836133c6565b810103126105c75751816114c2565b3d9150611b33565b634e487b7160e01b600052604160045260246000fd5b5060c05115156112ed565b9a5060405163313ce56760e01b8152602081600481610120515afa908115610542576101005191611bae575b5060ff169a611234565b90506020813d602011611be6575b81611bc9602093836133c6565b8101031261017e5760ff611bdf61123e926135c0565b9150611ba4565b3d9150611bbc565b909a506020813d602011611c1a575b81611c0a602093836133c6565b810103126105c75751998e611227565b3d9150611bfd565b909a506040813d604011611c7f575b81611c3e604093836133c6565b8101031261017e5760405190604082018281106001600160401b03821117611b575760405280518252611c73906020016134fd565b6020820152998e6111e3565b3d9150611c31565b611c90906133b3565b610100519687611ca0579661115b565b8780fd5b611cad906133b3565b6101005180156110f75780fd5b611cc3906133b3565b6101005180156110b75780fd5b6009546001600160a01b0316803b1561017e576040516378eaac7d60e01b815261010051909182908180611d078d60048301613888565b039161010051905af1801561054257611d21575b506110b9565b611d2a906133b3565b610100518015611d1b5780fd5b90611724611d459288613905565b88611042565b611d5591506133b3565b610100518061017b578590611030565b600d5461014051602081015160408201516060909201516001600160a01b039182169493821693909290911690833b1561017b5750918b91611dc49493604051958694859384936309a599fb60e31b8552610100519860048601613956565b039161010051905af1801561054257611dec575b50611de7906117248588613905565b611044565b611df5906133b3565b610100518015611dd85780fd5b611e0b906133b3565b610100518015610fab5780fd5b611e4090611e318460a08b9c979c9a95969a0151613905565b60a08a01526080890151613905565b608088015260055461014051604080820151606090920151905163183bb37960e01b81529260209284926001600160a01b039283169284928392611e8a9290911660048401613729565b03915afa908115610542576101005191611eaa575b5060c0880152610f5c565b90506020813d602011611ed4575b81611ec5602093836133c6565b810103126105c7575189611e9f565b3d9150611eb8565b611ee5906133b3565b610100518015610ec95780fd5b611efb906133b3565b610100518015610e675780fd5b905092610df5565b9250506020823d602011611f4d575b81611f2c602093836133c6565b8101031261017e57610ddc93610dd2611f458894613511565b919550610dc4565b3d9150611f1f565b81611f699295506080610d4c920151613832565b92611f7b846080610140510151613905565b60805286610d37565b91610d10565b611f9e91923d8091833e61063781836133c6565b9083610cf4565b611fb8913d8091833e611adb81836133c6565b610140528380610c8f565b506020813d602011611ff6575b81611fdd602093836133c6565b8101031261017e57611ff1610c4691613511565b610c3c565b3d9150611fd0565b3461017e57610100518060031936011261017b576020604051670de0b6b3a76400008152f35b3461017e57610100518060031936011261017b57600e546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b57600a546040516001600160a01b039091168152602090f35b3461017e5760e036600319011261017e57612095613373565b6024356001600160401b03811161017e576120b4903690600401613439565b6044359182151583036105c7576040926120dd9260c4359260a4359260843592606435926145f2565b82519182526020820152f35b3461017e57610100518060031936011261017b5760206040516127108152f35b61211236613484565b600754604051637699d2c160e11b8152919492916001600160a01b03916020908290600490829086165afa801561054257610100519061239c575b612158915015613b5e565b6009546040516306e32f3b60e11b81526101005187939192839083168180612186898c8c33600486016139cb565b03915afa918215610542576101005192612381575b5060808201926121ad845115156139f4565b858216978861231c5750503494816004541690813b1561017e57604051809263e4652f4960e01b82528189816121ed826101005197339060048501613988565b03925af1801561054257612306575b505b612209851515613b94565b60a082019261221986855161385b565b845251670de0b6b3a7640000908082029082820403610ab357845161223d91613868565b106122d1576009541690813b1561017e5760405180926378eaac7d60e01b82528180612270610100519560048301613888565b039161010051905af18015610542576122bb575b50906109fd7f69dea4780434a9e7bcd91f9c264463d2db6f4f8088762fd4b51b944b57908e78939251604051938493339785613bca565b6122c4906133b3565b6101005180156122845780fd5b60405162461bcd60e51b815260206004820152600d60248201526c216d696e2d6c6576657261676560981b6044820152606490fd5b61230f906133b3565b6101005180156121fc5780fd5b9095826004541691823b1561017e5761235192604051808095819463e4652f4960e01b83526101005196339060048501613988565b039161010051905af180156105425761236b575b506121fe565b612374906133b3565b6101005180156123655780fd5b61239591923d8091833e61063781836133c6565b908761219b565b506020813d82116123ce575b816123b5602093836133c6565b8101031261017e576123c961215891613511565b61214d565b3d91506123a8565b3461017e57610100518060031936011261017b576008546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b576005546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b576003546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b576001546040516001600160a01b039091168152602090f35b3461017e5760e036600319011261017e576001600160a01b0360243581811681036105c7576044359082821682036105c7576064356001600160401b03811161017e576124d7903690600401613439565b9060a4359182151583036105c75760c4359385851685036105c7576020604496600154166040519788809263ac4ab3fb60e01b825233600483015260008051602061476383398151915260248301525afa958615610542576101005196612552575b506125466112f29661351e565b60843592600435614114565b95506020863d821161258a575b8161256c602093836133c6565b8101031261017e576125466125836112f297613511565b9650612539565b3d915061255f565b3461017e57610100518060031936011261017b576002546040516001600160a01b039091168152602090f35b3461017e576125cc36613389565b60015460405163ac4ab3fb60e01b8152336004820152600080516020614763833981519152602482015291939190602090829060449082906001600160a01b03165afa8015610542576101005190612c05575b612629915061351e565b600754604051634a83e9cd60e11b81526004810183905261010051909491859060249082906001600160a01b03165afa938415610542576101005194612bea575b50600a546040850151606086015160a0870151909290916001600160a01b039081169116803b1561017e576126be6040519485936362b3866f60e01b855260048501526060602485015260648401906136d1565b9260448301528180610100519403915afa801561054257612bdb575b506009546040850151606086015160a087015161010088015191936001600160a01b0393841693921515921690813b1561017e57612734946040519586948593849363428d156160e01b85526101005198600486016136f6565b039161010051905af1801561054257612bc5575b50600c54604085015160608601516001600160a01b039283169290911690823b1561017e57612791926040518080958194635ff2138760e01b8352610100519660048401613729565b039161010051905af1801561054257612ba8575b506009546020850151604080870151606088015191516306e32f3b60e11b8152610100519798909790946001600160a01b03908116949193899384936127f393918216911660048501613809565b0381845afa948515610542576101005195612b8d575b50612844612831612823608088015160e089015190613832565b6117248960a0870151613832565b61173d608088015160a08601519061385b565b608086015115612acb575b61286160a0840151608088015161385b565b6080870152612878608084015160a088015161385b565b60a087015260e0860152803b1561017e576040516378eaac7d60e01b8152610100519091829081806128ad8a60048301613888565b039161010051905af1801561054257612ab5575b506007546001600160a01b0316803b1561017e5760405190634cc8221560e01b8252846004830152816024816101005180945af1801561054257612a9f575b50602081810151604080840151606085015160e0860151600154935163ac4ab3fb60e01b815233600482015260008051602061476383398151915260248201526001600160a01b0393841698969195929492841693909283916044918391165afa908115610542576101005191612a3d575b50916000805160206147438339815191529661299d9492612997612a0398979561351e565b89613bee565b60018060a01b036020820151169460018060a01b036040830151169660608301519261010081015115159260a08201519260808301519060a08301519060808401519260e060c081870151960151960151966040519a8b9a610140808d528c01906136d1565b9860208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301520390a46101005180f35b939195949290506020843d602011612a97575b81612a5d602093836133c6565b8101031261017e5760008051602061474383398151915296612a0396612997612a8861299d97613511565b93959798505092945096612972565b3d9150612a50565b612aa8906133b3565b6101005180156129005780fd5b612abe906133b3565b6101005180156128c15780fd5b6020838101516001600160a01b0390811688526040808601805183168a85015260608088018051848d015242610100808e01919091528901511515918c019190915260055491519051925163183bb37960e01b8152949385939281169284928392612b3b92911660048401613729565b03915afa908115610542576101005191612b5b575b5060c087015261284f565b90506020813d602011612b85575b81612b76602093836133c6565b810103126105c7575188612b50565b3d9150612b69565b612ba191953d8091833e61063781836133c6565b9386612809565b612bb1906133b3565b610100519384612bc157936127a5565b8480fd5b612bce906133b3565b6101005180156127485780fd5b612be4906133b3565b846126da565b612bfe91943d8091833e611adb81836133c6565b928461266a565b506020813d602011612c38575b81612c1f602093836133c6565b8101031261017e57612c3361262991613511565b61261f565b3d9150612c12565b3461017e57610100518060031936011261017b576009546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b576007546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b57546001600160a01b0390612cc390821633146134cb565b8060025416906040519163bf40fac160e01b908184526020918260048601526024600a8187015260449169417373657453746f726560b01b8388015260649085888381885afa9788156105425761010051986132c2575b508660018060a01b031998168860035416176003556040519481865286600487015260099586858201526846756e6453746f726560b81b8682015287818581855afa8015610542578991610100519161328a575b5016896004541617600455604051828152876004820152600c858201526b46756e64696e6753746f726560a01b8682015287818581855afa80156105425789916101005191613252575b5016896005541617600555604051828152876004820152600b858201526a4d61726b657453746f726560a81b8682015287818581855afa8015610542578991610100519161321a575b5016896006541617600655604051828152876004820152600a85820152694f7264657253746f726560b01b8682015287818581855afa801561054257899161010051916131e2575b5016896007541617600755604051828152876004820152868582015268506f6f6c53746f726560b81b8682015287818581855afa801561054257899161010051916131aa575b5016896008541617600855604051828152876004820152600d858201526c506f736974696f6e53746f726560981b8682015287818581855afa80156105425789916101005191613172575b5016898754161786556040518281528760048201528685820152685269736b53746f726560b81b8682015287818581855afa8015610542578991610100519161313a575b501689600a541617600a55604051828152876004820152600c858201526b5374616b696e6753746f726560a01b8682015287818581855afa80156105425789916101005191613102575b501689600b541617600b556040518281528760048201526007858201526646756e64696e6760c81b8682015287818581855afa801561054257899161010051916130ca575b501689600c541617600c556040519482865287600487015260048587015263141bdbdb60e21b8187015287868581855afa9586156105425788968a916101005191613080575b509068436861696e6c696e6b60b81b9291168b600d541617600d55604051978896879586528860048701528501528301525afa91821561054257610100519261304a575b50501690600e541617600e556101005180f35b90809250813d8311613079575b61306181836133c6565b8101031261017e57613072906134fd565b8380613037565b503d613057565b92978092508391503d83116130c3575b61309a81836133c6565b8101031261017e578795896130bb68436861696e6c696e6b60b81b936134fd565b909192612ff3565b503d613090565b809250898092503d83116130fb575b6130e381836133c6565b8101031261017e576130f589916134fd565b8b612fad565b503d6130d9565b809250898092503d8311613133575b61311b81836133c6565b8101031261017e5761312d89916134fd565b8b612f68565b503d613111565b809250898092503d831161316b575b61315381836133c6565b8101031261017e5761316589916134fd565b8b612f1e565b503d613149565b809250898092503d83116131a3575b61318b81836133c6565b8101031261017e5761319d89916134fd565b8b612eda565b503d613181565b809250898092503d83116131db575b6131c381836133c6565b8101031261017e576131d589916134fd565b8b612e8f565b503d6131b9565b809250898092503d8311613213575b6131fb81836133c6565b8101031261017e5761320d89916134fd565b8b612e49565b503d6131f1565b809250898092503d831161324b575b61323381836133c6565b8101031261017e5761324589916134fd565b8b612e01565b503d613229565b809250898092503d8311613283575b61326b81836133c6565b8101031261017e5761327d89916134fd565b8b612db8565b503d613261565b809250898092503d83116132bb575b6132a381836133c6565b8101031261017e576132b589916134fd565b8b612d6e565b503d613299565b9097508581813d83116132f2575b6132da81836133c6565b8101031261017e576132eb906134fd565b9688612d1a565b503d6132d0565b3461017e57610100518060031936011261017b57600d546040516001600160a01b039091168152602090f35b3461017e57610100518060031936011261017b57546040516001600160a01b039091168152602090f35b346105c75760003660031901126105c7576004546001600160a01b03168152602090f35b600435906001600160a01b03821682036105c757565b60609060031901126105c75760043590602435906044356001600160a01b03811681036105c75790565b6001600160401b038111611b5757604052565b90601f801991011681019081106001600160401b03821117611b5757604052565b6001600160401b038111611b5757601f01601f191660200190565b92919261340e826133e7565b9161341c60405193846133c6565b8294818452818301116105c7578281602093846000960137010152565b9080601f830112156105c75781602061345493359101613402565b90565b9181601f840112156105c7578235916001600160401b0383116105c757602083818601950101116105c757565b9060606003198301126105c7576004356001600160a01b03811681036105c75791602435906001600160401b0382116105c7576134c391600401613457565b909160443590565b156134d257565b606460405162461bcd60e51b815260206004820152600460248201526310b3b7bb60e11b6044820152fd5b51906001600160a01b03821682036105c757565b519081151582036105c757565b1561352557565b60405162461bcd60e51b815260206004820152600e60248201526d21636f6e74726163742d726f6c6560901b6044820152606490fd5b60005b83811061356e5750506000910152565b818101518382015260200161355e565b81601f820112156105c7578051613594816133e7565b926135a260405194856133c6565b818452602082840101116105c757613454916020808501910161355b565b519060ff821682036105c757565b6020818303126105c75780516001600160401b03918282116105c75701906101c09283838203126105c75760405193840184811083821117611b57576040528251845261361d602084016134fd565b602085015261362e604084016134fd565b604085015260608301519182116105c75761364a91830161357e565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100613685818301613511565b908301526101206136978183016135c0565b908301526101406136a9818301613511565b90830152610160808201519083015261018080820151908301526101a0809101519082015290565b906020916136ea8151809281855285808601910161355b565b601f01601f1916010190565b9294939060609261371c9160018060a01b031685526080602086015260808501906136d1565b9460408401521515910152565b6001600160a01b039091168152604060208201819052613454929101906136d1565b6020818303126105c75780516001600160401b03918282116105c75701906101209283838203126105c75760405193840184811083821117611b5757604052613793836134fd565b84526137a1602084016134fd565b602085015260408301519182116105c7576137bd91830161357e565b60408301526137ce60608201613511565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100809101519082015290565b6001600160a01b03918216815291166020820152606060408201819052613454929101906136d1565b8181029291811591840414171561384557565b634e487b7160e01b600052601160045260246000fd5b9190820180921161384557565b8115613872570490565b634e487b7160e01b600052601260045260246000fd5b6020815260018060a01b03808351166020830152602083015116604082015260408201516138c4610120918260608501526101408401906136d1565b92606081015115156080840152608081015160a084015260a081015160c084015260c081015160e084015260e0810151906101009182850152015191015290565b9190820391821161384557565b60008190039190600160ff1b81146001166138455760001983050361384557565b818102929160008212600160ff1b82141661384557818405149015171561384557565b9493926139839160609360018060a01b0380921688521660208701526080604087015260808601906136d1565b930152565b6001600160a01b03918216815291166020820152604081019190915260600190565b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b03918216815291166020820152606060408201819052613454939101916139aa565b156139fb57565b60405162461bcd60e51b815260206004820152600960248201526810b837b9b4ba34b7b760b91b6044820152606490fd5b6020818303126105c75780516001600160401b03918282116105c75701906101a09283838203126105c75760405193840184811083821117611b575760405282518281116105c75781613a8091850161357e565b845260208301519182116105c757613a9991830161357e565b6020830152613aaa604082016134fd565b6040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201519083015261012080820151908301526101408082015190830152610160613b10818301613511565b90830152613b22610180809201613511565b9082015290565b15613b3057565b60405162461bcd60e51b815260206004820152600660248201526521707269636560d01b6044820152606490fd5b15613b6557565b60405162461bcd60e51b8152602060048201526007602482015266085c185d5cd95960ca1b6044820152606490fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600760248201526610b6b0b933b4b760c91b6044820152606490fd5b90613be490604093969594966060845260608401916139aa565b9460208201520152565b6101a052939493929091600091801561410b57670de0b6b3a76400008102806101c05204670de0b6b3a7640000036140f75781906001600160a01b03871661406b575b613c3e826101c051613905565b9660018060a01b03600b54166040516020816004816374d6f48760e11b958682525afa8015613fc6578690614037575b613c7f91506127109182918c613832565b04610180526008546040519283526001600160a01b031691602081600481865afa90811561402c578791613ff8575b5099613cd691613cc3613cd19a9b9c83613832565b049889916101805190613905565b613905565b61020052803b15612bc157604051631c25e23360e11b81526001600160a01b0387166004820152670de0b6b3a7640000880460248201529085908290604490829084905af18015613f7d57613fe5575b50600b546001600160a01b0316803b15612bc15760405163a17dc11560e01b8152610180516001600160a01b0388166004830152670de0b6b3a7640000900460248201529085908290604490829084905af18015613f7d57908591613fd1575b50506004805460025460405163bf40fac160e01b815260209381018490526008602482015267747265617375727960c01b60448201526001600160a01b03928316939092909183916064918391165afa908115613fc6578691613f8c575b50813b15613f885786613e2b9287928360405180968195829463078d3b7960e01b6101605263078d3b7960e01b8452670de0b6b3a764000061020051049160048501613988565b03925af18015613f7d57908591613f65575b50506004546001600160a01b031690813b15612bc157613e7f85928392604051948580948193610160518352670de0b6b3a76400008b04908d60048501613988565b03925af18015613f5a57908491613f42575b505090670de0b6b3a7640000613eba819360e0604051806101e0525260e06101e05101906136d1565b95816101c0510460206101e05101520460406101e051015281610180510460606101e051015281610200510460806101e05101520460a06101e051015260c06101e05101527fbb0d4da169ea2d966558d16e35bc499237141e230d0b86ea69ecb65c5b65db226101a051916101e051809160018060a01b03169560018060a01b0316940390a4565b613f4b906133b3565b613f56578238613e91565b8280fd5b6040513d86823e3d90fd5b613f6e906133b3565b613f79578338613e3d565b8380fd5b6040513d87823e3d90fd5b8580fd5b90506020813d602011613fbe575b81613fa7602093836133c6565b81010312613f8857613fb8906134fd565b38613de4565b3d9150613f9a565b6040513d88823e3d90fd5b613fda906133b3565b613f79578338613d86565b613ff1909491946133b3565b9238613d26565b90506020813d602011614024575b81614013602093836133c6565b8101031261053e5751613cd6613cae565b3d9150614006565b6040513d89823e3d90fd5b506020813d602011614063575b81614051602093836133c6565b81010312613f8857613c7f9051613c6e565b3d9150614044565b600954604051632bdc62f560e21b8152919250602090829060049082906001600160a01b03165afa9081156140ec5783916140b9575b506140b2612710916101c051613832565b0490613c31565b90506020813d82116140e4575b816140d3602093836133c6565b81010312613f5657516140b26140a1565b3d91506140c6565b6040513d85823e3d90fd5b634e487b7160e01b82526011600452602482fd5b50505050509050565b94959190956101e09586526101609687528261020052600085156145b457670de0b6b3a76400008602956101a09680885204670de0b6b3a7640000036145a0576001600160a01b03938190851661452b575b614171828851613905565b85600b541691604051916020836004816374d6f48760e11b9788825284610180525afa801561442e5782906144f1575b6141b2935061271093849183613832565b04928860085416946040519081526101805181600481895afa908115613f5a5790849392918695916144b2575b5082916141f2613cd1926141fb95613832565b04948592613905565b93803b1561443957604051631c25e23360e11b81526001600160a01b0389166004820152670de0b6b3a7640000840460248201529082908290604490829084905af1801561442e576144a3575b5087600b5416803b156144395760405163a17dc11560e01b81526001600160a01b0389166004820152670de0b6b3a7640000850460248201529082908290604490829084905af1801561442e5790829161448f575b505087600454168860025416906040519163bf40fac160e01b83526101805160048401526008602484015267747265617375727960c01b60448401528260648161018051935afa9182156140ec578392614451575b50803b15613f565788918391670de0b6b3a7640000838961432b6040519788968795869463078d3b7960e01b8652049160048501613988565b03925af1801561442e5790829161443d575b5050670de0b6b3a76400008860045416950494803b156144395781604051916101c09280845263078d3b7960e01b9052825190816143848a8d610200519060048501613988565b0390838551915af1801561442e57614419575b505092670de0b6b3a764000060e0969381899794817fbb0d4da169ea2d966558d16e35bc499237141e230d0b86ea69ecb65c5b65db229c9b98816143e56040519e8f9e8f81815201906136d1565b9f5104610180518d01520460408b015204606089015204608087015260a0860152151560c0850152169651169451930390a4565b6144248291516133b3565b61017b5780614397565b6040513d84823e3d90fd5b5080fd5b614446906133b3565b61017b57803861433d565b909150610180513d8111614488575b61446a81836133c6565b81610180519181010312613f5657614481906134fd565b90386142f2565b503d614460565b614498906133b3565b61017b57803861429d565b6144ac906133b3565b38614248565b919293945050610180513d81116144ea575b6144ce81836133c6565b81610180519181010312613f79575184939291906141fb6141df565b503d6144c4565b509091610180513d8111614524575b61450a81836133c6565b81610180519181010312613f5657906141b29291516141a1565b503d614500565b905060046020856009541660405192838092632bdc62f560e21b82525afa90811561442e57829161456d575b50614566612710918851613832565b0490614166565b90506020813d8211614598575b81614587602093836133c6565b810103126144395751614566614557565b3d915061457a565b634e487b7160e01b81526011600452602490fd5b5050505050505050565b8181039291600013801582851316918412161761384557565b811561387257600160ff1b8114600019831416613845570590565b94939695929091968115801561473a575b8015614732575b6147225791602091614668938960001461470c5761463461462e82614639946145be565b88613933565b6145d7565b955b60055460405163183bb37960e01b81529485936001600160a01b0390921692849283929160048401613729565b03915afa908115614700576000916146cd575b509161469561469b9269021e19e0c9bab2400000946145be565b90613933565b0580936000146146b2576146ae916145be565b9190565b81019060008483129112908015821691151617613845579190565b906020823d82116146f8575b816146e6602093836133c6565b8101031261017b57505161469561467b565b3d91506146d9565b6040513d6000823e3d90fd5b61463461462e61471c93836145be565b9561463b565b5050505050509050600090600090565b50841561460a565b50801561460356fe3a1062142d0d194eaf2928092e53c3f84f5602268f2b82effd44010aff82cb90a66b7a3e6b19d24ccb6f717fc232a1bb0278a7f83f8e2211835fc4ed0fe69f19a26469706673582212206105a876a8a1b18d92ce92e60bf5b1b7d81f4c547b54983e656f7cbe0e7f39b364736f6c63430008110033000000000000000000000000e5da4704a582fe799dcd1dff31dc2ed2e0bdc961000000000000000000000000a64694e51b22a081ea1e4051ef4ea1b715b47026