130 txs
637 calls
constructor
constructor(address _WETH9, address _poolPositionFactory)
functions
factory
viewfunction factory() view returns (address)
getAddLiquidityParams
viewfunction getAddLiquidityParams(address pool, address poolPosition, uint256 lpTokenAmount) view returns (tuple[] addParams, uint256 bin0LpAmount)
managerTokenId
viewfunction managerTokenId() view returns (uint256)
poolPositionFactory
viewfunction poolPositionFactory() view returns (address)
position
viewfunction position() view returns (address)
WETH9
viewfunction WETH9() view returns (address)
addLiquidityCallback
nonpayablefunction addLiquidityCallback(uint256 amountA, uint256 amountB, bytes _data)
addLiquidityToPoolPosition
payablefunction addLiquidityToPoolPosition(address poolPosition, address recipient, uint256 desiredLpTokenAmount, uint256 minLpTokenAmount, tuple addLimits) payable returns (uint256 mintedPoolPositionTokenAmount, uint256 tokenAAmount, uint256 tokenBAmount)
addLiquidityToPoolPositionWithAddParams
payablefunction addLiquidityToPoolPositionWithAddParams(address poolPosition, address recipient, uint256 minLpTokenAmount, tuple addLimits, tuple[] addParams, uint256 bin0LpAmount) payable returns (uint256 mintedPoolPositionTokenAmount, uint256 tokenAAmount, uint256 tokenBAmount)
createPoolPositionAndAddLiquidity
payablefunction createPoolPositionAndAddLiquidity(address pool, address recipient, tuple[] params, bool isStatic, tuple createLimits) payable returns (address poolPosition, uint256 tokenAAmount, uint256 tokenBAmount, tuple[] binDeltas, uint256 mintedPoolPositionTokenAmount)
migrateBinLiquidity
payablefunction migrateBinLiquidity(address poolPosition) payable
migrateBinsUpStack
payablefunction migrateBinsUpStack(address pool, uint128[] binIds, uint32 maxRecursion, uint256 deadline) payable
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
refundETH
payablefunction refundETH() payable
removeLiquidityFromPoolPosition
payablefunction removeLiquidityFromPoolPosition(address poolPosition, address recipient, uint256 lpTokenAmount, uint256 minTokenAAmount, uint256 minTokenBAmount, uint256 deadline) payable returns (uint256 tokenAAmount, uint256 tokenBAmount)
sweepToken
payablefunction sweepToken(address token, uint256 amountMinimum, address recipient) payable
unwrapWETH9
payablefunction unwrapWETH9(uint256 amountMinimum, address recipient) payable
events
No events.
errors
EthTransferFailed
error EthTransferFailed()
InsufficientBalance
error InsufficientBalance(address token)
InvalidBinIds
error InvalidBinIds(uint128[] binIds)
InvalidMaxTokenAmount
error InvalidMaxTokenAmount(uint256 tokenAAmount, uint256 maxTokenAAmount, uint256 tokenBAmount, uint256 maxTokenBAmount)
InvalidMinLpAmount
error InvalidMinLpAmount(uint256 tokenAmount, uint256 minTokenAmount)
InvalidMinTokenAmount
error InvalidMinTokenAmount(uint256 tokenAAmount, uint256 minTokenAAmount, uint256 tokenBAmount, uint256 minTokenBAmount)
InvalidProportion
error InvalidProportion()
NonPoolCaller
error NonPoolCaller()
NotFactoryPoolPosition
error NotFactoryPoolPosition()
NotWETH9
error NotWETH9()
PastDeadline
error PastDeadline(uint256 timestamp, uint256 deadline)
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162004461380380620044618339810160408190526200003591620001b5565b6001600081905550806001600160a01b0316634219dc406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200007c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a29190620001f4565b6001600160a01b03166080819052604080516309218e9160e01b815290516309218e91916004808201926020929091908290030181865afa158015620000ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001129190620001f4565b6001600160a01b0390811660a081905283821660c05290821660e0526040516335313c2160e11b8152306004820152636a627842906024016020604051808303816000875af11580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019091906200021b565b60015550620002359050565b6001600160a01b0381168114620001b257600080fd5b50565b60008060408385031215620001c957600080fd5b8251620001d6816200019c565b6020840151909250620001e9816200019c565b809150509250929050565b6000602082840312156200020757600080fd5b815162000214816200019c565b9392505050565b6000602082840312156200022e57600080fd5b5051919050565b60805160a05160c05160e051614190620002d160003960008181610205015281816105190152818161120b0152818161222a015261253601526000818161012f015281816102b50152818161098c01528181610a5301528181610ab501528181612767015281816127c7015261288f01526000818161019f0152818161230901526124750152600081816103920152610e3201526141906000f3fe6080604052600436106101125760003560e01c806364513d5a116100a5578063ac9650d811610074578063dc8fd18211610059578063dc8fd182146103b4578063df2ab5bb146103d4578063f9570cd4146103e757600080fd5b8063ac9650d814610360578063c45a01551461038057600080fd5b806364513d5a146102d7578063741166e2146102fb57806380a51b221461030e578063ab69290a1461033c57600080fd5b80633339aad1116100e15780633339aad1146102555780633d9e7dc71461026857806349404b7c146102905780634aa4a4fc146102a357600080fd5b806309218e911461018d57806312210e8a146101eb5780631bd7c685146101f3578063243872271461022757600080fd5b36610188573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610186576040517f2f1ca35a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561019957600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101866103fa565b3480156101ff57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b61023a6102353660046131c5565b610487565b604080519384526020840192909252908201526060016101e2565b61018661026336600461326e565b610663565b61027b6102763660046132e7565b610799565b604080519283526020830191909152016101e2565b61018661029e366004613340565b6108eb565b3480156102af57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b6102ea6102e536600461338e565b610b3a565b6040516101e295949392919061344b565b610186610309366004613521565b610c7d565b34801561031a57600080fd5b5061032e61032936600461353e565b610ce0565b6040516101e2929190613604565b34801561034857600080fd5b5061035260015481565b6040519081526020016101e2565b61037361036e366004613626565b610cfb565b6040516101e291906136ca565b34801561038c57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c057600080fd5b506101866103cf36600461374a565b610df1565b6101866103e23660046137ca565b610ff2565b61023a6103f53660046139af565b611179565b60026000540361046b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000554715610480576104803347611342565b6001600055565b60008060008360400135804211156104d4576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b6040517f1f69e45c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301527f00000000000000000000000000000000000000000000000000000000000000001690631f69e45c90602401602060405180830381865afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190613aa6565b6105ba576040517f23c508c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190613ac3565b905060008061063b838d8c6113fb565b9150915061064e8c8c8b8b868689611ce6565b919e909d50909b509950505050505050505050565b80804211156106a7576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b8360005b8181101561078f578773ffffffffffffffffffffffffffffffffffffffff1663c0c5d7fb8888848181106106e1576106e1613ae0565b90506020020160208101906106f69190613b0f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff909116600482015263ffffffff88166024820152604401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b50505050808061078790613b5b565b9150506106ab565b5050505050505050565b60008082804211156107e0576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b6040517fa796f71100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8981166024830152604482018990528a169063a796f7119060640160408051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190613b93565b90935091508583108061089057508482105b156108df576040517fefecf0b600000000000000000000000000000000000000000000000000000000815260048101849052602481018790526044810183905260648101869052608401610462565b50965096945050505050565b600260005403610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610462565b600260009081556040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c9190613bb7565b905082811015610a80576040517f897f6c5800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610462565b8015610b30576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610b0e57600080fd5b505af1158015610b22573d6000803e3d6000fd5b50505050610b308282611342565b5050600160005550565b600080600060606000856040013580421115610b8b576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b610bf28c6001548c8c808060200260200160405190810160405280939291908181526020016000905b82821015610be057610bd160a08302860136819003810190613bd0565b81526020019060010190610bb4565b50508d359250505060208c0135611e2d565b91975095509350610c0690508c848a611f71565b9550610c4c86610c1c60808a0160608b01613bec565b610c26578c610c28565b305b85600081518110610c3b57610c3b613ae0565b6020026020010151604001516122b6565b9150610c5e6080880160608901613bec565b15610c6e57610c6e868c846124ee565b50965096509650965096915050565b8073ffffffffffffffffffffffffffffffffffffffff16637279f5936040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b5050505050565b60606000610cef8585856113fb565b90969095509350505050565b60608167ffffffffffffffff811115610d1657610d1661380c565b604051908082528060200260200182016040528015610d4957816020015b6060815260200190600190039081610d345790505b50905060005b82811015610de957610db930858584818110610d6d57610d6d613ae0565b9050602002810190610d7f9190613c09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126c592505050565b828281518110610dcb57610dcb613ae0565b60200260200101819052508080610de190613b5b565b915050610d4f565b505b92915050565b6000610dff82840184613c6e565b6040517f578eaca400000000000000000000000000000000000000000000000000000000815233600482018190529192507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063578eaca490602401602060405180830381865afa158015610e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb29190613aa6565b610ee8576040517f5effc82b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8515610f6957610f698173ffffffffffffffffffffffffffffffffffffffff16630fc63d106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f609190613ac3565b835133896126f1565b8415610fea57610fea8173ffffffffffffffffffffffffffffffffffffffff16635f64b55b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190613ac3565b835133886126f1565b505050505050565b60026000540361105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610462565b600260009081556040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f39190613bb7565b905082811015611147576040517f897f6c5800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610462565b801561116e5761116e73ffffffffffffffffffffffffffffffffffffffff8516838361296b565b505060016000555050565b60008060008560400135804211156111c6576040517f5ba2a8d500000000000000000000000000000000000000000000000000000000815242600482015260248101829052604401610462565b6040517f1f69e45c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301527f00000000000000000000000000000000000000000000000000000000000000001690631f69e45c90602401602060405180830381865afa158015611252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112769190613aa6565b6112ac576040517f23c508c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008a73ffffffffffffffffffffffffffffffffffffffff166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190613ac3565b905061132e8b8b8b8b8b8b87611ce6565b919d909c50909a5098505050505050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516113799190613cba565b60006040518083038185875af1925050503d80600081146113b6576040519150601f19603f3d011682016040523d82523d6000602084013e6113bb565b606091505b50509050806113f6576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60606000808473ffffffffffffffffffffffffffffffffffffffff1663b15a3bc66040518163ffffffff1660e01b8152600401600060405180830381865afa15801561144b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114919190810190613ce1565b905060008673ffffffffffffffffffffffffffffffffffffffff166344a185bb836000815181106114c4576114c4613ae0565b60200260200101516040518263ffffffff1660e01b815260040161150091906fffffffffffffffffffffffffffffffff91909116815260200190565b60e060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190613d86565b905060008773ffffffffffffffffffffffffffffffffffffffff16633ab72c106040518163ffffffff1660e01b8152600401602060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190613bb7565b905060008873ffffffffffffffffffffffffffffffffffffffff166321272d4c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613bb7565b90508773ffffffffffffffffffffffffffffffffffffffff1663ef0def6a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116989190613aa6565b1580156116ba575060608301516fffffffffffffffffffffffffffffffff1615155b15611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f42696e206973206d65726765643b206d696772617465206669727374000000006044820152606401610462565b835167ffffffffffffffff81111561173b5761173b61380c565b6040519080825280602002602001820160405280156117b257816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117595790505b50955061194f878a73ffffffffffffffffffffffffffffffffffffffff16636da3bf8b8b73ffffffffffffffffffffffffffffffffffffffff166317d70f7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118449190613bb7565b8860008151811061185757611857613ae0565b60200260200101516040518363ffffffff1660e01b81526004016118979291909182526fffffffffffffffffffffffffffffffff16602082015260400190565b602060405180830381865afa1580156118b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d89190613bb7565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119479190613bb7565b60015b612a3f565b61195a906001613e6d565b94508460005b8551811015611cd8578015611ad6578a73ffffffffffffffffffffffffffffffffffffffff166344a185bb87838151811061199d5761199d613ae0565b60200260200101516040518263ffffffff1660e01b81526004016119d991906fffffffffffffffffffffffffffffffff91909116815260200190565b60e060405180830381865afa1580156119f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1a9190613d86565b6040517f771dc86a00000000000000000000000000000000000000000000000000000000815260048101839052909550611ad39073ffffffffffffffffffffffffffffffffffffffff8c169063771dc86a90602401602060405180830381865afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab09190613e80565b6fffffffffffffffffffffffffffffffff1688670de0b6b3a76400006001612a3f565b91505b8451602086015160009182916fffffffffffffffffffffffffffffffff9182169116818303611b2c576080890151611b2590829088906fffffffffffffffffffffffffffffffff166001612a3f565b9250611c09565b80600003611b61576080890151611b5a90839088906fffffffffffffffffffffffffffffffff166001612a3f565b9350611c09565b611b7e86670de0bfcbf5d6a000670de0b6b3a76400006001612a3f565b611b89906001613e6d565b9550611bba82878b608001516fffffffffffffffffffffffffffffffff166001600281111561194a5761194a613e3e565b9350611bf7611bcc8286856001612a3f565b60808b0151611bf29084908a906fffffffffffffffffffffffffffffffff166001612a3f565b612a9c565b9250611c068284836001612a3f565b93505b6040518060a001604052808a60a0015160ff1681526020018a60c0015160030b815260200160001515815260200183600014611c5857611c53611c4e878c6001612ab3565b612b6e565b611c5b565b60005b6fffffffffffffffffffffffffffffffff1681526020018215611c8c57611c87611c4e868b6001612ab3565b611c8f565b60005b6fffffffffffffffffffffffffffffffff168152508c8681518110611cb657611cb6613ae0565b6020026020010181905250505050508080611cd090613b5b565b915050611960565b505050505050935093915050565b60008060006060611cfd8560015489600080611e2d565b91955093509150508735831180611d175750876020013582115b15611d69576040517f4457899000000000000000000000000000000000000000000000000000000000815260048101849052883560248201526044810183905260208901356064820152608401610462565b611d918682600081518110611d8057611d80613ae0565b602002602001015160400151612c14565b9550611db98b611da760808b0160608c01613bec565b611db1578b611db3565b305b886122b6565b935088841015611dff576040517fd769256500000000000000000000000000000000000000000000000000000000815260048101859052602481018a9052604401610462565b611e0f6080890160608a01613bec565b15611e1f57611e1f8b8b866124ee565b509750975097945050505050565b6040805160208082018352338083528351918201528692600092839260609273ffffffffffffffffffffffffffffffffffffffff8c1691639d5f20bb9188918c91016040516020818303038152906040526040518463ffffffff1660e01b8152600401611e9c93929190613e9d565b6000604051808303816000875af1158015611ebb573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f019190810190613ec8565b9195509350915086841080611f1557508583105b15611f64576040517fefecf0b600000000000000000000000000000000000000000000000000000000815260048101859052602481018890526044810184905260648101879052608401610462565b5095509550955095915050565b8151600090818167ffffffffffffffff811115611f9057611f9061380c565b604051908082528060200260200182016040528015611fb9578160200160208202803683370190505b50905060008267ffffffffffffffff811115611fd757611fd761380c565b604051908082528060200260200182016040528015612000578160200160208202803683370190505b50905060008660008151811061201857612018613ae0565b60200260200101516040015190506120a46040518060e0016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff1681526020016000815260200160006fffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060030b81526020016000151581525090565b6000805b868110156121ec578981815181106120c2576120c2613ae0565b6020026020010151925082606001518682815181106120e3576120e3613ae0565b60200260200101906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff1681525050816fffffffffffffffffffffffffffffffff1686828151811061213a5761213a613ae0565b60200260200101516fffffffffffffffffffffffffffffffff161161218d57856040517f031be3980000000000000000000000000000000000000000000000000000000081526004016104629190614037565b6121a7611c4e8460400151670de0b6b3a764000087612c23565b8582815181106121b9576121b9613ae0565b6fffffffffffffffffffffffffffffffff90921660209283029190910190910152806121e481613b5b565b9150506120a8565b506040517f62e9396a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906362e9396a90612265908d90899089908e9060040161404a565b6020604051808303816000875af1158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a89190613ac3565b9a9950505050505050505050565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201839052600092917f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b390604401600060405180830381600087803b15801561234f57600080fd5b505af1158015612363573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663499d1081858361238e87612b6e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091526fffffffffffffffffffffffffffffffff1660448201526064016020604051808303816000875af1158015612418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243c9190613bb7565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815260006004820152602481018390529092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063095ea7b390604401600060405180830381600087803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b50505050509392505050565b6040517f237120f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063237120f890602401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613ac3565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152602482018590529192509085169063095ea7b3906044016020604051808303816000875af115801561261c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126409190613aa6565b506040517f7acb77570000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff8481166024830152821690637acb775790604401600060405180830381600087803b1580156126b157600080fd5b505af115801561078f573d6000803e3d6000fd5b60606126ea838360405180606001604052806027815260200161413460279139612cf0565b9392505050565b60026000540361275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610462565b60026000819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156127c05750804710155b15612906577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561282d57600080fd5b505af1158015612841573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156128dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129009190613aa6565b5061116e565b3073ffffffffffffffffffffffffffffffffffffffff8416036129495761294473ffffffffffffffffffffffffffffffffffffffff8516838361296b565b61116e565b61116e73ffffffffffffffffffffffffffffffffffffffff8516848484612e18565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526113f69084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612e7c565b600080612a4d868686612c23565b90506001836002811115612a6357612a63613e3e565b148015612a80575060008480612a7b57612a7b61409f565b868809115b15612a9357612a90600182613e6d565b90505b95945050505050565b600081831015612aac57816126ea565b5090919050565b60006001831480612ac2575083155b15612ace5750826126ea565b7f8000000000000000000000000000000000000000000000000000000000000000831615612b2957612b227f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416856140ce565b90506126ea565b818015612b4657508280612b3f57612b3f61409f565b6001850915155b612b5957612b5483856140e5565b612b22565b612b6383856140e5565b612b22906001613e6d565b60006fffffffffffffffffffffffffffffffff821115612c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610462565b5090565b6000818310612aac57816126ea565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c7b57838281612c7157612c7161409f565b04925050506126ea565b808411612c8757600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b612d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610462565b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051612dbe9190613cba565b600060405180830381855af49150503d8060008114612df9576040519150601f19603f3d011682016040523d82523d6000602084013e612dfe565b606091505b5091509150612e0e828286612f88565b9695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612e769085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016129bd565b50505050565b6000612ede826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612fdb9092919063ffffffff16565b8051909150156113f65780806020019051810190612efc9190613aa6565b6113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610462565b60608315612f975750816126ea565b825115612fa75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104629190614120565b6060612fea8484600085612ff2565b949350505050565b606082471015613084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610462565b73ffffffffffffffffffffffffffffffffffffffff85163b613102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610462565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161312b9190613cba565b60006040518083038185875af1925050503d8060008114613168576040519150601f19603f3d011682016040523d82523d6000602084013e61316d565b606091505b509150915061317d828286612f88565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146131aa57600080fd5b50565b6000608082840312156131bf57600080fd5b50919050565b600080600080600061010086880312156131de57600080fd5b85356131e981613188565b945060208601356131f981613188565b9350604086013592506060860135915061321687608088016131ad565b90509295509295909350565b60008083601f84011261323457600080fd5b50813567ffffffffffffffff81111561324c57600080fd5b6020830191508360208260051b850101111561326757600080fd5b9250929050565b60008060008060006080868803121561328657600080fd5b853561329181613188565b9450602086013567ffffffffffffffff8111156132ad57600080fd5b6132b988828901613222565b909550935050604086013563ffffffff811681146132d657600080fd5b949793965091946060013592915050565b60008060008060008060c0878903121561330057600080fd5b863561330b81613188565b9550602087013561331b81613188565b95989597505050506040840135936060810135936080820135935060a0909101359150565b6000806040838503121561335357600080fd5b82359150602083013561336581613188565b809150509250929050565b80151581146131aa57600080fd5b803561338981613370565b919050565b60008060008060008061010087890312156133a857600080fd5b86356133b381613188565b955060208701356133c381613188565b9450604087013567ffffffffffffffff808211156133e057600080fd5b818901915089601f8301126133f457600080fd5b81358181111561340357600080fd5b8a602060a08302850101111561341857600080fd5b6020830196508095505050506134306060880161337e565b915061343f88608089016131ad565b90509295509295509295565b600060a080830173ffffffffffffffffffffffffffffffffffffffff8916845260208881860152604088818701526060848188015283895180865260c095508589019150848b0160005b8281101561350557815180516fffffffffffffffffffffffffffffffff908116865288820151811689870152878201518887015286820151168686015260808082015160ff16908601528981015160030b8a86015288015115158885015260e09093019290860190600101613495565b5050508096505050505050508260808301529695505050505050565b60006020828403121561353357600080fd5b81356126ea81613188565b60008060006060848603121561355357600080fd5b833561355e81613188565b9250602084013561356e81613188565b929592945050506040919091013590565b600081518084526020808501945080840160005b838110156135f9578151805160ff1688528381015160030b848901526040808201511515908901526060808201516fffffffffffffffffffffffffffffffff908116918a0191909152608091820151169088015260a09096019590820190600101613593565b509495945050505050565b604081526000613617604083018561357f565b90508260208301529392505050565b6000806020838503121561363957600080fd5b823567ffffffffffffffff81111561365057600080fd5b610cef85828601613222565b60005b8381101561367757818101518382015260200161365f565b50506000910152565b6000815180845261369881602086016020860161365c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561373d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261372b858351613680565b945092850192908501906001016136f1565b5092979650505050505050565b6000806000806060858703121561376057600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561378657600080fd5b818701915087601f83011261379a57600080fd5b8135818111156137a957600080fd5b8860208285010111156137bb57600080fd5b95989497505060200194505050565b6000806000606084860312156137df57600080fd5b83356137ea81613188565b925060208401359150604084013561380181613188565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561385e5761385e61380c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156138ab576138ab61380c565b604052919050565b600067ffffffffffffffff8211156138cd576138cd61380c565b5060051b60200190565b60ff811681146131aa57600080fd5b8060030b81146131aa57600080fd5b6fffffffffffffffffffffffffffffffff811681146131aa57600080fd5b600060a0828403121561392557600080fd5b60405160a0810181811067ffffffffffffffff821117156139485761394861380c565b6040529050808235613959816138d7565b81526020830135613969816138e6565b6020820152604083013561397c81613370565b6040820152606083013561398f816138f5565b606082015260808301356139a2816138f5565b6080919091015292915050565b60008060008060008061012087890312156139c957600080fd5b86356139d481613188565b95506020878101356139e581613188565b9550604088013594506139fb8960608a016131ad565b935060e088013567ffffffffffffffff811115613a1757600080fd5b8801601f81018a13613a2857600080fd5b8035613a3b613a36826138b3565b613864565b81815260a0918202830184019184820191908d841115613a5a57600080fd5b938501935b83851015613a8057613a718e86613913565b83529384019391850191613a5f565b50809650505050505061010087013590509295509295509295565b805161338981613370565b600060208284031215613ab857600080fd5b81516126ea81613370565b600060208284031215613ad557600080fd5b81516126ea81613188565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613b2157600080fd5b81356126ea816138f5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b8c57613b8c613b2c565b5060010190565b60008060408385031215613ba657600080fd5b505080516020909101519092909150565b600060208284031215613bc957600080fd5b5051919050565b600060a08284031215613be257600080fd5b6126ea8383613913565b600060208284031215613bfe57600080fd5b81356126ea81613370565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c3e57600080fd5b83018035915067ffffffffffffffff821115613c5957600080fd5b60200191503681900382131561326757600080fd5b600060208284031215613c8057600080fd5b6040516020810181811067ffffffffffffffff82111715613ca357613ca361380c565b6040528235613cb181613188565b81529392505050565b60008251613ccc81846020870161365c565b9190910192915050565b8051613389816138f5565b60006020808385031215613cf457600080fd5b825167ffffffffffffffff811115613d0b57600080fd5b8301601f81018513613d1c57600080fd5b8051613d2a613a36826138b3565b81815260059190911b82018301908381019087831115613d4957600080fd5b928401925b8284101561317d578351613d61816138f5565b82529284019290840190613d4e565b8051613389816138d7565b8051613389816138e6565b600060e08284031215613d9857600080fd5b60405160e0810181811067ffffffffffffffff82111715613dbb57613dbb61380c565b6040528251613dc9816138f5565b81526020830151613dd9816138f5565b60208201526040830151613dec816138f5565b60408201526060830151613dff816138f5565b6060820152613e1060808401613cd6565b6080820152613e2160a08401613d70565b60a0820152613e3260c08401613d7b565b60c08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b80820180821115610deb57610deb613b2c565b600060208284031215613e9257600080fd5b81516126ea816138f5565b838152606060208201526000613eb6606083018561357f565b8281036040840152612e0e8185613680565b60008060006060808587031215613ede57600080fd5b84519350602080860151935060408087015167ffffffffffffffff811115613f0557600080fd5b8701601f81018913613f1657600080fd5b8051613f24613a36826138b3565b81815260e0918202830185019185820191908c841115613f4357600080fd5b938601935b83851015613fe35780858e031215613f605760008081fd5b613f6861383b565b8551613f73816138f5565b815285880151613f82816138f5565b81890152858701518782015288860151613f9b816138f5565b818a0152608086810151613fae816138d7565b9082015260a0613fbf878201613d7b565b9082015260c0613fd0878201613a9b565b9082015283529384019391860191613f48565b50809750505050505050509250925092565b600081518084526020808501945080840160005b838110156135f95781516fffffffffffffffffffffffffffffffff1687529582019590820190600101614009565b6020815260006126ea6020830184613ff5565b73ffffffffffffffffffffffffffffffffffffffff851681526080602082015260006140796080830186613ff5565b828103604084015261408b8186613ff5565b915050821515606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8082028115828204841417610deb57610deb613b2c565b60008261411b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6020815260006126ea602083018461368056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ca4e058dd55b80ea078111c98c40546984434d44ce4e37861b282da25767e49764736f6c634300081100330000000000000000000000004200000000000000000000000000000000000006000000000000000000000000bbf1ee38152e9d8e3470dc47947eaa65dca94913