0 txs
2 calls
constructor
constructor()
functions
AUTOMATION_ROLE
viewfunction AUTOMATION_ROLE() view returns (bytes32)
bveToken
viewfunction bveToken() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBveTokenBalance
viewfunction getBveTokenBalance() view returns (uint256 balance)
getClaimableRebase
viewfunction getClaimableRebase() view returns (uint256)
getCurrentEpoch
viewfunction getCurrentEpoch() view returns (uint256)
getLastVoteEpoch
viewfunction getLastVoteEpoch() view returns (uint256)
getOptionPaymentToken
viewfunction getOptionPaymentToken() view returns (address paymentToken)
getOptionTokenBalance
viewfunction getOptionTokenBalance() view returns (uint256 balance)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[] addresses)
getTotalLockedAmount
viewfunction getTotalLockedAmount() view returns (uint256)
getVeLockDetails
viewfunction getVeLockDetails() view returns (tuple)
getVeVotingPower
viewfunction getVeVotingPower() view returns (uint256)
getVoteRecord
viewfunction getVoteRecord(uint256 epoch) view returns (tuple)
getVoteTokens
viewfunction getVoteTokens(uint256 epoch) view returns (address[] tokens)
getVoteTokensWithBalances
viewfunction getVoteTokensWithBalances(uint256 epoch) view returns (address[] tokens, uint256[] balances)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
lastVoteEpoch
viewfunction lastVoteEpoch() view returns (uint256)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
OPERATIONS_ROLE
viewfunction OPERATIONS_ROLE() view returns (bytes32)
optionToken
viewfunction optionToken() view returns (address)
owner
viewfunction owner() view returns (address)
rewardRecipient
viewfunction rewardRecipient() view returns (address)
rewardsDistributor
viewfunction rewardsDistributor() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
trustedCallTargets
viewfunction trustedCallTargets(address) view returns (bool)
veToken
viewfunction veToken() view returns (address)
veTokenId
viewfunction veTokenId() view returns (uint256)
voter
viewfunction voter() view returns (address)
voteRecords
viewfunction voteRecords(uint256) view returns (uint256 epoch, uint256 timestamp)
VOTING_ROLE
viewfunction VOTING_ROLE() view returns (bytes32)
claimBribes
nonpayablefunction claimBribes(address[] bribes, address[][] tokens)
claimRebase
nonpayablefunction claimRebase()
claimRewardsForEpoch
nonpayablefunction claimRewardsForEpoch(uint256 epoch)
depositNft
nonpayablefunction depositNft(uint256 _veTokenId)
executeCall
nonpayablefunction executeCall(address target, bytes data) returns (bytes result)
executeCallMulti
nonpayablefunction executeCallMulti(address[] targets, bytes[] data) returns (bytes[] results)
executeCustomSwaps
nonpayablefunction executeCustomSwaps(address target, bytes[] data, address[] tokens, uint256[] amounts) returns (bytes[] results)
exerciseBveToken
nonpayablefunction exerciseBveToken(uint256 amount) returns (uint256 newTokenId)
exerciseOptionToken
nonpayablefunction exerciseOptionToken() returns (uint256 paymentAmount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _veToken, address _voter, address _rewardsDistributor, address _bveToken, address _optionToken, address _admin, address _automationAddress, address[] _operators)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setBveToken
nonpayablefunction setBveToken(address _bveToken)
setOptionToken
nonpayablefunction setOptionToken(address _optionToken)
setRewardRecipient
nonpayablefunction setRewardRecipient(address _newRecipient)
setTrustedCallTarget
nonpayablefunction setTrustedCallTarget(address target, bool trusted)
sweepNfts
nonpayablefunction sweepNfts(address[] nfts, uint256[] tokenIds, address to)
sweepTokens
nonpayablefunction sweepTokens(address[] tokens, uint256[] amounts, address to)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferRewardToken
nonpayablefunction transferRewardToken(address token, uint256 amountToKeep)
vote
nonpayablefunction vote(address[] pools, uint256[] weights)
withdrawNft
nonpayablefunction withdrawNft(uint256 amount, address receiver) returns (uint256 newTokenId)
events
BribesClaimed
event BribesClaimed(address[] bribes)
BveTokenExercised
event BveTokenExercised(uint256 indexed amount, uint256 indexed newTokenId, uint256 indexed mergedTokenId)
BveTokenUpdated
event BveTokenUpdated(address indexed oldBveToken, address indexed newBveToken)
CallExecuted
event CallExecuted(address indexed target, bytes data, bytes result)
FeesClaimed
event FeesClaimed(address[] fees)
Initialized
event Initialized(uint8 version)
OptionTokenExercised
event OptionTokenExercised(uint256 indexed amount, uint256 indexed paymentAmount, uint256 indexed underlyingReceived)
OptionTokenUpdated
event OptionTokenUpdated(address indexed oldOptionToken, address indexed newOptionToken)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RebaseClaimed
event RebaseClaimed(uint256 amount)
RewardRecipientUpdated
event RewardRecipientUpdated(address indexed oldRecipient, address indexed newRecipient)
RewardsClaimed
event RewardsClaimed(uint256 indexed epoch, uint256 indexed veTokenId)
RewardTokenTransferred
event RewardTokenTransferred(address indexed to, address indexed token, uint256 amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SweepWithdrawNft
event SweepWithdrawNft(address indexed to, address indexed nft, uint256 indexed veTokenId)
SweepWithdrawToken
event SweepWithdrawToken(address indexed to, address indexed token, uint256 amount)
TrustedCallTargetUpdated
event TrustedCallTargetUpdated(address indexed target, bool indexed trusted)
VeNftDeposited
event VeNftDeposited(uint256 indexed veTokenId, uint256 lockedAmount)
VeNftMerged
event VeNftMerged(uint256 indexed fromTokenId, uint256 indexed toTokenId)
VeNftWithdrawn
event VeNftWithdrawn(uint256 indexed newTokenId, uint256 amount, address indexed receiver)
VoteExecuted
event VoteExecuted(uint256 indexed epoch, address[] pools, uint256[] weights)
errors
AmountMismatch
error AmountMismatch()
ArrayLengthMismatch
error ArrayLengthMismatch()
BveTokenNotSet
error BveTokenNotSet()
CallFailed
error CallFailed()
InsufficientBalance
error InsufficientBalance()
InsufficientTokenBalance
error InsufficientTokenBalance()
InvalidAmount
error InvalidAmount()
InvalidArrayLength
error InvalidArrayLength()
InvalidFee
error InvalidFee()
InvalidNft
error InvalidNft()
InvalidTarget
error InvalidTarget()
InvalidTokenId
error InvalidTokenId()
InvalidTokenId
error InvalidTokenId()
OptionTokenNotSet
error OptionTokenNotSet()
SplitFailed
error SplitFailed()
Unauthorized
error Unauthorized()
VoteRecordNotFound
error VoteRecordNotFound()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615dca80620000f36000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806391d14854116101de578063ca15c8731161010f578063e59171d0116100ad578063f25d8a441161007c578063f25d8a4414610868578063f2fde38b1461087b578063f66e311b1461088e578063fef27b02146108a257600080fd5b8063e59171d014610831578063e767159d14610844578063e93900a31461084c578063ea4644bb1461085557600080fd5b8063d753dcc8116100e9578063d753dcc8146107fa578063d907b13014610803578063de97674f14610816578063e521136f1461081e57600080fd5b8063ca15c873146107c1578063ca9f81ca146107d4578063d547741f146107e757600080fd5b8063b7c3505f1161017c578063b9bf8a0a11610156578063b9bf8a0a1461077e578063bca8c7b514610786578063bf8b90e2146107a6578063c2b79e98146107ae57600080fd5b8063b7c3505f14610750578063b8d3d30814610763578063b97dd9e21461077657600080fd5b8063a217fddf116101b8578063a217fddf1461070d578063a3246ad314610715578063b3aa527d14610735578063b4cd143a1461074857600080fd5b806391d14854146106b957806391d2b32e146106f2578063991ba731146106fa57600080fd5b80633b92eb23116102c357806357b2a88b11610261578063715018a611610230578063715018a61461067857806378a6cc09146106805780638da5cb5b146106955780639010d07c146106a657600080fd5b806357b2a88b1461060d57806365ff87a6146106205780636f054a3d146106285780636f816a201461066557600080fd5b806346c733971161029d57806346c73397146105d557806346c96aac146105df5780634f06e0f7146105f2578063507436231461060557600080fd5b80633b92eb231461058e5780633f2a5540146105a1578063460258c9146105b457600080fd5b8063248a9ca31161033057806328df5d461161030a57806328df5d461461053f5780632bab754b146105525780632f2ff15d1461056657806336568abe1461057b57600080fd5b8063248a9ca3146104b857806324c20eec146104db578063268b8c691461050257600080fd5b8063154cb5a81161036c578063154cb5a814610428578063177f33891461044857806317f333401461046c5780632488d9091461049857600080fd5b806301ffc9a71461039357806312a70f0b146103bb578063150b7a02146103f0575b600080fd5b6103a66103a1366004614fc0565b6108b5565b60405190151581526020015b60405180910390f35b6103e27fa0cc82bfc6a0e1fd4746daa2c96f2cbac6feca4912d2b7f78808a14ff40807db81565b6040519081526020016103b2565b61040f6103fe366004615058565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016103b2565b61043b610436366004615110565b6108e0565b6040516103b29190615215565b6103a6610456366004615277565b60ff602081905260009182526040909120541681565b61010054610480906001600160a01b031681565b6040516001600160a01b0390911681526020016103b2565b6104ab6104a6366004615294565b610b33565b6040516103b29190615321565b6103e26104c6366004615294565b60009081526097602052604090206001015490565b6103e27f85d36e3b488c35c2a15344b305cb84e2000f26d4f3a7c1e8a516f0e82aee752a81565b61052a610510366004615294565b610101602052600090815260409020805460039091015482565b604080519283526020830191909152016103b2565b61043b61054d36600461537b565b610c47565b61010454610480906001600160a01b031681565b6105796105743660046153e7565b610d41565b005b6105796105893660046153e7565b610d57565b60fb54610480906001600160a01b031681565b60fd54610480906001600160a01b031681565b6105c76105c2366004615294565b610de4565b6040516103b2929190615417565b6103e26101025481565b60fc54610480906001600160a01b031681565b610579610600366004615277565b611016565b6103e2611071565b61057961061b366004615294565b6110fe565b6104806112f9565b61063061138b565b6040516103b2919081518152602080830151908201526040808301519082015260609182015115159181019190915260800190565b61057961067336600461537b565b6113d3565b61057961172b565b6103e2600080516020615d7583398151915281565b6033546001600160a01b0316610480565b6104806106b436600461543c565b61173f565b6103a66106c73660046153e7565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6103e261175e565b6103e2610708366004615294565b611780565b6103e2600081565b610728610723366004615294565b611a80565b6040516103b2919061545e565b610579610743366004615547565b611b2c565b610579611d0d565b61057961075e366004615294565b611e99565b610579610771366004615627565b612086565b6103e26120e2565b6103e261218d565b610799610794366004615655565b6121e9565b6040516103b291906156aa565b6103e26121fe565b6105796107bc36600461537b565b612249565b6103e26107cf366004615294565b6123cd565b6105796107e23660046156bd565b6123e4565b6105796107f53660046153e7565b612623565b610102546103e2565b6103e26108113660046153e7565b61262b565b6103e26126e2565b61057961082c366004615277565b6127e0565b61057961083f366004615277565b612862565b6103e26128bd565b6103e260fe5481565b6105796108633660046156e9565b612ccd565b610579610876366004615808565b612eaa565b610579610889366004615277565b612fef565b61010354610480906001600160a01b031681565b6107286108b0366004615294565b61307f565b60006001600160e01b03198216635a05180f60e01b14806108da57506108da82613194565b92915050565b60606108ea6131c9565b6001600160a01b038816600090815260ff602081905260409091205416610923576040516282b42960e81b815260040160405180910390fd5b83821461094357604051634ec4810560e11b815260040160405180910390fd5b60005b84811015610a6f5760008686838181106109625761096261588c565b90506020020160208101906109779190615277565b604051636eb1769f60e11b81523060048201526001600160a01b038c8116602483015291925060009183169063dd62ed3e90604401602060405180830381865afa1580156109c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed91906158a2565b9050858584818110610a0157610a0161588c565b90506020020135811015610a5a57610a246001600160a01b0383168c6000613223565b610a5a8b878786818110610a3a57610a3a61588c565b90506020020135846001600160a01b03166132239092919063ffffffff16565b50508080610a67906158d1565b915050610946565b508567ffffffffffffffff811115610a8957610a89615471565b604051908082528060200260200182016040528015610abc57816020015b6060815260200190600190039081610aa75790505b50905060005b86811015610b2757610af789898984818110610ae057610ae061588c565b9050602002810190610af291906158ea565b613376565b828281518110610b0957610b0961588c565b60200260200101819052508080610b1f906158d1565b915050610ac2565b50979650505050505050565b610b5e6040518060800160405280600081526020016060815260200160608152602001600081525090565b6000828152610101602090815260409182902082516080810184528154815260018201805485518186028101860190965280865291949293858101939290830182828015610bd557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610c2d57602002820191906000526020600020905b815481526020019060010190808311610c19575b505050505081526020016003820154815250509050919050565b6060610c516131c9565b838214610c7157604051634ec4810560e11b815260040160405180910390fd5b8367ffffffffffffffff811115610c8a57610c8a615471565b604051908082528060200260200182016040528015610cbd57816020015b6060815260200190600190039081610ca85790505b50905060005b84811015610d3757610d07868683818110610ce057610ce061588c565b9050602002016020810190610cf59190615277565b858584818110610ae057610ae061588c565b828281518110610d1957610d1961588c565b60200260200101819052508080610d2f906158d1565b915050610cc3565b505b949350505050565b610d496131c9565b610d538282613497565b5050565b6001600160a01b0381163314610dda5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610d5382826134b9565b606080600061010160008581526020019081526020016000206040518060800160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e6b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e4d575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610ec357602002820191906000526020600020905b815481526020019060010190808311610eaf575b5050505050815260200160038201548152505090508060000151600003610efd57604051632f05f46960e21b815260040160405180910390fd5b610f06816134db565b9250825167ffffffffffffffff811115610f2257610f22615471565b604051908082528060200260200182016040528015610f4b578160200160208202803683370190505b50915060005b835181101561100f57838181518110610f6c57610f6c61588c565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe091906158a2565b838281518110610ff257610ff261588c565b602090810291909101015280611007816158d1565b915050610f51565b5050915091565b61101e6131c9565b61010480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ffd6981dcfd06dc9bfea81c3eb58195dc07271c01eed5933da29035451f4e43d990600090a35050565b610103546000906001600160a01b031661108b5750600090565b610103546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024015b602060405180830381865afa1580156110d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f991906158a2565b905090565b600080516020615d7583398151915261111f6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806111575750600081815260976020908152604080832033845290915290205460ff165b6111b45760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b600082815261010160209081526040808320815160808101835281548152600182018054845181870281018701909552808552919492938584019390929083018282801561122b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161120d575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561128357602002820191906000526020600020905b81548152602001906001019080831161126f575b50505050508152602001600382015481525050905080600001516000036112bd57604051632f05f46960e21b815260040160405180910390fd5b6112c681613876565b60fe5460405184907f38be9b012e428704c0fb2b81dfd53444b76ac4cd45c46cfd2d661f73d97cf47b90600090a3505050565b610104546000906001600160a01b03166113135750600090565b61010460009054906101000a90046001600160a01b03166001600160a01b0316633013ce296040518163ffffffff1660e01b8152600401602060405180830381865afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f99190615931565b6113b860405180608001604052806000815260200160008152602001600081526020016000151581525090565b60fe5460fb546110f9916001600160a01b0390911690613968565b600080516020615d758339815191526113f46033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061142c5750600081815260976020908152604080832033845290915290205460ff165b6114895760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b60fe546000036114ac576040516307ed98ed60e31b815260040160405180910390fd5b8382146114cc57604051634ec4810560e11b815260040160405180910390fd5b60fc54604080516303aa30b960e11b815290516000926001600160a01b03169163075461729160048083019260209291908290030181865afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190615931565b6001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159b91906158a2565b60fc5460405163037c0b5160e51b81529192506001600160a01b031690636f816a20906115d290899089908990899060040161598c565b600060405180830381600087803b1580156115ec57600080fd5b505af1158015611600573d6000803e3d6000fd5b505050508061010281905550604051806080016040528082815260200187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060408051602087810282810182019093528782529283019290918891889182918501908490808284376000920182905250938552505042602093840152508381526101018252604090208251815582820151805191926116bb92600185019290910190614f0f565b50604082015180516116d7916002840191602090910190614f70565b5060608201518160030155905050807f1383afe130223102b4c91dedfa02425285670061011d89d4fc94945a36175df38787878760405161171b949392919061598c565b60405180910390a2505050505050565b6117336131c9565b61173d6000613a34565b565b600082815260c9602052604081206117579083613a86565b9392505050565b60fe5460fb5460009161177a916001600160a01b031690613968565b51919050565b6000600080516020615d758339815191526117a36033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806117db5750600081815260976020908152604080832033845290915290205460ff165b6118385760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b610103546001600160a01b03166118625760405163811d56f560e01b815260040160405180910390fd5b8260000361188357604051631f2a200560e01b815260040160405180910390fd5b60fe546000036118a6576040516307ed98ed60e31b815260040160405180910390fd5b61010354604051639130325d60e01b8152600481018590523060248201526001600160a01b0390911690639130325d906044016020604051808303816000875af11580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906158a2565b60fb54604051636318523760e01b8152600481018390529193506000916001600160a01b0390911690636318523790602401608060405180830381865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906159f7565b905080606001516119b05760fb546119b0906001600160a01b031684613a92565b60fb5460fe5460405163d1c2babb60e01b81526004810186905260248101919091526001600160a01b039091169063d1c2babb90604401600060405180830381600087803b158015611a0157600080fd5b505af1158015611a15573d6000803e3d6000fd5b5050505060fe54837fc9abff9563eddda3f468d65834853d56c489df02bd5ac658dddd56505f0f9dfe60405160405180910390a360fe54604051849086907f4d2378e9171b6731df583e9292af6746a367188bbb37d26519ff76c490779a8c90600090a45050919050565b60606000611a8d836123cd565b90508067ffffffffffffffff811115611aa857611aa8615471565b604051908082528060200260200182016040528015611ad1578160200160208202803683370190505b50915060005b81811015611b2557611ae9848261173f565b838281518110611afb57611afb61588c565b6001600160a01b039092166020928302919091019091015280611b1d816158d1565b915050611ad7565b5050919050565b611b346131c9565b8151835114611b565760405163512509d360e11b815260040160405180910390fd5b60005b8351811015611d07576000848281518110611b7657611b7661588c565b602002602001015190506000848381518110611b9457611b9461588c565b60209081029190910101516040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d91906158a2565b905081811015611c3057604051637222ae5760e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015611c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca39190615a63565b50826001600160a01b0316856001600160a01b03167f5bf76ef0db3550a96f76d3c13dfa002b5e1df9e4c4d65dce31f074c670b8b64884604051611ce991815260200190565b60405180910390a35050508080611cff906158d1565b915050611b59565b50505050565b600080516020615d75833981519152611d2e6033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611d665750600081815260976020908152604080832033845290915290205460ff165b611dc35760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b60fe54600003611de6576040516307ed98ed60e31b815260040160405180910390fd5b60fd5460fe5460405163379607f560e01b815260048101919091526000916001600160a01b03169063379607f5906024016020604051808303816000875af1158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a91906158a2565b90507f27a045625d038b408c8245a43e31996b4872a3f33f53e35b0b83613bf609f27481604051611e8d91815260200190565b60405180910390a15050565b611ea16131c9565b60fb54604051636318523760e01b8152600481018390526000916001600160a01b031690636318523790602401608060405180830381865afa158015611eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0f91906159f7565b60fb546040516323b872dd60e01b8152336004820152306024820152604481018590529192506001600160a01b0316906323b872dd90606401600060405180830381600087803b158015611f6257600080fd5b505af1158015611f76573d6000803e3d6000fd5b505050508060600151611f9c576040516307f903ab60e11b815260040160405180910390fd5b60fe54600003611fb05760fe82905561204a565b60fb5460fe5460405163d1c2babb60e01b81526004810185905260248101919091526001600160a01b039091169063d1c2babb90604401600060405180830381600087803b15801561200157600080fd5b505af1158015612015573d6000803e3d6000fd5b5050505060fe54827fc9abff9563eddda3f468d65834853d56c489df02bd5ac658dddd56505f0f9dfe60405160405180910390a35b60fe5481516040519081527f7c2fb9c31dd32c6d7ef4e5cfd9b9b881983baf79919f2cef97485cd0d79cae299060200160405180910390a25050565b61208e6131c9565b6001600160a01b038216600081815260ff6020526040808220805460ff191685151590811790915590519092917f65c0bffcbb5931f33f25b196feb56c4ff24d6389e20dc395d702d6bd80b7c6b591a35050565b60fc54604080516303aa30b960e11b815290516000926001600160a01b03169163075461729160048083019260209291908290030181865afa15801561212c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121509190615931565b6001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d5573d6000803e3d6000fd5b600060fe54600014806121a9575060fd546001600160a01b0316155b156121b45750600090565b60fd5460fe5460405163d1d58b2560e01b81526001600160a01b039092169163d1d58b25916110b89160040190815260200190565b60606121f36131c9565b610d39848484613376565b610104546000906001600160a01b03166122185750600090565b610104546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024016110b8565b600080516020615d7583398151915261226a6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806122a25750600081815260976020908152604080832033845290915290205460ff165b6122ff5760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b60fe54600003612322576040516307ed98ed60e31b815260040160405180910390fd5b60fc5460fe54604051637715ee7560e01b81526001600160a01b0390921691637715ee759161235b918991899189918991600401615a80565b600060405180830381600087803b15801561237557600080fd5b505af1158015612389573d6000803e3d6000fd5b505050507f1a9f7513e27a97076aedd1dfbdba6c5a81d7eedccb0aa97b35f5749760b00dde85856040516123be929190615b3e565b60405180910390a15050505050565b600081815260c9602052604081206108da90613b17565b600080516020615d758339815191526124056033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061243d5750600081815260976020908152604080832033845290915290205460ff165b61249a5760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b610100546001600160a01b03166124c45760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f91906158a2565b90506000838210612549576125448483615b52565b61254c565b60005b90508060000361255d575050505050565b6101005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb906044016020604051808303816000875af11580156125b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d59190615a63565b50610100546040518281526001600160a01b038781169216907f5e3ad6a35a517902ae49f7bdec0f3a433d9f1475036975c1b0208649eed64a5d9060200160405180910390a350505b505050565b610dda6131c9565b60006126356131c9565b60fe54600003612658576040516307ed98ed60e31b815260040160405180910390fd5b8260000361267957604051631f2a200560e01b815260040160405180910390fd5b60fe5460fb54612696916001600160a01b03909116908585613b21565b9050816001600160a01b0316817fb07b8038c5b2bb672154286657edc7c53071ad9f68734047d2801242dc2884ef856040516126d491815260200190565b60405180910390a392915050565b60008060fc60009054906101000a90046001600160a01b03166001600160a01b031663075461726040518163ffffffff1660e01b8152600401602060405180830381865afa158015612738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275c9190615931565b6001600160a01b031663d13996086040518163ffffffff1660e01b8152600401602060405180830381865afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd91906158a2565b60fe5460fb549192506127da916001600160a01b03169083613f12565b91505090565b6127e86131c9565b6001600160a01b03811661280f5760405163d92e233d60e01b815260040160405180910390fd5b61010080546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fc8c11bb97ac2ffa10ce2e2a98f4c1fd8df84cfa2e1a15e013ed2383ab1f527ad90600090a35050565b61286a6131c9565b61010380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f4d5f70ee0a8d3a711838d85eb70ec92b2bc31064955ea4d5396b5f594e2eff7390600090a35050565b6000600080516020615d758339815191526128e06033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806129185750600081815260976020908152604080832033845290915290205460ff165b6129755760405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608401610dd1565b610104546001600160a01b031661299f57604051633ebf050b60e21b815260040160405180910390fd5b610104546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156129e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0d91906158a2565b905080600003612a205760009250505090565b6101045460408051633013ce2960e01b815290516000926001600160a01b031691633013ce299160048083019260209291908290030181865afa158015612a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8f9190615931565b6101045460405162dbf42d60e51b8152600481018590529192506000916001600160a01b0390911690631b7e85a090602401602060405180830381865afa158015612ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0291906158a2565b6040516370a0823160e01b815230600482015290915081906001600160a01b038416906370a0823190602401602060405180830381865afa158015612b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6f91906158a2565b1015612b8e57604051637222ae5760e11b815260040160405180910390fd5b61010454612baa906001600160a01b0384811691166000613223565b61010454612bc5906001600160a01b03848116911683613223565b620f4240601e600068056bc75e2d6310000082612be28589615b69565b612bec9190615b69565b612bf69190615b88565b61010454604051636b1bcdb960e11b815260048101899052602481018390523060448201529192506001600160a01b03169063d6379b72906064016020604051808303816000875af1158015612c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7491906158a2565b61010454909850612c93906001600160a01b0387811691166000613223565b8588877f569e918b2ab0e0583e9d923ec6baf6549c051a3665921f2f59bec3577585b97a60405160405180910390a45050505050505b5090565b600054610100900460ff1615808015612ced5750600054600160ff909116105b80612d075750303b158015612d07575060005460ff166001145b612d795760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610dd1565b6000805460ff191660011790558015612d9c576000805461ff0019166101001790555b612da784848461400e565b6001600160a01b0389161580612dc457506001600160a01b038816155b80612dd657506001600160a01b038716155b15612df45760405163d92e233d60e01b815260040160405180910390fd5b60fb80546001600160a01b03199081166001600160a01b038c81169190911790925560fc805482168b841617905560fd805482168a8416179055610103805482168984161790556101048054821688841617905560335461010080549190931691161790558015612e9f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612eb26131c9565b838214612ed25760405163512509d360e11b815260040160405180910390fd5b60005b84811015612fe7576000868683818110612ef157612ef161588c565b9050602002016020810190612f069190615277565b90506000858584818110612f1c57612f1c61588c565b604051632142170760e11b81523060048201526001600160a01b038881166024830152602090920293909301356044840181905293508416916342842e0e9150606401600060405180830381600087803b158015612f7957600080fd5b505af1158015612f8d573d6000803e3d6000fd5b5050505080826001600160a01b0316856001600160a01b03167f69b434f0c9b48c374f0df0e5a473dcb0b5a1fe6ba4319b3837577d1d87bdbedf60405160405180910390a450508080612fdf906158d1565b915050612ed5565b505050505050565b612ff76131c9565b6001600160a01b0381166130735760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610dd1565b61307c81613a34565b50565b60008181526101016020908152604080832081516080810183528154815260018201805484518187028101870190955280855260609695929485840193909291908301828280156130f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130db575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561315157602002820191906000526020600020905b81548152602001906001019080831161313d575b505050505081526020016003820154815250509050806000015160000361318b57604051632f05f46960e21b815260040160405180910390fd5b611757816134db565b60006001600160e01b03198216637965db0b60e01b14806108da57506301ffc9a760e01b6001600160e01b03198316146108da565b6033546001600160a01b0316331461173d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dd1565b80158061329d5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329b91906158a2565b155b61330f5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610dd1565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b17905261261e908490614103565b6001600160a01b038316600090815260ff6020819052604090912054606091166133b2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0384166133d95760405163416aebb560e11b815260040160405180910390fd5b600080856001600160a01b031685856040516133f6929190615baa565b6000604051808303816000865af19150503d8060008114613433576040519150601f19603f3d011682016040523d82523d6000602084013e613438565b606091505b509150915061344782826141eb565b9250856001600160a01b03167fb4c5e06eecc8733d1cabe0b2ce47f8a78f693bba8868ac567558478e33db9ee586868660405161348693929190615bba565b60405180910390a250509392505050565b6134a1828261428b565b600082815260c96020526040902061261e908261432d565b6134c38282614342565b600082815260c96020526040902061261e90826143c5565b60606000806000806134ec866143da565b604080516103e8808252617d20820190925294985092965090945092506000919060208201617d00803683370190505090506000805b84518110156135e05760005b8582815181106135405761354061588c565b6020026020010151518110156135cd578582815181106135625761356261588c565b6020026020010151818151811061357b5761357b61588c565b60200260200101518484815181106135955761359561588c565b6001600160a01b0390921660209283029190910190910152826135b7816158d1565b93505080806135c5906158d1565b91505061352e565b50806135d8816158d1565b915050613522565b5060005b83518110156136a25760005b8482815181106136025761360261588c565b60200260200101515181101561368f578482815181106136245761362461588c565b6020026020010151818151811061363d5761363d61588c565b60200260200101518484815181106136575761365761588c565b6001600160a01b039092166020928302919091019091015282613679816158d1565b9350508080613687906158d1565b9150506135f0565b508061369a816158d1565b9150506135e4565b5060008167ffffffffffffffff8111156136be576136be615471565b6040519080825280602002602001820160405280156136e7578160200160208202803683370190505b5090506000805b838110156137c157600085828151811061370a5761370a61588c565b602002602001015190506000805b8481101561376d57826001600160a01b031686828151811061373c5761373c61588c565b60200260200101516001600160a01b03160361375b576001915061376d565b80613765816158d1565b915050613718565b50806137ac57818585815181106137865761378661588c565b6001600160a01b0390921660209283029190910190910152836137a8816158d1565b9450505b505080806137b9906158d1565b9150506136ee565b508067ffffffffffffffff8111156137db576137db615471565b604051908082528060200260200182016040528015613804578160200160208202803683370190505b50985060005b81811015613868578281815181106138245761382461588c565b60200260200101518a828151811061383e5761383e61588c565b6001600160a01b039092166020928302919091019091015280613860816158d1565b91505061380a565b505050505050505050919050565b600080600080613885856143da565b60fe5460fc54604051637715ee7560e01b81529599509397509195509350916001600160a01b0390911690637715ee75906138c890889087908690600401615c02565b600060405180830381600087803b1580156138e257600080fd5b505af11580156138f6573d6000803e3d6000fd5b505060fc546040516333312b5560e11b81526001600160a01b03909116925063666256aa915061392e90879086908690600401615c02565b600060405180830381600087803b15801561394857600080fd5b505af115801561395c573d6000803e3d6000fd5b50505050505050505050565b61399560405180608001604052806000815260200160008152602001600081526020016000151581525090565b816000036139cb5760405180608001604052806000815260200160008152602001600081526020016000151581525090506108da565b604051636318523760e01b8152600481018390526001600160a01b03841690636318523790602401608060405180830381865afa158015613a10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175791906159f7565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006117578383614b1d565b80600003613ab3576040516307ed98ed60e31b815260040160405180910390fd5b604051634f8ca21160e11b81526004810182905260006024820152600160448201526001600160a01b03831690639f19442290606401600060405180830381600087803b158015613b0357600080fd5b505af1158015612fe7573d6000803e3d6000fd5b60006108da825490565b600083600003613b44576040516307ed98ed60e31b815260040160405180910390fd5b82600003613b655760405163162908e360e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015613bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd091906158a2565b604051636318523760e01b8152600481018790529091506000906001600160a01b03881690636318523790602401608060405180830381865afa158015613c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3f91906159f7565b51905080851115613c6357604051631e9acf1760e31b815260040160405180910390fd5b6000613c6f8683615b52565b60408051600280825260608201835292935060009290916020830190803683370190505090508181600081518110613ca957613ca961588c565b6020026020010181815250508681600181518110613cc957613cc961588c565b60209081029190910101526040516315abf9d160e21b81526001600160a01b038a16906356afe74490613d029084908c90600401615c7d565b600060405180830381600087803b158015613d1c57600080fd5b505af1158015613d30573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b038c1691506370a0823190602401602060405180830381865afa158015613d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9f91906158a2565b9050613dac856001615c9f565b8114613dcb5760405163870ecf4160e01b815260040160405180910390fd5b6001600160a01b038a16632f745c5930613de6600185615b52565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015613e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5391906158a2565b6040516323b872dd60e01b81523060048201526001600160a01b03898116602483015260448201839052919750908b16906323b872dd90606401600060405180830381600087803b158015613ea757600080fd5b505af1158015613ebb573d6000803e3d6000fd5b505060408051898152602081018c90528c93506001600160a01b038e1692507f802bea4dd8c92d836bcfa2ba92a8c7547dbc3e882fe032eb62c6ec8d4e707d4e910160405180910390a35050505050949350505050565b600082600003613f2457506000611757565b6040516331a9108f60e11b8152600481018490526000906001600160a01b03861690636352211e90602401602060405180830381865afa158015613f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f909190615931565b604051630748d63560e31b81526001600160a01b0380831660048301526024820186905291925090861690633a46b1a890604401602060405180830381865afa158015613fe1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400591906158a2565b95945050505050565b600054610100900460ff166140795760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610dd1565b614081614b47565b61408a83613a34565b6140b47f85d36e3b488c35c2a15344b305cb84e2000f26d4f3a7c1e8a516f0e82aee752a83613497565b60005b8151811015611d07576140f1600080516020615d758339815191528383815181106140e4576140e461588c565b6020026020010151613497565b806140fb816158d1565b9150506140b7565b6000614158826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bba9092919063ffffffff16565b90508051600014806141795750808060200190518101906141799190615a63565b61261e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dd1565b606082156141fa5750806108da565b6044825110156142585760405162461bcd60e51b815260206004820152602360248201527f63616c6c206661696c656420776974686f75742061207265766572742072656160448201526239b7b760e91b6064820152608401610dd1565b600482019150818060200190518101906142729190615cb7565b60405162461bcd60e51b8152600401610dd191906156aa565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16610d535760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556142e93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611757836001600160a01b038416614bc9565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff1615610d535760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611757836001600160a01b038416614c18565b60608060608084602001515167ffffffffffffffff8111156143fe576143fe615471565b604051908082528060200260200182016040528015614427578160200160208202803683370190505b50935084602001515167ffffffffffffffff81111561444857614448615471565b604051908082528060200260200182016040528015614471578160200160208202803683370190505b50925060005b85602001515181101561465f5760fc54602087015180516000926001600160a01b03169163b9a09fd591859081106144b1576144b161588c565b60200260200101516040518263ffffffff1660e01b81526004016144e491906001600160a01b0391909116815260200190565b602060405180830381865afa158015614501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145259190615931565b60fc54604051637572079360e11b81526001600160a01b03808416600483015292935091169063eae40f2690602401602060405180830381865afa158015614571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145959190615931565b8583815181106145a7576145a761588c565b6001600160a01b03928316602091820292909201015260fc5460405163ae21c4cb60e01b8152838316600482015291169063ae21c4cb90602401602060405180830381865afa1580156145fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146229190615931565b8683815181106146345761463461588c565b6001600160a01b03909216602092830291909101909101525080614657816158d1565b915050614477565b50835167ffffffffffffffff81111561467a5761467a615471565b6040519080825280602002602001820160405280156146ad57816020015b60608152602001906001900390816146985790505b50915060005b84518110156148ba5760008582815181106146d0576146d061588c565b6020026020010151905060006001600160a01b0316816001600160a01b0316036147285760408051600081526020810190915284518590849081106147175761471761588c565b6020026020010181905250506148a8565b6000816001600160a01b031663e68863966040518163ffffffff1660e01b8152600401602060405180830381865afa158015614768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061478c91906158a2565b905060008167ffffffffffffffff8111156147a9576147a9615471565b6040519080825280602002602001820160405280156147d2578160200160208202803683370190505b50905060005b8281101561488557604051637bb7bed160e01b8152600481018290526001600160a01b03851690637bb7bed190602401602060405180830381865afa158015614825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148499190615931565b82828151811061485b5761485b61588c565b6001600160a01b03909216602092830291909101909101528061487d816158d1565b9150506147d8565b50808685815181106148995761489961588c565b60200260200101819052505050505b806148b2816158d1565b9150506146b3565b50825167ffffffffffffffff8111156148d5576148d5615471565b60405190808252806020026020018201604052801561490857816020015b60608152602001906001900390816148f35790505b50905060005b8351811015614b1557600084828151811061492b5761492b61588c565b6020026020010151905060006001600160a01b0316816001600160a01b0316036149835760408051600081526020810190915283518490849081106149725761497261588c565b602002602001018190525050614b03565b6000816001600160a01b031663e68863966040518163ffffffff1660e01b8152600401602060405180830381865afa1580156149c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149e791906158a2565b905060008167ffffffffffffffff811115614a0457614a04615471565b604051908082528060200260200182016040528015614a2d578160200160208202803683370190505b50905060005b82811015614ae057604051637bb7bed160e01b8152600481018290526001600160a01b03851690637bb7bed190602401602060405180830381865afa158015614a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa49190615931565b828281518110614ab657614ab661588c565b6001600160a01b039092166020928302919091019091015280614ad8816158d1565b915050614a33565b5080858581518110614af457614af461588c565b60200260200101819052505050505b80614b0d816158d1565b91505061490e565b509193509193565b6000826000018281548110614b3457614b3461588c565b9060005260206000200154905092915050565b600054610100900460ff16614bb25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610dd1565b61173d614d0b565b6060610d398484600085614d7f565b6000818152600183016020526040812054614c10575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108da565b5060006108da565b60008181526001830160205260408120548015614d01576000614c3c600183615b52565b8554909150600090614c5090600190615b52565b9050818114614cb5576000866000018281548110614c7057614c7061588c565b9060005260206000200154905080876000018481548110614c9357614c9361588c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614cc657614cc6615d42565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108da565b60009150506108da565b600054610100900460ff16614d765760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610dd1565b61173d33613a34565b606082471015614df75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dd1565b600080866001600160a01b03168587604051614e139190615d58565b60006040518083038185875af1925050503d8060008114614e50576040519150601f19603f3d011682016040523d82523d6000602084013e614e55565b606091505b5091509150614e6687838387614e71565b979650505050505050565b60608315614ee0578251600003614ed9576001600160a01b0385163b614ed95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dd1565b5081610d39565b610d398383815115614ef55781518083602001fd5b8060405162461bcd60e51b8152600401610dd191906156aa565b828054828255906000526020600020908101928215614f64579160200282015b82811115614f6457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614f2f565b50612cc9929150614fab565b828054828255906000526020600020908101928215614f64579160200282015b82811115614f64578251825591602001919060010190614f90565b5b80821115612cc95760008155600101614fac565b600060208284031215614fd257600080fd5b81356001600160e01b03198116811461175757600080fd5b6001600160a01b038116811461307c57600080fd5b803561500a81614fea565b919050565b60008083601f84011261502157600080fd5b50813567ffffffffffffffff81111561503957600080fd5b60208301915083602082850101111561505157600080fd5b9250929050565b60008060008060006080868803121561507057600080fd5b853561507b81614fea565b9450602086013561508b81614fea565b935060408601359250606086013567ffffffffffffffff8111156150ae57600080fd5b6150ba8882890161500f565b969995985093965092949392505050565b60008083601f8401126150dd57600080fd5b50813567ffffffffffffffff8111156150f557600080fd5b6020830191508360208260051b850101111561505157600080fd5b60008060008060008060006080888a03121561512b57600080fd5b873561513681614fea565b9650602088013567ffffffffffffffff8082111561515357600080fd5b61515f8b838c016150cb565b909850965060408a013591508082111561517857600080fd5b6151848b838c016150cb565b909650945060608a013591508082111561519d57600080fd5b506151aa8a828b016150cb565b989b979a50959850939692959293505050565b60005b838110156151d85781810151838201526020016151c0565b83811115611d075750506000910152565b600081518084526152018160208601602086016151bd565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561526a57603f198886030184526152588583516151e9565b9450928501929085019060010161523c565b5092979650505050505050565b60006020828403121561528957600080fd5b813561175781614fea565b6000602082840312156152a657600080fd5b5035919050565b600081518084526020808501945080840160005b838110156152e65781516001600160a01b0316875295820195908201906001016152c1565b509495945050505050565b600081518084526020808501945080840160005b838110156152e657815187529582019590820190600101615305565b6020815281516020820152600060208301516080604084015261534760a08401826152ad565b90506040840151601f1984830301606085015261536482826152f1565b915050606084015160808401528091505092915050565b6000806000806040858703121561539157600080fd5b843567ffffffffffffffff808211156153a957600080fd5b6153b5888389016150cb565b909650945060208701359150808211156153ce57600080fd5b506153db878288016150cb565b95989497509550505050565b600080604083850312156153fa57600080fd5b82359150602083013561540c81614fea565b809150509250929050565b60408152600061542a60408301856152ad565b828103602084015261400581856152f1565b6000806040838503121561544f57600080fd5b50508035926020909101359150565b60208152600061175760208301846152ad565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156154b0576154b0615471565b604052919050565b600067ffffffffffffffff8211156154d2576154d2615471565b5060051b60200190565b600082601f8301126154ed57600080fd5b813560206155026154fd836154b8565b615487565b82815260059290921b8401810191818101908684111561552157600080fd5b8286015b8481101561553c5780358352918301918301615525565b509695505050505050565b60008060006060848603121561555c57600080fd5b833567ffffffffffffffff8082111561557457600080fd5b818601915086601f83011261558857600080fd5b813560206155986154fd836154b8565b82815260059290921b8401810191818101908a8411156155b757600080fd5b948201945b838610156155de5785356155cf81614fea565b825294820194908201906155bc565b975050870135925050808211156155f457600080fd5b50615601868287016154dc565b92505061561060408501614fff565b90509250925092565b801515811461307c57600080fd5b6000806040838503121561563a57600080fd5b823561564581614fea565b9150602083013561540c81615619565b60008060006040848603121561566a57600080fd5b833561567581614fea565b9250602084013567ffffffffffffffff81111561569157600080fd5b61569d8682870161500f565b9497909650939450505050565b60208152600061175760208301846151e9565b600080604083850312156156d057600080fd5b82356156db81614fea565b946020939093013593505050565b600080600080600080600080610100898b03121561570657600080fd5b883561571181614fea565b975060208981013561572281614fea565b975060408a013561573281614fea565b965060608a013561574281614fea565b955060808a013561575281614fea565b945060a08a013561576281614fea565b935060c08a013561577281614fea565b925060e08a013567ffffffffffffffff81111561578e57600080fd5b8a01601f81018c1361579f57600080fd5b80356157ad6154fd826154b8565b81815260059190911b8201830190838101908e8311156157cc57600080fd5b928401925b828410156157f35783356157e481614fea565b825292840192908401906157d1565b80955050505050509295985092959890939650565b60008060008060006060868803121561582057600080fd5b853567ffffffffffffffff8082111561583857600080fd5b61584489838a016150cb565b9097509550602088013591508082111561585d57600080fd5b5061586a888289016150cb565b909450925050604086013561587e81614fea565b809150509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156158b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016158e3576158e36158bb565b5060010190565b6000808335601e1984360301811261590157600080fd5b83018035915067ffffffffffffffff82111561591c57600080fd5b60200191503681900382131561505157600080fd5b60006020828403121561594357600080fd5b815161175781614fea565b8183526000602080850194508260005b858110156152e657813561597181614fea565b6001600160a01b03168752958201959082019060010161595e565b6040815260006159a060408301868861594e565b82810360208401528381527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8411156159d857600080fd5b8360051b80866020840137600091016020019081529695505050505050565b600060808284031215615a0957600080fd5b6040516080810181811067ffffffffffffffff82111715615a2c57615a2c615471565b80604052508251815260208301516020820152604083015160408201526060830151615a5781615619565b60608201529392505050565b600060208284031215615a7557600080fd5b815161175781615619565b606081526000615a9460608301878961594e565b60208382038185015281868352818301905060058288821b8501018960005b8a811015615b2457868303601f190185528135368d9003601e19018112615ad957600080fd5b8c01803567ffffffffffffffff811115615af257600080fd5b80861b36038e1315615b0357600080fd5b615b1085828a850161594e565b968801969450505090850190600101615ab3565b505080955050505050508260408301529695505050505050565b602081526000610d3960208301848661594e565b600082821015615b6457615b646158bb565b500390565b6000816000190483118215151615615b8357615b836158bb565b500290565b600082615ba557634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b60408152826040820152828460608301376000606084830101526000601f19601f85011682016060838203016020840152615bf860608201856151e9565b9695505050505050565b606081526000615c1560608301866152ad565b6020838203818501528186518084528284019150828160051b85010183890160005b83811015615c6557601f19878403018552615c538383516152ad565b94860194925090850190600101615c37565b50508095505050505050826040830152949350505050565b604081526000615c9060408301856152f1565b90508260208301529392505050565b60008219821115615cb257615cb26158bb565b500190565b600060208284031215615cc957600080fd5b815167ffffffffffffffff80821115615ce157600080fd5b818401915084601f830112615cf557600080fd5b815181811115615d0757615d07615471565b615d1a601f8201601f1916602001615487565b9150808252856020828501011115615d3157600080fd5b610d378160208401602086016151bd565b634e487b7160e01b600052603160045260246000fd5b60008251615d6a8184602087016151bd565b919091019291505056fee3723f41c074e25ac45636a7cd631386f2e15f8583ade05d0b710b41251f5c7ba26469706673582212205c7c9122db8f8071c7362d1d080848dff60b22f32c753423a7c77bf51653b28064736f6c634300080d0033