0 txs
8.4k calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
BOND_FEE
viewfunction BOND_FEE() view returns (uint16)
config
viewfunction config() view returns (tuple)
convertToAssets
viewfunction convertToAssets(uint256 _shares) view returns (uint256 _assets)
convertToShares
viewfunction convertToShares(uint256 _assets) view returns (uint256 _shares)
created
viewfunction created() view returns (uint256)
DEBOND_FEE
viewfunction DEBOND_FEE() view returns (uint16)
decimals
viewfunction decimals() view returns (uint8)
DEX_HANDLER
viewfunction DEX_HANDLER() view returns (address)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
fees
viewfunction fees() view returns (tuple)
FLASH_FEE_AMOUNT_DAI
viewfunction FLASH_FEE_AMOUNT_DAI() view returns (uint256)
getAllAssets
viewfunction getAllAssets() view returns (tuple[])
getInitialAmount
viewfunction getInitialAmount(address _sourceToken, uint256 _sourceAmount, address _targetToken) view returns (uint256)
indexTokens
viewfunction indexTokens(uint256) view returns (address token, uint256 weighting, uint256 basePriceUSDX96, address c1, uint256 q1)
indexType
viewfunction indexType() view returns (uint8)
initializeSelector
purefunction initializeSelector() pure returns (bytes4)
isAsset
viewfunction isAsset(address _token) view returns (bool)
lpRewardsToken
viewfunction lpRewardsToken() view returns (address)
lpStakingPool
viewfunction lpStakingPool() view returns (address)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
PAIRED_LP_TOKEN
viewfunction PAIRED_LP_TOKEN() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256 _totalManagedAssets)
totalAssets
viewfunction totalAssets(address _asset) view returns (uint256 _totalManagedAssets)
totalSupply
viewfunction totalSupply() view returns (uint256)
unlocked
viewfunction unlocked() view returns (uint8)
addLiquidityV2
nonpayablefunction addLiquidityV2(uint256 _pTKNLPTokens, uint256 _pairedLPTokens, uint256 _slippage, uint256 _deadline) returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
bond
nonpayablefunction bond(address _token, uint256 _amount, uint256 _amountMintMin)
burn
nonpayablefunction burn(uint256 _amount)
debond
nonpayablefunction debond(uint256 _amount, address[], uint8[])
flash
nonpayablefunction flash(address _recipient, address _token, uint256 _amount, bytes _data)
flashMint
nonpayablefunction flashMint(address _recipient, uint256 _amount, bytes _data)
initialize
nonpayablefunction initialize(string _name, string _symbol, bytes _baseConfig, bytes _immutables)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
processPreSwapFeesAndSwap
nonpayablefunction processPreSwapFeesAndSwap()
removeLiquidityV2
nonpayablefunction removeLiquidityV2(uint256 _lpTokens, uint256 _minIdxTokens, uint256 _minPairedLpToken, uint256 _deadline)
setLpStakingPool
nonpayablefunction setLpStakingPool(address _pool)
setPartner
nonpayablefunction setPartner(address _partner)
setPartnerFee
nonpayablefunction setPartnerFee(uint16 _fee)
setup
nonpayablefunction setup()
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
events
AddLiquidity
event AddLiquidity(address indexed wallet, uint256 amountTokens, uint256 amountDAI)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Bond
event Bond(address indexed wallet, address indexed token, uint256 amountTokensBonded, uint256 amountTokensMinted)
Create
event Create(address indexed newIdx, address indexed wallet)
Debond
event Debond(address indexed wallet, uint256 amountDebonded)
EIP712DomainChanged
event EIP712DomainChanged()
FlashLoan
event FlashLoan(address indexed executor, address indexed recipient, address token, uint256 amount)
FlashMint
event FlashMint(address indexed executor, address indexed recipient, uint256 amount)
Initialize
event Initialize(address indexed wallet, address v2Pool)
Initialized
event Initialized(uint64 version)
RemoveLiquidity
event RemoveLiquidity(address indexed wallet, uint256 amountLiquidity)
SetPartner
event SetPartner(address indexed wallet, address newPartner)
SetPartnerFee
event SetPartnerFee(address indexed wallet, uint16 newFee)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC2612ExpiredSignature
error ERC2612ExpiredSignature(uint256 deadline)
ERC2612InvalidSigner
error ERC2612InvalidSigner(address signer, address owner)
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561001057600080fd5b507ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b031660008115801561005b5750825b90506000826001600160401b031660011480156100775750303b155b905081158015610085575080155b156100a35760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100d157845460ff60401b1916680100000000000000001785555b831561010557845460ff60401b19168555604051600181526000805160206160e68339815191529060200160405180910390a15b505050505061011861011d60201b60201c565b6101bd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561016d5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101ba5780546001600160401b0319166001600160401b0390811782556040519081526000805160206160e68339815191529060200160405180910390a15b50565b615f1a806101cc6000396000f3fe60806040526004361061028c5760003560e01c8063822631d81161015a578063bb463027116100c1578063dd62ed3e1161007a578063dd62ed3e14610997578063e4b54957146109b7578063ee9c79da146109d7578063f3e0ffbf146109f7578063f682399614610a2d578063ff140ca614610a4d57600080fd5b8063bb463027146108b9578063bdbc91ab146108ce578063bdc8d060146108ee578063c6e6f5921461091e578063c87fa42a1461093e578063d505accf1461097757600080fd5b80639af1d35a116101135780639af1d35a1461071c578063a16d596014610824578063a9059cbb14610844578063a9e9c8bc14610864578063b08d033314610884578063ba0bba40146108a457600080fd5b8063822631d81461066757806384b0196e14610687578063871071d6146106af57806393b404bd146106d157806394cc699e146106e757806395d89b411461070757600080fd5b80633ea21465116101fe5780635462c0e9116101b75780635462c0e91461050e57806358f4dcc31461052e5780636a5e26501461054e57806370a082311461056f57806379502c551461058f5780637ecebe001461064757600080fd5b80633ea21465146103f857806341dc12531461041857806342966c68146104385780634a437f88146104585780634f4ce61d146104af57806353f50447146104e757600080fd5b806323b872dd1161025057806323b872dd1461034757806328492b29146103675780632acada4d14610389578063313ce567146103ab578063325a19f1146103cd5780633644e515146103e357600080fd5b806301e1d1141461029857806306fdde03146102c057806307a2d13a146102e2578063095ea7b31461030257806318160ddd1461033257600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610a6c565b6040519081526020015b60405180910390f35b3480156102cc57600080fd5b506102d5610ab5565b6040516102b79190614fc4565b3480156102ee57600080fd5b506102ad6102fd366004614fd7565b610b5e565b34801561030e57600080fd5b5061032261031d366004615005565b610c90565b60405190151581526020016102b7565b34801561033e57600080fd5b506019546102ad565b34801561035357600080fd5b50610322610362366004615031565b610caa565b34801561037357600080fd5b50610387610382366004615072565b610cd0565b005b34801561039557600080fd5b5061039e610d53565b6040516102b7919061508f565b3480156103b757600080fd5b5060125b60405160ff90911681526020016102b7565b3480156103d957600080fd5b506102ad60115481565b3480156103ef57600080fd5b506102ad610dea565b34801561040457600080fd5b5061038761041336600461515a565b610df9565b34801561042457600080fd5b506103876104333660046151c5565b610fc4565b34801561044457600080fd5b50610387610453366004614fd7565b61109e565b34801561046457600080fd5b50610478610473366004614fd7565b611112565b604080516001600160a01b03968716815260208101959095528401929092529092166060820152608081019190915260a0016102b7565b3480156104bb57600080fd5b506005546104cf906001600160a01b031681565b6040516001600160a01b0390911681526020016102b7565b3480156104f357600080fd5b506010546105019060ff1681565b6040516102b791906151f8565b34801561051a57600080fd5b50610387610529366004615304565b61115f565b34801561053a57600080fd5b506012546104cf906001600160a01b031681565b34801561055a57600080fd5b506013546103bb90600160a01b900460ff1681565b34801561057b57600080fd5b506102ad61058a366004615072565b6112a8565b34801561059b57600080fd5b506106076040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252600c546001600160a01b03168152600d546020820152600e5460ff80821615159383019390935261010090049091161515606082015290565b6040516102b7919081516001600160a01b031681526020808301519082015260408083015115159082015260609182015115159181019190915260800190565b34801561065357600080fd5b506102ad610662366004615072565b6112db565b34801561067357600080fd5b506002546104cf906001600160a01b031681565b34801561069357600080fd5b5061069c6112e6565b6040516102b797969594939291906153c0565b3480156106bb57600080fd5b50604051635462c0e960e01b81526020016102b7565b3480156106dd57600080fd5b506102ad60045481565b3480156106f357600080fd5b506013546104cf906001600160a01b031681565b34801561071357600080fd5b506102d5611392565b34801561072857600080fd5b506107c06040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c081018252600f5461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082015290565b6040516102b79190600060c08201905061ffff835116825261ffff602084015116602083015261ffff604084015116604083015261ffff606084015116606083015261ffff608084015116608083015261ffff60a08401511660a083015292915050565b34801561083057600080fd5b5061038761083f366004615072565b6113d1565b34801561085057600080fd5b5061032261085f366004615005565b611468565b34801561087057600080fd5b506102ad61087f366004615458565b611476565b34801561089057600080fd5b5061038761089f36600461548a565b611a2c565b3480156108b057600080fd5b50610387611aa9565b3480156108c557600080fd5b50610387611d17565b3480156108da57600080fd5b506103876108e93660046154bf565b611e1e565b3480156108fa57600080fd5b50600f54640100000000900461ffff165b60405161ffff90911681526020016102b7565b34801561092a57600080fd5b506102ad610939366004614fd7565b6122ee565b34801561094a57600080fd5b50610322610959366004615072565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561098357600080fd5b50610387610992366004615540565b61240e565b3480156109a357600080fd5b506102ad6109b23660046155b1565b612567565b3480156109c357600080fd5b506102ad6109d23660046155ea565b6125b1565b3480156109e357600080fd5b506103876109f23660046156c5565b612731565b348015610a0357600080fd5b506102ad610a12366004615072565b6001600160a01b031660009081526018602052604090205490565b348015610a3957600080fd5b50610387610a48366004615458565b612a1c565b348015610a5957600080fd5b50600f5462010000900461ffff1661090b565b6000601860006014600081548110610a8657610a86615797565b600091825260208083206005909202909101546001600160a01b03168352820192909252604001902054919050565b60606000600080516020615ea58339815191525b9050806003018054610ada906157ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610b06906157ad565b8015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b505050505091505090565b600080610b6b6019541590565b9050600081610b9457601954610b8585600160301b6157fd565b610b8f919061582a565b610b9a565b600160301b5b90508115610bf857600160301b600160601b826014600081548110610bc157610bc1615797565b906000526020600020906005020160040154610bdd91906157fd565b610be7919061582a565b610bf1919061582a565b9250610c57565b600160301b81601860006014600081548110610c1657610c16615797565b600091825260208083206005909202909101546001600160a01b03168352820192909252604001902054610c4a91906157fd565b610c54919061582a565b92505b600f5461271090610c7490640100000000900461ffff16856157fd565b610c7e919061582a565b610c88908461584c565b949350505050565b600033610c9e818585612c5a565b60019150505b92915050565b600033610cb8858285612c6c565b610cc3858585612cd3565b60019150505b9392505050565b6006546001600160a01b0316336001600160a01b0316148015610cfc57506013546001600160a01b0316155b610d315760405162461bcd60e51b81526020600482015260016024820152604960f81b60448201526064015b60405180910390fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b60606014805480602002602001604051908101604052809291908181526020016000905b82821015610de15760008481526020908190206040805160a0810182526005860290920180546001600160a01b0390811684526001808301548587015260028301549385019390935260038201541660608401526004015460808301529083529092019101610d77565b50505050905090565b6000610df4612d32565b905090565b601354600160a01b900460ff16600114610e255760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19169055601a805460ff60901b1916600160901b1790556000610e536103e88561582a565b90508015610e615780610e64565b60015b90506000610e71306112a8565b9050610e7d8686612d3c565b604051633a62959560e21b81526001600160a01b0387169063e98a565490610eab908790879060040161587a565b600060405180830381600087803b158015610ec557600080fd5b505af1158015610ed9573d6000803e3d6000fd5b50505050818582610eea91906158a9565b610ef491906158a9565b610efd306112a8565b1015610f315760405162461bcd60e51b8152602060048201526003602482015262464d4160e81b6044820152606401610d28565b8160196000828254610f43919061584c565b90915550610f5c905030610f5784886158a9565b612d76565b601a805460ff60901b191690556040518581526001600160a01b0387169033907f3f332df59082df85f837e54e7adcd25276bb7f09b6b151ff017fcdb187d605b39060200160405180910390a350506013805460ff60a01b1916600160a01b17905550505050565b600c546001600160a01b0316336001600160a01b03161461100b5760405162461bcd60e51b81526020600482015260016024820152600560fc1b6044820152606401610d28565b600f5461ffff600160501b90910481169082161061103b5760405162461bcd60e51b8152600401610d289061585f565b600f805461ffff60501b1916600160501b61ffff8416021790553360405161ffff831681526001600160a01b0391909116907ffc0cb6bfc0e2e72ceb9097dc52c953b7d46c4f1d173de188581cba3fab46ad4a906020015b60405180910390a250565b601354600160a01b900460ff166001146110ca5760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19169055601980548291906000906110ec90849061584c565b909155506110fc90503382612d76565b506013805460ff60a01b1916600160a01b179055565b6014818154811061112257600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b03938416955091939092169085565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156111a45750825b90506000826001600160401b031660011480156111c05750303b155b9050811580156111ce575080155b156111ec5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561121657845460ff60401b1916600160401b1785555b6000806000808a8060200190518101906112309190615a51565b505093509350935093506112498d8d600087878f612dac565b6112538282613377565b50505050831561129d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600080600080516020615ea58339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b6000610ca482613783565b60006060808280808381600080516020615ec5833981519152805490915015801561131357506001810154155b6113575760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610d28565b61135f6137ac565b6113676137eb565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020615ea583398151915291610ada906157ad565b600c546001600160a01b0316336001600160a01b0316146114185760405162461bcd60e51b81526020600482015260016024820152600560fc1b6044820152606401610d28565b600c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f4b74c6905f914d7a5f408442bc16a267312648abfc3909c994cc6c2643ae5c9690602001611093565b600033610c9e818585612cd3565b601354600090600160a01b900460ff166001146114a55760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19169055601a805460ff60881b1916905560006114ca306112a8565b6005546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c9190615b47565b9050611549333089613803565b6002546115619030906001600160a01b031689612c5a565b611579336005546001600160a01b0316903089613941565b600254600554611596916001600160a01b039182169116886139a8565b600254600554604051639f4f974560e01b81523060048201526001600160a01b0391821660248201526000929190911690639f4f974590604401602060405180830381865afa1580156115ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116119190615b60565b6001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116889190615b47565b6002546005549192506001600160a01b039081169163e8e33700913091168b8b6103e86116b58d8261584c565b8f6116c091906157fd565b6116ca919061582a565b6103e86116d78e8261584c565b8f6116e291906157fd565b6116ec919061582a565b3360405160e089901b6001600160e01b03191681526001600160a01b039788166004820152958716602487015260448601949094526064850192909252608484015260a483015290911660c482015260e4810188905261010401600060405180830381600087803b15801561176057600080fd5b505af1158015611774573d6000803e3d6000fd5b505060025460055461179693506001600160a01b0390811692501660006139a8565b826117a0306112a8565b11156117c4576117c43033856117b5306112a8565b6117bf919061584c565b613803565b6005546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa15801561180c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118309190615b47565b11156118c3576118c3336005546040516370a0823160e01b815230600482015285916001600160a01b0316906370a0823190602401602060405180830381865afa158015611882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a69190615b47565b6118b0919061584c565b6005546001600160a01b03169190613a32565b604080518981526020810189905233917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a2600254600554604051639f4f974560e01b81523060048201526001600160a01b03918216602482015283929190911690639f4f974590604401602060405180830381865afa158015611954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119789190615b60565b6001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190615b47565b6119f9919061584c565b9350505050601a805460ff60881b1916600160881b1790556013805460ff60a01b1916600160a01b179055949350505050565b601354600160a01b900460ff16600114611a585760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19169055601a805460ff60881b19169055611a7e83838333613a63565b5050601a805460ff60881b1916600160881b179055506013805460ff60a01b1916600160a01b179055565b601a54600160981b900460ff1615611ae75760405162461bcd60e51b81526020600482015260016024820152604f60f81b6044820152606401610d28565b601a805460ff60981b1916600160981b179055600254600554604051639f4f974560e01b81523060048201526001600160a01b0391821660248201526000929190911690639f4f974590604401602060405180830381865afa158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b759190615b60565b90506001600160a01b038116611c005760025460055460405163c4f3e9d760e01b81523060048201526001600160a01b03918216602482015291169063c4f3e9d7906044016020604051808303816000875af1158015611bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfd9190615b60565b90505b601354604051631e9b12ef60e01b81526001600160a01b03838116600483015290911690631e9b12ef90602401600060405180830381600087803b158015611c4757600080fd5b505af1158015611c5b573d6000803e3d6000fd5b50505050601360009054906101000a90046001600160a01b03166001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611caf57600080fd5b505af1158015611cc3573d6000803e3d6000fd5b5050600b80546001600160a01b0319166001600160a01b0385169081179091556040519081523392507fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a9150602001611093565b601354600160a01b900460ff16600114611d435760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19811690915560408051633d665bf960e21b815290516001600160a01b039092169163f5996fe4916004808201926020929091908290030181865afa158015611d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbd9190615b60565b6001600160a01b0316336001600160a01b031614611e015760405162461bcd60e51b81526020600482015260016024820152602960f91b6044820152606401610d28565b611e09613e40565b6013805460ff60a01b1916600160a01b179055565b601354600160a01b900460ff16600114611e4a5760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b191690556001600160a01b03841660009081526015602052604090205460ff16611ea35760405162461bcd60e51b81526020600482015260016024820152600b60fb1b6044820152606401610d28565b60135460408051633d665bf960e21b815290516000926001600160a01b03169163f5996fe49160048083019260209291908290030181865afa158015611eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f119190615b60565b6009546012549192506000916001600160a01b03908116911614611fc9576009546005546001600160a01b03908116911614611fc357600360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbe9190615b60565b611fcb565b81611fcb565b305b9050611fe9336004546009546001600160a01b031691908490613941565b6009546012546001600160a01b0391821691160361208d5760045460095461201e916001600160a01b039091169084906139a8565b60095460048054604051634bd68e6760e11b81526001600160a01b03938416928101929092526024820152908316906397ad1cce90604401600060405180830381600087803b15801561207057600080fd5b505af1158015612084573d6000803e3d6000fd5b50505050612100565b6009546005546001600160a01b0391821691160361210057604051633694313d60e01b8152600060048201526001600160a01b03831690633694313d90602401600060405180830381600087803b1580156120e757600080fd5b505af11580156120fb573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b9190615b47565b90506121816001600160a01b0388168988613a32565b604051633a62959560e21b81526001600160a01b0389169063e98a5654906121af908890889060040161587a565b600060405180830381600087803b1580156121c957600080fd5b505af11580156121dd573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201528392506001600160a01b038a1691506370a0823190602401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b9190615b47565b101561227e5760405162461bcd60e51b8152602060048201526002602482015261464160f01b6044820152606401610d28565b6001600160a01b03881633604080516001600160a01b038b81168252602082018b905292909216917f5a9eeaf8949838813289046091e8ea8a9196a2265ac24841464a2d27026a8549910160405180910390a350506013805460ff60a01b1916600160a01b179055505050505050565b6000806122fb6019541590565b90506000816123635760186000601460008154811061231c5761231c615797565b600091825260208083206005909202909101546001600160a01b03168352820192909252604001902054612354600160601b866157fd565b61235e919061582a565b612369565b600160601b5b905081156123d357601460008154811061238557612385615797565b90600052602060002090600502016004015461239f601290565b6123aa90600a615c64565b6123b8600160601b876157fd565b6123c291906157fd565b6123cc919061582a565b92506123f3565b600160601b816019546123e691906157fd565b6123f0919061582a565b92505b600f5461271090610c749062010000900461ffff16856157fd565b834211156124325760405163313c898160e11b815260048101859052602401610d28565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861249e8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006124f982614012565b905060006125098287878761403f565b9050896001600160a01b0316816001600160a01b031614612550576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610d28565b61255b8a8a8a612c5a565b50505050505050505050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6001600160a01b03808416600081815260166020908152604080832054948616835280832054815163313ce56760e01b81529151939560ff90811695911693909263313ce56792600480820193918290030181865afa158015612618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263c9190615c73565b61264790600a615c64565b6014838154811061265a5761265a615797565b906000526020600020906005020160010154856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ce9190615c73565b6126d990600a615c64565b601484815481106126ec576126ec615797565b9060005260206000209060050201600101548861270991906157fd565b61271391906157fd565b61271d919061582a565b612727919061582a565b9695505050505050565b601354600160a01b900460ff1660011461275d5760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19169055601a805460ff60881b1916905560006127828461406d565b8061280257506001546001600160a01b031663847987a4336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156127de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128029190615c90565b61284057600f546127109061282390640100000000900461ffff1682615cab565b6128319061ffff16866157fd565b61283b919061582a565b612842565b835b90506000601954600160601b8361285991906157fd565b612863919061582a565b9050612870333087612cd3565b8160196000828254612882919061584c565b9091555061289290503083612d76565b6128a461289f838761584c565b614093565b60145460005b818110156129b0576000600160601b8460186000601486815481106128d1576128d1615797565b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205461290591906157fd565b61290f919061582a565b905080156129a75780601860006014858154811061292f5761292f615797565b600091825260208083206005909202909101546001600160a01b031683528201929092526040018120805490919061296890849061584c565b909155506129a7905033826014858154811061298657612986615797565b60009182526020909120600590910201546001600160a01b03169190613a32565b506001016128aa565b506129b9613e40565b60405186815233907fe4bf69c2fff7ace5eed72842e9abf52af2218a3a78cb83d7824f999dbfd75e719060200160405180910390a25050601a805460ff60881b1916600160881b17905550506013805460ff60a01b1916600160a01b1790555050565b601354600160a01b900460ff16600114612a485760405162461bcd60e51b8152600401610d289061585f565b6013805460ff60a01b19169055601a805460ff60881b191690558315612a6e5783612ae8565b600b546001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae89190615b47565b935060008411612b1f5760405162461bcd60e51b8152602060048201526002602482015261131560f21b6044820152606401610d28565b612b3733600b546001600160a01b0316903087613941565b600254600b54612b54916001600160a01b039182169116866139a8565b60025460055460408051635d5155ef60e11b81523060048201526001600160a01b0392831660248201526044810188905260648101879052608481018690523360a482015260c481018590529051919092169163baa2abde9160e480830192600092919082900301818387803b158015612bcd57600080fd5b505af1158015612be1573d6000803e3d6000fd5b50505050612bec3390565b6001600160a01b03167fdfdd120ded9b7afc0c23dd5310e93aaa3e1c3b9f75af9b805fab3030842439f285604051612c2691815260200190565b60405180910390a25050601a805460ff60881b1916600160881b17905550506013805460ff60a01b1916600160a01b179055565b612c6783838360016140f2565b505050565b6000612c788484612567565b9050600019811015612ccd5781811015612cbe57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610d28565b612ccd848484840360006140f2565b50505050565b6001600160a01b038316612cfd57604051634b637e8f60e11b815260006004820152602401610d28565b6001600160a01b038216612d275760405163ec442f0560e01b815260006004820152602401610d28565b612c678383836141d9565b6000610df46143e8565b6001600160a01b038216612d665760405163ec442f0560e01b815260006004820152602401610d28565b612d72600083836141d9565b5050565b6001600160a01b038216612da057604051634b637e8f60e11b815260006004820152602401610d28565b612d72826000836141d9565b612db461445c565b612dbe86866144a7565b612dc7866144b9565b60068054336001600160a01b03199091161790556013805460ff60a01b1916600160a01b179055601a805460ff60881b1916600160881b1790556064612e1061271060146157fd565b612e1a919061582a565b826060015161ffff161115612e2e57600080fd5b6064612e3d61271060146157fd565b612e47919061582a565b826080015161ffff161115612e5b57600080fd5b6064612e6a61271060466157fd565b612e74919061582a565b825161ffff161115612e8557600080fd5b6064612e9461271060636157fd565b612e9e919061582a565b826020015161ffff161115612eb257600080fd5b6064612ec161271060636157fd565b612ecb919061582a565b826040015161ffff161115612edf57600080fd5b6064612eee61271060056157fd565b612ef8919061582a565b8260a0015161ffff161115612f0c57600080fd5b6010805485919060ff191660018381811115612f2a57612f2a6151e2565b0217905550426011558151600f80546020808601516040808801516060808a015160808b015160a08c015161ffff908116600160501b0261ffff60501b19928216600160401b02929092166bffffffff000000000000000019938216600160301b0267ffff00000000000019968316640100000000029690961667ffffffff0000000019988316620100000263ffffffff19909b1692909c1691909117989098179590951698909817919091179690961693909317179092558551600c80546001600160a01b039092166001600160a01b031990921691909117905590850151600d81905590850151600e80549387015115156101000261ff00199215159290921661ffff199490941693909317179091551561304b578260200151613050565b624f1a005b600c600101819055506000806000806000806000878060200190518101906130789190615cc5565b959c50939a5091985096509450925090506001600160a01b0387166130c55760405162461bcd60e51b81526020600482015260036024820152620504c560ec1b6044820152606401610d28565b601280546001600160a01b03199081166001600160a01b03898116919091179092556009805482168884161790556000805482168784161790556001805482168684161790556003805482168584161790556002805490911691831691821790556040805163456d019760e11b81529051638ada032e916004808201926020929091908290030181865afa158015613161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131859190615b60565b600780546001600160a01b0319166001600160a01b0392831617905560025460408051635088cc2b60e11b81529051919092169163a11198569160048083019260209291908290030181865afa1580156131e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132079190615b60565b600880546001600160a01b03199081166001600160a01b0393841617909155600580549091168983161790556040805163313ce56760e01b815290519187169163313ce567916004808201926020929091908290030181865afa158015613272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132969190615c73565b6132a190600a615c64565b6132ac90600a6157fd565b6004908155600254604080516315ab88c960e31b815290516001600160a01b039092169263ad5c46489282820192602092908290030181865afa1580156132f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331b9190615b60565b600a80546001600160a01b0319166001600160a01b0392909216919091179055604051339030907f96b5b9b8a7193304150caccf9b80d150675fa3d6af57761d8d8ef1d6f9a1a90990600090a350505050505050505050505050565b80518251146133ac5760405162461bcd60e51b81526020600482015260016024820152602b60f91b6044820152606401610d28565b815160005b818160ff1610156136445760156000858360ff16815181106133d5576133d5615797565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561342d5760405162461bcd60e51b81526020600482015260016024820152601160fa1b6044820152606401610d28565b6000838260ff168151811061344457613444615797565b60200260200101511161347d5760405162461bcd60e51b81526020600482015260016024820152605760f81b6044820152606401610d28565b60146040518060a00160405280868460ff168151811061349f5761349f615797565b60200260200101516001600160a01b03168152602001858460ff16815181106134ca576134ca615797565b602090810291909101810151825260008282018190526040808401829052606093840182905285546001818101885596835291839020855160059093020180546001600160a01b039384166001600160a01b03199182161782559386015196810196909655840151600286015591830151600385018054919093169116179055608001516004909101558251839060ff831690811061356b5761356b615797565b6020026020010151601b600082825461358491906158a9565b925050819055508060166000868460ff16815181106135a5576135a5615797565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600160156000868460ff168151811061360057613600615797565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061363c81615d61565b9150506133b1565b5060008260008151811061365a5761365a615797565b6020026020010151601b54600160601b61367491906157fd565b61367e919061582a565b905060005b8281101561377c57601b548582815181106136a0576136a0615797565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137099190615c73565b61371490600a615c64565b8386848151811061372757613727615797565b602002602001015161373991906157fd565b61374391906157fd565b61374d919061582a565b6014828154811061376057613760615797565b6000918252602090912060046005909202010155600101613683565b5050505050565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006112bb565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020615ec583398151915291610ada906157ad565b60606000600080516020615ec5833981519152610ac9565b600080516020615ea58339815191526001600160a01b03841661383f578181600201600082825461383491906158a9565b909155506138b19050565b6001600160a01b038416600090815260208290526040902054828110156138925760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610d28565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b0383166138cf5760028101805483900390556138ee565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161393391815260200190565b60405180910390a350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052612ccd9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506144e7565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156139f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1c9190615b47565b9050612ccd8484613a2d85856158a9565b614558565b6040516001600160a01b03838116602483015260448201839052612c6791859182169063a9059cbb90606401613976565b6001600160a01b03841660009081526015602052604090205460ff16613ab05760405162461bcd60e51b8152602060048201526002602482015261125560f21b6044820152606401610d28565b6001600160a01b03841660009081526016602052604081205460ff1690613ad76019541590565b9050600081613b16576001600160a01b038716600090815260186020526040902054613b07600160601b886157fd565b613b11919061582a565b613b1c565b600160601b5b905060008215613b875760148481548110613b3957613b39615797565b906000526020600020906005020160040154613b53601290565b613b5e90600a615c64565b613b6c600160601b8a6157fd565b613b7691906157fd565b613b80919061582a565b9050613ba7565b600160601b82601954613b9a91906157fd565b613ba4919061582a565b90505b6000613bb2866145e8565b613be057600f5461271090613bd19062010000900461ffff16846157fd565b613bdb919061582a565b613be3565b60005b905086613bf0828461584c565b1015613c225760405162461bcd60e51b81526020600482015260016024820152604d60f81b6044820152606401610d28565b8160196000828254613c3491906158a9565b90915550613c4d905086613c48838561584c565b612d3c565b8015613c6657613c5d3082612d3c565b613c6681614093565b60145460005b81811015613dd557600086613ccf57613cca6018600060148581548110613c9557613c95615797565b600091825260208083206005909202909101546001600160a01b0316835282019290925260400190205487600160601b614640565b613d06565b613d068c8c60148581548110613ce757613ce7615797565b60009182526020909120600590910201546001600160a01b03166125b1565b905060008111613d3d5760405162461bcd60e51b8152602060048201526002602482015261054360f41b6044820152606401610d28565b806018600060148581548110613d5557613d55615797565b600091825260208083206005909202909101546001600160a01b0316835282019290925260400181208054909190613d8e9084906158a9565b92505081905550613dcc60148381548110613dab57613dab615797565b60009182526020909120600590910201546001600160a01b03168a83614680565b50600101613c6c565b50613dde6147a7565b896001600160a01b0316876001600160a01b03167fad49529616fd9fe4b34e00ac3f98d5cc3531e1232a95f249113b23fdf13c7e858b86604051613e2c929190918252602082015260400190565b60405180910390a350505050505050505050565b601a54600160901b900460ff16600103613e5657565b601a54600090613e7890601490600160401b90046001600160401b0316615d80565b6001600160401b03164211905080613e8d5750565b6000613e98306112a8565b905080600003613ea6575050565b600b54600090613ebe906001600160a01b03166112a8565b9050600046600114613edb57613ed6610fa08361582a565b613ee7565b613ee76103e88361582a565b90506000613ef660648461582a565b9050818410158015613f085750600083115b1561377c57601a80546001600160401b034216600160401b0270ffffffffffffffffff00000000000000001990911617600160801b1790556000818511613f4f5784613f51565b815b600f54909150600090600160501b900461ffff1615801590613f7d5750600c546001600160a01b031615155b8015613fa45750600c546001600160a01b031660009081526017602052604090205460ff16155b15613fea57600f5461271090613fc590600160501b900461ffff16846157fd565b613fcf919061582a565b600c54909150613fea9030906001600160a01b031683613803565b613ffc613ff7828461584c565b614833565b5050601a805460ff60801b191690555050505050565b6000610ca461401f612d32565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061405188888888614b9a565b9250925092506140618282614c69565b50909695505050505050565b60006064601954606361408091906157fd565b61408a919061582a565b90911015919050565b8015806140a45750600f5461ffff16155b156140ac5750565b600f54600090612710906140c49061ffff16846157fd565b6140ce919061582a565b905080601960008282546140e2919061584c565b90915550612d7290503082612d76565b600080516020615ea58339815191526001600160a01b03851661412b5760405163e602df0560e01b815260006004820152602401610d28565b6001600160a01b03841661415557604051634a1406b160e11b815260006004820152602401610d28565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561377c57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516141ca91815260200190565b60405180910390a35050505050565b6001600160a01b03821660009081526017602052604090205460ff16156142275760405162461bcd60e51b8152602060048201526002602482015261424b60f01b6044820152606401610d28565b6001600160a01b038316158061424457506001600160a01b038216155b1561425457612c67838383613803565b600b546000906001600160a01b03858116911614801561428257506007546001600160a01b03848116911614155b600b54601a549192506001600160a01b038581169116149060009060ff600160801b909104161580156142c15750601a54600160881b900460ff166001145b156143c857600b546001600160a01b038781169116146142e3576142e3613e40565b8280156142fc5750600f54600160301b900461ffff1615155b1561433957600f546127109061431d90600160301b900461ffff16866157fd565b614327919061582a565b9050614334863083613803565b6143c8565b8180156143525750600f54600160401b900461ffff1615155b1561437357600f546127109061431d90600160401b900461ffff16866157fd565b8215801561437f575081155b801561438d5750600e5460ff165b156143c85761439e6127108561582a565b9050801580156143ae5750600084115b6143b857806143bb565b60015b90506143c8863083613803565b6143d181614093565b6143e086866117bf848861584c565b505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614413614d22565b61441b614d8c565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166144a557604051631afcd79f60e31b815260040160405180910390fd5b565b6144af61445c565b612d728282614dd0565b6144c161445c565b6144e481604051806040016040528060018152602001603160f81b815250614e21565b50565b600080602060008451602086016000885af18061450a576040513d6000823e3d81fd5b50506000513d9150811561452257806001141561452f565b6001600160a01b0384163b155b15612ccd57604051635274afe760e01b81526001600160a01b0385166004820152602401610d28565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526145a98482614e82565b612ccd576040516001600160a01b038481166024830152600060448301526145de91869182169063095ea7b390606401613976565b612ccd84826144e7565b60006145f46019541590565b80610ca45750600c546001600160a01b0383811691161480156146205750601a546001600160401b0316155b8015610ca457506011546146379062093a806158a9565b42111592915050565b600061464d848484614ecc565b90506000828061465f5761465f615814565b8486091115610cc957600019811061467657600080fd5b6001019392505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156146c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146eb9190615b47565b90506147026001600160a01b038516843085613941565b61470c82826158a9565b6040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015614750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147749190615b47565b1015612ccd5760405162461bcd60e51b81526020600482015260026024820152612a2b60f11b6044820152606401610d28565b601a54600160981b900460ff166147e45760405162461bcd60e51b81526020600482015260016024820152604960f81b6044820152606401610d28565b601a546001600160401b03161580156148105750600c546001600160a01b0316336001600160a01b0316145b156144a557601a805467ffffffffffffffff1916426001600160401b0316179055565b60025461484b9030906001600160a01b031683612c5a565b60135460408051633d665bf960e21b815290516000926001600160a01b03169163f5996fe49160048083019260209291908290030181865afa158015614895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148b99190615b60565b6005546040516370a0823160e01b81526001600160a01b038084166004830152929350600092909116906370a0823190602401602060405180830381865afa158015614909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061492d9190615b47565b6002546005546040516383e4b89f60e01b81523060048201526001600160a01b0391821660248201526044810187905260006064820152858216608482015292935016906383e4b89f9060a4016020604051808303816000875af1158015614999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149bd9190615b47565b506012546005546001600160a01b03918216911603614ac6576005546040516370a0823160e01b81526001600160a01b03848116600483015260009284929116906370a0823190602401602060405180830381865afa158015614a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a489190615b47565b614a52919061584c565b90508015612ccd57600554604051633dc60e8360e01b81526001600160a01b0391821660048201526024810183905290841690633dc60e8390604401600060405180830381600087803b158015614aa857600080fd5b505af1158015614abc573d6000803e3d6000fd5b5050505050505050565b6005546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a0823190602401602060405180830381865afa158015614b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b359190615b47565b1115612c6757604051633694313d60e01b8152600060048201526001600160a01b03831690633694313d90602401600060405180830381600087803b158015614b7d57600080fd5b505af1158015614b91573d6000803e3d6000fd5b50505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115614bd55750600091506003905082614c5f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614c29573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614c5557506000925060019150829050614c5f565b9250600091508190505b9450945094915050565b6000826003811115614c7d57614c7d6151e2565b03614c86575050565b6001826003811115614c9a57614c9a6151e2565b03614cb85760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115614ccc57614ccc6151e2565b03614ced5760405163fce698f760e01b815260048101829052602401610d28565b6003826003811115614d0157614d016151e2565b03612d72576040516335e2f38360e21b815260048101829052602401610d28565b6000600080516020615ec583398151915281614d3c6137ac565b805190915015614d5457805160209091012092915050565b81548015614d63579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020615ec583398151915281614da66137eb565b805190915015614dbe57805160209091012092915050565b60018201548015614d63579392505050565b614dd861445c565b600080516020615ea58339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03614e128482615de6565b5060048101612ccd8382615de6565b614e2961445c565b600080516020615ec58339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102614e638482615de6565b5060038101614e728382615de6565b5060008082556001909101555050565b6000806000806020600086516020880160008a5af192503d9150600051905082801561272757508115614eb85780600114612727565b50505050506001600160a01b03163b151590565b6000808060001985870985870292508281108382030391505080600003614f055760008411614efa57600080fd5b508290049050610cc9565b808411614f1157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000815180845260005b81811015614fa457602081850181015186830182015201614f88565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610cc96020830184614f7e565b600060208284031215614fe957600080fd5b5035919050565b6001600160a01b03811681146144e457600080fd5b6000806040838503121561501857600080fd5b823561502381614ff0565b946020939093013593505050565b60008060006060848603121561504657600080fd5b833561505181614ff0565b9250602084013561506181614ff0565b929592945050506040919091013590565b60006020828403121561508457600080fd5b8135610cc981614ff0565b602080825282518282018190526000918401906040840190835b8181101561510757835160018060a01b038151168452602081015160208501526040810151604085015260018060a01b036060820151166060850152608081015160808501525060a0830192506020840193506001810190506150a9565b509095945050505050565b60008083601f84011261512457600080fd5b5081356001600160401b0381111561513b57600080fd5b60208301915083602082850101111561515357600080fd5b9250929050565b6000806000806060858703121561517057600080fd5b843561517b81614ff0565b93506020850135925060408501356001600160401b0381111561519d57600080fd5b6151a987828801615112565b95989497509550505050565b61ffff811681146144e457600080fd5b6000602082840312156151d757600080fd5b8135610cc9816151b5565b634e487b7160e01b600052602160045260246000fd5b602081016002831061521a57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561525857615258615220565b60405290565b604051601f8201601f191681016001600160401b038111828210171561528657615286615220565b604052919050565b600082601f83011261529f57600080fd5b8135602083016000806001600160401b038411156152bf576152bf615220565b50601f8301601f19166020016152d48161525e565b9150508281528583830111156152e957600080fd5b82826020830137600092810160200192909252509392505050565b6000806000806080858703121561531a57600080fd5b84356001600160401b0381111561533057600080fd5b61533c8782880161528e565b94505060208501356001600160401b0381111561535857600080fd5b6153648782880161528e565b93505060408501356001600160401b0381111561538057600080fd5b61538c8782880161528e565b92505060608501356001600160401b038111156153a857600080fd5b6153b48782880161528e565b91505092959194509250565b60ff60f81b8816815260e0602082015260006153df60e0830189614f7e565b82810360408401526153f18189614f7e565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015615447578351835260209384019390920191600101615429565b50909b9a5050505050505050505050565b6000806000806080858703121561546e57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561549f57600080fd5b83356154aa81614ff0565b95602085013595506040909401359392505050565b6000806000806000608086880312156154d757600080fd5b85356154e281614ff0565b945060208601356154f281614ff0565b93506040860135925060608601356001600160401b0381111561551457600080fd5b61552088828901615112565b969995985093965092949392505050565b60ff811681146144e457600080fd5b600080600080600080600060e0888a03121561555b57600080fd5b873561556681614ff0565b9650602088013561557681614ff0565b95506040880135945060608801359350608088013561559481615531565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156155c457600080fd5b82356155cf81614ff0565b915060208301356155df81614ff0565b809150509250929050565b6000806000606084860312156155ff57600080fd5b833561560a81614ff0565b925060208401359150604084013561562181614ff0565b809150509250925092565b60006001600160401b0382111561564557615645615220565b5060051b60200190565b600082601f83011261566057600080fd5b813561567361566e8261562c565b61525e565b8082825260208201915060208360051b86010192508583111561569557600080fd5b602085015b838110156156bb5780356156ad81615531565b83526020928301920161569a565b5095945050505050565b6000806000606084860312156156da57600080fd5b8335925060208401356001600160401b038111156156f757600080fd5b8401601f8101861361570857600080fd5b803561571661566e8261562c565b8082825260208201915060208360051b85010192508883111561573857600080fd5b6020840193505b8284101561576357833561575281614ff0565b82526020938401939091019061573f565b945050505060408401356001600160401b0381111561578157600080fd5b61578d8682870161564f565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806157c157607f821691505b6020821081036157e157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ca457610ca46157e7565b634e487b7160e01b600052601260045260246000fd5b60008261584757634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610ca457610ca46157e7565b6020808252600190820152601360fa1b604082015260600190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b80820180821115610ca457610ca46157e7565b805180151581146158cc57600080fd5b919050565b600060c082840312156158e357600080fd5b60405160c081016001600160401b038111828210171561590557615905615220565b80604052508091508251615918816151b5565b81526020830151615928816151b5565b6020820152604083015161593b816151b5565b6040820152606083015161594e816151b5565b60608201526080830151615961816151b5565b608082015260a0830151615974816151b5565b60a0919091015292915050565b600082601f83011261599257600080fd5b81516159a061566e8261562c565b8082825260208201915060208360051b8601019250858311156159c257600080fd5b602085015b838110156156bb5780516159da81614ff0565b8352602092830192016159c7565b600082601f8301126159f957600080fd5b8151615a0761566e8261562c565b8082825260208201915060208360051b860101925085831115615a2957600080fd5b602085015b838110156156bb578051835260209283019201615a2e565b80516158cc81614ff0565b6000806000806000808688036101c0811215615a6c57600080fd5b6080811215615a7a57600080fd5b50615a83615236565b8751615a8e81614ff0565b815260208881015190820152615aa6604089016158bc565b6040820152615ab7606089016158bc565b60608201529550615acb88608089016158d1565b94506101408701516001600160401b03811115615ae757600080fd5b615af389828a01615981565b9450506101608701516001600160401b03811115615b1057600080fd5b615b1c89828a016159e8565b935050615b2c6101808801615a46565b9150615b3b6101a088016158bc565b90509295509295509295565b600060208284031215615b5957600080fd5b5051919050565b600060208284031215615b7257600080fd5b8151610cc981614ff0565b6001815b6001841115615bb857808504811115615b9c57615b9c6157e7565b6001841615615baa57908102905b60019390931c928002615b81565b935093915050565b600082615bcf57506001610ca4565b81615bdc57506000610ca4565b8160018114615bf25760028114615bfc57615c18565b6001915050610ca4565b60ff841115615c0d57615c0d6157e7565b50506001821b610ca4565b5060208310610133831016604e8410600b8410161715615c3b575081810a610ca4565b615c486000198484615b7d565b8060001904821115615c5c57615c5c6157e7565b029392505050565b6000610cc960ff841683615bc0565b600060208284031215615c8557600080fd5b8151610cc981615531565b600060208284031215615ca257600080fd5b610cc9826158bc565b61ffff8281168282160390811115610ca457610ca46157e7565b600080600080600080600060e0888a031215615ce057600080fd5b8751615ceb81614ff0565b6020890151909750615cfc81614ff0565b6040890151909650615d0d81614ff0565b6060890151909550615d1e81614ff0565b6080890151909450615d2f81614ff0565b60a0890151909350615d4081614ff0565b60c0890151909250615d5181614ff0565b8091505092959891949750929550565b600060ff821660ff8103615d7757615d776157e7565b60010192915050565b6001600160401b038181168382160190811115610ca457610ca46157e7565b601f821115612c6757806000526020600020601f840160051c81016020851015615dc65750805b601f840160051c820191505b8181101561377c5760008155600101615dd2565b81516001600160401b03811115615dff57615dff615220565b615e1381615e0d84546157ad565b84615d9f565b6020601f821160018114615e475760008315615e2f5750848201515b600019600385901b1c1916600184901b17845561377c565b600084815260208120601f198516915b82811015615e775787850151825560209485019460019092019101615e57565b5084821015615e955786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a2646970667358221220ff6bdf9caa2e4aab035ff8bfe4c0e0a70a02117a4fc1f803a7092846d7646b4b64736f6c634300081c0033c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2