0 txs
4 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address, address) view returns (uint256)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
blockTimestampLast
viewfunction blockTimestampLast() view returns (uint256)
claimable0
viewfunction claimable0(address) view returns (uint256)
claimable1
viewfunction claimable1(address) view returns (uint256)
current
viewfunction current(address tokenIn, uint256 amountIn) view returns (uint256 amountOut)
currentCumulativePrices
viewfunction currentCumulativePrices() view returns (uint256 reserve0Cumulative, uint256 reserve1Cumulative, uint256 blockTimestamp)
decimals
viewfunction decimals() view returns (uint8)
fees
viewfunction fees() view returns (address)
getAmountOut
viewfunction getAmountOut(uint256 amountIn, address tokenIn) view returns (uint256)
getReserves
viewfunction getReserves() view returns (uint256 _reserve0, uint256 _reserve1, uint256 _blockTimestampLast)
index0
viewfunction index0() view returns (uint256)
index1
viewfunction index1() view returns (uint256)
isStable
viewfunction isStable() view returns (bool)
lastObservation
viewfunction lastObservation() view returns (tuple)
metadata
viewfunction metadata() view returns (uint256 dec0, uint256 dec1, uint256 r0, uint256 r1, bool st, address t0, address t1)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
observationLength
viewfunction observationLength() view returns (uint256)
observations
viewfunction observations(uint256) view returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative)
prices
viewfunction prices(address tokenIn, uint256 amountIn, uint256 points) view returns (uint256[])
quote
viewfunction quote(address tokenIn, uint256 amountIn, uint256 granularity) view returns (uint256 amountOut)
reserve0
viewfunction reserve0() view returns (uint256)
reserve0CumulativeLast
viewfunction reserve0CumulativeLast() view returns (uint256)
reserve1
viewfunction reserve1() view returns (uint256)
reserve1CumulativeLast
viewfunction reserve1CumulativeLast() view returns (uint256)
sample
viewfunction sample(address tokenIn, uint256 amountIn, uint256 points, uint256 window) view returns (uint256[])
stable
viewfunction stable() view returns (bool)
supplyIndex0
viewfunction supplyIndex0(address) view returns (uint256)
supplyIndex1
viewfunction supplyIndex1(address) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
token0
viewfunction token0() view returns (address)
token1
viewfunction token1() view returns (address)
tokens
viewfunction tokens() view returns (address, address)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(address to) returns (uint256 amount0, uint256 amount1)
claimFees
nonpayablefunction claimFees() returns (uint256 claimed0, uint256 claimed1)
claimStakingFees
nonpayablefunction claimStakingFees()
mint
nonpayablefunction mint(address to) returns (uint256 liquidity)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
skim
nonpayablefunction skim(address to)
swap
nonpayablefunction swap(uint256 amount0Out, uint256 amount1Out, address to, bytes data)
sync
nonpayablefunction sync()
transfer
nonpayablefunction transfer(address dst, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address src, address dst, uint256 amount) returns (bool)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
Burn
event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to)
Claim
event Claim(address indexed sender, address indexed recipient, uint256 amount0, uint256 amount1)
Fees
event Fees(address indexed sender, uint256 amount0, uint256 amount1)
Mint
event Mint(address indexed sender, uint256 amount0, uint256 amount1)
Swap
event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to)
Sync
event Sync(uint256 reserve0, uint256 reserve1)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
errors
No errors.
creation bytecode
0x61016060405260006002556000600d556000600e5560016013553480156200002657600080fd5b50336001600160a01b0316610100816001600160a01b0316815250506000806000336001600160a01b031663eb13c4cf6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac9190620007c8565b8015156080526001600160a01b0380831660c052831660a052604051929550909350915083908390620000df90620006f7565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000113573d6000803e3d6000fd5b506001600160a01b031660e05280156200034557826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000166573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000190919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001f9919081019062000863565b6040516020016200020c9291906200091b565b604051602081830303815290604052600090805190602001906200023292919062000705565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200029c919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000305919081019062000863565b6040516020016200031892919062000976565b604051602081830303815290604052600190805190602001906200033e92919062000705565b506200055e565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000384573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003ae919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620003ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000417919081019062000863565b6040516020016200042a929190620009c7565b604051602081830303815290604052600090805190602001906200045092919062000705565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000490573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ba919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620004f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000523919081019062000863565b6040516020016200053692919062000a24565b604051602081830303815290604052600190805190602001906200055c92919062000705565b505b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c3919062000a46565b620005d090600a62000b87565b6101208181525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000617573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063d919062000a46565b6200064a90600a62000b87565b6101405250506040805160608101825242815260006020820181815292820181815260078054600181018255925291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68860039092029182015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555062000bd4565b6105c58062004a7483390190565b828054620007139062000b98565b90600052602060002090601f01602090048101928262000737576000855562000782565b82601f106200075257805160ff191683800117855562000782565b8280016001018555821562000782579182015b828111156200078257825182559160200191906001019062000765565b506200079092915062000794565b5090565b5b8082111562000790576000815560010162000795565b80516001600160a01b0381168114620007c357600080fd5b919050565b600080600060608486031215620007de57600080fd5b620007e984620007ab565b9250620007f960208501620007ab565b9150604084015180151581146200080f57600080fd5b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200084d57818101518382015260200162000833565b838111156200085d576000848401525b50505050565b6000602082840312156200087657600080fd5b81516001600160401b03808211156200088e57600080fd5b818401915084601f830112620008a357600080fd5b815181811115620008b857620008b86200081a565b604051601f8201601f19908116603f01168101908382118183101715620008e357620008e36200081a565b81604052828152876020848701011115620008fd57600080fd5b6200091083602083016020880162000830565b979650505050505050565b6e029ba30b13632ab189020a6a690169608d1b8152600083516200094781600f85016020880162000830565b602f60f81b600f9184019182015283516200096a81601084016020880162000830565b01601001949350505050565b6473414d4d2d60d81b8152600083516200099881600585016020880162000830565b602f60f81b6005918401918201528351620009bb81600684016020880162000830565b01600601949350505050565b7002b37b630ba34b632ab189020a6a690169607d1b815260008351620009f581601185016020880162000830565b602f60f81b601191840191820152835162000a1881601284016020880162000830565b01601201949350505050565b6476414d4d2d60d81b8152600083516200099881600585016020880162000830565b60006020828403121562000a5957600080fd5b815160ff8116811462000a6b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000ac957816000190482111562000aad5762000aad62000a72565b8085161562000abb57918102915b93841c939080029062000a8d565b509250929050565b60008262000ae25750600162000b81565b8162000af15750600062000b81565b816001811462000b0a576002811462000b155762000b35565b600191505062000b81565b60ff84111562000b295762000b2962000a72565b50506001821b62000b81565b5060208310610133831016604e8410600b841016171562000b5a575081810a62000b81565b62000b66838362000a88565b806000190482111562000b7d5762000b7d62000a72565b0290505b92915050565b600062000a6b60ff84168362000ad1565b600181811c9082168062000bad57607f821691505b60208210810362000bce57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610100516101205161014051613cc462000db06000396000818161046901528181612bb701528181612ea101528181612f63015261306e01526000818161044601528181612b7601528181612e6201528181612fa501526130480152600081816107f801528181610c4701528181610d1801528181612064015281816121ad0152818161247b01528181612501015281816125dc015281816127e90152818161286f015261294a01526000818161062a01528181611cba01528181612106015281816126900152818161271a015281816129fe0152612a880152600081816104f30152818161067f0152818161074c0152818161093301528181610bdb0152818161154f0152818161173a01528181611b610152818161230a015281816129110152612a67015260008181610331015281816104cb0152818161065a0152818161091201528181610bba015281816114b90152818161171801528181611b3f01528181612282015281816125a3015281816126f901528181612ee301528181612f2a0152818161300f01526130b20152600081816102e9015281816103cf0152818161049b01528181610c0f01528181610ce00152818161217c01528181612b4e0152612e2e0152613cc46000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80637ecebe001161015c578063bda39cad116100ce578063d505accf11610087578063d505accf14610776578063dd62ed3e14610789578063ebeb31db146107b4578063f083be3b146107bc578063f140a35a146107c4578063fff6cae9146107d757600080fd5b8063bda39cad14610723578063bf944dbc1461072c578063c245febc14610735578063c5700a021461073e578063d21220a714610747578063d294f0931461076e57600080fd5b80639d63848a116101205780639d63848a1461064c5780639e8cc04b146106aa5780639f767c88146106bd578063a1ac4d13146106dd578063a9059cbb146106fd578063bc25cf771461071057600080fd5b80637ecebe00146105ab57806389afcb44146105cb5780638a7b8cf2146105f357806395d89b411461061d5780639af1d35a1461062557600080fd5b806323b872dd116102005780634d5a9f8a116101b95780634d5a9f8a14610529578063517b3f82146105495780635881c4751461055c5780635a76f25e1461056f5780636a6278421461057857806370a082311461058b57600080fd5b806323b872dd146103f1578063252c09d714610404578063313ce5671461041757806332c0defd14610431578063392f37e91461043a578063443cb4bc1461052057600080fd5b80630dfe1681116102525780630dfe16811461032c57806313345fe11461036b57806318160ddd1461038b5780631df8c717146103a2578063205aabf1146103aa57806322be3de1146103ca57600080fd5b8063022c0d9f1461028f57806306fdde03146102a45780630902f1ac146102c257806309047bdd146102e7578063095ea7b314610319575b600080fd5b6102a261029d36600461370f565b6107df565b005b6102ac610f2c565b6040516102b991906137d5565b60405180910390f35b600854600954600a545b604080519384526020840192909252908201526060016102b9565b7f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016102b9565b610309610327366004613808565b610fba565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b9565b61037e610379366004613834565b611027565b6040516102b9919061386f565b61039460025481565b6040519081526020016102b9565b6102cc611223565b6103946103b83660046138b3565b60106020526000908152604090205481565b6103097f000000000000000000000000000000000000000000000000000000000000000081565b6103096103ff3660046138d0565b611292565b6102cc610412366004613911565b61135b565b61041f601281565b60405160ff90911681526020016102b9565b610394600d5481565b600854600954604080517f000000000000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060208201529081019290925260608201527f0000000000000000000000000000000000000000000000000000000000000000151560808201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f00000000000000000000000000000000000000000000000000000000000000001660c082015260e0016102b9565b61039460085481565b6103946105373660046138b3565b60116020526000908152604090205481565b610394610557366004613808565b61138e565b61037e61056a36600461392a565b611476565b61039460095481565b6103946105863660046138b3565b611485565b6103946105993660046138b3565b60046020526000908152604090205481565b6103946105b93660046138b3565b60066020526000908152604090205481565b6105de6105d93660046138b3565b6116e6565b604080519283526020830191909152016102b9565b6105fb611a03565b60408051825181526020808401519082015291810151908201526060016102b9565b6102ac611a83565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000166020820152016102b9565b6103946106b836600461392a565b611a90565b6103946106cb3660046138b3565b600f6020526000908152604090205481565b6103946106eb3660046138b3565b60126020526000908152604090205481565b61030961070b366004613808565b611afd565b6102a261071e3660046138b3565b611b13565b610394600e5481565b610394600b5481565b610394600c5481565b610394600a5481565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6105de611c31565b6102a261078436600461395f565b611d58565b6103946107973660046139d6565b600360209081526000928352604080842090915290825290205481565b600754610394565b6102a2612060565b6103946107d2366004613a0f565b612167565b6102a2612255565b6013546001146107ee57600080fd5b60026013819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b187bd266040518163ffffffff1660e01b8152600401602060405180830381865afa158015610854573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108789190613a34565b1561088257600080fd5b60008511806108915750600084115b6108c85760405162461bcd60e51b8152602060048201526003602482015262494f4160e81b60448201526064015b60405180910390fd5b60085460095481871080156108dc57508086105b61090d5760405162461bcd60e51b8152602060048201526002602482015261125360f21b60448201526064016108bf565b6000807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03898116908316148015906109805750806001600160a01b0316896001600160a01b031614155b6109b15760405162461bcd60e51b8152602060048201526002602482015261125560f21b60448201526064016108bf565b8a156109c2576109c2828a8d61238f565b89156109d3576109d3818a8c61238f565b8615610a4057604051639a7bff7960e01b81526001600160a01b038a1690639a7bff7990610a0d9033908f908f908e908e90600401613a56565b600060405180830381600087803b158015610a2757600080fd5b505af1158015610a3b573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa89190613aa2565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190613aa2565b9250505060008985610b259190613ad1565b8311610b32576000610b46565b610b3c8a86613ad1565b610b469084613ad1565b90506000610b548a86613ad1565b8311610b61576000610b75565b610b6b8a86613ad1565b610b759084613ad1565b90506000821180610b865750600081115b610bb85760405162461bcd60e51b815260206004820152600360248201526249494160e81b60448201526064016108bf565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008315610ccb57604051632895a2f560e11b81527f000000000000000000000000000000000000000000000000000000000000000015156004820152610ccb90612710906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063512b45ea90602401602060405180830381865afa158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb29190613aa2565b610cbc9087613ae8565b610cc69190613b07565b612477565b8215610d9c57604051632895a2f560e11b81527f000000000000000000000000000000000000000000000000000000000000000015156004820152610d9c90612710906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063512b45ea90602401602060405180830381865afa158015610d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d839190613aa2565b610d8d9086613ae8565b610d979190613b07565b6127e5565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e049190613aa2565b6040516370a0823160e01b81523060048201529096506001600160a01b038216906370a0823190602401602060405180830381865afa158015610e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6f9190613aa2565b9450610e7b8888612b4a565b610e858787612b4a565b1015610eb75760405162461bcd60e51b81526020600482015260016024820152604b60f81b60448201526064016108bf565b5050610ec584848888612c96565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001601355505050505050505050565b60008054610f3990613b29565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6590613b29565b8015610fb25780601f10610f8757610100808354040283529160200191610fb2565b820191906000526020600020905b815481529060010190602001808311610f9557829003601f168201915b505050505081565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110159086815260200190565b60405180910390a35060015b92915050565b606060008367ffffffffffffffff81111561104457611044613b5d565b60405190808252806020026020018201604052801561106d578160200160208202803683370190505b5060075490915060009061108390600190613ad1565b905060006110918587613ae8565b61109b9083613ad1565b90506000805b83831015611213576110b38784613b73565b91506000600784815481106110ca576110ca613b8b565b906000526020600020906003020160000154600784815481106110ef576110ef613b8b565b90600052602060002090600302016000015461110b9190613ad1565b90506000816007868154811061112357611123613b8b565b9060005260206000209060030201600101546007868154811061114857611148613b8b565b9060005260206000209060030201600101546111649190613ad1565b61116e9190613b07565b90506000826007878154811061118657611186613b8b565b906000526020600020906003020160020154600787815481106111ab576111ab613b8b565b9060005260206000209060030201600201546111c79190613ad1565b6111d19190613b07565b90506111df8c8e8484612e2a565b8885815181106111f1576111f1613b8b565b602090810291909101015250505060010161120c8784613b73565b92506110a1565b509293505050505b949350505050565b600b54600c544260008080611241600854600954600a549192909190565b92509250925083811461128a57600061125a8286613ad1565b90506112668185613ae8565b6112709088613b73565b965061127c8184613ae8565b6112869087613b73565b9550505b505050909192565b6001600160a01b0383166000818152600360209081526040808320338085529252822054919290919082148015906112cc57506000198114155b156113425760006112dd8583613ad1565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61134d86868661311f565b6001925050505b9392505050565b6007818154811061136b57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b600080611399611a03565b90506000806113a6611223565b5084519193509150420361140e57600780546113c490600290613ad1565b815481106113d4576113d4613b8b565b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505b825160009061141d9042613ad1565b90506000818560200151856114329190613ad1565b61143c9190613b07565b90506000828660400151856114519190613ad1565b61145b9190613b07565b9050611469888a8484612e2a565b9998505050505050505050565b606061121b8484846001611027565b600060135460011461149657600080fd5b60026013556008546009546040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c9190613aa2565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba9190613aa2565b905060006115c88584613ad1565b905060006115d68584613ad1565b6002549091506000819003611618576103e86115fa6115f58486613ae8565b6131df565b6116049190613ad1565b975061161360006103e861324f565b61164d565b61164a876116268386613ae8565b6116309190613b07565b8761163b8486613ae8565b6116459190613b07565b6132e2565b97505b600088116116835760405162461bcd60e51b8152602060048201526003602482015262494c4d60e81b60448201526064016108bf565b61168d898961324f565b61169985858989612c96565b604080518481526020810184905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001601355509395945050505050565b6000806013546001146116f857600080fd5b60026013556008546009546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561178e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b29190613aa2565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190613aa2565b3060009081526004602052604090205460025491925090806118428584613ae8565b61184c9190613b07565b9950806118598484613ae8565b6118639190613b07565b985060008a1180156118755750600089115b6118a75760405162461bcd60e51b815260206004820152600360248201526224a62160e91b60448201526064016108bf565b6118b130836132f8565b6118bc868c8c61238f565b6118c7858c8b61238f565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa15801561190b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192f9190613aa2565b6040516370a0823160e01b81523060048201529094506001600160a01b038616906370a0823190602401602060405180830381865afa158015611976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199a9190613aa2565b92506119a884848a8a612c96565b604080518b8152602081018b90526001600160a01b038d169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050506001601381905550915091565b611a2760405180606001604052806000815260200160008152602001600081525090565b60078054611a3790600190613ad1565b81548110611a4757611a47613b8b565b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905090565b60018054610f3990613b29565b600080611aa08585856001611027565b90506000805b8251811015611ae857828181518110611ac157611ac1613b8b565b602002602001015182611ad49190613b73565b915080611ae081613ba1565b915050611aa6565b50611af38482613b07565b9695505050505050565b6000611b0a33848461311f565b50600192915050565b601354600114611b2257600080fd5b60026013556008546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091611bef9184918691906001600160a01b038416906370a08231906024015b602060405180830381865afa158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190613aa2565b611bea9190613ad1565b61238f565b6009546040516370a0823160e01b8152306004820152611c279183918691906001600160a01b038416906370a0823190602401611b9f565b5050600160135550565b600080611c3d33613383565b50503360009081526011602090815260408083205460129092529091205481151580611c695750600081115b15611d54573360008181526011602090815260408083208390556012909152808220919091555163299e7ae760e11b8152600481019190915260248101839052604481018290526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063533cf5ce90606401600060405180830381600087803b158015611cfe57600080fd5b505af1158015611d12573d6000803e3d6000fd5b505060408051858152602081018590523393508392507f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e94645910160405180910390a35b9091565b42841015611d985760405162461bcd60e51b815260206004820152600d60248201526c14185a5c8e8811561412549151609a1b60448201526064016108bf565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051611dc89190613bba565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152918152815160209283012060058190556001600160a01b038a166000908152600690935290822080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611e9383613ba1565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611f0c92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611f77573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611fad5750886001600160a01b0316816001600160a01b0316145b611ff95760405162461bcd60e51b815260206004820152601760248201527f506169723a20494e56414c49445f5349474e415455524500000000000000000060448201526064016108bf565b6001600160a01b038981166000818152600360209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c124a4a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e49190613c55565b60405163f8518b8960e01b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063f8518b8990602401600060405180830381600087803b15801561214c57600080fd5b505af1158015612160573d6000803e3d6000fd5b5050505050565b600854600954604051632895a2f560e11b81527f0000000000000000000000000000000000000000000000000000000000000000151560048201526000929190612710907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063512b45ea90602401602060405180830381865afa1580156121fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122209190613aa2565b61222a9087613ae8565b6122349190613b07565b61223e9086613ad1565b945061224c85858484612e2a565b95945050505050565b60135460011461226457600080fd5b60026013556040516370a0823160e01b8152306004820152612388907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156122d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f59190613aa2565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237d9190613aa2565b600854600954612c96565b6001601355565b6000836001600160a01b03163b116123a657600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916124029190613c72565b6000604051808303816000865af19150503d806000811461243f576040519150601f19603f3d011682016040523d82523d6000602084013e612444565b606091505b509150915081801561246e57508051158061246e57508080602001905181019061246e9190613a34565b61216057600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637be1623e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb9190613c55565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631e61079c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125819190613aa2565b905060006127106125928386613ae8565b61259c9190613b07565b90506125c97f0000000000000000000000000000000000000000000000000000000000000000848361238f565b6125d38185613ad1565b935060006127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663956f94a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265c9190613aa2565b6126669087613ae8565b6126709190613b07565b604051638d4dabff60e01b815260048101829052600160248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638d4dabff90604401600060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b5050505061273f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008761238f565b6127498186613ad1565b9450600060025486670de0b6b3a76400006127649190613ae8565b61276e9190613b07565b9050801561278e5780600d60008282546127889190613b73565b90915550505b337f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a8602846127bb858a613b73565b6127c59190613b73565b6040805191825260006020830152015b60405180910390a2505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637be1623e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128699190613c55565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631e61079c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ef9190613aa2565b905060006127106129008386613ae8565b61290a9190613b07565b90506129377f0000000000000000000000000000000000000000000000000000000000000000848361238f565b6129418185613ad1565b935060006127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663956f94a16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ca9190613aa2565b6129d49087613ae8565b6129de9190613b07565b604051638d4dabff60e01b815260048101829052600060248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638d4dabff90604401600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b50505050612aad7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008761238f565b612ab78186613ad1565b9450600060025486670de0b6b3a7640000612ad29190613ae8565b612adc9190613b07565b90508015612afc5780600e6000828254612af69190613b73565b90915550505b337f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a8602600085612b2b868b613b73565b612b359190613b73565b604080519283526020830191909152016127d5565b60007f000000000000000000000000000000000000000000000000000000000000000015612c855760007f0000000000000000000000000000000000000000000000000000000000000000612ba785670de0b6b3a7640000613ae8565b612bb19190613b07565b905060007f0000000000000000000000000000000000000000000000000000000000000000612be885670de0b6b3a7640000613ae8565b612bf29190613b07565b90506000670de0b6b3a7640000612c098385613ae8565b612c139190613b07565b90506000670de0b6b3a7640000612c2a8480613ae8565b612c349190613b07565b670de0b6b3a7640000612c478680613ae8565b612c519190613b07565b612c5b9190613b73565b9050670de0b6b3a7640000612c708284613ae8565b612c7a9190613b07565b945050505050611021565b612c8f8284613ae8565b9050611021565b600a544290600090612ca89083613ad1565b9050600081118015612cb957508315155b8015612cc457508215155b15612d0b57612cd38185613ae8565b600b6000828254612ce49190613b73565b90915550612cf490508184613ae8565b600c6000828254612d059190613b73565b90915550505b6000612d15611a03565b8051909150612d249084613ad1565b9150610708821115612dd95760408051606081018252848152600b5460208201908152600c549282019283526007805460018101825560009190915291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600390930292830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555b60088790556009869055600a83905560408051888152602081018890527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a150505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000156130ad576000612e5e8484612b4a565b90507f0000000000000000000000000000000000000000000000000000000000000000612e9385670de0b6b3a7640000613ae8565b612e9d9190613b07565b93507f0000000000000000000000000000000000000000000000000000000000000000612ed284670de0b6b3a7640000613ae8565b612edc9190613b07565b92506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614612f21578486612f24565b85855b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614612fa3577f0000000000000000000000000000000000000000000000000000000000000000612f9489670de0b6b3a7640000613ae8565b612f9e9190613b07565b612fe0565b7f0000000000000000000000000000000000000000000000000000000000000000612fd689670de0b6b3a7640000613ae8565b612fe09190613b07565b97506000612ff8612ff1848b613b73565b85846134e3565b6130029083613ad1565b9050670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161461306c577f000000000000000000000000000000000000000000000000000000000000000061308e565b7f00000000000000000000000000000000000000000000000000000000000000005b6130989083613ae8565b6130a29190613b07565b94505050505061121b565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316146130f05783856130f3565b84845b90925090506131028783613b73565b61310c8289613ae8565b6131169190613b07565b9250505061121b565b61312883613383565b61313182613383565b6001600160a01b03831660009081526004602052604081208054839290613159908490613ad1565b90915550506001600160a01b03821660009081526004602052604081208054839290613186908490613b73565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131d291815260200190565b60405180910390a3505050565b6000600382111561324057508060006131f9600283613b07565b613204906001613b73565b90505b8181101561323a5790508060028161321f8186613b07565b6132299190613b73565b6132339190613b07565b9050613207565b50919050565b811561324a575060015b919050565b61325882613383565b806002600082825461326a9190613b73565b90915550506001600160a01b03821660009081526004602052604081208054839290613297908490613b73565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60008183106132f15781611354565b5090919050565b61330182613383565b80600260008282546133139190613ad1565b90915550506001600160a01b03821660009081526004602052604081208054839290613340908490613ad1565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016132d6565b6001600160a01b03811660009081526004602052604090205480156134b1576001600160a01b0382166000908152600f60209081526040808320805460108085529285208054600d54600e549481905594909552829055936133e58584613ad1565b905060006133f38584613ad1565b9050811561344e576000670de0b6b3a7640000613410848a613ae8565b61341a9190613b07565b6001600160a01b038a16600090815260116020526040812080549293508392909190613447908490613b73565b9091555050505b80156134a7576000670de0b6b3a7640000613469838a613ae8565b6134739190613b07565b6001600160a01b038a166000908152601260205260408120805492935083929091906134a0908490613b73565b9091555050505b5050505050505050565b600d546001600160a01b0383166000908152600f6020908152604080832093909355600e546010909152919020555050565b6000805b60ff8110156135e9578260006134fd87836135f2565b90508581101561354d576000613513888761368f565b61351d8389613ad1565b61352f90670de0b6b3a7640000613ae8565b6135399190613b07565b90506135458187613b73565b95505061358f565b6000613559888761368f565b6135638884613ad1565b61357590670de0b6b3a7640000613ae8565b61357f9190613b07565b905061358b8187613ad1565b9550505b818511156135b85760016135a38387613ad1565b116135b357849350505050611354565b6135d4565b60016135c48684613ad1565b116135d457849350505050611354565b505080806135e190613ba1565b9150506134e7565b50909392505050565b6000670de0b6b3a76400008281858161360b8280613ae8565b6136159190613b07565b61361f9190613ae8565b6136299190613b07565b6136339190613ae8565b61363d9190613b07565b670de0b6b3a76400008084816136538280613ae8565b61365d9190613b07565b6136679190613ae8565b6136719190613b07565b61367b9086613ae8565b6136859190613b07565b6113549190613b73565b6000670de0b6b3a764000083816136a68280613ae8565b6136b09190613b07565b6136ba9190613ae8565b6136c49190613b07565b670de0b6b3a7640000806136d88580613ae8565b6136e29190613b07565b6136ed866003613ae8565b61367b9190613ae8565b6001600160a01b038116811461370c57600080fd5b50565b60008060008060006080868803121561372757600080fd5b85359450602086013593506040860135613740816136f7565b9250606086013567ffffffffffffffff8082111561375d57600080fd5b818801915088601f83011261377157600080fd5b81358181111561378057600080fd5b89602082850101111561379257600080fd5b9699959850939650602001949392505050565b60005b838110156137c05781810151838201526020016137a8565b838111156137cf576000848401525b50505050565b60208152600082518060208401526137f48160408501602087016137a5565b601f01601f19169190910160400192915050565b6000806040838503121561381b57600080fd5b8235613826816136f7565b946020939093013593505050565b6000806000806080858703121561384a57600080fd5b8435613855816136f7565b966020860135965060408601359560600135945092505050565b6020808252825182820181905260009190848201906040850190845b818110156138a75783518352928401929184019160010161388b565b50909695505050505050565b6000602082840312156138c557600080fd5b8135611354816136f7565b6000806000606084860312156138e557600080fd5b83356138f0816136f7565b92506020840135613900816136f7565b929592945050506040919091013590565b60006020828403121561392357600080fd5b5035919050565b60008060006060848603121561393f57600080fd5b833561394a816136f7565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561397a57600080fd5b8735613985816136f7565b96506020880135613995816136f7565b95506040880135945060608801359350608088013560ff811681146139b957600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156139e957600080fd5b82356139f4816136f7565b91506020830135613a04816136f7565b809150509250929050565b60008060408385031215613a2257600080fd5b823591506020830135613a04816136f7565b600060208284031215613a4657600080fd5b8151801515811461135457600080fd5b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600060208284031215613ab457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015613ae357613ae3613abb565b500390565b6000816000190483118215151615613b0257613b02613abb565b500290565b600082613b2457634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680613b3d57607f821691505b60208210810361323a57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60008219821115613b8657613b86613abb565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201613bb357613bb3613abb565b5060010190565b600080835481600182811c915080831680613bd657607f831692505b60208084108203613bf557634e487b7160e01b86526022600452602486fd5b818015613c095760018114613c1a57613c47565b60ff19861689528489019650613c47565b60008a81526020902060005b86811015613c3f5781548b820152908501908301613c26565b505084890196505b509498975050505050505050565b600060208284031215613c6757600080fd5b8151611354816136f7565b60008251613c848184602087016137a5565b919091019291505056fea2646970667358221220b44c4966609b3da0c42197959dc3b580a5a78ca2d725c847fce16add03d9434d64736f6c634300080d003360e060405234801561001057600080fd5b506040516105c53803806105c583398101604081905261002f91610066565b336080526001600160a01b0391821660a0521660c052610099565b80516001600160a01b038116811461006157600080fd5b919050565b6000806040838503121561007957600080fd5b6100828361004a565b91506100906020840161004a565b90509250929050565b60805160a05160c0516104e36100e26000396000818161012c015261026001526000818160fb015261022601526000818160c60152818161016201526101ef01526104e36000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063533cf5ce1461005c5780635b3c924814610071578063651d83f91461008c5780638d4dabff14610095578063f8518b89146100a8575b600080fd5b61006f61006a36600461039c565b6100bb565b005b61007a60015481565b60405190815260200160405180910390f35b61007a60005481565b61006f6100a33660046103dd565b610157565b61006f6100b636600461040d565b6101e4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100f057600080fd5b8115610121576101217f00000000000000000000000000000000000000000000000000000000000000008484610291565b8015610152576101527f00000000000000000000000000000000000000000000000000000000000000008483610291565b505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018c57600080fd5b6000821180156101995750805b156101b557816000808282546101af919061042f565b90915550505b6000821180156101c3575080155b156101e05781600160008282546101da919061042f565b90915550505b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021957600080fd5b600054156102535761024e7f000000000000000000000000000000000000000000000000000000000000000082600054610291565b600080555b6001541561028e576102887f000000000000000000000000000000000000000000000000000000000000000082600154610291565b60006001555b50565b6000836001600160a01b03163b116102a857600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916103049190610455565b6000604051808303816000865af19150503d8060008114610341576040519150601f19603f3d011682016040523d82523d6000602084013e610346565b606091505b50915091508180156103705750805115806103705750808060200190518101906103709190610490565b61037957600080fd5b5050505050565b80356001600160a01b038116811461039757600080fd5b919050565b6000806000606084860312156103b157600080fd5b6103ba84610380565b95602085013595506040909401359392505050565b801515811461028e57600080fd5b600080604083850312156103f057600080fd5b823591506020830135610402816103cf565b809150509250929050565b60006020828403121561041f57600080fd5b61042882610380565b9392505050565b6000821982111561045057634e487b7160e01b600052601160045260246000fd5b500190565b6000825160005b81811015610476576020818601810151858301520161045c565b81811115610485576000828501525b509190910192915050565b6000602082840312156104a257600080fd5b8151610428816103cf56fea2646970667358221220d66dc51c3d43c7f652d6398bc5ef98c6e7ffc9a7e642638bea3e7913aa3abf4364736f6c634300080d0033