4 txs
185.5k calls
constructor
constructor(address _admin, address[] routers)
functions
admin
viewfunction admin() view returns (address)
BPS
viewfunction BPS() view returns (uint256)
getAllUniRouters
viewfunction getAllUniRouters() view returns (address[] addresses)
getExpectedIn
viewfunction getExpectedIn(tuple params) view returns (uint256 srcAmount)
getExpectedInWithImpact
viewfunction getExpectedInWithImpact(tuple params) view returns (uint256 srcAmount, uint256 priceImpact)
getExpectedReturn
viewfunction getExpectedReturn(tuple params) view returns (uint256 destAmount)
getExpectedReturnWithImpact
viewfunction getExpectedReturnWithImpact(tuple params) view returns (uint256 destAmount, uint256 priceImpact)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
proxyContract
viewfunction proxyContract() view returns (address)
claimAdmin
nonpayablefunction claimAdmin()
swap
payablefunction swap(tuple params) payable returns (uint256 destAmount)
transferAdmin
nonpayablefunction transferAdmin(address newAdmin)
transferAdminQuickly
nonpayablefunction transferAdminQuickly(address newAdmin)
updateProxyContract
nonpayablefunction updateProxyContract(address _proxyContract)
updateUniRouters
nonpayablefunction updateUniRouters(address[] routers, bool isSupported)
withdrawEther
nonpayablefunction withdrawEther(uint256 amount, address sendTo)
withdrawToken
nonpayablefunction withdrawToken(address token, uint256 amount, address sendTo)
events
AdminClaimed
event AdminClaimed(address newAdmin, address previousAdmin)
EtherWithdraw
event EtherWithdraw(uint256 amount, address sendTo)
TokenWithdraw
event TokenWithdraw(address token, uint256 amount, address sendTo)
TransferAdminPending
event TransferAdminPending(address pendingAdmin)
UpdatedproxyContract
event UpdatedproxyContract(address indexed _oldProxyImpl, address indexed _newProxyImpl)
UpdatedUniRouters
event UpdatedUniRouters(address[] routers, bool isSupported)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b5060405162004b3a38038062004b3a833981016040819052620000349162000186565b8180806001600160a01b0381166200007d576040805162461bcd60e51b8152602060048201526007602482015266061646d696e20360cc1b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03929092169190911781559150505b8151811015620000e457620000da828281518110620000bc57fe5b60200260200101516004620000ed60201b620012241790919060201c565b50600101620000a1565b50505062000276565b600062000104836001600160a01b0384166200010d565b90505b92915050565b60006200011b83836200015c565b620001535750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000107565b50600062000107565b60009081526001919091016020526040902054151590565b805162000181816200025d565b919050565b6000806040838503121562000199578182fd5b8251620001a6816200025d565b602084810151919350906001600160401b0380821115620001c5578384fd5b818601915086601f830112620001d9578384fd5b815181811115620001e657fe5b838102604051858282010181811085821117156200020057fe5b604052828152858101935084860182860187018b10156200021f578788fd5b8795505b838610156200024c57620002378162000174565b85526001959095019493860193860162000223565b508096505050505050509250929050565b6001600160a01b03811681146200027357600080fd5b50565b6148b480620002866000396000f3fe6080604052600436106101025760003560e01c806368aa6dd911610095578063ce56c45411610064578063ce56c45414610295578063d6ba0bfc146102b5578063e19b609d146102d5578063ed550443146102f5578063f851a4401461030a57610109565b806368aa6dd91461022d57806375829def1461024057806377f50f97146102605780637acc86781461027557610109565b80633ccdbb28116100d15780633ccdbb28146101ab57806343bea4b3146101cb5780634582d279146101eb5780634db1d03d1461020d57610109565b806305a727091461010e5780631373524614610145578063249d39e914610167578063267822471461018957610109565b3661010957005b600080fd5b34801561011a57600080fd5b5061012e610129366004614136565b61031f565b60405161013c9291906146bb565b60405180910390f35b34801561015157600080fd5b50610165610160366004613f4a565b61053e565b005b34801561017357600080fd5b5061017c61060c565b60405161013c919061469b565b34801561019557600080fd5b5061019e610612565b60405161013c91906143b7565b3480156101b757600080fd5b506101656101c63660046140e6565b610621565b3480156101d757600080fd5b5061017c6101e6366004614136565b6106d0565b3480156101f757600080fd5b50610200610804565b60405161013c91906143e5565b34801561021957600080fd5b5061017c610228366004614136565b61089f565b61017c61023b366004614169565b610982565b34801561024c57600080fd5b5061016561025b366004613f4a565b610ba5565b34801561026c57600080fd5b50610165610c98565b34801561028157600080fd5b50610165610290366004613f4a565b610d58565b3480156102a157600080fd5b506101656102b03660046142fd565b610e8f565b3480156102c157600080fd5b506101656102d0366004614066565b610fbb565b3480156102e157600080fd5b5061012e6102f0366004614136565b6110c1565b34801561030157600080fd5b5061019e611206565b34801561031657600080fd5b5061019e611215565b60035460009081906001600160a01b031633146103575760405162461bcd60e51b815260040161034e906145b2565b60405180910390fd5b600261036660208501856146c9565b905010156103865760405162461bcd60e51b815260040161034e90614587565b6000806103b3600161039b60208801886146c9565b9050038680606001906103ae9190614717565b611242565b863595509092509050600060016103cd60208801886146c9565b90500390505b80156104605761045583866103eb60208a018a6146c9565b600186038181106103f857fe5b905060200201602081019061040d9190613f4a565b61041a60208b018b6146c9565b8681811061042457fe5b90506020020160208101906104399190613f4a565b86600187038151811061044857fe5b60200260200101516113a2565b9450600019016103d3565b508360005b600161047460208901896146c9565b905003811015610501576104f7848361049060208b018b6146c9565b8581811061049a57fe5b90506020020160208101906104af9190613f4a565b6104bc60208c018c6146c9565b866001018181106104c957fe5b90506020020160208101906104de9190613f4a565b8786815181106104ea57fe5b60200260200101516113c8565b9150600101610465565b50853581116105135760009350610536565b8061052b612710610525838a3561155a565b9061156a565b8161053257fe5b0493505b505050915091565b6000546001600160a01b0316331461058a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6001600160a01b0381166105b05760405162461bcd60e51b815260040161034e90614507565b6003546040516001600160a01b038084169216907f7c5d026310440df4ec67ef47368cd26898f9dbec4b95934dbbc4a3d9d46c49a990600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b61271081565b6001546001600160a01b031681565b6000546001600160a01b0316331461066d576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6106816001600160a01b038416828461158e565b604080516001600160a01b0380861682526020820185905283168183015290517f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e69181900360600190a1505050565b6003546000906001600160a01b031633146106fd5760405162461bcd60e51b815260040161034e906145b2565b600261070c60208401846146c9565b9050101561072c5760405162461bcd60e51b815260040161034e90614587565b600080610754600161074160208701876146c9565b9050038580606001906103ae9190614717565b85359450909250905060005b600161076f60208701876146c9565b9050038110156107fc576107f2838561078b60208901896146c9565b8581811061079557fe5b90506020020160208101906107aa9190613f4a565b6107b760208a018a6146c9565b866001018181106107c457fe5b90506020020160208101906107d99190613f4a565b8686815181106107e557fe5b60200260200101516115e5565b9350600101610760565b505050919050565b6060600061081260046115fc565b90508067ffffffffffffffff8111801561082b57600080fd5b50604051908082528060200260200182016040528015610855578160200160208202803683370190505b50915060005b8181101561089a5761086e60048261160f565b83828151811061087a57fe5b6001600160a01b039092166020928302919091019091015260010161085b565b505090565b6003546000906001600160a01b031633146108cc5760405162461bcd60e51b815260040161034e906145b2565b60026108db60208401846146c9565b905010156108fb5760405162461bcd60e51b815260040161034e90614587565b600080610910600161074160208701876146c9565b8535945090925090506000600161092a60208701876146c9565b90500390505b80156107fc57610977838561094860208901896146c9565b6001860381811061095557fe5b905060200201602081019061096a9190613f4a565b61041a60208a018a6146c9565b935060001901610930565b6003546000906001600160a01b031633146109af5760405162461bcd60e51b815260040161034e906145b2565b60026109be60408401846146c9565b905010156109de5760405162461bcd60e51b815260040161034e90614587565b600080610a0660016109f360408701876146c9565b905003858060c001906103ae9190614717565b9092509050610a4182610a1c60408701876146c9565b6000818110610a2757fe5b9050602002016020810190610a3c9190613f4a565b61161b565b610a96610a5160408601866146c9565b6001610a6060408901896146c9565b905003818110610a6c57fe5b9050602002016020810190610a819190613f4a565b610a916080870160608801613f4a565b6116e2565b9250610aa560408501856146c9565b905060021415610b1557610b108285356020870135610ac760408901896146c9565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250610b0b91505060808b0160608c01613f4a565b61179a565b610b43565b610b438285356020870135610b2d60408901896146c9565b86610b3e60808c0160608d01613f4a565b611b41565b610b9d83610b97610b5760408801886146c9565b6001610b6660408b018b6146c9565b905003818110610b7257fe5b9050602002016020810190610b879190613f4a565b610a916080890160608a01613f4a565b9061155a565b949350505050565b6000546001600160a01b03163314610bf1576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6001600160a01b038116610c3a576040805162461bcd60e51b815260206004820152600b60248201526a06e65772061646d696e20360ac1b604482015290519081900360640190fd5b604080516001600160a01b038316815290517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314610ce5576040805162461bcd60e51b815260206004820152600b60248201526a6e6f742070656e64696e6760a81b604482015290519081900360640190fd5b600154600054604080516001600160a01b03938416815292909116602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b03163314610da4576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6001600160a01b038116610de9576040805162461bcd60e51b8152602060048201526007602482015266061646d696e20360cc1b604482015290519081900360640190fd5b604080516001600160a01b038316815290517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600054604080516001600160a01b038085168252909216602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610edb576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6040516000906001600160a01b0383169084908381818185875af1925050503d8060008114610f26576040519150601f19603f3d011682016040523d82523d6000602084013e610f2b565b606091505b5050905080610f73576040805162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015290519081900360640190fd5b604080518481526001600160a01b038416602082015281517fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de929181900390910190a1505050565b6000546001600160a01b03163314611007576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b60005b8281101561108057811561104a5761104484848381811061102757fe5b905060200201602081019061103c9190613f4a565b600490611224565b50611078565b61107684848381811061105957fe5b905060200201602081019061106e9190613f4a565b600490611f39565b505b60010161100a565b507f56f34eb6bd4451b93fcc586e59d7ca42dba8fdb9fc157152eb3b4d0cf190b2c28383836040516110b493929190614492565b60405180910390a1505050565b60035460009081906001600160a01b031633146110f05760405162461bcd60e51b815260040161034e906145b2565b60026110ff60208501856146c9565b9050101561111f5760405162461bcd60e51b815260040161034e90614587565b600080611134600161039b60208801886146c9565b8635955090925090508360005b600161115060208901896146c9565b9050038110156111e4576111c6848761116c60208b018b6146c9565b8581811061117657fe5b905060200201602081019061118b9190613f4a565b61119860208c018c6146c9565b866001018181106111a557fe5b90506020020160208101906111ba9190613f4a565b8786815181106107e557fe5b95506111da848361049060208b018b6146c9565b9150600101611141565b508481116111f55760009350610536565b8061052b612710610525838961155a565b6003546001600160a01b031681565b6000546001600160a01b031681565b6000611239836001600160a01b038416611f4e565b90505b92915050565b600060608467ffffffffffffffff8111801561125d57600080fd5b50604051908082528060200260200182016040528015611287578160200160208202803683370190505b5090506112ce600085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611f989050565b915060005b8581101561134c576113248160030260140186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506120489050565b82828151811061133057fe5b62ffffff909216602092830291909101909101526001016112d3565b506001600160a01b0382166113735760405162461bcd60e51b815260040161034e90614532565b61137e6004836120ef565b61139a5760405162461bcd60e51b815260040161034e9061455b565b935093915050565b60006113bc866113b187612104565b60000386868661211a565b90505b95945050505050565b60008061144f876001600160a01b031663d5f394886040518163ffffffff1660e01b815260040160206040518083038186803b15801561140757600080fd5b505afa15801561141b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143f9190613f66565b61144a87878761267c565b6126de565b90506001600160a01b0380851690861610611468613e60565b826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156114a157600080fd5b505afa1580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d9919061425a565b5050505050600290810b900b60608301526001600160a01b031660408201526000826115145761150f82606001516000036127bd565b61151a565b81604001515b905060606115318a6001600160a01b03841661156a565b901c9450606061154a866001600160a01b03841661156a565b901c9a9950505050505050505050565b8082038281111561123c57600080fd5b60008215806115855750508181028183828161158257fe5b04145b61123c57600080fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115e0908490612aef565b505050565b60006113bc866115f487612104565b86868661211a565b600061160782612ba0565b90505b919050565b60006112398383612ba4565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906116c35750604051636eb1769f60e11b81526001600160a01b0382169063dd62ed3e9061167190309086906004016143cb565b60206040518083038186803b15801561168957600080fd5b505afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c191906142e5565b155b156116de576116de6001600160a01b03821683600019612c08565b5050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561171a57506001600160a01b0381163161123c565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d602081101561179157600080fd5b5051905061123c565b6000604051806101000160405280611836866000815181106117b857fe5b60200260200101518a6001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117f957600080fd5b505afa15801561180d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118319190613f66565b612d1b565b6001600160a01b03168152602001611854866001815181106117b857fe5b6001600160a01b031681526020018460008151811061186f57fe5b602002602001015162ffffff168152602001836001600160a01b03168152602001600019815260200187815260200186815260200160006001600160a01b0316815250905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316846001865103815181106118e257fe5b60200260200101516001600160a01b03161415611a6e576000606082810182905260408051600280825292810190915290816020015b606081526020019060019003908161191857905050905063414bf389826040516024016119459190614632565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050508160008151811061197e57fe5b60200260200101819052506349404b7c86846040516024016119a19291906146a4565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050816001815181106119da57fe5b6020908102919091010152604051631592ca1b60e31b81526001600160a01b0389169063ac9650d890611a11908490600401614432565b600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a679190810190613f82565b5050611b38565b866001600160a01b031663414bf38973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031686600081518110611aa857fe5b60200260200101516001600160a01b031614611ac5576000611ac7565b875b836040518363ffffffff1660e01b8152600401611ae49190614632565b6020604051808303818588803b158015611afd57600080fd5b505af1158015611b11573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b3691906142e5565b505b50505050505050565b6000611ba185856000818110611b5357fe5b9050602002016020810190611b689190613f4a565b896001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117f957600080fd5b604051602001611bb19190614358565b604051602081830303815290604052905060005b8351811015611c6f5781848281518110611bdb57fe5b6020026020010151611c43888885600101818110611bf557fe5b9050602002016020810190611c0a9190613f4a565b8c6001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117f957600080fd5b604051602001611c5593929190614370565b60408051601f198184030181529190529150600101611bc5565b506040805160a0810182528281526001600160a01b038416602082015260001991810182905260608101899052608081018890529073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90879087908101818110611cc957fe5b9050602002016020810190611cde9190613f4a565b6001600160a01b03161415611e62576000602082018190526040805160028082526060820190925290816020015b6060815260200190600190039081611d0c57905050905063c04b8d5982604051602401611d3991906145da565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505081600081518110611d7257fe5b60200260200101819052506349404b7c8885604051602401611d959291906146a4565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505081600181518110611dce57fe5b6020908102919091010152604051631592ca1b60e31b81526001600160a01b038b169063ac9650d890611e05908490600401614432565b600060405180830381600087803b158015611e1f57600080fd5b505af1158015611e33573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5b9190810190613f82565b5050611f2e565b6001600160a01b03891663c04b8d5973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8888600081611e9157fe5b9050602002016020810190611ea69190613f4a565b6001600160a01b031614611ebb576000611ebd565b895b836040518363ffffffff1660e01b8152600401611eda91906145da565b6020604051808303818588803b158015611ef357600080fd5b505af1158015611f07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f2c91906142e5565b505b505050505050505050565b6000611239836001600160a01b038416612d4d565b6000611f5a8383612e13565b611f905750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561123c565b50600061123c565b600081826014011015611fe7576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015612038576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015612096576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b81600301835110156120e6576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b6000611239836001600160a01b038416612e13565b6000600160ff1b821061211657600080fd5b5090565b600080612159876001600160a01b031663d5f394886040518163ffffffff1660e01b815260040160206040518083038186803b15801561140757600080fd5b90506000816001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ce919061411c565b90506001600160a01b03808616908716106000816122005773fffd8963efd1fc6a506488495d951d5263988d25612207565b6401000276a45b9050612211613e60565b8981526000602082015260408051633850c7bd60e01b815290516001600160a01b03871691633850c7bd9160048083019260e0929190829003018186803b15801561225b57600080fd5b505afa15801561226f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612293919061425a565b5050505050600290810b900b60608301526001600160a01b039081166040808401919091528051630d34328160e11b8152905191871691631a68650291600480820192602092909190829003018186803b1580156122f057600080fd5b505afa158015612304573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232891906141a1565b6001600160801b0316608082015260008a135b8151158015906123615750826001600160a01b031682604001516001600160a01b031614155b156126485761236e613e8e565b60408301516001600160a01b0390811682526060840151612393918916908888612e2b565b15156040830152600290810b810b60208301819052620d89e719910b12156123c457620d89e71960208201526123e3565b6020810151620d89e860029190910b13156123e357620d89e860208201525b6123f081602001516127bd565b6001600160a01b031660608201526040830151612461908661242a57856001600160a01b031683606001516001600160a01b031611612444565b856001600160a01b031683606001516001600160a01b0316105b612452578260600151612454565b855b608086015186518d613037565b60c085015260a084015260808301526001600160a01b0316604084015281156124c3576124978160c00151826080015101612104565b835103835260a08101516124b9906124ae90612104565b602085015190613229565b60208401526124fe565b6124d08160a00151612104565b835101835260c081015160808201516124f8916124ed9101612104565b60208501519061323f565b60208401525b80606001516001600160a01b031683604001516001600160a01b03161415612607578060400151156125de57602081015160405163f30dba9360e01b81526000916001600160a01b038a169163f30dba939161255c916004016144f9565b6101006040518083038186803b15801561257557600080fd5b505afa158015612589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ad91906141bb565b50505050505091505085156125c0576000035b6125ce846080015182613255565b6001600160801b03166080850152505b846125ed5780602001516125f6565b60018160200151035b600290810b900b6060840152612642565b80600001516001600160a01b031683604001516001600160a01b03161461264257612635836040015161330b565b600290810b900b60608401525b5061233b565b60008260200151121561266957506020015160000394506113bf9350505050565b50602001519a9950505050505050505050565b612684613eca565b826001600160a01b0316846001600160a01b031611156126a2579192915b6040518060600160405280856001600160a01b03168152602001846001600160a01b031681526020018362ffffff1681525090505b9392505050565b600081602001516001600160a01b031682600001516001600160a01b03161061270657600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6001600160601b03191660a183015260b58201939093527f6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e260d5808301919091528251808303909101815260f5909101909152805191012090565b60008060008360020b126127d4578260020b6127dc565b8260020b6000035b9050620d89e881111561281a576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661282e57600160801b612840565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612874576ffff97272373d413259a46990580e213a0260801c5b6004821615612893576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156128b2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156128d1576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156128f0576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561290f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561292e576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561294e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561296e576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561298e576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156129ae576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156129ce576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156129ee576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612a0e576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612a2e576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612a4f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612a6f576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a8e576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612aab576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612ac6578060001981612ac257fe5b0490505b640100000000810615612ada576001612add565b60005b60ff16602082901c0192505050919050565b6000612b44826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661362a9092919063ffffffff16565b8051909150156115e057808060200190516020811015612b6357600080fd5b50516115e05760405162461bcd60e51b815260040180806020018281038252602a81526020018061481f602a913960400191505060405180910390fd5b5490565b81546000908210612be65760405162461bcd60e51b81526004018080602001828103825260228152602001806147d76022913960400191505060405180910390fd5b826000018281548110612bf557fe5b9060005260206000200154905092915050565b801580612c8e575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015612c6057600080fd5b505afa158015612c74573d6000803e3d6000fd5b505050506040513d6020811015612c8a57600080fd5b5051155b612cc95760405162461bcd60e51b81526004018080602001828103825260368152602001806148496036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526115e0908490612aef565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14612d475782611239565b50919050565b60008181526001830160205260408120548015612e095783546000198083019190810190600090879083908110612d8057fe5b9060005260206000200154905080876000018481548110612d9d57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080612dcd57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061123c565b600091505061123c565b60009081526001919091016020526040902054151590565b60008060008460020b8660020b81612e3f57fe5b05905060008660020b128015612e6657508460020b8660020b81612e5f57fe5b0760020b15155b15612e7057600019015b8315612f4e57600080612e8283613639565b60405163299ce14b60e11b81529193509150600160ff83161b8001600019019060009082906001600160a01b038d1690635339c29690612ec69088906004016144eb565b60206040518083038186803b158015612ede57600080fd5b505afa158015612ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1691906142e5565b168015159650905085612f3057888360ff16860302612f43565b88612f3a8261364b565b840360ff168603025b96505050505061302d565b600080612f5d83600101613639565b60405163299ce14b60e11b81529193509150600019600160ff84161b01199060009082906001600160a01b038d1690635339c29690612fa09088906004016144eb565b60206040518083038186803b158015612fb857600080fd5b505afa158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff091906142e5565b16801515965090508561301057888360ff0360ff16866001010102613026565b888361301b836136eb565b0360ff168660010101025b9650505050505b5094509492505050565b60008080806001600160a01b03808916908a1610158187128015906130bc5760006130708989620f42400362ffffff16620f42406137d5565b905082613089576130848c8c8c6001613884565b613096565b6130968b8d8c60016138f4565b95508581106130a7578a96506130b6565b6130b38c8b838661399f565b96505b50613106565b816130d3576130ce8b8b8b60006138f4565b6130e0565b6130e08a8c8b6000613884565b93508388600003106130f457899550613106565b6131038b8a8a600003856139eb565b95505b6001600160a01b038a8116908716148215613169578080156131255750815b61313b57613136878d8c60016138f4565b61313d565b855b955080801561314a575081155b6131605761315b878d8c6000613884565b613162565b845b94506131b3565b8080156131735750815b613189576131848c888c6001613884565b61318b565b855b9550808015613198575081155b6131ae576131a98c888c60006138f4565b6131b0565b845b94505b811580156131c357508860000385115b156131cf578860000394505b8180156131ee57508a6001600160a01b0316876001600160a01b031614155b156131fd57858903935061321a565b613217868962ffffff168a620f42400362ffffff16613a37565b93505b50505095509550955095915050565b8082038281131560008312151461123c57600080fd5b8181018281121560008312151461123c57600080fd5b60008082600f0b12156132ba57826001600160801b03168260000384039150816001600160801b0316106132b5576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b61123c565b826001600160801b03168284019150816001600160801b0316101561123c576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613347575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61337c576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061341057607f810383901c915061341a565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461361b57886001600160a01b03166135ff826127bd565b6001600160a01b031611156136145781613616565b805b61361d565b815b9998505050505050505050565b6060610b9d8484600085613a71565b60020b600881901d9161010090910790565b600080821161365957600080fd5b600160801b821061366c57608091821c91015b68010000000000000000821061368457604091821c91015b640100000000821061369857602091821c91015b6201000082106136aa57601091821c91015b61010082106136bb57600891821c91015b601082106136cb57600491821c91015b600482106136db57600291821c91015b6002821061160a57600101919050565b60008082116136f957600080fd5b5060ff6001600160801b0382161561371457607f190161371c565b608082901c91505b67ffffffffffffffff82161561373557603f190161373d565b604082901c91505b63ffffffff82161561375257601f190161375a565b602082901c91505b61ffff82161561376d57600f1901613775565b601082901c91505b60ff821615613787576007190161378f565b600882901c91505b600f8216156137a157600319016137a9565b600482901c91505b60038216156137bb57600119016137c3565b600282901c91505b600182161561160a5760001901919050565b600080806000198587098686029250828110908390030390508061380b576000841161380057600080fd5b5082900490506126d7565b80841161381757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000836001600160a01b0316856001600160a01b031611156138a4579293925b816138d1576138cc836001600160801b03168686036001600160a01b0316600160601b6137d5565b6113bf565b6113bf836001600160801b03168686036001600160a01b0316600160601b613a37565b6000836001600160a01b0316856001600160a01b03161115613914579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661393e57600080fd5b8361396e57866001600160a01b03166139618383896001600160a01b03166137d5565b8161396857fe5b04613994565b6139946139858383896001600160a01b0316613a37565b886001600160a01b0316613bc1565b979650505050505050565b600080856001600160a01b0316116139b657600080fd5b6000846001600160801b0316116139cc57600080fd5b816139de576138cc8585856001613bcc565b6113bf8585856001613cad565b600080856001600160a01b031611613a0257600080fd5b6000846001600160801b031611613a1857600080fd5b81613a2a576138cc8585856000613cad565b6113bf8585856000613bcc565b6000613a448484846137d5565b905060008280613a5057fe5b84860911156126d7576000198110613a6757600080fd5b6001019392505050565b606082471015613ab25760405162461bcd60e51b81526004018080602001828103825260268152602001806147f96026913960400191505060405180910390fd5b613abb85613d90565b613b0c576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310613b4a5780518252601f199092019160209182019101613b2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613bac576040519150601f19603f3d011682016040523d82523d6000602084013e613bb1565b606091505b5091509150613994828286613d96565b808204910615150190565b60008115613c3f5760006001600160a01b03841115613c0257613bfd84600160601b876001600160801b03166137d5565b613c1a565b6001600160801b038516606085901b81613c1857fe5b045b9050613c37613c326001600160a01b03881683613e3a565b613e4a565b915050610b9d565b60006001600160a01b03841115613c6d57613c6884600160601b876001600160801b0316613a37565b613c84565b613c84606085901b6001600160801b038716613bc1565b905080866001600160a01b031611613c9b57600080fd5b6001600160a01b038616039050610b9d565b600082613cbb575083610b9d565b600160601b600160e01b03606085901b168215613d49576001600160a01b03861684810290858281613ce957fe5b041415613d1a57818101828110613d1857613d0e83896001600160a01b031683613a37565b9350505050610b9d565b505b613d4082613d3b878a6001600160a01b03168681613d3457fe5b0490613e3a565b613bc1565b92505050610b9d565b6001600160a01b03861684810290858281613d6057fe5b04148015613d6d57508082115b613d7657600080fd5b808203613d0e613c32846001600160a01b038b1684613a37565b3b151590565b60608315613da55750816126d7565b825115613db55782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613dff578181015183820152602001613de7565b50505050905090810190601f168015613e2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b8082018281101561123c57600080fd5b806001600160a01b038116811461160a57600080fd5b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b604080516060810182526000808252602082018190529181019190915290565b8051600281900b811461160a57600080fd5b600060808284031215612d47578081fd5b80516001600160801b038116811461160a57600080fd5b805161ffff8116811461160a57600080fd5b805163ffffffff8116811461160a57600080fd5b600060208284031215613f5b578081fd5b81356126d7816147b0565b600060208284031215613f77578081fd5b81516126d7816147b0565b60006020808385031215613f94578182fd5b825167ffffffffffffffff80821115613fab578384fd5b8185019150601f8681840112613fbf578485fd5b825182811115613fcb57fe5b613fd8858683020161475c565b81815285810190858701885b8481101561405657815188018c603f820112613ffe578a8bfd5b8981015160408982111561400e57fe5b61401f828a01601f19168d0161475c565b8281528f82848601011115614032578d8efd5b614041838e8301848701614780565b87525050509288019290880190600101613fe4565b50909a9950505050505050505050565b60008060006040848603121561407a578182fd5b833567ffffffffffffffff80821115614091578384fd5b818601915086601f8301126140a4578384fd5b8135818111156140b2578485fd5b87602080830285010111156140c5578485fd5b602092830195509350508401356140db816147c8565b809150509250925092565b6000806000606084860312156140fa578283fd5b8335614105816147b0565b92506020840135915060408401356140db816147b0565b60006020828403121561412d578081fd5b61123982613eea565b600060208284031215614147578081fd5b813567ffffffffffffffff81111561415d578182fd5b610b9d84828501613efc565b60006020828403121561417a578081fd5b813567ffffffffffffffff811115614190578182fd5b820160e081850312156126d7578182fd5b6000602082840312156141b2578081fd5b61123982613f0d565b600080600080600080600080610100898b0312156141d7578586fd5b6141e089613f0d565b9750602089015180600f0b81146141f5578687fd5b80975050604089015195506060890151945060808901518060060b811461421a578485fd5b60a08a015190945061422b816147b0565b925061423960c08a01613f36565b915060e0890151614249816147c8565b809150509295985092959890939650565b600080600080600080600060e0888a031215614274578081fd5b875161427f816147b0565b965061428d60208901613eea565b955061429b60408901613f24565b94506142a960608901613f24565b93506142b760808901613f24565b92506142c560a08901613f36565b915060c08801516142d5816147c8565b8091505092959891949750929550565b6000602082840312156142f6578081fd5b5051919050565b6000806040838503121561430f578182fd5b823591506020830135614321816147b0565b809150509250929050565b60008151808452614344816020860160208601614780565b601f01601f19169290920160200192915050565b60609190911b6001600160601b031916815260140190565b60008451614382818460208901614780565b60e89490941b6001600160e81b0319169190930190815260609190911b6001600160601b031916600382015260170192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156144265783516001600160a01b031683529284019291840191600101614401565b50909695505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561448557603f1988860301845261447385835161432c565b94509285019290850190600101614457565b5092979650505050505050565b6040808252810183905260008460608301825b868110156144d55782356144b8816147b0565b6001600160a01b03168252602092830192909101906001016144a5565b5080925050508215156020830152949350505050565b60019190910b815260200190565b60029190910b815260200190565b6020808252601190820152701a5b9d985b1a59081cddd85c081a5b5c1b607a1b604082015260600190565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b6020808252601290820152713ab739bab83837b93a32b2103937baba32b960711b604082015260600190565b6020808252601190820152700d2dcecc2d8d2c840e8e4c2c8caa0c2e8d607b1b604082015260600190565b6020808252600e908201526d1bdb9b1e481cddd85c081a5b5c1b60921b604082015260600190565b600060208252825160a060208401526145f660c084018261432c565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b6000808335601e198436030181126146df578283fd5b83018035915067ffffffffffffffff8211156146f9578283fd5b602090810192508102360382131561471057600080fd5b9250929050565b6000808335601e1984360301811261472d578283fd5b83018035915067ffffffffffffffff821115614747578283fd5b60200191503681900382131561471057600080fd5b60405181810167ffffffffffffffff8111828210171561477857fe5b604052919050565b60005b8381101561479b578181015183820152602001614783565b838111156147aa576000848401525b50505050565b6001600160a01b03811681146147c557600080fd5b50565b80151581146147c557600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220db42d320b72977d8db6ede699193a85ef5720848b72f362ee06c3052bb495f8664736f6c634300070600330000000000000000000000005eb89aad9f1a69eba2a05767c81aab13225faf8d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14