0 txs
161 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
allowedClosers
viewfunction allowedClosers(address) view returns (bool)
allowedSenders
viewfunction allowedSenders(address) view returns (bool)
allUsers
viewfunction allUsers(uint256) view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
burner
viewfunction burner(address) view returns (bool)
debtAdjustmentValues
viewfunction debtAdjustmentValues() view returns (uint256 debtAdjustment, uint256 time, uint256 debtValueRatio)
decimals
viewfunction decimals() view returns (uint8)
depositRecord
viewfunction depositRecord(bytes32) view returns (address user, uint256 depositedAmount, uint256 leverageAmount, uint256 receivedMarketTokens, uint256 feesPaid, bool success, uint16 leverageMultiplier, address longToken)
DTVLimit
viewfunction DTVLimit() view returns (uint256)
DTVSlippage
viewfunction DTVSlippage() view returns (uint256)
feeConfiguration
viewfunction feeConfiguration() view returns (uint256 withdrawalFee, uint256 liquidatorsRewardPercentage, address feeReceiver, address waterFeeReceiver, uint256 fixedFeeSplit)
getAllUsers
viewfunction getAllUsers() view returns (address[])
getCurrentLeverageAmount
viewfunction getCurrentLeverageAmount(uint256 _positionID, address _user) view returns (uint256, uint256)
getEstimatedCurrentPosition
viewfunction getEstimatedCurrentPosition(uint256 _positionID, uint256 _shares, address _user) view returns (uint256 currentValueInUSDC, uint256 previousValueInUSDC)
getEstimatedGMPrice
viewfunction getEstimatedGMPrice(address _longToken) view returns (uint256)
getPositionOpenTimestamp
viewfunction getPositionOpenTimestamp(address _user, uint256 _positionId) view returns (uint256)
getTotalOpenPosition
viewfunction getTotalOpenPosition(address _user) view returns (uint256)
getUpdatedDebt
viewfunction getUpdatedDebt(uint256 _positionID, address _user) view returns (uint256, uint256, uint256)
gmxAddresses
viewfunction gmxAddresses() view returns (address depositHandler, address withdrawalHandler, address depositVault, address withdrawVault, address gmxRouter, address exchangeRouter)
gmxOpenCloseFees
viewfunction gmxOpenCloseFees() view returns (uint256)
gmxPoolAddresses
viewfunction gmxPoolAddresses(address) view returns (address longToken, address shortToken, address marketToken, address indexToken)
inCloseProcess
viewfunction inCloseProcess(address, uint256) view returns (bool)
isKeeperClosingPosition
viewfunction isKeeperClosingPosition(bytes32) view returns (bool)
isUser
viewfunction isUser(address) view returns (bool)
isWhitelistedAsset
viewfunction isWhitelistedAsset(address) view returns (bool)
keeper
viewfunction keeper() view returns (address)
MAX_LEVERAGE
viewfunction MAX_LEVERAGE() view returns (uint256)
MCPID
viewfunction MCPID() view returns (uint256)
mFeePercent
viewfunction mFeePercent() view returns (uint256)
mFeeReceiver
viewfunction mFeeReceiver() view returns (address)
MIN_LEVERAGE
viewfunction MIN_LEVERAGE() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
positionInfo
viewfunction positionInfo(address, uint256) view returns (uint256 deposit, uint256 position, uint256 price, uint256 closedPositionValue, uint256 closePNL, uint256 leverageAmount, address user, uint32 positionId, address liquidator, uint16 leverageMultiplier, bool closed, bool liquidated, address longToken)
positionLeftoverDebt
viewfunction positionLeftoverDebt(address, uint256) view returns (uint256)
positionOriginalDebt
viewfunction positionOriginalDebt(address, uint256) view returns (uint256)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address MasterChef, address WaterContract, address VodkaHandler, address WETH)
symbol
viewfunction symbol() view returns (string)
timeAdjustment
viewfunction timeAdjustment() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
userDebtAdjustmentValue
viewfunction userDebtAdjustmentValue(address, uint256) view returns (uint256)
userDepositKeyRecords
viewfunction userDepositKeyRecords(address, uint256) view returns (bytes32)
userWithdrawKeyRecords
viewfunction userWithdrawKeyRecords(address, uint256) view returns (bytes32)
vaultMaturityTime
viewfunction vaultMaturityTime() view returns (uint256)
withdrawRecord
viewfunction withdrawRecord(bytes32) view returns (address user, uint256 gmTokenWithdrawnAmount, uint256 returnedUSDC, uint256 feesPaid, uint256 profits, uint256 positionID, uint256 fullDebtValue, bool success, bool isLiquidation, address longToken, address liquidator)
adminClosePosition
nonpayablefunction adminClosePosition(uint256 _positionID, address _user, address _receiver)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
fulfillCancelDeposit
nonpayablefunction fulfillCancelDeposit(address longToken, uint256 amount)
fulfillCancelWithdrawal
nonpayablefunction fulfillCancelWithdrawal(bytes32 key)
fulfillClosePosition
nonpayablefunction fulfillClosePosition(bytes32 _key, uint256 _returnedUSDC) returns (bool)
fulfillLiquidation
nonpayablefunction fulfillLiquidation(bytes32 _key, uint256 _returnedUSDC) returns (bool)
fulfillOpenPosition
nonpayablefunction fulfillOpenPosition(bytes32 key, uint256 _receivedTokens) returns (bool)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address _water)
renounceOwnership
nonpayablefunction renounceOwnership()
requestClosePosition
payablefunction requestClosePosition(uint256 _positionID, address _user) payable
requestLiquidatePosition
payablefunction requestLiquidatePosition(address _user, uint256 _positionID) payable
requestOpenPosition
payablefunction requestOpenPosition(uint256 _amount, uint16 _leverage, address _shortAsset) payable
setAllowed
nonpayablefunction setAllowed(address _sender, bool _allowed)
setAssetWhitelist
nonpayablefunction setAssetWhitelist(address _asset, address _longToken, address _shortToken, address _marketToken, address _indexToken, bool _status)
setDTVLimit
nonpayablefunction setDTVLimit(uint256 _DTVLimit, uint256 _DTVSlippage)
setGmxContracts
nonpayablefunction setGmxContracts(address _depositHandler, address _withdrawalHandler, address _depositVault, address _gmxRouter, address _exchangeRouter, address _withdrawVault)
setGmxOpenCloseFees
nonpayablefunction setGmxOpenCloseFees(uint256 _gmxOpenCloseFees)
setMFeePercent
nonpayablefunction setMFeePercent(uint256 _mFeePercent, address _mFeeReceiver)
setProtocolFee
nonpayablefunction setProtocolFee(address _feeReceiver, uint256 _withdrawalFee, address _waterFeeReceiver, uint256 _liquidatorsRewardPercentage, uint256 _fixedFeeSplit)
setStrategyParams
nonpayablefunction setStrategyParams(address _MasterChef, uint256 _MCPID, address _water, address _VodkaHandler, address _usdc, address _keeper)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposited
event Deposited(address indexed depositer, uint256 depositTokenAmount, uint256 createdAt, uint256 GMXMarketAmount, address longToken, uint256 _positionID)
GMXAddressesChanged
event GMXAddressesChanged(address newDepositHandler, address newWithdrawalHandler, address newDepositVault, address newWithdrawVault, address newgmxRouter, address newExchangeRouter)
Initialized
event Initialized(uint8 version)
Liquidated
event Liquidated(address indexed liquidator, address indexed borrower, uint256 positionId, uint256 liquidatedAmount, uint256 outputAmount, uint256 time)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ProtocolFeeChanged
event ProtocolFeeChanged(address newFeeReceiver, uint256 newWithdrawalFee, address newWaterFeeReceiver, uint256 liquidatorsRewardPercentage)
RequestedClose
event RequestedClose(address indexed user, uint256 positionID, address longToken, bytes32 key)
SetStrategyParams
event SetStrategyParams(address indexed MasterChef, uint256 MCPID, address water, address VodkaHandler, address keeper)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
WithdrawalFulfilled
event WithdrawalFulfilled(address indexed user, uint256 amount, uint256 time, uint256 returnedUSDC, uint256 waterProfit, uint256 leverageUserProfit, address longToken, uint256 positionID, uint256 gmTokenWithdrawnAmount)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615f9f80620000f36000396000f3fe6080604052600436106103455760003560e01c806306fdde0314610458578063095ea7b3146104835780630c243aa4146104b35780630df7b5ca146104e1578063100e196d146104f85780631440ff811461057057806318160ddd146105a957806322c3a752146105be57806323b872dd146105de5780632eef4417146105fe578063313ce5671461061e57806334c1557d1461063a578063351bdfc714610651578063395093511461068a5780633edf0bf2146106aa5780634209fff1146106db57806342966c681461070c5780634697f05d1461072c5780634a548e341461074c5780634af0344b146107635780634e7ec7ec14610791578063546fcf39146107b157806355c4347b1461087457806356406a0b146108af57806358c76b12146108dd5780635c975abb146108f05780635ece24f5146109085780635fdf030f14610928578063610347d31461093b57806364586284146109745780637042d3b614610a6357806370a0823114610a83578063715018a614610aa3578063778cf1ec14610ab857806379cc679014610acf5780637bb1701414610aef5780637c3b532314610b065780637dd6b58a14610b265780637e85648414610b62578063826151ee14610b93578063849005f514610bb3578063862a820814610bd35780638da5cb5b14610bf35780638defc95714610c0857806395d89b4114610c3f57806398c47e8c14610c545780639b45ec9714610cc05780639c735fbb14610cd7578063a2bdedf414610d5e578063a457c2d714610d7e578063a9059cbb14610d9e578063ab1dc42714610dbe578063aced166114610def578063ad70e44f14610e10578063af4b0fe314610e30578063b9b1e4da14610e50578063ba50b9fb14610e70578063bb67f74a14610ef7578063c2aabba314610f28578063c4d66de814610f48578063cbe2d01614610f68578063cc2a586b14610f88578063cf9379c214610f9f578063d0e6a91714610fb2578063d6a868d014610fc9578063dcf16bc014610feb578063dd62ed3e1461100b578063de87eb501461102b578063de91a5e51461106f578063e2842d79146110a8578063ed4fec73146110ca578063f2fde38b146110e1578063fadbcf4814611101578063fe7eb67e1461113257600080fd5b3661045357610132546001600160a01b031633148061036f5750610132546001600160a01b031633145b6103aa5760405162461bcd60e51b815260206004820152600760248201526609cdee8408e9ab60cb1b60448201526064015b60405180910390fd5b61013b5460408051630bf05d7560e31b815290516001600160a01b0390921691635f82eba8916004808201926020929091908290030181865afa1580156103f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041991906153b1565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610451573d6000803e3d6000fd5b005b600080fd5b34801561046457600080fd5b5061046d611152565b60405161047a91906153f2565b60405180910390f35b34801561048f57600080fd5b506104a361049e366004615425565b6111e4565b604051901515815260200161047a565b3480156104bf57600080fd5b506104d36104ce366004615425565b6111fe565b60405190815260200161047a565b3480156104ed57600080fd5b506104d361014a5481565b34801561050457600080fd5b50610138546101395461013a5461013b5461013c54610536946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a00161047a565b34801561057c57600080fd5b506104d361058b366004615425565b61015660209081526000928352604080842090915290825290205481565b3480156105b557600080fd5b5060cb546104d3565b3480156105ca57600080fd5b506104516105d936600461545e565b611230565b3480156105ea57600080fd5b506104a36105f9366004615480565b611245565b34801561060a57600080fd5b50610451610619366004615425565b6112eb565b34801561062a57600080fd5b506040516012815260200161047a565b34801561064657600080fd5b506104d36101435481565b34801561065d57600080fd5b506104d361066c366004615425565b61015560209081526000928352604080842090915290825290205481565b34801561069657600080fd5b506104a36106a5366004615425565b61137e565b3480156106b657600080fd5b506104a36106c53660046154c1565b6101906020526000908152604090205460ff1681565b3480156106e757600080fd5b506104a36106f63660046154da565b6101526020526000908152604090205460ff1681565b34801561071857600080fd5b506104516107273660046154c1565b6113a0565b34801561073857600080fd5b50610451610747366004615505565b6113dd565b34801561075857600080fd5b506104d36101445481565b34801561076f57600080fd5b5061018c54610784906001600160a01b031681565b60405161047a919061553e565b34801561079d57600080fd5b506104a36107ac36600461545e565b611411565b3480156107bd57600080fd5b506108246107cc3660046154c1565b61014c602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b039485169593949293919260ff82169161ffff6101008204169163010000009091041688565b604080516001600160a01b03998a168152602081019890985287019590955260608601939093526080850191909152151560a084015261ffff1660c083015290911660e08201526101000161047a565b34801561088057600080fd5b5061089461088f366004615552565b6119cb565b6040805193845260208401929092529082015260600161047a565b3480156108bb57600080fd5b506108cf6108ca366004615577565b611b32565b60405161047a9291906155b0565b6104516108eb366004615425565b611c65565b3480156108fc57600080fd5b5060975460ff166104a3565b34801561091457600080fd5b506104516109233660046155be565b61213c565b610451610936366004615552565b6121b9565b34801561094757600080fd5b506104d3610956366004615425565b61015760209081526000928352604080842090915290825290205481565b34801561098057600080fd5b506109fe61098f3660046154c1565b61014e602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460078801546008909801546001600160a01b039788169896979596949593949293919260ff8082169361010083049091169262010000909204811691168b565b604080516001600160a01b039c8d168152602081019b909b528a01989098526060890196909652608088019490945260a087019290925260c0860152151560e0850152151561010084015283166101208301529091166101408201526101600161047a565b348015610a6f57600080fd5b506104a3610a7e36600461545e565b612889565b348015610a8f57600080fd5b506104d3610a9e3660046154da565b612c48565b348015610aaf57600080fd5b50610451612c63565b348015610ac457600080fd5b506104d36101495481565b348015610adb57600080fd5b50610451610aea366004615425565b612c77565b348015610afb57600080fd5b506104d361018b5481565b348015610b1257600080fd5b506104d3610b21366004615425565b612c8c565b348015610b3257600080fd5b506104a3610b41366004615425565b61015860209081526000928352604080842090915290825290205460ff1681565b348015610b6e57600080fd5b506104a3610b7d3660046154da565b61018f6020526000908152604090205460ff1681565b348015610b9f57600080fd5b50610451610bae366004615640565b612ca9565b348015610bbf57600080fd5b50610451610bce3660046154c1565b612d1b565b348015610bdf57600080fd5b506104a3610bee36600461545e565b612d29565b348015610bff57600080fd5b50610784613135565b348015610c1457600080fd5b506104d3610c233660046154da565b6001600160a01b0316600090815261014b602052604090205490565b348015610c4b57600080fd5b5061046d613144565b348015610c6057600080fd5b5061012d5461012e5461012f546101305461013154610c8c9493926001600160a01b0390811692169085565b6040805195865260208601949094526001600160a01b0392831693850193909352166060830152608082015260a00161047a565b348015610ccc57600080fd5b506104d36101425481565b348015610ce357600080fd5b50610d2b610cf23660046154da565b6101546020526000908152604090208054600182015460028301546003909301546001600160a01b039283169391831692918216911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161047a565b348015610d6a57600080fd5b50610784610d793660046154c1565b613153565b348015610d8a57600080fd5b506104a3610d99366004615425565b61317e565b348015610daa57600080fd5b506104a3610db9366004615425565b613204565b348015610dca57600080fd5b506104a3610dd93660046154da565b6101536020526000908152604090205460ff1681565b348015610dfb57600080fd5b5061014654610784906001600160a01b031681565b348015610e1c57600080fd5b50610451610e2b36600461567b565b613266565b348015610e3c57600080fd5b50610451610e4b3660046156ef565b6132f5565b348015610e5c57600080fd5b50610451610e6b366004615552565b613341565b348015610e7c57600080fd5b50610132546101335461013454610135546101365461013754610eb5956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c00161047a565b348015610f0357600080fd5b506104a3610f123660046154da565b6101516020526000908152604090205460ff1681565b348015610f3457600080fd5b506108cf610f43366004615552565b613370565b348015610f5457600080fd5b50610451610f633660046154da565b6134f3565b348015610f7457600080fd5b50610451610f833660046154c1565b6136ab565b348015610f9457600080fd5b506104d36101455481565b610451610fad366004615741565b6137eb565b348015610fbe57600080fd5b506104d361018d5481565b348015610fd557600080fd5b5061013d5461013e5461013f5461089492919083565b348015610ff757600080fd5b5061045161100636600461577f565b613d7d565b34801561101757600080fd5b506104d36110263660046157a6565b613ea8565b34801561103757600080fd5b506104d3611046366004615425565b6001600160a01b0391909116600090815261018e60209081526040808320938352929052205490565b34801561107b57600080fd5b5061108f61108a366004615425565b613ed3565b60405161047a9d9c9b9a999897969594939291906157d4565b3480156110b457600080fd5b506110bd613f78565b60405161047a91906158a4565b3480156110d657600080fd5b506104d36101415481565b3480156110ed57600080fd5b506104516110fc3660046154da565b613fda565b34801561110d57600080fd5b506104a361111c3660046154da565b6101506020526000908152604090205460ff1681565b34801561113e57600080fd5b506104d361114d3660046154da565b614050565b606060cc8054611161906158b7565b80601f016020809104026020016040519081016040528092919081815260200182805461118d906158b7565b80156111da5780601f106111af576101008083540402835291602001916111da565b820191906000526020600020905b8154815290600101906020018083116111bd57829003601f168201915b5050505050905090565b6000336111f28185856140d2565b60019150505b92915050565b61014f602052816000526040600020818154811061121b57600080fd5b90600052602060002001600091509150505481565b6112386141f6565b6101499190915561014a55565b6001600160a01b03831660009081526101506020526040812054339060ff168061128857506001600160a01b0384166000908152610150602052604090205460ff165b806112ac57506001600160a01b0381166000908152610150602052604090205460ff165b6112c85760405162461bcd60e51b81526004016103a1906158f1565b6112d3858285614255565b6112de8585856142c9565b60019150505b9392505050565b61013b546001600160a01b031633146113165760405162461bcd60e51b81526004016103a190615926565b6001600160a01b03808316600090815261015460209081526040918290208251608081018452815485168152600182015485169281018390526002820154851693810193909352600301548316606083015261013b549192611379921684614462565b505050565b6000336111f28185856113918383613ea8565b61139b9190615969565b6140d2565b336000908152610151602052604090205460ff166113d05760405162461bcd60e51b81526004016103a190615926565b6113da33826144b8565b50565b6113e56141f6565b6001600160a01b0391909116600090815261015060205260409020805460ff1916911515919091179055565b61013b546000906001600160a01b0316331461143f5760405162461bcd60e51b81526004016103a190615926565b600083815261014e6020908152604080832080546001600160a01b0316845261014b909252822060058201548154929392811061147e5761147e61597c565b906000526020600020906009020190506114df604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b82546001600160a01b03166000908152610158602090815260408083206005870154845290915290205460ff166115285760405162461bcd60e51b81526004016103a190615992565b600783015460ff161561154d5760405162461bcd60e51b81526004016103a1906159b4565b6007820154600160b81b900460ff1615801561157557506007820154600160b01b900460ff16155b6115b85760405162461bcd60e51b815260206004820152601460248201527318db1bdcd959081bdc881b1a5c5d5a59185d195960621b60448201526064016103a1565b825460018301546115d2916001600160a01b0316906145da565b60058381015460018086015492850154600687015560078601546201000090046001600160a01b031660a08501526002808701899055908501549085015491929161161d9190614692565b6080840181905260e0840188905287111561164757608083015161164190886159dc565b60c08401525b6000806000806116718760c001518960070160149054906101000a900461ffff1661ffff166146b7565b92509250925088600601548760e00151116116be578854600789018054600163ff00000160a01b0319166001600160a01b0390921691909117600160b81b17905560e0870151935061173c565b808760c001518a600601548960e001516116d891906159dc565b6116e291906159dc565b6116ec9190615969565b6020880181905260e08801518391859161170691906159dc565b61171091906159dc565b61171a91906159dc565b60078901805460ff60b01b1916600160b01b17905560e088015160048a015593505b60078901805460ff191660011790558215611770576101305461013854611770916001600160a01b03918216911685614462565b81156117955761018c5461013854611795916001600160a01b03918216911684614462565b88546001600160a01b039081166000908152610157602090815260408083208a84529091528120805491905561013a546101385491926117d992811691168761476e565b61013a5460405163015cb0a560e01b81526001600160a01b039091169063015cb0a59061180c90849089906004016155b0565b600060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506007890154600160b81b900460ff16156118655760009a50505050505050505050506111f8565b61012d54600090156118c45761012d546101485460208b015160009261188a9261480c565b61012f54610138549192506118ac916001600160a01b03908116911683614462565b808a602001516118bc91906159dc565b9150506118cb565b5060208801515b8a54610138546118e8916001600160a01b03918216911683614462565b8a600201548a60030160008282546119009190615969565b925050819055508960060160009054906101000a90046001600160a01b03166001600160a01b03167f5034e0a50aae35fc5080dff531f6729be4904139c9bc6afbe5d5c9b96dc6ddc382428e600201548d604001518e606001518f60a001518f8f6040516119af98979695949392919097885260208801969096526040870194909452606086019290925260808501526001600160a01b031660a084015260c083015260e08201526101000190565b60405180910390a25060019d9c50505050505050505050505050565b6001600160a01b038116600090815261014b60205260408120805482918291829190879081106119fd576119fd61597c565b6000918252602091829020604080516101a081018252600993909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b0380821660c0840152600160a01b9182900463ffffffff1660e0840152600784015480821661010085015291820461ffff16610120840152600160b01b820460ff90811615156101408501819052600160b81b909304161515610160840152600890930154909216610180820152915080611adc57508061016001515b15611af257600080600093509350935050611b2b565b6000611b0387836020015188611b32565b5060a08301516101475491925090600090611b209083908561480c565b965090945090925050505b9250925092565b6001600160a01b038116600090815261014b6020526040812080548291829187908110611b6157611b6161597c565b6000918252602091829020604080516101a081018252600993909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b0380821660c0840152600160a01b9182900463ffffffff1660e0840152600784015480821661010085015291820461ffff16610120840152600160b01b820460ff9081161515610140850152600160b81b90920490911615156101608301526008909201549091166101808201819052909150611c4a908690611c4590614050565b614692565b611c58868360400151614692565b9250925050935093915050565b611c6d6148f6565b610146546001600160a01b03163314611cb55760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b60448201526064016103a1565b6001600160a01b038216600090815261014b60205260408120805483908110611ce057611ce061597c565b90600052602060002090600902019050611cfa828461494f565b5060058201556007810154600160b81b900460ff16158015611d2857506007810154600160b01b900460ff16155b611d445760405162461bcd60e51b81526004016103a1906159ef565b60068101546001600160a01b0316611daf5760405162461bcd60e51b815260206004820152602860248201527f566f646b6156323a206c69717569646174696f6e207265717565737420646f656044820152671cc808595e1a5cdd60c21b60648201526084016103a1565b6001600160a01b03831660009081526101586020908152604080832085845290915290205460ff1615611df45760405162461bcd60e51b81526004016103a190615a26565b6000611e0083856119cb565b505090506103e861014a5461014954611e199190615a5d565b611e239190615a8a565b811015611e725760405162461bcd60e51b815260206004820152601e60248201527f4c69717569646174696f6e207468726573686f6c64202172656163686564000060448201526064016103a1565b61013b546008830154604051637afd544960e11b81526001600160a01b039283169263f5faa89292611ea99291169060040161553e565b602060405180830381865afa158015611ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eea9190615aac565b15611f665761014554611efe906002615a5d565b341015611f1d5760405162461bcd60e51b81526004016103a190615ac9565b610146546001600160a01b03166108fc611f38600234615a8a565b6040518115909202916000818181858888f19350505050158015611f60573d6000803e3d6000fd5b50611f89565b61014554341015611f895760405162461bcd60e51b81526004016103a190615afe565b60018083015460088401546001600160a01b039081166000908152610154602090815260408083208151608081018352815486168152968101548516928701929092526002820154841690860152600301549091166060840152909190611ff08284614b2b565b6101375460405163ad23c5a160e01b81529192506000916001600160a01b039091169063ad23c5a190612027908590600401615b2f565b6020604051808303816000875af1158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a9190615c03565b600081815261014e6020908152604080832060018082019990995580546001600160a01b03199081166001600160a01b038f81169182178455600584018f905560078401805461010061ff001982168117835560089687018054339716969096179095559e90940154610100600160b01b0319909e169d1662010000029c909c1717905589835261015882528083208b84528252808320805460ff19168917905598825261014f81529781208054968701815581529690962090930194909455506121389250614e33915050565b5050565b6121446141f6565b61013280546001600160a01b03199081166001600160a01b03988916179091556101338054821696881696909617909555610134805486169487169490941790935561013680548516928616929092179091556101378054841691851691909117905561013580549092169216919091179055565b6001600160a01b038116600090815261014b60205260409020548290829082106122255760405162461bcd60e51b815260206004820152601e60248201527f566f646b613a20706f736974696f6e4944206973206e6f742076616c6964000060448201526064016103a1565b61222d6148f6565b6001600160a01b038316600090815261014b602052604081208054869081106122585761225861597c565b906000526020600020906009020190508060070160179054906101000a900460ff1615801561229357506007810154600160b01b900460ff16155b6122af5760405162461bcd60e51b81526004016103a1906159ef565b60008160010154116122ff5760405162461bcd60e51b8152602060048201526019602482015278566f646b6156323a2021656e6f75676820746f20636c6f736560381b60448201526064016103a1565b60068101546001600160a01b031633148061232a575033600090815261018f602052604090205460ff165b61236a5760405162461bcd60e51b8152602060048201526011602482015270159bd91ad8558c8e8808585b1b1bddd959607a1b60448201526064016103a1565b6001600160a01b03841660009081526101586020908152604080832088845290915290205460ff16156123af5760405162461bcd60e51b81526004016103a190615a26565b61013b546008820154604051637afd544960e11b81526001600160a01b039283169263f5faa892926123e69291169060040161553e565b602060405180830381865afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124279190615aac565b156124a3576101455461243b906002615a5d565b34101561245a5760405162461bcd60e51b81526004016103a190615ac9565b610146546001600160a01b03166108fc612475600234615a8a565b6040518115909202916000818181858888f1935050505015801561249d573d6000803e3d6000fd5b506124c6565b610145543410156124c65760405162461bcd60e51b81526004016103a190615afe565b33600090815261018f602052604081205460ff16156125545761018d546001600160a01b038616600090815261018e602090815260408083208a84529091529020546125129190615969565b4210156125505760405162461bcd60e51b815260206004820152600c60248201526b214d6174757265206461746560a01b60448201526064016103a1565b5060015b60088201546001600160a01b039081166000908152610154602090815260408083208151608081018352815486168152600182015486169381019390935260028101548516918301919091526003015490921660608301526125b6888861494f565b6005860191909155905060006125cc89896119cb565b505090506103e861014a54610149546125e59190615a5d565b6125ef9190615a8a565b81106126345760405162461bcd60e51b81526020600482015260146024820152732bb0b4ba103337b9103634b8bab4b230ba34b7b760611b60448201526064016103a1565b6000612644848760010154614b2b565b6101375460405163ad23c5a160e01b81529192506000916001600160a01b039091169063ad23c5a19061267b908590600401615b2f565b6020604051808303816000875af115801561269a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126be9190615c03565b905085156126e157600081815261019060205260409020805460ff191660011790555b600061014e60008381526020019081526020016000209050876001015481600101819055508a8160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b81600501819055508760080160009054906101000a90046001600160a01b03168160070160026101000a8154816001600160a01b0302191690836001600160a01b0316021790555061014f60008c6001600160a01b03166001600160a01b03168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600161015860008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060006101000a81548160ff0219169083151502179055508a6001600160a01b03167f087e7e8a8268c7ed5e03de7b633951a9a8e23d3bba61e15cb72856540ca2ba508d8a60080160009054906101000a90046001600160a01b03168560405161286993929190615c1c565b60405180910390a250505050505050506128836001606555565b50505050565b61013b546000906001600160a01b031633146128b75760405162461bcd60e51b81526004016103a190615926565b600083815261014e6020908152604080832080546001600160a01b0316845261014b90925282206005820154815492939281106128f6576128f661597c565b6000918252602080832085546001600160a01b0316845261015882526040808520600588015486529092529220546009909102909101915060ff1661294d5760405162461bcd60e51b81526004016103a190615992565b600782015460ff16156129725760405162461bcd60e51b81526004016103a1906159b4565b6007810154600160b81b900460ff1615801561299a57506007810154600160b01b900460ff16155b6129b65760405162461bcd60e51b81526004016103a1906159ef565b60028201849055815460018201546129d7916001600160a01b0316906145da565b81546001600160a01b0316600090815261015760209081526040808320600586015484529091529020546007828101805461ffff60b01b191661010160b01b1790558301805460ff1916600117905560028301548111612b485780836002016000828254612a4591906159dc565b909155505061012e54610148546002850154600092612a639261480c565b600885015461013854919250612a86916001600160a01b03908116911683614462565b6000818560020154612a9891906159dc565b90508015612abd57845461013854612abd916001600160a01b03918216911683614462565b61013a5461013854612adc916001600160a01b0391821691168561476e565b61013a5460405163015cb0a560e01b81526001600160a01b039091169063015cb0a590612b0f90869081906004016155b0565b600060405180830381600087803b158015612b2957600080fd5b505af1158015612b3d573d6000803e3d6000fd5b505050505050612bd7565b61013a54600284015461013854612b6d926001600160a01b039182169291169061476e565b61013a54600284015460405163015cb0a560e01b81526001600160a01b039092169163015cb0a591612ba4918591906004016155b0565b600060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050505b8254600584015460018501546002860154604080519384526020840192909252908201524260608201526001600160a01b039091169033907f81749dfaca15de9da21f7b95c96f27ca0cd78a345932577022746848573cb8619060800160405180910390a350600195945050505050565b6001600160a01b0316600090815260c9602052604090205490565b612c6b6141f6565b612c756000614e3a565b565b612c82823383614255565b61213882826144b8565b61014d602052816000526040600020818154811061121b57600080fd5b612cb16141f6565b61013980546001600160a01b03199081166001600160a01b039889161790915561013a805482169588169590951790945561013b80548516938716939093179092556101388054841691861691909117905561014192909255610146805490911691909216179055565b612d236141f6565b61014555565b61013b546000906001600160a01b03163314612d575760405162461bcd60e51b81526004016103a190615926565b600083815261014c60205260409020600581015460ff1615612d8b5760405162461bcd60e51b81526004016103a1906159b4565b600381018390558054604080516101a08101825260018401548082526020820187905260028501546001600160a01b03909416936000938301918891612dd091615969565b612ddf9064e8d4a51000615a5d565b612df190670de0b6b3a7640000615a5d565b612dfb9190615a8a565b81526000602080830182905260408084018390526002880154606085015287546001600160a01b03908116608086015287811680855261014b84528285205463ffffffff1660a087015260c0860185905260058a015461010080820461ffff1660e089015287018690526101208701869052630100000090049091166101409095019490945292825261015290529081205491925060ff90911615159003612f05576001600160a01b038216600081815261015260205260408120805460ff19166001908117909155610140805491820181559091527f36eddf535f8049bd44c95b98fba53efacad21cb65d066f50b4d05adad523e77c0180546001600160a01b03191690911790555b6005808401805460ff191660019081179091556001600160a01b03808516600090815261018e6020908152604080832061014b808452828520805486529184528285204290556002808c01548c548816875261015786528487208454885286528487205561013d548c5488168752610155865284872084548852865284872055908452815480880183559185529383902088516009909202019081559187015194820194909455928501519083015560608401516003808401919091556080850151600484015560a08501519383019390935560c084015160068301805460e087015163ffffffff16600160a01b9081026001600160c01b0319909216938516939093171790556101008501516007840180546101208801516101408901516101608a01511515600160b81b0260ff60b81b19911515600160b01b029190911661ffff60b01b1961ffff9093169096026001600160b01b03199093169487169490941791909117169290921717905561018084015160089092018054929091166001600160a01b0319929092169190911790558301546130a6908390614e8c565b8051600384015460058501546001600160a01b03858116600081815261014b602090815260409182902054825197885242918801919091529086019490945263010000009092041660608401526080830191909152907f445a258ec42b2ccd7322bc2c33fdd067e59c45379be7af06d3fa187926b288149060a00160405180910390a250600195945050505050565b6033546001600160a01b031690565b606060cd8054611161906158b7565b610140818154811061316457600080fd5b6000918252602090912001546001600160a01b0316905081565b6000338161318c8286613ea8565b9050838110156131ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103a1565b6131f982868684036140d2565b506001949350505050565b336000818152610150602052604081205490919060ff168061323f57506001600160a01b0384166000908152610150602052604090205460ff165b61325b5760405162461bcd60e51b81526004016103a1906158f1565b6111f28185856142c9565b61326e6141f6565b6001600160a01b0395861660009081526101546020908152604080832080546001600160a01b0319908116998b169990991781556001810180548a16988b16989098179097556002870180548916968a1696909617909555600390950180549096169290961691909117909355610153909152909120805460ff1916911515919091179055565b6132fd6141f6565b61012f80546001600160a01b03199081166001600160a01b039788161790915561012d949094556101308054909416929094169190911790915561012e5561013155565b6133496141f6565b61018c80546001600160a01b0319166001600160a01b039290921691909117905561018b55565b6001600160a01b038116600090815261014b602052604081208054829182918690811061339f5761339f61597c565b60009182526020808320604080516101a081018252600994909402909101805484526001810154848401526002810154848301526003810154606085015260048101546080850152600581015460a0850190815260068201546001600160a01b0380821660c0880152600160a01b9182900463ffffffff1660e0880152600784015480821661010089015291820461ffff16610120880152600160b01b820460ff9081161515610140890152600160b81b90920490911615156101608701526008909201548216610180860152908916855261015583528185208a8652909252832054905161013d54929450909290918310156134bf5761013d546134a69083908561480c565b91508360a00151826134b891906159dc565b90506134e6565b506001600160a01b0386166000908152610156602090815260408083208a84529091529020545b9097909650945050505050565b600054610100900460ff16158080156135135750600054600160ff909116105b80613534575061352230614f3b565b158015613534575060005460ff166001145b6135975760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103a1565b6000805460ff1916600117905580156135ba576000805461ff0019166101001790555b61013a80546001600160a01b0319166001600160a01b038416179055670de0b6b3a764000061013d8190554261013e55612710610142556107d06101435561014755620186a06101485561360c614f4a565b613614614f79565b61361c614fa8565b613662604051806040016040528060078152602001662b37b235b0ab1960c91b81525060405180604001604052806005815260200164158c9413d160da1b815250614fd7565b8015612138576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b61013b546001600160a01b03163314806136dd57506136c8613135565b6001600160a01b0316336001600160a01b0316145b6137265760405162461bcd60e51b815260206004820152601a6024820152792b37b235b0ab191d1010b430b7323632b91037b91037bbb732b960311b60448201526064016103a1565b600090815261014e6020908152604080832081516101608101835281546001600160a01b039081168083526001840154838701526002840154838601526003840154606084015260048401546080840152600584015460a08401908152600685015460c0850152600785015460ff808216151560e087015261010080830490911615159086015262010000900483166101208501526008909401549091166101409092019190915284526101588352818420905184529091529020805460ff19169055565b6137f3615008565b6137fb6148f6565b610143548261ffff16101580156138195750610142548261ffff1611155b6138615760405162461bcd60e51b8152602060048201526019602482015278566f646b6156323a20496e76616c6964206c6576657261676560381b60448201526064016103a1565b600083116138af5760405162461bcd60e51b815260206004820152601b60248201527a566f646b6156323a20616d6f756e74206d757374203e207a65726f60281b60448201526064016103a1565b6001600160a01b0381166000908152610153602052604090205460ff166139105760405162461bcd60e51b8152602060048201526015602482015274159bd91ad8558c8e88085dda1a5d195b1a5cdd1959605a1b60448201526064016103a1565b610145543410156139335760405162461bcd60e51b81526004016103a190615afe565b6101385461394c906001600160a01b031633308661504e565b826000816139618161ffff87166103e861480c565b61396b91906159dc565b61013a54604051632c6211d160e21b8152600481018390523060248201529192506000916001600160a01b039091169063b1884744906044016020604051808303816000875af11580156139c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e79190615aac565b905080613a2b5760405162461bcd60e51b815260206004820152601260248201527115d85d195c8e8813195b990819985a5b195960721b60448201526064016103a1565b6000613a378385615969565b6101365461013854919250613a59916001600160a01b0390811691168361476e565b610137546101385461013454604051631cdacd5960e31b81526001600160a01b039384169363e6d66ac893613a9993908216929116908690600401615c3b565b600060405180830381600087803b158015613ab357600080fd5b505af1158015613ac7573d6000803e3d6000fd5b50506101375461013454604051637d39aaf160e01b81526001600160a01b039283169450637d39aaf193503492613b049216908390600401615c5f565b6000604051808303818588803b158015613b1d57600080fd5b505af1158015613b31573d6000803e3d6000fd5b505050506001600160a01b038681166000908152610154602090815260408083208151608080820184528254871682526001830154871682860190815260028401548816838601908152600390940154881660608085019190915285516101808101875230815261013b548a168189015233818801529451891690850152825188169184019190915251861660a08301528251858152808501845260c08301528251858152938401835260e08201939093526101008101849052610120810184905261014554610140820152621e8480610160820152610137549151635b4e956160e01b8152929550931690635b4e956190613c31908590600401615c8e565b6020604051808303816000875af1158015613c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c749190615c03565b9050600061014c60008381526020019081526020016000209050868160020181905550878160010181905550348160040181905550338160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550898160050160016101000a81548161ffff021916908361ffff16021790555083600001518160050160036101000a8154816001600160a01b0302191690836001600160a01b0316021790555061014d6000336001600160a01b03166001600160a01b0316815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091505550505050505050506113796001606555565b613d856141f6565b6001600160a01b038216600090815261014b60205260408120805485908110613db057613db061597c565b906000526020600020906009020190508060070160179054906101000a900460ff16158015613deb57506007810154600160b01b900460ff16155b613e075760405162461bcd60e51b81526004016103a1906159ef565b60068101546001820154613e24916001600160a01b0316906145da565b60088101546001600160a01b03908116600090815261015460209081526040918290208251608081018452815485168152600182810154861693820193909352600282015485169381018490526003909101549093166060840152830154613e8e91908590614462565b50600701805460ff60b01b1916600160b01b179055505050565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61014b6020528160005260406000208181548110613ef057600080fd5b60009182526020909120600990910201805460018201546002830154600384015460048501546005860154600687015460078801546008909801549699509497509295919490936001600160a01b038082169363ffffffff600160a01b9384900416938183169361ffff908304169260ff600160b01b8404811693600160b81b90041691168d565b60606101408054806020026020016040519081016040528092919081815260200182805480156111da57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613fb3575050505050905090565b613fe26141f6565b6001600160a01b0381166140475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a1565b6113da81614e3a565b61013b54604051633a2cb99f60e01b815260009182916001600160a01b0390911690633a2cb99f9061408690869060040161553e565b608060405180830381865afa1580156140a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c79190615d7f565b509195945050505050565b6001600160a01b0383166141345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103a1565b6001600160a01b0382166141955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103a1565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336141ff613135565b6001600160a01b031614612c755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103a1565b60006142618484613ea8565b9050600019811461288357818110156142bc5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103a1565b61288384848484036140d2565b6001600160a01b03831661432d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103a1565b6001600160a01b03821661438f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103a1565b6001600160a01b038316600090815260c96020526040902054818110156144075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103a1565b6001600160a01b03808516600081815260c960205260408082208686039055928616808252908390208054860190559151600080516020615f4a833981519152906144559086815260200190565b60405180910390a3612883565b6113798363a9059cbb60e01b8484604051602401614481929190615c5f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261506f565b6001600160a01b0382166145185760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103a1565b6001600160a01b038216600090815260c960205260409020548181101561458c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103a1565b6001600160a01b038316600081815260c960209081526040808320868603905560cb8054879003905551858152919291600080516020615f4a833981519152910160405180910390a3505050565b610139546001600160a01b031615612c825760006145f783612c48565b905081811061460a5761137983836144b8565b61461483826144b8565b600061462082846159dc565b61013954610141546040516362e69a4d60e11b81529293506001600160a01b039091169163c5cd349a9161465a9188908690600401615c1c565b600060405180830381600087803b15801561467457600080fd5b505af1158015614688573d6000803e3d6000fd5b5050505050505050565b600064e8d4a510006146ad8484670de0b6b3a764000061480c565b6112e49190615a8a565b6000806000846000036146d257506000915081905080611b2b565b610131546000906064906146e890612710615a5d565b610131546146f7908890615a5d565b6147019190615969565b61470b9190615a8a565b9050600061271061471c8389615a5d565b6147269190615a8a565b9050600061271061018b548961473c9190615a5d565b6147469190615a8a565b905060006147548284615969565b61475e908a6159dc565b9299919850919650945050505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156147be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e29190615c03565b90506128838463095ea7b360e01b856147fb8686615969565b604051602401614481929190615c5f565b60008080600019858709858702925082811083820303915050806000036148465783828161483c5761483c615a74565b04925050506112e4565b80841161488d5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016103a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6002606554036149485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103a1565b6002606555565b6001600160a01b038116600090815261014b602052604081208054829182918690811061497e5761497e61597c565b60009182526020808320604080516101a081018252600994909402909101805484526001810154848401526002810154848301526003810154606085015260048101546080850152600581015460a0850190815260068201546001600160a01b0380821660c0880152600160a01b9182900463ffffffff1660e0880152600784015480821661010089015291820461ffff16610120880152600160b01b820460ff9081161515610140890152600160b81b90920490911615156101608701526008909201548216610180860152908916855261015583528185208a865290925290922054915161013d5491935090821015614af85761013d54614a839082908461480c565b90508260a0015181614a9591906159dc565b6001600160a01b0387166000908152610156602090815260408083208b845290915281208054909190614ac9908490615969565b909155505061013d546001600160a01b0387166000908152610155602090815260408083208b84529091529020555b6001600160a01b0386166000908152610156602090815260408083208a8452909152902054909450925050509250929050565b604080516101608101825260008082526020820181905281830181905260608083018290526080830181905260a083015260c0820181905260e08201819052610100820181905261012082018190526101408201528382015161013654925163095ea7b360e01b815291926001600160a01b039182169263095ea7b392614bb89216908690600401615c5f565b6020604051808303816000875af1158015614bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bfb9190615aac565b5061013b548351604051637afd544960e11b81526000926001600160a01b03169163f5faa89291614c2f919060040161553e565b602060405180830381865afa158015614c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c709190615aac565b15614c8757614c80600234615a8a565b9050614c8d565b50610145545b6101375461013554604051637d39aaf160e01b81526001600160a01b0392831692637d39aaf1928592614cc892909116908390600401615c5f565b6000604051808303818588803b158015614ce157600080fd5b505af1158015614cf5573d6000803e3d6000fd5b505061013754604088810151610135549151631cdacd5960e31b81526001600160a01b03938416965063e6d66ac89550614d3a94509092909116908890600401615c3b565b600060405180830381600087803b158015614d5457600080fd5b505af1158015614d68573d6000803e3d6000fd5b5050604080516101608101825261013b546001600160a01b0390811680835260208301523382840152918801519091166060820152915050608081016000604051908082528060200260200182016040528015614dcf578160200160208202803683370190505b5081526020016000604051908082528060200260200182016040528015614e00578160200160208202803683370190505b508152600060208201819052604082018190526060820152610145546080820152621e848060a090910152949350505050565b6001606555565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216614ee25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103a1565b8060cb6000828254614ef49190615969565b90915550506001600160a01b038216600081815260c96020908152604080832080548601905551848152600080516020615f4a833981519152910160405180910390a35050565b6001600160a01b03163b151590565b600054610100900460ff16614f715760405162461bcd60e51b81526004016103a190615db5565b612c75615144565b600054610100900460ff16614fa05760405162461bcd60e51b81526004016103a190615db5565b612c75615174565b600054610100900460ff16614fcf5760405162461bcd60e51b81526004016103a190615db5565b612c756151a7565b600054610100900460ff16614ffe5760405162461bcd60e51b81526004016103a190615db5565b61213882826151ce565b60975460ff1615612c755760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016103a1565b612883846323b872dd60e01b85858560405160240161448193929190615c3b565b60006150c4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661520e9092919063ffffffff16565b90508051600014806150e55750808060200190518101906150e59190615aac565b6113795760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103a1565b600054610100900460ff1661516b5760405162461bcd60e51b81526004016103a190615db5565b612c7533614e3a565b600054610100900460ff1661519b5760405162461bcd60e51b81526004016103a190615db5565b6097805460ff19169055565b600054610100900460ff16614e335760405162461bcd60e51b81526004016103a190615db5565b600054610100900460ff166151f55760405162461bcd60e51b81526004016103a190615db5565b60cc6152018382615e4e565b5060cd6113798282615e4e565b606061521d8484600085615225565b949350505050565b6060824710156152865760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103a1565b600080866001600160a01b031685876040516152a29190615f0d565b60006040518083038185875af1925050503d80600081146152df576040519150601f19603f3d011682016040523d82523d6000602084013e6152e4565b606091505b50915091506152f587838387615300565b979650505050505050565b6060831561536d5782516000036153665761531a85614f3b565b6153665760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103a1565b508161521d565b61521d83838151156153825781518083602001fd5b8060405162461bcd60e51b81526004016103a191906153f2565b6001600160a01b03811681146113da57600080fd5b6000602082840312156153c357600080fd5b81516112e48161539c565b60005b838110156153e95781810151838201526020016153d1565b50506000910152565b60208152600082518060208401526154118160408501602087016153ce565b601f01601f19169190910160400192915050565b6000806040838503121561543857600080fd5b82356154438161539c565b946020939093013593505050565b6001600160a01b03169052565b6000806040838503121561547157600080fd5b50508035926020909101359150565b60008060006060848603121561549557600080fd5b83356154a08161539c565b925060208401356154b08161539c565b929592945050506040919091013590565b6000602082840312156154d357600080fd5b5035919050565b6000602082840312156154ec57600080fd5b81356112e48161539c565b80151581146113da57600080fd5b6000806040838503121561551857600080fd5b82356155238161539c565b91506020830135615533816154f7565b809150509250929050565b6001600160a01b0391909116815260200190565b6000806040838503121561556557600080fd5b8235915060208301356155338161539c565b60008060006060848603121561558c57600080fd5b833592506020840135915060408401356155a58161539c565b809150509250925092565b918252602082015260400190565b60008060008060008060c087890312156155d757600080fd5b86356155e28161539c565b955060208701356155f28161539c565b945060408701356156028161539c565b935060608701356156128161539c565b925060808701356156228161539c565b915060a08701356156328161539c565b809150509295509295509295565b60008060008060008060c0878903121561565957600080fd5b86356156648161539c565b95506020870135945060408701356156028161539c565b60008060008060008060c0878903121561569457600080fd5b863561569f8161539c565b955060208701356156af8161539c565b945060408701356156bf8161539c565b935060608701356156cf8161539c565b925060808701356156df8161539c565b915060a0870135615632816154f7565b600080600080600060a0868803121561570757600080fd5b85356157128161539c565b94506020860135935060408601356157298161539c565b94979396509394606081013594506080013592915050565b60008060006060848603121561575657600080fd5b83359250602084013561ffff8116811461576f57600080fd5b915060408401356155a58161539c565b60008060006060848603121561579457600080fd5b83359250602084013561576f8161539c565b600080604083850312156157b957600080fd5b82356157c48161539c565b915060208301356155338161539c565b8d8152602081018d9052604081018c9052606081018b9052608081018a905260a081018990526001600160a01b0388811660c083015263ffffffff881660e0830152861661010082015261ffff85166101208201528315156101408201526101a0810183151561016083015261584e610180830184615451565b9e9d5050505050505050505050505050565b600081518084526020808501945080840160005b838110156158995781516001600160a01b031687529582019590820190600101615874565b509495945050505050565b6020815260006112e46020830184615860565b600181811c908216806158cb57607f821691505b6020821081036158eb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527a115490cc8c0e881d1c985b9cd9995c881b9bdd08185b1b1bddd959602a1b604082015260600190565b6020808252601390820152722737ba1030b63637bbb2b2103a3790313ab93760691b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156111f8576111f8615953565b634e487b7160e01b600052603260045260246000fd5b602080825260089082015267216f6e676f696e6760c01b604082015260600190565b6020808252600e908201526d105b1c9958591e4818db1bdcd95960921b604082015260600190565b818103818111156111f8576111f8615953565b6020808252601d908201527f566f646b6156323a20636c6f736564206f72206c697175696461746564000000604082015260600190565b6020808252601f908201527f566f646b6156323a20636c6f736520706f736974696f6e206f6e676f696e6700604082015260600190565b80820281158282048414176111f8576111f8615953565b634e487b7160e01b600052601260045260246000fd5b600082615aa757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615abe57600080fd5b81516112e4816154f7565b6020808252602790820152600080516020615f2a83398151915260408201526632b2b99015101960c91b606082015260800190565b6020808252602390820152600080516020615f2a83398151915260408201526265657360e81b606082015260800190565b60208152615b41602082018351615451565b60006020830151615b556040840182615451565b506040830151615b686060840182615451565b506060830151615b7b6080840182615451565b5060808301516101608060a0850152615b98610180850183615860565b915060a0850151601f198584030160c0860152615bb58382615860565b92505060c085015160e085015260e0850151610100818187015280870151915050610120615be68187018315159052565b860151610140868101919091529095015193019290925250919050565b600060208284031215615c1557600080fd5b5051919050565b9283526001600160a01b03919091166020830152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60208152615ca0602082018351615451565b60006020830151615cb46040840182615451565b506040830151615cc76060840182615451565b506060830151615cda6080840182615451565b506080830151615ced60a0840182615451565b5060a0830151615d0060c0840182615451565b5060c08301516101808060e0850152615d1d6101a0850183615860565b915060e0850151610100601f198685030181870152615d3c8483615860565b90870151610120878101919091528701519093509050610140615d628187018315159052565b860151610160868101919091529095015193019290925250919050565b60008060008060808587031215615d9557600080fd5b505082516020840151604085015160609095015191969095509092509050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561137957600081815260208120601f850160051c81016020861015615e275750805b601f850160051c820191505b81811015615e4657828155600101615e33565b505050505050565b81516001600160401b03811115615e6757615e67615c78565b615e7b81615e7584546158b7565b84615e00565b602080601f831160018114615eb05760008415615e985750858301515b600019600386901b1c1916600185901b178555615e46565b600085815260208120601f198616915b82811015615edf57888601518255948401946001909101908401615ec0565b5085821015615efd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615f1f8184602087016153ce565b919091019291505056fe566f646b6156323a20696e636f727265637420676d784f70656e436c6f736546ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ae5c339ddfbbc99e4636bd07d5f3d6bd1cf57a8c11dbc69587042b99932622a064736f6c63430008130033