0 txs
68.7k calls
constructor
No constructor.
functions
BASE_DIVISOR
viewfunction BASE_DIVISOR() view returns (uint256)
currentLiquidity
viewfunction currentLiquidity(address) view returns (uint256)
getCurrentLiquidity
viewfunction getCurrentLiquidity(address tokenAddress) view returns (uint256)
getFeeAccumulatedOnNft
viewfunction getFeeAccumulatedOnNft(uint256 _nftId) view returns (uint256)
getSuppliedLiquidity
viewfunction getSuppliedLiquidity(uint256 _nftId) view returns (uint256)
getSuppliedLiquidityByToken
viewfunction getSuppliedLiquidityByToken(address tokenAddress) view returns (uint256)
getTokenPriceInLPShares
viewfunction getTokenPriceInLPShares(address _baseToken) view returns (uint256)
getTotalLPFeeByToken
viewfunction getTotalLPFeeByToken(address tokenAddress) view returns (uint256)
getTotalReserveByToken
viewfunction getTotalReserveByToken(address tokenAddress) view returns (uint256)
isPauser
viewfunction isPauser(address pauser) view returns (bool)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
sharesToTokenAmount
viewfunction sharesToTokenAmount(uint256 _shares, address _tokenAddress) view returns (uint256)
totalLiquidity
viewfunction totalLiquidity(address) view returns (uint256)
totalLPFees
viewfunction totalLPFees(address) view returns (uint256)
totalReserve
viewfunction totalReserve(address) view returns (uint256)
totalSharesMinted
viewfunction totalSharesMinted(address) view returns (uint256)
addLPFee
nonpayablefunction addLPFee(address _token, uint256 _amount)
addNativeLiquidity
payablefunction addNativeLiquidity() payable
addTokenLiquidity
nonpayablefunction addTokenLiquidity(address _token, uint256 _amount)
changePauser
nonpayablefunction changePauser(address newPauser)
claimFee
nonpayablefunction claimFee(uint256 _nftId)
decreaseCurrentLiquidity
nonpayablefunction decreaseCurrentLiquidity(address tokenAddress, uint256 amount)
increaseCurrentLiquidity
nonpayablefunction increaseCurrentLiquidity(address tokenAddress, uint256 amount)
increaseNativeLiquidity
payablefunction increaseNativeLiquidity(uint256 _nftId) payable
increaseTokenLiquidity
nonpayablefunction increaseTokenLiquidity(uint256 _nftId, uint256 _amount)
initialize
nonpayablefunction initialize(address _trustedForwarder, address _lpToken, address _tokenManager, address _pauser)
pause
nonpayablefunction pause()
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftId, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
renouncePauser
nonpayablefunction renouncePauser()
setCurrentLiquidity
nonpayablefunction setCurrentLiquidity(address tokenAddress, uint256 amount)
setLiquidityPool
nonpayablefunction setLiquidityPool(address _liquidityPool)
setLpToken
nonpayablefunction setLpToken(address _lpToken)
setTokenManager
nonpayablefunction setTokenManager(address _tokenManager)
setTrustedForwarder
nonpayablefunction setTrustedForwarder(address _tf)
setWhiteListPeriodManager
nonpayablefunction setWhiteListPeriodManager(address _whiteListPeriodManager)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
CurrentLiquidityChanged
event CurrentLiquidityChanged(address indexed token, uint256 indexed newValue)
EthReceived
event EthReceived(address indexed sender, uint256 value)
FeeAdded
event FeeAdded(address indexed tokenAddress, uint256 indexed fee)
FeeClaimed
event FeeClaimed(address indexed tokenAddress, uint256 indexed fee, address indexed lp, uint256 sharesBurnt)
LiquidityAdded
event LiquidityAdded(address indexed tokenAddress, uint256 indexed amount, address indexed lp)
LiquidityRemoved
event LiquidityRemoved(address indexed tokenAddress, uint256 indexed amount, address indexed lp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PauserChanged
event PauserChanged(address indexed previousPauser, address indexed newPauser)
TrustedForwarderChanged
event TrustedForwarderChanged(address indexed _tf)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50613ee1806100206000396000f3fe60806040526004361061023f5760003560e01c80639326b08a1161012e578063d1b4f192116100ab578063f0ff372e1161006f578063f0ff372e146106b3578063f2fde38b146106d3578063f667526a146106f3578063f8c8765e14610713578063febb5407146107335761028e565b8063d1b4f19214610613578063d7ac683c14610633578063da74222814610653578063dd8b992314610673578063e479b099146106935761028e565b8063b238b533116100f2578063b238b5331461058b578063b3524e3014610593578063c47296bd146105b3578063c56326de146105d3578063ca2ba943146105f35761028e565b80639326b08a146104f85780639500fefc146105185780639d7de6b31461052b5780639ee933b51461054b578063b0261e531461056b5761028e565b806352a30127116101bc5780636ef8d66d116101805780636ef8d66d14610477578063715018a61461048c5780637cb2b79c146104a15780638456cb59146104c15780638da5cb5b146104d65761028e565b806352a30127146103e257806353403fb514610402578063572b6c05146104225780635c975abb1461044257806364aa1ad2146104575761028e565b80633ed77114116102035780633ed771141461034b5780633f4ba83a1461036057806346fbf68e146103755780634e7e36e2146103a25780634f20f840146103c25761028e565b80630102c1541461029357806301877020146102c957806314fe72aa146102eb5780632cd271e71461030b57806339db7d0e1461032b5761028e565b3661028e5761024c610753565b6001600160a01b03167f85177f287940f2f05425a4029951af0e047a7f9c4eaa9a6e6917bcd869f86695346040516102849190613d75565b60405180910390a2005b600080fd5b34801561029f57600080fd5b506102b36102ae3660046134b2565b610763565b6040516102c09190613d75565b60405180910390f35b3480156102d557600080fd5b506102e96102e43660046134b2565b610783565b005b3480156102f757600080fd5b506102e9610306366004613545565b6107ed565b34801561031757600080fd5b506102e96103263660046134b2565b610998565b34801561033757600080fd5b506102e96103463660046136a1565b6109ee565b34801561035757600080fd5b506102b3610bdc565b34801561036c57600080fd5b506102e9610be8565b34801561038157600080fd5b506103956103903660046134b2565b610c17565b6040516102c09190613730565b3480156103ae57600080fd5b506102b36103bd3660046134b2565b610c2b565b3480156103ce57600080fd5b506102b36103dd366004613672565b610c3e565b3480156103ee57600080fd5b506102b36103fd3660046134b2565b610c7f565b34801561040e57600080fd5b506102e961041d366004613545565b610ce8565b34801561042e57600080fd5b5061039561043d3660046134b2565b610d30565b34801561044e57600080fd5b50610395610d44565b34801561046357600080fd5b506102e9610472366004613545565b610d4d565b34801561048357600080fd5b506102e9610da4565b34801561049857600080fd5b506102e9610e38565b3480156104ad57600080fd5b506102e96104bc3660046134b2565b610e81565b3480156104cd57600080fd5b506102e9610ec9565b3480156104e257600080fd5b506104eb610ef6565b6040516102c091906136de565b34801561050457600080fd5b506102e9610513366004613545565b610f05565b6102e9610526366004613642565b611047565b34801561053757600080fd5b506102e96105463660046136a1565b611241565b34801561055757600080fd5b506102e96105663660046134b2565b611783565b34801561057757600080fd5b506102b36105863660046134b2565b6117cb565b6102e96117de565b34801561059f57600080fd5b506102b36105ae3660046134b2565b611934565b3480156105bf57600080fd5b506102b36105ce366004613642565b611950565b3480156105df57600080fd5b506102b36105ee3660046134b2565b611abc565b3480156105ff57600080fd5b506102b361060e3660046134b2565b611acf565b34801561061f57600080fd5b506102b361062e3660046134b2565b611aeb565b34801561063f57600080fd5b506102b361064e366004613642565b611afe565b34801561065f57600080fd5b506102e961066e3660046134b2565b611b8c565b34801561067f57600080fd5b506102e961068e366004613545565b611bd4565b34801561069f57600080fd5b506102e96106ae3660046134b2565b611c18565b3480156106bf57600080fd5b506102b36106ce3660046134b2565b611c79565b3480156106df57600080fd5b506102e96106ee3660046134b2565b611c95565b3480156106ff57600080fd5b506102e961070e366004613642565b611d03565b34801561071f57600080fd5b506102e961072e3660046134ea565b61213d565b34801561073f57600080fd5b506102b361074e3660046134b2565b6121ea565b600061075d6121fd565b90505b90565b6001600160a01b038116600090815261010060205260409020545b919050565b61078b610753565b6001600160a01b031661079c610ef6565b6001600160a01b0316146107cb5760405162461bcd60e51b81526004016107c2906139ea565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b0392909216919091179055565b600260015414156108105760405162461bcd60e51b81526004016107c290613c8a565b6002600155816001600160a01b03811661083c5760405162461bcd60e51b81526004016107c290613850565b6108458161222b565b6108615760405162461bcd60e51b81526004016107c290613a8d565b610869610d44565b156108865760405162461bcd60e51b81526004016107c290613972565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156108c35760405162461bcd60e51b81526004016107c290613cc1565b81836001600160a01b031663dd62ed3e6108db610753565b306040518363ffffffff1660e01b81526004016108f99291906136f2565b60206040518083038186803b15801561091157600080fd5b505afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610949919061365a565b10156109675760405162461bcd60e51b81526004016107c290613904565b61098583610973610753565b60fd546001600160a01b0316856122b6565b61098f8383612314565b50506001805550565b6109a133610c17565b6109bd5760405162461bcd60e51b81526004016107c290613cee565b6109c5610d44565b156109e25760405162461bcd60e51b81526004016107c290613972565b6109eb8161244b565b50565b60026001541415610a115760405162461bcd60e51b81526004016107c290613c8a565b6002600155610a1e610d44565b15610a3b5760405162461bcd60e51b81526004016107c290613972565b60fc54604051630348a6db60e51b81526000916001600160a01b031690636914db6090610a6c908690600401613d75565b60606040518083038186803b158015610a8457600080fd5b505afa158015610a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abc9190613570565b50509050610ac98161222b565b610ae55760405162461bcd60e51b81526004016107c290613d3e565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610b225760405162461bcd60e51b81526004016107c290613cc1565b81816001600160a01b031663dd62ed3e610b3a610753565b306040518363ffffffff1660e01b8152600401610b589291906136f2565b60206040518083038186803b158015610b7057600080fd5b505afa158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba8919061365a565b1015610bc65760405162461bcd60e51b81526004016107c290613904565b610bd281610973610753565b61098f83836124ba565b670de0b6b3a764000081565b610bf133610c17565b610c0d5760405162461bcd60e51b81526004016107c290613cee565b610c156129e9565b565b60fb546001600160a01b0390811691161490565b6101006020526000908152604090205481565b6001600160a01b03811660009081526101046020908152604080832054610100909252822054610c6e9085613e1e565b610c789190613dfe565b9392505050565b6001600160a01b038116600090815261010060205260408120548015610cd8576001600160a01b0383166000908152610100602090815260408083205461010490925290912054610cd09190613dfe565b91505061077e565b50670de0b6b3a764000092915050565b60fd546001600160a01b0316610cfc610753565b6001600160a01b031614610d225760405162461bcd60e51b81526004016107c290613b7f565b610d2c8282612a57565b5050565b6065546001600160a01b0390811691161490565b60c95460ff1690565b60fd546001600160a01b0316610d61610753565b6001600160a01b031614610d875760405162461bcd60e51b81526004016107c290613b7f565b6001600160a01b0390911660009081526101026020526040902055565b610dad33610c17565b610dc95760405162461bcd60e51b81526004016107c290613cee565b610dd1610d44565b15610dee5760405162461bcd60e51b81526004016107c290613972565b60fb546040516000916001600160a01b0316907f95bb211a5a393c4d30c3edc9a745825fba4e6ad3e3bb949e6bf8ccdfe431a811908390a360fb80546001600160a01b0319169055565b610e40610753565b6001600160a01b0316610e51610ef6565b6001600160a01b031614610e775760405162461bcd60e51b81526004016107c2906139ea565b610c156000612acc565b610e89610753565b6001600160a01b0316610e9a610ef6565b6001600160a01b031614610ec05760405162461bcd60e51b81526004016107c2906139ea565b6109eb81612b1e565b610ed233610c17565b610eee5760405162461bcd60e51b81526004016107c290613cee565b610c15612b40565b6097546001600160a01b031690565b60fd546001600160a01b0316610f19610753565b6001600160a01b031614610f3f5760405162461bcd60e51b81526004016107c290613b7f565b816001600160a01b038116610f665760405162461bcd60e51b81526004016107c290613850565b610f6f8161222b565b610f8b5760405162461bcd60e51b81526004016107c290613a8d565b610f93610d44565b15610fb05760405162461bcd60e51b81526004016107c290613972565b6001600160a01b0383166000908152610100602052604081208054849290610fd9908490613de6565b90915550506001600160a01b0383166000908152610103602052604081208054849290611007908490613de6565b909155505060405182906001600160a01b038516907fbf2b46285c2ba2766660d9f8cfafdb8abd51bbba1f29c584b7dd34ecf853dd4c90600090a3505050565b6002600154141561106a5760405162461bcd60e51b81526004016107c290613c8a565b6002600155611077610d44565b156110945760405162461bcd60e51b81526004016107c290613972565b60fc54604051630348a6db60e51b81526000916001600160a01b031690636914db60906110c5908590600401613d75565b60606040518083038186803b1580156110dd57600080fd5b505afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111159190613570565b5050905061113673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61222b565b6111525760405162461bcd60e51b81526004016107c290613d3e565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1461118e5760405162461bcd60e51b81526004016107c290613cc1565b60fd546001600160a01b03166111b65760405162461bcd60e51b81526004016107c290613aba565b60fd546040516000916001600160a01b03169034906111d490610760565b60006040518083038185875af1925050503d8060008114611211576040519150601f19603f3d011682016040523d82523d6000602084013e611216565b606091505b50509050806112375760405162461bcd60e51b81526004016107c2906137d3565b61098f83346124ba565b600260015414156112645760405162461bcd60e51b81526004016107c290613c8a565b600260015581611272610753565b60fc54604051630348a6db60e51b81526000916001600160a01b031690636914db60906112a3908690600401613d75565b60606040518083038186803b1580156112bb57600080fd5b505afa1580156112cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f39190613570565b505060fc54604051634f558e7960e01b81529192506001600160a01b031690634f558e7990611326908690600401613d75565b60206040518083038186803b15801561133e57600080fd5b505afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137691906135a6565b6113925760405162461bcd60e51b81526004016107c29061379c565b60fc546040516331a9108f60e11b81526001600160a01b03808516921690636352211e906113c4908790600401613d75565b60206040518083038186803b1580156113dc57600080fd5b505afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141491906134ce565b6001600160a01b03161461143a5760405162461bcd60e51b81526004016107c290613be1565b611442610d44565b1561145f5760405162461bcd60e51b81526004016107c290613972565b60fc54604051630348a6db60e51b8152600091829182916001600160a01b031690636914db6090611494908b90600401613d75565b60606040518083038186803b1580156114ac57600080fd5b505afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e49190613570565b9250925092506114f38361222b565b61150f5760405162461bcd60e51b81526004016107c290613d3e565b8661152c5760405162461bcd60e51b81526004016107c290613b52565b8682101561154c5760405162461bcd60e51b81526004016107c29061393b565b60ff546001600160a01b031663e23fec91611565610753565b858a6040518463ffffffff1660e01b81526004016115859392919061370c565b600060405180830381600087803b15801561159f57600080fd5b505af11580156115b3573d6000803e3d6000fd5b5050505060006115c284610c7f565b6115cc9089613e1e565b905060006115da8386610c3e565b90506000818511156115ee575060006115f3565b508381035b60006115fe87610c7f565b6116089083613e1e565b6001600160a01b03881660009081526101036020526040812080549293508492909190611636908490613e3d565b9091555060009050611648838d613de6565b905060006116568387613de6565b9050670de0b6b3a764000061166b8289613e3d565b10156116745750855b6001600160a01b038916600090815261010060205260408120805484929061169d908490613e3d565b90915550506001600160a01b03891660009081526101016020526040812080548f92906116cb908490613e3d565b90915550506001600160a01b03891660009081526101046020526040812080548392906116f9908490613e3d565b909155506117099050898e612b9b565b6117158e828f8c612bc4565b61172789611721610753565b84612cee565b61172f610753565b6001600160a01b0316828a6001600160a01b03167f70516e69d9b3069ff3184583d867f7a832772e850ba89b554ae06ff752474f9e60405160405180910390a4505060018055505050505050505050505050565b61178b610753565b6001600160a01b031661179c610ef6565b6001600160a01b0316146117c25760405162461bcd60e51b81526004016107c2906139ea565b6109eb81612d59565b6101046020526000908152604090205481565b600260015414156118015760405162461bcd60e51b81526004016107c290613c8a565b600260015573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6118248161222b565b6118405760405162461bcd60e51b81526004016107c290613a8d565b611848610d44565b156118655760405162461bcd60e51b81526004016107c290613972565b60fd546001600160a01b031661188d5760405162461bcd60e51b81526004016107c290613aba565b60fd546040516000916001600160a01b03169034906118ab90610760565b60006040518083038185875af1925050503d80600081146118e8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ed565b606091505b505090508061190e5760405162461bcd60e51b81526004016107c2906137d3565b61192c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34612314565b505060018055565b6001600160a01b03166000908152610101602052604090205490565b60fc54604051634f558e7960e01b81526000916001600160a01b031690634f558e7990611981908590600401613d75565b60206040518083038186803b15801561199957600080fd5b505afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d191906135a6565b6119ed5760405162461bcd60e51b81526004016107c290613c60565b60fc54604051630348a6db60e51b8152600091829182916001600160a01b031690636914db6090611a22908890600401613d75565b60606040518083038186803b158015611a3a57600080fd5b505afa158015611a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a729190613570565b9250925092508060001415611a8d576000935050505061077e565b6000611a998285610c3e565b9050600081841115611aad57506000611ab2565b508281035b9695505050505050565b6101016020526000908152604090205481565b6001600160a01b03166000908152610102602052604090205490565b6101036020526000908152604090205481565b60fc54604051630348a6db60e51b815260009182916001600160a01b0390911690636914db6090611b33908690600401613d75565b60606040518083038186803b158015611b4b57600080fd5b505afa158015611b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b839190613570565b50949350505050565b611b94610753565b6001600160a01b0316611ba5610ef6565b6001600160a01b031614611bcb5760405162461bcd60e51b81526004016107c2906139ea565b6109eb81612d7b565b60fd546001600160a01b0316611be8610753565b6001600160a01b031614611c0e5760405162461bcd60e51b81526004016107c290613b7f565b610d2c8282612b9b565b611c20610753565b6001600160a01b0316611c31610ef6565b6001600160a01b031614611c575760405162461bcd60e51b81526004016107c2906139ea565b60ff80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03166000908152610103602052604090205490565b611c9d610753565b6001600160a01b0316611cae610ef6565b6001600160a01b031614611cd45760405162461bcd60e51b81526004016107c2906139ea565b6001600160a01b038116611cfa5760405162461bcd60e51b81526004016107c29061380a565b6109eb81612acc565b80611d0c610753565b60fc54604051630348a6db60e51b81526000916001600160a01b031690636914db6090611d3d908690600401613d75565b60606040518083038186803b158015611d5557600080fd5b505afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d9190613570565b505060fc54604051634f558e7960e01b81529192506001600160a01b031690634f558e7990611dc0908690600401613d75565b60206040518083038186803b158015611dd857600080fd5b505afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1091906135a6565b611e2c5760405162461bcd60e51b81526004016107c29061379c565b60fc546040516331a9108f60e11b81526001600160a01b03808516921690636352211e90611e5e908790600401613d75565b60206040518083038186803b158015611e7657600080fd5b505afa158015611e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eae91906134ce565b6001600160a01b031614611ed45760405162461bcd60e51b81526004016107c290613be1565b611edc610d44565b15611ef95760405162461bcd60e51b81526004016107c290613972565b60026001541415611f1c5760405162461bcd60e51b81526004016107c290613c8a565b600260015560fc54604051630348a6db60e51b8152600091829182916001600160a01b031690636914db6090611f56908a90600401613d75565b60606040518083038186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa69190613570565b925092509250611fb58361222b565b611fd15760405162461bcd60e51b81526004016107c290613d3e565b6000611fdc84610c7f565b611fe69084613e1e565b90506000611ff48386610c3e565b905060006120028583613e3d565b9050600081116120245760405162461bcd60e51b81526004016107c290613a56565b60006120308486613e3d565b6001600160a01b0388166000908152610100602052604081208054929350849290919061205e908490613e3d565b90915550506001600160a01b038716600090815261010460205260408120805483929061208c908490613e3d565b90915550506001600160a01b03871660009081526101036020526040812080548492906120ba908490613e3d565b909155506120cd90508b8260008a612bc4565b6120d987611721610753565b6120e1610753565b6001600160a01b031682886001600160a01b03167f8e7bf3ba9a828655d38a8746fe5f122e5b02ada0764a356944630cff7eff35e2846040516121249190613d75565b60405180910390a4505060018055505050505050505050565b600054610100900460ff1680612156575060005460ff16155b6121725760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff1615801561219d576000805460ff1961ff0019909116610100171660011790555b6121a685612deb565b6121ae612e71565b6121b782612ef5565b6121bf612fb3565b6121c884612d59565b6121d183612b1e565b80156121e3576000805461ff00191690555b5050505050565b6101026020526000908152604090205481565b600061220833610d30565b1561221c575060131936013560601c610760565b61222461301b565b9050610760565b60fe54604051633e978aaf60e21b81526000916001600160a01b03169063fa5e2abc9061225c9085906004016136de565b60c06040518083038186803b15801561227457600080fd5b505afa158015612288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ac91906135c0565b6020015192915050565b61230e846323b872dd60e01b8585856040516024016122d79392919061370c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261301f565b50505050565b600081116123345760405162461bcd60e51b81526004016107c290613af1565b60fc546000906001600160a01b0316636a627842612350610753565b6040518263ffffffff1660e01b815260040161236c91906136de565b602060405180830381600087803b15801561238657600080fd5b505af115801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be919061365a565b604080516060810182526001600160a01b0380871682526000602083018190528284015260fc5492516324087a5760e11b81529394509092911690634810f4ae9061240f9085908590600401613d7e565b600060405180830381600087803b15801561242957600080fd5b505af115801561243d573d6000803e3d6000fd5b5050505061230e82846124ba565b6001600160a01b03811661245e57600080fd5b60fb546040516001600160a01b038084169216907f95bb211a5a393c4d30c3edc9a745825fba4e6ad3e3bb949e6bf8ccdfe431a81190600090a360fb80546001600160a01b0319166001600160a01b0392909216919091179055565b816124c3610753565b60fc54604051630348a6db60e51b81526000916001600160a01b031690636914db60906124f4908690600401613d75565b60606040518083038186803b15801561250c57600080fd5b505afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125449190613570565b505060fc54604051634f558e7960e01b81529192506001600160a01b031690634f558e7990612577908690600401613d75565b60206040518083038186803b15801561258f57600080fd5b505afa1580156125a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c791906135a6565b6125e35760405162461bcd60e51b81526004016107c29061379c565b60fc546040516331a9108f60e11b81526001600160a01b03808516921690636352211e90612615908790600401613d75565b60206040518083038186803b15801561262d57600080fd5b505afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906134ce565b6001600160a01b03161461268b5760405162461bcd60e51b81526004016107c290613be1565b60fc54604051630348a6db60e51b8152600091829182916001600160a01b031690636914db60906126c0908b90600401613d75565b60606040518083038186803b1580156126d857600080fd5b505afa1580156126ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127109190613570565b92509250925086600014156127375760405162461bcd60e51b81526004016107c290613af1565b60ff546001600160a01b031663645625f3612750610753565b858a6040518463ffffffff1660e01b81526004016127709392919061370c565b600060405180830381600087803b15801561278a57600080fd5b505af115801561279e573d6000803e3d6000fd5b505050506001600160a01b0383166000908152610100602052604081205415806127df57506001600160a01b03841660009081526101046020526040902054155b156127fd576127f688670de0b6b3a7640000613e1e565b905061283b565b6001600160a01b038416600090815261010060209081526040808320546101049092529091205461282e908a613e1e565b6128389190613dfe565b90505b670de0b6b3a76400008110156128635760405162461bcd60e51b81526004016107c290613b1b565b6001600160a01b03841660009081526101016020526040812080548a929061288c908490613de6565b90915550506001600160a01b03841660009081526101006020526040812080548a92906128ba908490613de6565b90915550506001600160a01b03841660009081526101046020526040812080548392906128e8908490613de6565b909155505060408051606081019091526001600160a01b0385168152600090602081016129158b87613de6565b81526020016129248486613de6565b905260fc546040516324087a5760e11b81529192506001600160a01b031690634810f4ae90612959908d908590600401613d7e565b600060405180830381600087803b15801561297357600080fd5b505af1158015612987573d6000803e3d6000fd5b50505050612995858a612a57565b61299d610753565b6001600160a01b031689866001600160a01b03167fa21288bdd948f634bcd5a8bfc9825db1b01914f370ef82149e123b7c8dc3b65b60405160405180910390a450505050505050505050565b6129f1610d44565b612a0d5760405162461bcd60e51b81526004016107c29061376e565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612a40610753565b604051612a4d91906136de565b60405180910390a1565b6001600160a01b0382166000908152610102602052604081208054839290612a80908490613de6565b90915550506001600160a01b038216600081815261010260205260408082205490519092917ff28044030a28cf7d3fb8e8f7bbaa42aee92214081fd522b3a38afb279577db8991a35050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fe80546001600160a01b0319166001600160a01b0392909216919091179055565b612b48610d44565b15612b655760405162461bcd60e51b81526004016107c290613972565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612a40610753565b6001600160a01b0382166000908152610102602052604081208054839290612a80908490613e3d565b60fc54604051630348a6db60e51b815260009182916001600160a01b0390911690636914db6090612bf9908990600401613d75565b60606040518083038186803b158015612c1157600080fd5b505afa158015612c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c499190613570565b92509250508481612c5a9190613e3d565b9050612c668483613e3d565b60fc54604080516060810182526001600160a01b0387811682526020820185905281830186905291516324087a5760e11b8152939550911691634810f4ae91612cb4918a9190600401613d7e565b600060405180830381600087803b158015612cce57600080fd5b505af1158015612ce2573d6000803e3d6000fd5b50505050505050505050565b60fd546040516317d5759960e31b81526001600160a01b039091169063beabacc890612d229086908690869060040161370c565b600060405180830381600087803b158015612d3c57600080fd5b505af1158015612d50573d6000803e3d6000fd5b50505050505050565b60fc80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116612da15760405162461bcd60e51b81526004016107c290613887565b606580546001600160a01b0319166001600160a01b0383169081179091556040517f871264f4293af7d2865ae7eae628b228f4991c57cb45b39c99f0b774ebe2901890600090a250565b600054610100900460ff1680612e04575060005460ff16155b612e205760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015612e4b576000805460ff1961ff0019909116610100171660011790555b612e536130b3565b612e5c82613126565b8015610d2c576000805461ff00191690555050565b600054610100900460ff1680612e8a575060005460ff16155b612ea65760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015612ed1576000805460ff1961ff0019909116610100171660011790555b612ed96130b3565b612ee16131b6565b80156109eb576000805461ff001916905550565b600054610100900460ff1680612f0e575060005460ff16155b612f2a5760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015612f55576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216612f7b5760405162461bcd60e51b81526004016107c290613a1f565b612f83613226565b60fb80546001600160a01b0319166001600160a01b0384161790558015610d2c576000805461ff00191690555050565b600054610100900460ff1680612fcc575060005460ff16155b612fe85760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015613013576000805460ff1961ff0019909116610100171660011790555b612ee1613296565b3390565b6000613074826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661330e9092919063ffffffff16565b8051909150156130ae578080602001905181019061309291906135a6565b6130ae5760405162461bcd60e51b81526004016107c290613c16565b505050565b600054610100900460ff16806130cc575060005460ff16155b6130e85760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015612ee1576000805460ff1961ff00199091166101001716600117905580156109eb576000805461ff001916905550565b600054610100900460ff168061313f575060005460ff16155b61315b5760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015613186576000805460ff1961ff0019909116610100171660011790555b606580546001600160a01b0319166001600160a01b0384161790558015610d2c576000805461ff00191690555050565b600054610100900460ff16806131cf575060005460ff16155b6131eb5760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015613216576000805460ff1961ff0019909116610100171660011790555b612ee1613221610753565b612acc565b600054610100900460ff168061323f575060005460ff16155b61325b5760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015613286576000805460ff1961ff0019909116610100171660011790555b61328e6130b3565b612ee1613325565b600054610100900460ff16806132af575060005460ff16155b6132cb5760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff161580156132f6576000805460ff1961ff0019909116610100171660011790555b6001805580156109eb576000805461ff001916905550565b606061331d84846000856133a3565b949350505050565b600054610100900460ff168061333e575060005460ff16155b61335a5760405162461bcd60e51b81526004016107c29061399c565b600054610100900460ff16158015613385576000805460ff1961ff0019909116610100171660011790555b60c9805460ff1916905580156109eb576000805461ff001916905550565b6060824710156133c55760405162461bcd60e51b81526004016107c2906138be565b6133ce85613463565b6133ea5760405162461bcd60e51b81526004016107c290613baa565b600080866001600160a01b0316858760405161340691906136c2565b60006040518083038185875af1925050503d8060008114613443576040519150601f19603f3d011682016040523d82523d6000602084013e613448565b606091505b5091509150613458828286613469565b979650505050505050565b3b151590565b60608315613478575081610c78565b8251156134885782518084602001fd5b8160405162461bcd60e51b81526004016107c2919061373b565b8051801515811461077e57600080fd5b6000602082840312156134c3578081fd5b8135610c7881613e96565b6000602082840312156134df578081fd5b8151610c7881613e96565b600080600080608085870312156134ff578283fd5b843561350a81613e96565b9350602085013561351a81613e96565b9250604085013561352a81613e96565b9150606085013561353a81613e96565b939692955090935050565b60008060408385031215613557578182fd5b823561356281613e96565b946020939093013593505050565b600080600060608486031215613584578283fd5b835161358f81613e96565b602085015160409095015190969495509392505050565b6000602082840312156135b7578081fd5b610c78826134a2565b600081830360c08112156135d2578182fd5b6135dc60a0613dae565b835181526135ec602085016134a2565b602082015260408401516040820152606084015160608201526040607f1983011215613616578283fd5b6136206040613dae565b608085810151825260a090950151602082015293810193909352509092915050565b600060208284031215613653578081fd5b5035919050565b60006020828403121561366b578081fd5b5051919050565b60008060408385031215613684578182fd5b82359150602083013561369681613e96565b809150509250929050565b600080604083850312156136b3578182fd5b50508035926020909101359150565b600082516136d4818460208701613e54565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b600060208252825180602084015261375a816040850160208701613e54565b601f01601f19169190910160400192915050565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b60208082526019908201527f4552525f5f544f4b454e5f444f45535f4e4f545f455849535400000000000000604082015260600190565b6020808252601b908201527f4552525f5f4e41544956455f5452414e534645525f4641494c45440000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526019908201527f546f6b656e20616464726573732063616e6e6f74206265203000000000000000604082015260600190565b6020808252601b908201527f54727573746564466f727761726465722063616e277420626520300000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252601b908201527f4552525f5f494e53554646494349454e545f414c4c4f57414e43450000000000604082015260600190565b6020808252601b908201527f4552525f5f494e53554646494349454e545f4c49515549444954590000000000604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601a908201527f50617573657220416464726573732063616e6e6f742062652030000000000000604082015260600190565b60208082526018908201527f4552525f5f4e4f5f524557415244535f544f5f434c41494d0000000000000000604082015260600190565b602080825260139082015272151bdad95b881b9bdd081cdd5c1c1bdc9d1959606a1b604082015260600190565b6020808252601b908201527f4552525f5f4c49515549444954595f504f4f4c5f4e4f545f5345540000000000604082015260600190565b60208082526010908201526f04552525f5f414d4f554e545f49535f360841b604082015260600190565b6020808252601f908201527f4552525f5f414d4f554e545f42454c4f575f4d494e5f4c495155494449545900604082015260600190565b60208082526013908201527211549497d7d253959053125117d05353d55395606a1b604082015260600190565b60208082526011908201527011549497d7d5539055551213d492569151607a1b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252818101527f4552525f5f5452414e534143544f525f444f45535f4e4f545f4f574e5f4e4654604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526010908201526f11549497d7d253959053125117d3919560821b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526013908201527222a9292fafaba927a723afa32aa721aa24a7a760691b604082015260600190565b60208082526030908201527f4f6e6c792070617573657220697320616c6c6f77656420746f20706572666f7260408201526f36903a3434b99037b832b930ba34b7b760811b606082015260800190565b60208082526018908201527f4552525f5f544f4b454e5f4e4f545f535550504f525445440000000000000000604082015260600190565b90815260200190565b91825280516001600160a01b03166020808401919091528101516040808401919091520151606082015260800190565b60405181810167ffffffffffffffff81118282101715613dde57634e487b7160e01b600052604160045260246000fd5b604052919050565b60008219821115613df957613df9613e80565b500190565b600082613e1957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615613e3857613e38613e80565b500290565b600082821015613e4f57613e4f613e80565b500390565b60005b83811015613e6f578181015183820152602001613e57565b8381111561230e5750506000910152565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146109eb57600080fdfea26469706673582212200694930dff4a04862ed4f5d0fa1abd0b3a19a4f070cccd2fd78bfed6de085b1c64736f6c63430008000033