0 txs
0 calls
constructor
No constructor.
functions
No functions.
events
SwapReverted
event SwapReverted(string reason, bytes reasonBytes)
errors
DisabledMarket
error DisabledMarket(address market)
DuplicatedMarketInSwapPath
error DuplicatedMarketInSwapPath(address market)
EmptyMarket
error EmptyMarket()
InsufficientOutputAmount
error InsufficientOutputAmount(uint256 outputAmount, uint256 minOutputAmount)
InsufficientReserve
error InsufficientReserve(uint256 reservedUsd, uint256 maxReservedUsd)
InsufficientSwapOutputAmount
error InsufficientSwapOutputAmount(uint256 outputAmount, uint256 minOutputAmount)
InvalidSwapMarket
error InvalidSwapMarket(address market)
InvalidTokenIn
error InvalidTokenIn(address tokenIn, address market)
MaxPoolAmountExceeded
error MaxPoolAmountExceeded(uint256 poolAmount, uint256 maxPoolAmount)
PnlFactorExceededForLongs
error PnlFactorExceededForLongs(int256 pnlToPoolFactor, uint256 maxPnlFactor)
PnlFactorExceededForShorts
error PnlFactorExceededForShorts(int256 pnlToPoolFactor, uint256 maxPnlFactor)
SwapPriceImpactExceedsAmountIn
error SwapPriceImpactExceedsAmountIn(uint256 amountAfterFees, int256 negativeImpactAmount)
UnableToGetOppositeToken
error UnableToGetOppositeToken(address inputToken, address market)
UnexpectedTokenForVirtualInventory
error UnexpectedTokenForVirtualInventory(address token, address market)
creation bytecode
0x6143e861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80635706dc461461003a575b600080fd5b81801561004657600080fd5b5061005a61005536600461354e565b61007d565b604080516001600160a01b03909316835260208301919091520160405180910390f35b6000808260c0015160000361009d57505060a081015160c0909101519091565b8260e0015151600003610198578261010001518360c0015110156100ea578260c0015183610100015160405163d28d3eb560e01b81526004016100e192919061368e565b60405180910390fd5b8261012001516001600160a01b031683606001516001600160a01b0316146101875782606001516001600160a01b0316632fb126058460a001518561012001518660c001518761016001516040518563ffffffff1660e01b8152600401610154949392919061369c565b600060405180830381600087803b15801561016e57600080fd5b505af1158015610182573d6000803e3d6000fd5b505050505b505060a081015160c0909101519091565b8260e001516000815181106101af576101af6136c5565b6020026020010151600001516001600160a01b031683606001516001600160a01b03161461026b5782606001516001600160a01b0316632fb126058460a001518560e00151600081518110610206576102066136c5565b6020026020010151600001518660c0015160006040518563ffffffff1660e01b8152600401610238949392919061369c565b600060405180830381600087803b15801561025257600080fd5b505af1158015610266573d6000803e3d6000fd5b505050505b60a083015160c084015160005b8560e00151518110156104b25760008660e00151828151811061029d5761029d6136c5565b60200260200101519050600087600001516001600160a01b0316637ae1cfca6102c984600001516105bc565b6040518263ffffffff1660e01b81526004016102e791815260200190565b602060405180830381865afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032891906136db565b9050801561034c578151604051631238f16f60e31b81526100e191906004016136f8565b87600001516001600160a01b031663abfdcced61036c84600001516105bc565b6040516001600160e01b031960e084901b1681526004810191909152600160248201526044016020604051808303816000875af11580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d591906136db565b5060006103e3846001613722565b905060008960e001515182101561041d578960e00151828151811061040a5761040a6136c5565b6020026020010151600001519050610425565b506101208901515b60006040518060a00160405280868152602001896001600160a01b03168152602001888152602001836001600160a01b0316815260200160018d60e001515161046e9190613735565b881461047b576000610482565b8c61016001515b1515905290506104928b82610641565b8098508199505050505050505080806104aa90613748565b915050610278565b5060005b8560e00151518110156105835760008660e0015182815181106104db576104db6136c5565b6020026020010151905086600001516001600160a01b031663abfdcced61050583600001516105bc565b6040516001600160e01b031960e084901b1681526004810191909152600060248201526044016020604051808303816000875af115801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e91906136db565b5050808061057b90613748565b9150506104b6565b508461010001518110156105b2576101008501516040516329ebaeb760e21b81526100e191839160040161368e565b9094909350915050565b60006040516020016105f790602080825260159082015274535741505f504154485f4d41524b45545f464c414760581b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03841690820152606001604051602081830303815290604052805190602001209050919050565b60008061064c6131d9565b8360000151604001516001600160a01b031684602001516001600160a01b03161415801561069857508360000151606001516001600160a01b031684602001516001600160a01b031614155b156106c05760208401518451516040516353f8171160e01b81526100e1929190600401613761565b845184516106ce91906112ba565b6106e084602001518560000151611305565b6001600160a01b03908116825260408087015160208701519151631773dc6560e21b8152921691635dcf719491610719916004016136f8565b6040805180830381865afa158015610735573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610759919061377b565b602082015260408086015182519151631773dc6560e21b81526001600160a01b0390911691635dcf71949161079191906004016136f8565b6040805180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d1919061377b565b816040018190525073ca0e32f0b16bbd4cbbcba46bdd3f103c312397d3633b89b23660405180610120016040528088600001516001600160a01b031681526020018760000151815260200187602001516001600160a01b0316815260200184600001516001600160a01b0316815260200161084f856020015161137a565b8152602001610861856040015161137a565b815260200161088a610876866020015161137a565b896040015161088591906137c9565b61139c565b815260200161089f610876866020015161137a565b6108a8906137e0565b815260016020909101526040516001600160e01b031960e084901b1681526108d391906004016137fc565b602060405180830381865af41580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091491906138c0565b60e08201819052855185515160408701516101408901516101808a0151600095610944959493929087129161140a565b9050600060058761018001516005811115610961576109616138d9565b146109b257604051602001610997906020808252600d908201526c535741505f4645455f5459504560981b604082015260600190565b60405160208183030381529060405280519060200120610a01565b6040516020016109ea9060208082526014908201527341544f4d49435f535741505f4645455f5459504560601b604082015260600190565b604051602081830303815290604052805190602001205b87516020808a0151895151918a01518651604051630106f13960e71b81526001600160a01b03958616600482015292851660248401529284166044830152929092166064830152608482015260a481018290529091507317598a6e10f0cfd5a5ba9efddd0b94bc3debfda7906383789c809060c40160006040518083038186803b158015610a8e57600080fd5b505af4158015610aa2573d6000803e3d6000fd5b505050507317598a6e10f0cfd5a5ba9efddd0b94bc3debfda763214516ab886000015189602001518a61014001518a60000151600001518b602001518860a00151604051602001610b179060208082526010908201526f55495f535741505f4645455f5459504560801b604082015260600190565b60408051808303601f1901815290829052805160209091012060e089901b6001600160e01b03191682526001600160a01b039788166004830152958716602482015293861660448501529185166064840152909316608482015260a481019290925260c482015260e40160006040518083038186803b158015610b9957600080fd5b505af4158015610bad573d6000803e3d6000fd5b5050505060008360e001511315610cb85760408083015160608501528751602089015188515186519387015160e0880151610be995919061173c565b610120850181905261010085019190915215610c5957610c328760000151886020015188600001516000015189602001518760200151610c2d89610120015161139c565b61173c565b506101408401819052610c4490611779565b83606001818151610c559190613722565b9052505b8260400151602001518360200151600001518460600151610c7a91906137c9565b610c849190613905565b60a0840181905260c0840152610100830151610c9f90611779565b8360a001818151610cb09190613722565b905250610d82565b8651602080890151885151898301519287015160e0880151610cdc9594919061173c565b506101008401819052610cf790610cf2906137e0565b611779565b826040015111610d275781604001518361010001516040516375885d6960e01b81526004016100e192919061368e565b610d39836101000151610cf2906137e0565b8260400151610d489190613735565b60608401819052604084015160209081015190850151519091610d6b91906137c9565b610d759190613905565b60a0840181905260c08401525b85515160608701516001600160a01b03908116911614610e14578551518351606088015160a086015160808a0151604051632fb1260560e01b81526001600160a01b0390951694632fb1260594610de19490939092909160040161369c565b600060405180830381600087803b158015610dfb57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b505050505b610e478760000151886020015188600001518960200151610e42876020015189606001516108859190613722565b6117cb565b50610e758760000151886020015188600001518660000151610e6c8860c0015161139c565b610e42906137e0565b50604080516060810180835291890151885160200151631773dc6560e21b90935260009282916001600160a01b031690635dcf719490610eb890606485016136f8565b6040805180830381865afa158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef8919061377b565b81526020018860000151604001516001600160a01b031689602001516001600160a01b031614610f2c578560400151610f32565b85602001515b81526020018860000151606001516001600160a01b031689602001516001600160a01b031614610f66578560400151610f6c565b85602001515b90528851885160208a0151929350610f8392611920565b8751875160408101518651610fa993929185916001600160a01b0390811691161461196e565b87518751604081015160208a015161107493929185916001600160a01b03908116911614610ffb57604051602001610fe090613919565b60405160208183030381529060405280519060200120611021565b60405160200161100a90613950565b604051602081830303815290604052805190602001205b8b516060015189516001600160a01b039081169116146110655760405160200161104a90613950565b604051602081830303815290604052805190602001206119e0565b60405160200161104a90613919565b611106604051806101a001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6080808a015182528851516001600160a01b039081166020808501919091526060808c01518316604080870191909152828d0151841691860191909152885190921692840192909252868201515160a0808501919091528782015183015160c0850152818b015160e0808601919091529187015161010080860191909152908801516101208501529087015161014080850191909152908701516101608401528601516101808301528901516111bc9082611a65565b6020898101516080808c01518b51518c8501518a86015151604080516322182b9360e21b81526001600160a01b039788166004820152602481019590955292861660448501529085166064840152608483015260a48201889052885160c48301529388015160e482015292870151610104840152606087015190911661012483015285015161014482015260a085015161016482015273ca0e32f0b16bbd4cbbcba46bdd3f103c312397d390638860ae4c906101840160006040518083038186803b15801561128a57600080fd5b505af415801561129e573d6000803e3d6000fd5b5050865160a090970151969b969a509598505050505050505050565b6112c48282611e47565b80606001516001600160a01b031681604001516001600160a01b0316036113015780516040516332e6f44d60e21b81526100e191906004016136f8565b5050565b600081604001516001600160a01b0316836001600160a01b03160361132f57506060810151611374565b81606001516001600160a01b0316836001600160a01b03160361135757506040810151611374565b8151604051637a0ca68160e01b81526100e1918591600401613761565b92915050565b60006002826000015183602001516113929190613722565b6113749190613905565b60006001600160ff1b038211156114065760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016100e1565b5090565b611412613248565b61141a613248565b60008084600581111561142f5761142f6138d9565b036114b357886001600160a01b031663bd02d0f561144d8a89611f15565b6040518263ffffffff1660e01b815260040161146b91815260200190565b602060405180830381865afa158015611488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ac91906138c0565b90506115f4565b60018460058111156114c7576114c76138d9565b146115f45760058460058111156114e0576114e06138d9565b036114fd57886001600160a01b031663bd02d0f561144d8a611f9e565b6003846005811115611511576115116138d9565b0361152f57886001600160a01b031663bd02d0f561144d8a89611fda565b6004846005811115611543576115436138d9565b0361156157886001600160a01b031663bd02d0f561144d8a89612012565b6002846005811115611575576115756138d9565b036115f457886001600160a01b031663bd02d0f56115928a61204d565b6040518263ffffffff1660e01b81526004016115b091815260200190565b602060405180830381865afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f191906138c0565b90505b6000896001600160a01b031663bd02d0f56040516020016116419060208082526018908201527729aba0a82fa322a2afa922a1a2a4ab22a92fa320a1aa27a960411b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161167591815260200190565b602060405180830381865afa158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b691906138c0565b905060006116c4898461208f565b90506116d0818361208f565b8085526116dd9082613735565b60208501526001600160a01b03871660608501526116fb8b886120af565b6080850181905261170d908a9061208f565b60a0850181905261171e828b613735565b6117289190613735565b604085015250919998505050505050505050565b60008060008061174f8a898989896121fd565b915091506117698a8a8a8a86611764906137e0565b612288565b5090999098509650505050505050565b6000808212156114065760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016100e1565b600080866001600160a01b03166332f85bbf6117eb876000015187612347565b6040516001600160e01b031960e084901b16815260048101919091526024810186905260606044820152602260648201527f496e76616c69642073746174652c206e6567617469766520706f6f6c416d6f756084820152611b9d60f21b60a482015260c4016020604051808303816000875af115801561186f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189391906138c0565b90506118a287878787876123b5565b50508451604051631daaefa160e01b8152737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf091631daaefa1916118e3918a91899089908890600401613985565b60006040518083038186803b1580156118fb57600080fd5b505af415801561190f573d6000803e3d6000fd5b509293505050505b95945050505050565b600061192d84848461257b565b9050600061194085856000015185612619565b905080821115611967578181604051636429ff3f60e01b81526004016100e192919061368e565b5050505050565b600061197e858585856000612693565b9050600061199186866000015185612719565b9050600061199f838361208f565b905060006119af88888888612734565b9050818111156119d657808260405163315276c960e01b81526004016100e192919061368e565b5050505050505050565b60008060006119f388888860018961277a565b9250925092508215611a1c578181604051630b92fb2560e41b81526004016100e192919061368e565b6000806000611a2f8b8b8b60008b61277a565b9250925092508215611a58578181604051632c0041a560e21b81526004016100e192919061368e565b5050505050505050505050565b611a6d613287565b6080810151611a7d9060016127ce565b6040805180820190915260088152676f726465724b657960c01b602082015282516080830151611ab292909160009190612833565b8051611abf9060046127ce565b611afd6000604051806040016040528060068152602001651b585c9ad95d60d21b81525084602001518460000151612886909392919063ffffffff16565b60408051808201825260088152673932b1b2b4bb32b960c11b6020820152908301518251611b3092909160019190612886565b6040805180820190915260078152663a37b5b2b724b760c91b602082015260608301518251611b6492909160029190612886565b6040805180820190915260088152671d1bdad95b93dd5d60c21b602082015260808301518251611b9992909160039190612886565b6020810151611ba99060056127ce565b611bed60006040518060400160405280600c81526020016b746f6b656e496e507269636560a01b8152508460a001518460200151612833909392919063ffffffff16565b611c3260016040518060400160405280600d81526020016c746f6b656e4f7574507269636560981b8152508460c001518460200151612833909392919063ffffffff16565b611c7260026040518060400160405280600881526020016730b6b7bab73a24b760c11b8152508460e001518460200151612833909392919063ffffffff16565b611cbc600360405180604001604052806011815260200170616d6f756e74496e41667465724665657360781b8152508461010001518460200151612833909392919063ffffffff16565b611cfe600460405180604001604052806009815260200168185b5bdd5b9d13dd5d60ba1b8152508461012001518460200151612833909392919063ffffffff16565b6040810151611d0e9060036127ce565b604080518082018252600e81526d1c1c9a58d9525b5c1858dd155cd960921b602082015261014084015191830151611d4a929091600091612833565b60408051808201825260118152701c1c9a58d9525b5c1858dd105b5bdd5b9d607a1b602082015261016084015191830151611d89929091600191612833565b60408051808201825260188152771d1bdad95b925b941c9a58d9525b5c1858dd105b5bdd5b9d60421b602082015261018084015191830151611dcf929091600291612833565b826001600160a01b03166324de01e4611df284602001516001600160a01b031690565b836040518363ffffffff1660e01b8152600401611e10929190614246565b600060405180830381600087803b158015611e2a57600080fd5b505af1158015611e3e573d6000803e3d6000fd5b50505050505050565b80516001600160a01b0316611e6f576040516302fde0d760e11b815260040160405180910390fd5b6000826001600160a01b0316637ae1cfca611e8d84600001516128e3565b6040518263ffffffff1660e01b8152600401611eab91815260200190565b602060405180830381865afa158015611ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eec91906136db565b90508015611f105781516040516309f8c93760e01b81526100e191906004016136f8565b505050565b6000604051602001611f4a906020808252600f908201526e29aba0a82fa322a2afa320a1aa27a960891b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080015b60405160208183030381529060405280519060200120905092915050565b60006040516020016105f79060208082526016908201527520aa27a6a4a1afa9aba0a82fa322a2afa320a1aa27a960511b604082015260600190565b6000604051602001611f4a906020808252601290820152712222a827a9a4aa2fa322a2afa320a1aa27a960711b604082015260600190565b6000604051602001611f4a906020808252601590820152742ba4aa24222920aba0a62fa322a2afa320a1aa27a960591b604082015260600190565b60006040516020016105f7906020808252601c908201527b20aa27a6a4a1afaba4aa24222920aba0a62fa322a2afa320a1aa27a960211b604082015260600190565b60006120a8838368327cb2734119d3b7a9601e1b61291b565b9392505050565b600080836001600160a01b031663bd02d0f56040516020016120f69060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161212a91815260200190565b602060405180830381865afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b91906138c0565b90506000846001600160a01b031663bd02d0f561218786612928565b6040518263ffffffff1660e01b81526004016121a591815260200190565b602060405180830381865afa1580156121c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e691906138c0565b90508181106121f55781611917565b949350505050565b600080600080600085131561226757612219866020015161139c565b612223908661433c565b915060006122356108858b8b8b61295b565b905080831315612261576020870151612251610cf2838661436a565b61225b91906137c9565b91508092505b50612278565b612275858760000151612976565b91505b90925090505b9550959350505050565b600080866001600160a01b0316638ca498b06122a487876129ea565b856040518363ffffffff1660e01b81526004016122c292919061368e565b6020604051808303816000875af11580156122e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230591906138c0565b604051630553bdb560e11b8152909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf090630aa77b6a906118e39089908990899089908890600401613985565b6000604051602001612378906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038086169183019190915283166060820152608001611f80565b6000806000876001600160a01b031663a6ed563e6123d68860000151612a27565b6040518263ffffffff1660e01b81526004016123f491815260200190565b602060405180830381865afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243591906138c0565b90508061244957600080925092505061227e565b60006124558787612a5e565b90506000896001600160a01b0316638ca498b06124728585612ad6565b886040518363ffffffff1660e01b815260040161249092919061368e565b6020604051808303816000875af11580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d391906138c0565b885160405163a814bb6f60e01b81526001600160a01b03808d16600483015290911660248201528315156044820152606481018590526084810188905260a48101829052909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf09063a814bb6f9060c40160006040518083038186803b15801561255157600080fd5b505af4158015612565573d6000803e3d6000fd5b5060019d939c50929a5050505050505050505050565b60008061259084604001518560600151612b48565b905080856001600160a01b031663bd02d0f56125b0876000015187612347565b6040518263ffffffff1660e01b81526004016125ce91815260200190565b602060405180830381865afa1580156125eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260f91906138c0565b6119179190613905565b6000836001600160a01b031663bd02d0f56126348585612b77565b6040518263ffffffff1660e01b815260040161265291815260200190565b602060405180830381865afa15801561266f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f591906138c0565b600080836126a55785606001516126ab565b85604001515b905060006126ba88888461257b565b9050600084156126e857856126d7578660400151602001516126e1565b8660200151602001515b9050612702565b856126f8576040870151516126ff565b6020870151515b90505b61270c81836137c9565b9998505050505050505050565b6000836001600160a01b031663bd02d0f56126348585612bac565b600080821561276557600061274a878786612be0565b85516020015190915061275d90826137c9565b915050611917565b612770868685612c3e565b9695505050505050565b60008060008061278e898989896001612c85565b905060006127a28a878b600001518a612cd5565b9050600080831380156127bc5750816127ba84611779565b115b9b929a50909850909650505050505050565b806001600160401b038111156127e6576127e6613392565b60405190808252806020026020018201604052801561282c57816020015b6040805180820190915260608152600060208201528152602001906001900390816128045790505b5090915250565b818460000151848151811061284a5761284a6136c5565b6020026020010151600001819052508084600001518481518110612870576128706136c5565b6020026020010151602001818152505050505050565b818460000151848151811061289d5761289d6136c5565b60200260200101516000018190525080846000015184815181106128c3576128c36136c5565b6020908102919091018101516001600160a01b0390921691015250505050565b60006040516020016105f7906020808252601290820152711254d7d3505492d15517d11254d05093115160721b604082015260600190565b60006121f5848484612d50565b60006040516020016105f7906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b6000836001600160a01b031663bd02d0f561263485856129ea565b6000808312156129b8576129898261139c565b6129928361139c565b61299c908561436a565b6129a790600161438a565b6129b1919061433c565b9050611374565b6129c18261139c565b60016129cc8461139c565b6129d6908661438a565b6129e0919061436a565b6120a8919061433c565b60006040516020016123789060208082526017908201527614d5d05417d253541050d517d413d3d317d05353d55395604a1b604082015260600190565b60006040516020016105f7906020808252601190820152701592549515505317d3505492d15517d251607a1b604082015260600190565b600082604001516001600160a01b0316826001600160a01b031614158015612a9c575082606001516001600160a01b0316826001600160a01b031614155b15612abe57825160405163785ee46960e01b81526100e1918491600401613761565b506040909101516001600160a01b0391821691161490565b6000604051602001612b17906020808252601b908201527a5649525455414c5f494e56454e544f52595f464f525f535741505360281b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018490528215156060820152608001611f80565b6000816001600160a01b0316836001600160a01b031614612b6a576001612b6d565b60025b60ff169392505050565b6000604051602001612378906020808252600f908201526e13505617d413d3d317d05353d55395608a1b604082015260600190565b6000604051602001611f4a906020808252600e908201526d2922a9a2a92b22afa320a1aa27a960911b604082015260600190565b600080612bf584604001518560600151612b48565b90506000612c0e86866000015187604001518786612e3a565b90506000612c2787876000015188606001518887612e3a565b9050612c338183613722565b979650505050505050565b600080612c5384604001518560600151612b48565b90506000612c6c86866000015187604001518786612ec0565b90506000612c2787876000015188606001518887612ec0565b600080612c96878787878715612693565b905080600003612caa576000915050611917565b6000612cbd888888600001518888612edd565b9050612cc98183612f69565b98975050505050505050565b6000846001600160a01b031663bd02d0f5612cf1868686612fa8565b6040518263ffffffff1660e01b8152600401612d0f91815260200190565b602060405180830381865afa158015612d2c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191791906138c0565b6000808060001985870985870292508281108382030391505080600003612d8a57838281612d8057612d806138ef565b04925050506120a8565b808411612dd15760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016100e1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600081866001600160a01b031663bd02d0f5612e57888888613037565b6040518263ffffffff1660e01b8152600401612e7591815260200190565b602060405180830381865afa158015612e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb691906138c0565b6127709190613905565b600081866001600160a01b031663bd02d0f5612e578888886130b9565b600080612eee610885888887612c3e565b90506000612efd888887612be0565b9050811580612f0a575080155b15612f1a57600092505050611917565b6000612f278787876130ec565b90506000612f3861088583856137c9565b9050600087612f5057612f4b828661436a565b612f5a565b612f5a858361436a565b9b9a5050505050505050505050565b600080612f7e612f7885613125565b84613138565b905060008413612f9f57612f918161139c565b612f9a906137e0565b6121f5565b6121f58161139c565b6000604051602001612fdc906020808252600e908201526d26a0ac2fa827262fa320a1aa27a960911b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018590526001600160a01b0384166060820152821515608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b6000604051602001613074906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a001613018565b6000604051602001613074906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b6000821561310d5781613100578351613106565b83602001515b90506120a8565b8161311c5783602001516121f5565b50509051919050565b6000808212156114065781600003611374565b60006120a8838360008083600003613152575060006120a8565b8115613171576131068468327cb2734119d3b7a9601e1b856001613188565b6121f58468327cb2734119d3b7a9601e1b85612d50565b600080613196868686612d50565b905060018360028111156131ac576131ac6138d9565b1480156131c95750600084806131c4576131c46138ef565b868809115b1561191757612770600182613722565b60405180610160016040528060006001600160a01b031681526020016131fd613378565b815260200161320a613378565b815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060c0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b604080516101208101909152606060e08201818152610100830191909152819081526020016132c9604051806040016040528060608152602001606081525090565b81526020016132eb604051806040016040528060608152602001606081525090565b815260200161330d604051806040016040528060608152602001606081525090565b815260200161332f604051806040016040528060608152602001606081525090565b8152602001613351604051806040016040528060608152602001606081525090565b8152602001613373604051806040016040528060608152602001606081525090565b905290565b604051806040016040528060008152602001600081525090565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156133ca576133ca613392565b60405290565b6040516101a081016001600160401b03811182821017156133ca576133ca613392565b604051601f8201601f191681016001600160401b038111828210171561341b5761341b613392565b604052919050565b6001600160a01b038116811461343857600080fd5b50565b803561344681613423565b919050565b600082601f83011261345c57600080fd5b813560206001600160401b0382111561347757613477613392565b613485818360051b016133f3565b82815260079290921b840181019181810190868411156134a457600080fd5b8286015b8481101561351b57608081890312156134c15760008081fd5b6134c96133a8565b81356134d481613423565b8152818501356134e381613423565b818601526040828101356134f681613423565b9082015260608281013561350981613423565b908201528352918301916080016134a8565b509695505050505050565b801515811461343857600080fd5b803561344681613526565b80356006811061344657600080fd5b60006020828403121561356057600080fd5b81356001600160401b038082111561357757600080fd5b908301906101a0828603121561358c57600080fd5b6135946133d0565b61359d8361343b565b81526135ab6020840161343b565b60208201526135bc6040840161343b565b60408201526135cd6060840161343b565b6060820152608083013560808201526135e860a0840161343b565b60a082015260c083013560c082015260e08301358281111561360957600080fd5b6136158782860161344b565b60e0830152506101008381013590820152610120915061363682840161343b565b82820152610140915061364a82840161343b565b82820152610160915061365e828401613534565b82820152610180915061367282840161353f565b91810191909152949350505050565b6001600160a01b03169052565b918252602082015260400190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156136ed57600080fd5b81516120a881613526565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052601160045260246000fd5b808201808211156113745761137461370c565b818103818111156113745761137461370c565b60006001820161375a5761375a61370c565b5060010190565b6001600160a01b0392831681529116602082015260400190565b60006040828403121561378d57600080fd5b604080519081016001600160401b03811182821017156137af576137af613392565b604052825181526020928301519281019290925250919050565b80820281158282048414176113745761137461370c565b6000600160ff1b82016137f5576137f561370c565b5060000390565b81516001600160a01b0316815260208083015161018083019161384f9084018280516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b50604083015161386260a0840182613681565b50606083015161387560c0840182613681565b50608083015160e083015260a0830151610100818185015260c085015161012085015260e0850151610140850152808501519150506138b961016084018215159052565b5092915050565b6000602082840312156138d257600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082613914576139146138ef565b500490565b6020808252601e908201527f4d41585f504e4c5f464143544f525f464f525f5749544844524157414c530000604082015260600190565b6020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6000815180845260005b818110156139df576020818501810151868301820152016139c3565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501808196508360051b810191508286016000805b86811015613a9a578385038a52825160408151818852613a40828901826139b9565b92890151888403898b01528051808552908a01938693508a0191505b80831015613a855783516001600160a01b03168252928901926001929092019190890190613a5c565b509b88019b9650505091850191600101613a1e565b509298975050505050505050565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b82811015613b1f57898603605f1901845284518051888852613af9898901826139b9565b918401516001600160a01b03169784019790975295509381019392810192600101613ad5565b50808801519550888503818a01525050505061191781836139ff565b600081518084526020808501808196508360051b810191508286016000805b86811015613a9a578385038a52825160408151818852613b7c828901826139b9565b92890151888403898b01528051808552908a01938693508a0191505b80831015613bb85783518252928901926001929092019190890190613b98565b509b88019b9650505091850191600101613b5a565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b82811015613c3b57898603605f1901845284518051888852613c1e898901826139b9565b918401519784019790975295509381019392810192600101613bfa565b50808801519550888503818a0152505050506119178183613b3b565b600081518084526020808501808196508360051b810191508286016000805b86811015613a9a578385038a52825160408151818852613c98828901826139b9565b92890151888403898b01528051808552908a01938693508a0191505b80831015613cd45783518252928901926001929092019190890190613cb4565b509b88019b9650505091850191600101613c76565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b82811015613d5757898603605f1901845284518051888852613d3a898901826139b9565b918401519784019790975295509381019392810192600101613d16565b50808801519550888503818a0152505050506119178183613c57565b600081518084526020808501808196508360051b810191508286016000805b86811015613a9a578385038a52825160408151818852613db4828901826139b9565b92890151888403898b01528051808552908a01938693508a0191505b80831015613df257835115158252928901926001929092019190890190613dd0565b509b88019b9650505091850191600101613d92565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b82811015613e7757898603605f1901845284518051888852613e58898901826139b9565b9184015115159784019790975295509381019392810192600101613e34565b50808801519550888503818a0152505050506119178183613d73565b600081518084526020808501808196508360051b810191508286016000805b86811015613a9a578385038a52825160408151818852613ed4828901826139b9565b92890151888403898b01528051808552908a01938693508a0191505b80831015613f105783518252928901926001929092019190890190613ef0565b509b88019b9650505091850191600101613eb2565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b82811015613f9357898603605f1901845284518051888852613f76898901826139b9565b918401519784019790975295509381019392810192600101613f52565b50808801519550888503818a0152505050506119178183613e93565b600081518084526020808501808196506005915083821b81018387016000805b8781101561405a578484038b52825160408151818752613ff1828801826139b9565b928a0151878403888c01528051808552908b019392508a83019150808a1b83018b01865b8281101561404357601f198583030184526140318287516139b9565b958d0195938d01939150600101614015565b509e8b019e97505050938801935050600101613fcf565b50919998505050505050505050565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b828110156140e657898603605f19018452845180518888526140ba898901826139b9565b91840151888303898601529190506140d281836139b9565b975050509381019392810192600101614096565b50808801519550888503818a0152505050506119178183613faf565b600081518084526020808501808196506005915083821b81018387016000805b8781101561405a578484038b52825160408151818752614144828801826139b9565b928a0151878403888c01528051808552908b019392508a83019150808a1b83018b01865b8281101561419657601f198583030184526141848287516139b9565b958d0195938d01939150600101614168565b509e8b019e97505050938801935050600101614122565b60006040808401835182865281815180845260608801915060608160051b89010193506020808401935060005b8281101561422a57898603605f19018452845180518888526141fe898901826139b9565b918401518883038986015291905061421681836139b9565b9750505093810193928101926001016141da565b50808801519550888503818a0152505050506119178183614102565b60608152600860608201526753776170496e666f60c01b608082015282602082015260a060408201526000825160e060a0840152614288610180840182613aa8565b90506020840151609f19808584030160c08601526142a68383613bcd565b925060408601519150808584030160e08601526142c38383613ce9565b92506060860151915080858403016101008601526142e18383613e07565b92506080860151915080858403016101208601526142ff8383613f25565b925060a08601519150808584030161014086015261431d8383614069565b925060c0860151915080858403016101608601525061277082826141ad565b60008261434b5761434b6138ef565b600160ff1b8214600019841416156143655761436561370c565b500590565b81810360008312801583831316838312821617156138b9576138b961370c565b80820182811260008312801582168215821617156143aa576143aa61370c565b50509291505056fea2646970667358221220f30ad9bb947eca0dccdd9eb795922b029dd4e5d1d272b3fcb5cc4f63e972d4da64736f6c63430008120033