1 tx
4.9k calls
constructor
constructor(address _factory, address _manager)
functions
bnGs
viewfunction bnGs() view returns (address)
coreTracker
viewfunction coreTracker() view returns (address rewardTracker, address rewardDistributor, address loanRewardTracker, address loanRewardDistributor, address bonusTracker, address bonusDistributor, address feeTracker, address feeDistributor, address vester, address loanVester)
esGs
viewfunction esGs() view returns (address)
esGsb
viewfunction esGsb() view returns (address)
factory
viewfunction factory() view returns (address)
feeRewardToken
viewfunction feeRewardToken() view returns (address)
getAverageStakedAmount
viewfunction getAverageStakedAmount(address _gsPool, address _esToken, address _account) view returns (uint256)
gs
viewfunction gs() view returns (address)
gsTokensInitialized
viewfunction gsTokensInitialized() view returns (bool)
manager
viewfunction manager() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
POOL_VESTING_DURATION
viewfunction POOL_VESTING_DURATION() view returns (uint256)
poolTrackers
viewfunction poolTrackers(address pool, address esToken) view returns (address rewardTracker, address rewardDistributor, address loanRewardTracker, address loanRewardDistributor, address vester)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
VESTING_DURATION
viewfunction VESTING_DURATION() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
claim
nonpayablefunction claim(bool _shouldClaimRewards, bool _shouldClaimFee, bool _shouldClaimVesting)
claimPool
nonpayablefunction claimPool(address _gsPool, address _esToken, bool _shouldClaimRewards, bool _shouldClaimVesting)
compound
nonpayablefunction compound()
compoundForAccount
nonpayablefunction compoundForAccount(address _account)
execute
nonpayablefunction execute(address _stakingContract, bytes _data)
initialize
nonpayablefunction initialize(address _loanTrackerFactory, address _rewardTrackerFactory, address _feeTrackerFactory, address _rewardDistributorFactory, address _bonusDistributorFactory, address _vesterFactory, address _vesterNoReserveFactory)
initializeGSTokens
nonpayablefunction initializeGSTokens(address _gs, address _esGs, address _esGsb, address _bnGs, address _feeRewardToken)
renounceOwnership
nonpayablefunction renounceOwnership()
setPoolVestingPeriod
nonpayablefunction setPoolVestingPeriod(uint256 _poolVestingPeriod)
setupGsStaking
nonpayablefunction setupGsStaking()
setupGsStakingForLoan
nonpayablefunction setupGsStakingForLoan()
setupPoolStaking
nonpayablefunction setupPoolStaking(address _gsPool, address _esToken, address _claimableToken)
setupPoolStakingForLoan
nonpayablefunction setupPoolStakingForLoan(address _gsPool, uint16 _refId)
stakeEsGs
nonpayablefunction stakeEsGs(uint256 _amount)
stakeEsGsb
nonpayablefunction stakeEsGsb(uint256 _amount)
stakeGs
nonpayablefunction stakeGs(uint256 _amount)
stakeGsForAccount
nonpayablefunction stakeGsForAccount(address _account, uint256 _amount)
stakeLoan
nonpayablefunction stakeLoan(address _gsPool, uint256 _loanId)
stakeLoanForAccount
nonpayablefunction stakeLoanForAccount(address _account, address _gsPool, uint256 _loanId)
stakeLp
nonpayablefunction stakeLp(address _gsPool, address _esToken, uint256 _amount)
stakeLpForAccount
nonpayablefunction stakeLpForAccount(address _account, address _gsPool, address _esToken, uint256 _amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstakeEsGs
nonpayablefunction unstakeEsGs(uint256 _amount)
unstakeEsGsb
nonpayablefunction unstakeEsGsb(uint256 _amount)
unstakeGs
nonpayablefunction unstakeGs(uint256 _amount)
unstakeLoan
nonpayablefunction unstakeLoan(address _gsPool, uint256 _loanId)
unstakeLoanForAccount
nonpayablefunction unstakeLoanForAccount(address _account, address _gsPool, uint256 _loanId)
unstakeLp
nonpayablefunction unstakeLp(address _gsPool, address _esToken, uint256 _amount)
unstakeLpForAccount
nonpayablefunction unstakeLpForAccount(address _account, address _gsPool, address _esToken, uint256 _amount)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
vestEsGs
nonpayablefunction vestEsGs(uint256 _amount)
vestEsGsb
nonpayablefunction vestEsGsb(uint256 _amount)
vestEsTokenForPool
nonpayablefunction vestEsTokenForPool(address _gsPool, address _esToken, uint256 _amount)
withdrawEsGs
nonpayablefunction withdrawEsGs()
withdrawEsGsb
nonpayablefunction withdrawEsGsb()
withdrawEsTokenForPool
nonpayablefunction withdrawEsTokenForPool(address _gsPool, address _esToken)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CoreTrackerCreated
event CoreTrackerCreated(address rewardTracker, address rewardDistributor, address bonusTracker, address bonusDistributor, address feeTracker, address feeDistributor, address vester)
CoreTrackerUpdated
event CoreTrackerUpdated(address loanRewardTracker, address loanRewardDistributor, address loanVester)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PoolTrackerCreated
event PoolTrackerCreated(address indexed gsPool, address rewardTracker, address rewardDistributor, address vester)
PoolTrackerUpdated
event PoolTrackerUpdated(address indexed gsPool, address loanRewardtracker, address loanRewardDistributor)
StakedGs
event StakedGs(address, address, uint256)
StakedLoan
event StakedLoan(address, address, uint256)
StakedLp
event StakedLp(address, address, uint256)
UnstakedGs
event UnstakedGs(address, address, uint256)
UnstakedLoan
event UnstakedLoan(address, address, uint256)
UnstakedLp
event UnstakedLp(address, address, uint256)
Upgraded
event Upgraded(address indexed implementation)
errors
ExecuteFailed
error ExecuteFailed()
GSTokensAlreadySet
error GSTokensAlreadySet()
InvalidConstructor
error InvalidConstructor()
InvalidExecute
error InvalidExecute()
InvalidRestrictedToken
error InvalidRestrictedToken()
MissingBeaconProxyFactory
error MissingBeaconProxyFactory()
MissingGSTokenParameter
error MissingGSTokenParameter()
SA_Fail
error SA_Fail()
StakingContractsAlreadySet
error StakingContractsAlreadySet()
creation bytecode
0x60e0604052306080526301e13380600f553480156200001d57600080fd5b5060405162005b4a38038062005b4a833981016040819052620000409162000137565b600160005581816200005233620000aa565b6001600160a01b03821615806200007057506001600160a01b038116155b156200008f576040516312c1701b60e01b815260040160405180910390fd5b6001600160a01b0391821660a0521660c052506200016f9050565b600280546001600160a01b0319169055620000c581620000c8565b50565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200013257600080fd5b919050565b600080604083850312156200014b57600080fd5b62000156836200011a565b915062000166602084016200011a565b90509250929050565b60805160a05160c05161597a620001d0600039600081816105ad015281816137200152613c370152600081816108fd0152613c150152600081816116af015281816116ef0152818161235b0152818161239b015261242e015261597a6000f3fe6080604052600436106103345760003560e01c80636ef93acb116101ab578063b4e3b4ec116100f7578063dc3fbb6411610095578063ec94676a1161006f578063ec94676a14610a61578063f2fde38b14610a81578063f69e204614610aa1578063f9a25fdf14610ab657600080fd5b8063dc3fbb6414610a03578063e055f13b14610a23578063e30c397814610a4357600080fd5b8063c45a0155116100d1578063c45a0155146108eb578063c6622edc1461091f578063cc011f08146109c3578063d140f4da146109e357600080fd5b8063b4e3b4ec14610896578063b7678eb8146108b6578063c347af5e146108cb57600080fd5b806386825d4f1161016457806392843fdb1161013e57806392843fdb14610805578063acbdd69814610825578063b108ccf314610856578063b1f04faf1461087657600080fd5b806386825d4f146107a75780638da5cb5b146107c757806390b96293146107e557600080fd5b80636ef93acb1461068e5780637041411e146106ae578063715018a6146106ce57806379ba5097146106e35780637ce57a48146106f85780637e1462ef1461078757600080fd5b80632da6b09b116102855780634cfc4d301161022357806356b5417b116101fd57806356b5417b1461060e5780635f0d49811461062e57806363def44f1461064e5780636b610c821461066e57600080fd5b80634cfc4d30146105cf5780634f1ef286146105e657806352d1902d146105f957600080fd5b806339af6d2f1161025f57806339af6d2f146105465780633d74a7781461056657806343b70e8514610586578063481c6a751461059b57600080fd5b80632da6b09b146104f157806335876476146105065780633659cfe61461052657600080fd5b806319b4c989116102f2578063267617a3116102cc578063267617a31461047b5780632741eea8146104915780632a9f4083146104b15780632bc172a6146104d157600080fd5b806319b4c9891461041b5780631b02c1201461043b5780631cff79cd1461045b57600080fd5b8062e71aaf1461033957806305a24382146103765780630621b00b146103985780630fd35048146103b857806310d93bde146103cd578063123b7e0f146103ed575b600080fd5b34801561034557600080fd5b50600354610359906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038257600080fd5b50610396610391366004614f89565b610ad6565b005b3480156103a457600080fd5b506103966103b3366004614fca565b610b00565b3480156103c457600080fd5b50610396610b7a565b3480156103d957600080fd5b506103966103e8366004614fca565b6110a8565b3480156103f957600080fd5b5061040d610408366004614fe3565b6110d4565b60405190815260200161036d565b34801561042757600080fd5b50610396610436366004614f89565b6111f3565b34801561044757600080fd5b50610396610456366004614fca565b611208565b34801561046757600080fd5b5061039661047636600461502e565b611247565b34801561048757600080fd5b5061040d600f5481565b34801561049d57600080fd5b506103966104ac3660046150b3565b61138b565b3480156104bd57600080fd5b506103966104cc366004615104565b6113b8565b3480156104dd57600080fd5b506103966104ec366004614fca565b6113d1565b3480156104fd57600080fd5b506103966113f3565b34801561051257600080fd5b50610396610521366004615128565b611465565b34801561053257600080fd5b50610396610541366004615104565b6116a5565b34801561055257600080fd5b506103966105613660046151be565b611781565b34801561057257600080fd5b50600754610359906001600160a01b031681565b34801561059257600080fd5b506103966119ff565b3480156105a757600080fd5b506103597f000000000000000000000000000000000000000000000000000000000000000081565b3480156105db57600080fd5b5061040d62278d0081565b6103966105f4366004615214565b612351565b34801561060557600080fd5b5061040d612421565b34801561061a57600080fd5b50610396610629366004614fca565b6124d4565b34801561063a57600080fd5b50610396610649366004614fca565b6124f6565b34801561065a57600080fd5b506103966106693660046152d8565b612518565b34801561067a57600080fd5b50610396610689366004615357565b612811565b34801561069a57600080fd5b50600554610359906001600160a01b031681565b3480156106ba57600080fd5b506103966106c9366004614fca565b612a70565b3480156106da57600080fd5b50610396612a92565b3480156106ef57600080fd5b50610396612aa4565b34801561070457600080fd5b50601054601154601254601354601454601554601654601754601854601954604080516001600160a01b039b8c168152998b1660208b0152978a16978901979097529488166060880152928716608087015290861660a0860152851660c0850152841660e08401528316610100830152919091166101208201526101400161036d565b34801561079357600080fd5b506103966107a2366004614f89565b612b1b565b3480156107b357600080fd5b506103966107c23660046153b3565b612b2f565b3480156107d357600080fd5b506001546001600160a01b0316610359565b3480156107f157600080fd5b50610396610800366004614fca565b612b63565b34801561081157600080fd5b506103966108203660046153df565b612bd0565b34801561083157600080fd5b5060075461084690600160a01b900460ff1681565b604051901515815260200161036d565b34801561086257600080fd5b50610396610871366004614fca565b612e6b565b34801561088257600080fd5b506103966108913660046153b3565b612e8d565b3480156108a257600080fd5b506103966108b1366004614fe3565b612ea0565b3480156108c257600080fd5b5061039661341a565b3480156108d757600080fd5b506103966108e63660046150b3565b613452565b3480156108f757600080fd5b506103597f000000000000000000000000000000000000000000000000000000000000000081565b34801561092b57600080fd5b5061098961093a36600461541f565b6001600160a01b039182166000908152601a6020908152604080832093851683529290522080546001820154600283015460038401546004909401549285169591851694908116938116921690565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a00161036d565b3480156109cf57600080fd5b50600654610359906001600160a01b031681565b3480156109ef57600080fd5b506103966109fe36600461541f565b61346e565b348015610a0f57600080fd5b50610396610a1e3660046153b3565b613522565b348015610a2f57600080fd5b50610396610a3e366004614f89565b613535565b348015610a4f57600080fd5b506002546001600160a01b0316610359565b348015610a6d57600080fd5b50610396610a7c366004614f89565b613550565b348015610a8d57600080fd5b50610396610a9c366004615104565b61360b565b348015610aad57600080fd5b5061039661367c565b348015610ac257600080fd5b50600454610359906001600160a01b031681565b610ade613697565b610ae66136f0565b610af1838383613796565b610afb6001600055565b505050565b610b08613697565b60195460405163342fcda960e01b8152336004820152602481018390526001600160a01b039091169063342fcda9906044015b600060405180830381600087803b158015610b5557600080fd5b505af1158015610b69573d6000803e3d6000fd5b50505050610b776001600055565b50565b610b82613875565b6012546001600160a01b031615610bac5760405163b7c18eab60e01b815260040160405180910390fd5b60408051600180825281830190925260009160208083019080368337505060055482519293506001600160a01b031691839150600090610bee57610bee61544d565b60200260200101906001600160a01b031690816001600160a01b031681525050600080610c796040518060400160405280600e81526020016d29ba30b5b2b21023a9902637b0b760911b8152506040518060400160405280600481526020016339a3a9b160e11b815250600560009054906101000a90046001600160a01b03168660008060006138cf565b601454604051631c896eab60e31b81529294509092506001600160a01b03169063e44b755890610cb0908590600190600401615463565b600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b5050601454604051639cb7de4b60e01b81526001600160a01b038087169450639cb7de4b9350610d15921690600190600401615463565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b505050506000600e60009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc2919061547e565b600554600354604051636f53f88960e11b815260e0600480830191909152601260e48301527115995cdd19590811d4c8109bdc9c9bddd95960721b6101048301526101206024830152610124820152633b23a9a160e11b61014482015262278d0060448201526001600160a01b0392831660648201526000608482015290821660a482015285821660c482015291925082169063dea7f1129061016401600060405180830381600087803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0384169250639cb7de4b9150610ec0903090600190600401615463565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b5050600554604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b9150610f25908690600190600401615463565b600060405180830381600087803b158015610f3f57600080fd5b505af1158015610f53573d6000803e3d6000fd5b5050600554604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b9150610f8a908590600190600401615463565b600060405180830381600087803b158015610fa457600080fd5b505af1158015610fb8573d6000803e3d6000fd5b5050600554604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b9150610fef908490600190600401615463565b600060405180830381600087803b15801561100957600080fd5b505af115801561101d573d6000803e3d6000fd5b5050601280546001600160a01b038781166001600160a01b0319928316811790935560138054888316908416811790915560198054928816929093168217909255604080519384526020840192909252908201527f887fa67a83df8bfd1e4e259c874e2307b89f615e4310d9325622861a3c5a8f74925060600190505b60405180910390a150505050565b6110b0613697565b6005546110ca90339081906001600160a01b031684613e58565b610b776001600055565b6000806001600160a01b03851615611116576001600160a01b038086166000908152601a60209081526040808320888516845290915290206004015416611123565b6018546001600160a01b03165b90506001600160a01b0381166111805760405162461bcd60e51b815260206004820152601960248201527f56657374657220636f6e7472616374206e6f7420666f756e640000000000000060448201526064015b60405180910390fd5b60405163491d9a5f60e01b81526001600160a01b03848116600483015282169063491d9a5f90602401602060405180830381865afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea919061549b565b95945050505050565b6111fb613697565b610af13333858585613ffc565b611210613697565b60185460405163342fcda960e01b8152336004820152602481018390526001600160a01b039091169063342fcda990604401610b3b565b61124f613875565b6112696001600160a01b0384166303df7ecf60e21b614108565b15801561128d575061128b6001600160a01b038416630f1a2b5f60e21b614108565b155b80156112b057506112ae6001600160a01b03841663ddd9719160e01b614108565b155b80156112d357506112d16001600160a01b038416637052e6f360e11b614108565b155b156112f15760405163771ba3e960e11b815260040160405180910390fd5b600080846001600160a01b0316848460405161130e9291906154b4565b6000604051808303816000865af19150503d806000811461134b576040519150601f19603f3d011682016040523d82523d6000602084013e611350565b606091505b50915091508161138457805160000361137c5760405163d6bed87360e01b815260040160405180910390fd5b805181602001fd5b5050505050565b611393613697565b61139b6136f0565b6113a83085858585613ffc565b6113b26001600055565b50505050565b6113c0613697565b6113c86136f0565b6110ca8161412d565b6113d9613697565b6004546110ca90339081906001600160a01b031684613e58565b6113fb613697565b601954604051630efcd41b60e21b81523360048201526001600160a01b0390911690633bf3506c906024015b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b505050506114636001600055565b565b600254600160a81b900460ff161580801561148d57506002546001600160a01b90910460ff16105b806114ae5750303b1580156114ae5750600254600160a01b900460ff166001145b6115115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611177565b6002805460ff60a01b1916600160a01b179055801561153e576002805460ff60a81b1916600160a81b1790555b6001600160a01b038816158061155b57506001600160a01b038716155b8061156d57506001600160a01b038616155b8061157f57506001600160a01b038516155b8061159157506001600160a01b038416155b806115a357506001600160a01b038316155b806115b557506001600160a01b038216155b156115d35760405163dd68fea960e01b815260040160405180910390fd5b6115dc3361435e565b6301e13380600f55600880546001600160a01b03199081166001600160a01b038b8116919091179092556009805482168a8416179055600a80548216898416179055600b80548216888416179055600c80548216878416179055600d80548216868416179055600e8054909116918416919091179055801561169b576002805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116ed5760405162461bcd60e51b8152600401611177906154c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117366000805160206158fe833981519152546001600160a01b031690565b6001600160a01b03161461175c5760405162461bcd60e51b815260040161117790615510565b61176581614377565b60408051600080825260208201909252610b779183919061437f565b611789613875565b6001600160a01b038281166000908152601a602090815260408083206005548516845290915290206002015416156117d45760405163b7c18eab60e01b815260040160405180910390fd5b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061180a5761180a61544d565b60200260200101906001600160a01b031690816001600160a01b0316815250506000806118946040518060400160405280600e81526020016d29ba30b5b2b21023a9902637b0b760911b8152506040518060400160405280600481526020016339a3a9b160e11b815250600560009054906101000a90046001600160a01b031686886000806138cf565b600554604051639cb7de4b60e01b81529294509092506001600160a01b031690639cb7de4b906118cb908590600190600401615463565b600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b5050600554604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b9150611930908490600190600401615463565b600060405180830381600087803b15801561194a57600080fd5b505af115801561195e573d6000803e3d6000fd5b505050506001600160a01b038581166000818152601a602090815260408083206005805487168552925280832060020180546001600160a01b0319908116898816179091559154851683529182902060030180549091169385169390931790925590517ff21c5711e0832b17dfe305afa5a34bcad9e13bc8b80a334207b985bf260d76f1906119f0908590859061555c565b60405180910390a25050505050565b611a07613875565b6010546001600160a01b031615611a315760405163b7c18eab60e01b815260040160405180910390fd5b604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611a7257611a7261544d565b6001600160a01b039283166020918202929092010152600454825191169082906001908110611aa357611aa361544d565b60200260200101906001600160a01b031690816001600160a01b031681525050600080611b28604051806040016040528060098152602001685374616b656420475360b81b8152506040518060400160405280600381526020016273475360e81b815250600460009054906101000a90046001600160a01b03168660008060006138cf565b60408051600180825281830190925260609650929450909250602080830190803683370190505092508183600081518110611b6557611b6561544d565b60200260200101906001600160a01b031690816001600160a01b031681525050600080611bf3604051806040016040528060118152602001705374616b6564202b20426f6e757320475360781b815250604051806040016040528060048152602001637362475360e01b815250600660009054906101000a90046001600160a01b03168860008060016138cf565b6040805160028082526060808301845299509395509193509091906020830190803683370190505094508185600081518110611c3157611c3161544d565b6001600160a01b039283166020918202929092010152600654865191169086906001908110611c6257611c6261544d565b60200260200101906001600160a01b031690816001600160a01b031681525050600080611cfe6040518060400160405280601781526020017f5374616b6564202b20426f6e7573202b2046656520475300000000000000000081525060405180604001604052806005815260200164736266475360d81b815250600760009054906101000a90046001600160a01b03168a6000600160006138cf565b915091506000600d60009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7d919061547e565b6004805460038054604051636f53f88960e11b815260e094810194909452600960e48501526856657374656420475360b81b61010485015261012060248501526101248401919091526276475360e81b61014484015262278d0060448401526001600160a01b0391821660648401528682166084840152811660a483015289811660c48301529192509082169063dea7f1129061016401600060405180830381600087803b158015611e2e57600080fd5b505af1158015611e42573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b038a169250639cb7de4b9150611e75908890600190600401615463565b600060405180830381600087803b158015611e8f57600080fd5b505af1158015611ea3573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0388169250639cb7de4b9150611ed6908690600190600401615463565b600060405180830381600087803b158015611ef057600080fd5b505af1158015611f04573d6000803e3d6000fd5b5050604051623cd7f760e81b8152600160048201526001600160a01b0388169250633cd7f7009150602401600060405180830381600087803b158015611f4957600080fd5b505af1158015611f5d573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0386169250639cb7de4b9150611f90908490600190600401615463565b600060405180830381600087803b158015611faa57600080fd5b505af1158015611fbe573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0384169250639cb7de4b9150611ff1903090600190600401615463565b600060405180830381600087803b15801561200b57600080fd5b505af115801561201f573d6000803e3d6000fd5b505060048054604051639cb7de4b60e01b81526001600160a01b039091169350639cb7de4b9250612055918b9160019101615463565b600060405180830381600087803b15801561206f57600080fd5b505af1158015612083573d6000803e3d6000fd5b505060048054604051639cb7de4b60e01b81526001600160a01b039091169350639cb7de4b92506120b9918a9160019101615463565b600060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505060048054604051639cb7de4b60e01b81526001600160a01b039091169350639cb7de4b925061211d91859160019101615463565b600060405180830381600087803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b5050600654604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b9150612182908690600190600401615463565b600060405180830381600087803b15801561219c57600080fd5b505af11580156121b0573d6000803e3d6000fd5b5050600654604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b91506121e7908890600190600401615463565b600060405180830381600087803b15801561220157600080fd5b505af1158015612215573d6000803e3d6000fd5b5050600654604051639cb7de4b60e01b81526001600160a01b039091169250639cb7de4b915061224c908790600190600401615463565b600060405180830381600087803b15801561226657600080fd5b505af115801561227a573d6000803e3d6000fd5b5050601080546001600160a01b038b81166001600160a01b03199283168117909355601180548c83169084168117909155601480548c84169085168117909155601580548c85169086168117909155601680548c86169087168117909155601780548c8716908816811790915560188054968c16969097168617909655604080519788526020880194909452928601919091526060850152608084015260a083019190915260c08201527fce50c518dcbbc8f8fe0e4edca29f71dd777c9d612732e83265a66ef476178c12925060e0019050611692565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036123995760405162461bcd60e51b8152600401611177906154c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123e26000805160206158fe833981519152546001600160a01b031690565b6001600160a01b0316146124085760405162461bcd60e51b815260040161117790615510565b61241182614377565b61241d8282600161437f565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146124c15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401611177565b506000805160206158fe83398151915290565b6124dc613697565b6003546110ca90339081906001600160a01b031684613e58565b6124fe613697565b6005546110ca9033906001600160a01b03168360016144ea565b612520613875565b600754600160a01b900460ff161561254b5760405163fd3cfa1960e01b815260040160405180910390fd5b6001600160a01b038516158061256857506001600160a01b038416155b8061257a57506001600160a01b038316155b8061258c57506001600160a01b038216155b8061259e57506001600160a01b038116155b156125bc5760405163748fdb2d60e01b815260040160405180910390fd5b6000846001600160a01b03166330fa738c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612620919061558c565b600181111561263157612631615576565b1415806126b157506000836001600160a01b03166330fa738c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269d919061558c565b60018111156126ae576126ae615576565b14155b8061272f57506001826001600160a01b03166330fa738c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271b919061558c565b600181111561272c5761272c615576565b14155b1561274d576040516341f0553360e11b815260040160405180910390fd5b60078054600380546001600160a01b03199081166001600160a01b03998a1617909155600580548216968916969096179095556004805486169688169690961790955560068054851693871693909317909255600160a01b6001600160a81b031990941694169390931791909117909155601080548216905560118054821690556012805482169055601380548216905560148054821690556015805482169055601680548216905560178054821690556018805482169055601980549091169055565b612819613697565b3382156128d9576001600160a01b038086166000908152601a60209081526040808320888516845290915290205416806128655760405162461bcd60e51b8152600401611177906155ad565b6040516309f4173d60e11b81526001600160a01b038216906313e82e7a90612893908590819060040161555c565b6020604051808303816000875af11580156128b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d6919061549b565b50505b811561299b576001600160a01b038086166000908152601a60209081526040808320888516845290915290206004015416806129275760405162461bcd60e51b8152600401611177906155f2565b6040516309f4173d60e11b81526001600160a01b038216906313e82e7a90612955908590819060040161555c565b6020604051808303816000875af1158015612974573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612998919061549b565b50505b6001600160a01b038581166000908152601a60209081526040808320600554851684529091529020600201541615612a65576001600160a01b038086166000908152601a6020908152604080832060055485168452909152908190206002015490516309f4173d60e11b81529116906313e82e7a90612a20908490819060040161555c565b6020604051808303816000875af1158015612a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a63919061549b565b505b506113b26001600055565b612a78613697565b6004546110ca9033906001600160a01b03168360016144ea565b612a9a613875565b611463600061435e565b60025433906001600160a01b03168114612b125760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401611177565b610b778161435e565b612b23613697565b610af133848484614955565b612b37613697565b612b3f6136f0565b600354612b5990339084906001600160a01b031684613e58565b61241d6001600055565b612b6b613875565b600081118015612b7f57506301e133808111155b612bcb5760405162461bcd60e51b815260206004820152601e60248201527f5374616b696e6741646d696e3a20496e76616c6964206475726174696f6e00006044820152606401611177565b600f55565b612bd8613697565b338315612c56576010546040516309f4173d60e11b81526001600160a01b03909116906313e82e7a90612c11908490819060040161555c565b6020604051808303816000875af1158015612c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c54919061549b565b505b8215612cd3576016546040516309f4173d60e11b81526001600160a01b03909116906313e82e7a90612c8e908490819060040161555c565b6020604051808303816000875af1158015612cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd1919061549b565b505b8115612d50576018546040516309f4173d60e11b81526001600160a01b03909116906313e82e7a90612d0b908490819060040161555c565b6020604051808303816000875af1158015612d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4e919061549b565b505b6012546001600160a01b031615612dd8576012546040516309f4173d60e11b81526001600160a01b03909116906313e82e7a90612d93908490819060040161555c565b6020604051808303816000875af1158015612db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd6919061549b565b505b6019546001600160a01b031615612e60576019546040516309f4173d60e11b81526001600160a01b03909116906313e82e7a90612e1b908490819060040161555c565b6020604051808303816000875af1158015612e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5e919061549b565b505b50610afb6001600055565b612e73613697565b6003546110ca9033906001600160a01b03168360016144ea565b612e95613697565b612b59338383613796565b612ea8613875565b6000826001600160a01b03166330fa738c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0c919061558c565b6001811115612f1d57612f1d615576565b14612f3b576040516341f0553360e11b815260040160405180910390fd5b6001600160a01b038381166000908152601a6020908152604080832086851684529091529020541615612f815760405163b7c18eab60e01b815260040160405180910390fd5b604080516001808252818301909252600091602080830190803683370190505090508381600081518110612fb757612fb761544d565b60200260200101906001600160a01b031690816001600160a01b03168152505060008061302c6040518060400160405280600c81526020016b05374616b6564204753204c560a41b8152506040518060400160405280600581526020016407347536c760dc1b815250878660008060006138cf565b915091506000600d60009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ab919061547e565b600f54604051636f53f88960e11b815260e0600480830191909152600e60e48301526d56657374656420506f6f6c20475360901b6101048301526101206024830152610124820152637670475360e01b61014482015260448101919091526001600160a01b0388811660648301528581166084830181905288821660a484015260c48301529192509082169063dea7f1129061016401600060405180830381600087803b15801561315b57600080fd5b505af115801561316f573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0386169250639cb7de4b91506131a2908490600190600401615463565b600060405180830381600087803b1580156131bc57600080fd5b505af11580156131d0573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0384169250639cb7de4b9150613203903090600190600401615463565b600060405180830381600087803b15801561321d57600080fd5b505af1158015613231573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0389169250639cb7de4b9150613264908690600190600401615463565b600060405180830381600087803b15801561327e57600080fd5b505af1158015613292573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0389169250639cb7de4b91506132c5908590600190600401615463565b600060405180830381600087803b1580156132df57600080fd5b505af11580156132f3573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0389169250639cb7de4b9150613326908490600190600401615463565b600060405180830381600087803b15801561334057600080fd5b505af1158015613354573d6000803e3d6000fd5b505050506001600160a01b038781166000818152601a602090815260408083208b86168452909152902080546001600160a01b0319908116878516178255600182018054821687861617905560049091018054909116928416929092179091556133c19084600019614a60565b604080516001600160a01b0385811682528481166020830152838116828401529151918916917fcdcc61e405d20e5ea764e4203291f8a85d9a481c6f2500f0688c7f35ef93adb29181900360600190a250505050505050565b613422613697565b601854604051630efcd41b60e21b81523360048201526001600160a01b0390911690633bf3506c90602401611427565b61345a613697565b6134626136f0565b6113a884848484614955565b613476613697565b6001600160a01b038083166000908152601a60209081526040808320858516845290915290206004015416806134be5760405162461bcd60e51b8152600401611177906155f2565b604051630efcd41b60e21b81523360048201526001600160a01b03821690633bf3506c90602401600060405180830381600087803b1580156134ff57600080fd5b505af1158015613513573d6000803e3d6000fd5b505050505061241d6001600055565b61352a613697565b612b59338383614b43565b61353d613697565b6135456136f0565b610af1838383614b43565b613558613697565b6001600160a01b038084166000908152601a60209081526040808320868516845290915290206004015416806135a05760405162461bcd60e51b8152600401611177906155f2565b60405163342fcda960e01b8152336004820152602481018390526001600160a01b0382169063342fcda990604401600060405180830381600087803b1580156135e857600080fd5b505af11580156135fc573d6000803e3d6000fd5b5050505050610afb6001600055565b613613613875565b600280546001600160a01b0383166001600160a01b031990911681179091556136446001546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b613684613697565b61368d3361412d565b6114636001600055565b6002600054036136e95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611177565b6002600055565b33806137046001546001600160a01b031690565b6001600160a01b0316148061374a5750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316145b610b775760405162461bcd60e51b815260206004820152601860248201527f5374616b696e67526f757465723a20666f7262696464656e00000000000000006044820152606401611177565b6001600160a01b038083166000908152601a602090815260408083206005548516845290915290206002015416806137e05760405162461bcd60e51b815260040161117790615636565b604051630485062360e31b81526001600160a01b03858116600483015260248201849052821690632428311890604401600060405180830381600087803b15801561382a57600080fd5b505af115801561383e573d6000803e3d6000fd5b505050507fae7c44af3a09f9f93a21236cdb8712345291d93a122df57de04102ce01e99fa884848460405161109a93929190615680565b6001546001600160a01b031633146114635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611177565b6000808061ffff86161561395d57600860009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613932573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613956919061547e565b9050613a34565b84156139b857600a60009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613932573d6000803e3d6000fd5b600960009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a31919061547e565b90505b60008415613b1d57600c60009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab5919061547e565b60405163485cc95560e01b81529091506001600160a01b0382169063485cc95590613ae6908c90869060040161555c565b600060405180830381600087803b158015613b0057600080fd5b505af1158015613b14573d6000803e3d6000fd5b50505050613bfa565b600b60009054906101000a90046001600160a01b03166001600160a01b031663775c300c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b96919061547e565b60405163485cc95560e01b81529091506001600160a01b0382169063485cc95590613bc7908c90869060040161555c565b600060405180830381600087803b158015613be157600080fd5b505af1158015613bf5573d6000803e3d6000fd5b505050505b61ffff871615613d2e57816001600160a01b0316637d4f62d87f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000008f8f8e600081518110613c6b57613c6b61544d565b6020026020010151886040518863ffffffff1660e01b8152600401613c9697969594939291906156f4565b600060405180830381600087803b158015613cb057600080fd5b505af1158015613cc4573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0385169250639cb7de4b9150613cf7903090600190600401615463565b600060405180830381600087803b158015613d1157600080fd5b505af1158015613d25573d6000803e3d6000fd5b50505050613df4565b604051631206923b60e21b81526001600160a01b0383169063481a48ec90613d60908e908e908d908790600401615757565b600060405180830381600087803b158015613d7a57600080fd5b505af1158015613d8e573d6000803e3d6000fd5b5050604051639cb7de4b60e01b81526001600160a01b0385169250639cb7de4b9150613dc1903090600190600401615463565b600060405180830381600087803b158015613ddb57600080fd5b505af1158015613def573d6000803e3d6000fd5b505050505b806001600160a01b0316633ae6d6eb6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e2f57600080fd5b505af1158015613e43573d6000803e3d6000fd5b50939d929c50919a5050505050505050505050565b60008111613e785760405162461bcd60e51b8152600401611177906157de565b601054601454601654604051631e42d69b60e21b81526001600160a01b03938416939283169290911690839063790b5a6c90613ebe908a908a908a908a90600401615815565b600060405180830381600087803b158015613ed857600080fd5b505af1158015613eec573d6000803e3d6000fd5b5050604051631e42d69b60e21b81526001600160a01b038516925063790b5a6c9150613f22908990819088908a90600401615815565b600060405180830381600087803b158015613f3c57600080fd5b505af1158015613f50573d6000803e3d6000fd5b5050604051631e42d69b60e21b81526001600160a01b038416925063790b5a6c9150613f86908990819087908a90600401615815565b600060405180830381600087803b158015613fa057600080fd5b505af1158015613fb4573d6000803e3d6000fd5b505050507f9a3e046c68a0dd4be24d1d52fb4a143dc136462bef3898087e0e214907e4cb63868686604051613feb93929190615680565b60405180910390a150505050505050565b6000811161401c5760405162461bcd60e51b8152600401611177906157de565b6001600160a01b038084166000908152601a60209081526040808320868516845290915290205416806140615760405162461bcd60e51b8152600401611177906155ad565b604051631e42d69b60e21b81526001600160a01b0382169063790b5a6c90614093908990899089908890600401615815565b600060405180830381600087803b1580156140ad57600080fd5b505af11580156140c1573d6000803e3d6000fd5b505050507f2d11500a2472d3f3500ac31f59b77c09154c05e25aca58df0f6e2ac3ed4b5c678585846040516140f893929190615680565b60405180910390a1505050505050565b600061411383614c22565b801561412457506141248383614c55565b90505b92915050565b6010546040516309f4173d60e11b81526000916001600160a01b0316906313e82e7a90614160908590819060040161555c565b6020604051808303816000875af115801561417f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a3919061549b565b905080156141c5576004546141c590839081906001600160a01b031684613e58565b6012546001600160a01b031615614270576012546040516309f4173d60e11b81526000916001600160a01b0316906313e82e7a90614209908690819060040161555c565b6020604051808303816000875af1158015614228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061424c919061549b565b9050801561426e5760055461426e90849081906001600160a01b031684613e58565b505b6014546040516309f4173d60e11b81526000916001600160a01b0316906313e82e7a906142a3908690819060040161555c565b6020604051808303816000875af11580156142c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e6919061549b565b90508015610afb57601654600654604051631e42d69b60e21b81526001600160a01b039283169263790b5a6c92614327928892839216908790600401615815565b600060405180830381600087803b15801561434157600080fd5b505af1158015614355573d6000803e3d6000fd5b50505050505050565b600280546001600160a01b0319169055610b7781614cde565b610b77613875565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156143b257610afb83614d30565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561440c575060408051601f3d908101601f191682019092526144099181019061549b565b60015b61446f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611177565b6000805160206158fe83398151915281146144de5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611177565b50610afb838383614dcc565b6000821161450a5760405162461bcd60e51b8152600401611177906157de565b6010546014546016546040516310c1c10360e01b81526001600160a01b03888116600483015293841693928316929091169060009084906310c1c10390602401602060405180830381865afa158015614567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061458b919061549b565b60405163098bf59d60e01b81529091506001600160a01b0383169063098bf59d906145c0908b9087908b90839060040161583f565b600060405180830381600087803b1580156145da57600080fd5b505af11580156145ee573d6000803e3d6000fd5b505060405163098bf59d60e01b81526001600160a01b038616925063098bf59d9150614624908b9088908b90839060040161583f565b600060405180830381600087803b15801561463e57600080fd5b505af1158015614652573d6000803e3d6000fd5b505060405163098bf59d60e01b81526001600160a01b038716925063098bf59d9150614688908b908b908b90839060040161583f565b600060405180830381600087803b1580156146a257600080fd5b505af11580156146b6573d6000803e3d6000fd5b505050508415614922576040516309f4173d60e11b81526000906001600160a01b038516906313e82e7a906146f1908c90819060040161555c565b6020604051808303816000875af1158015614710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614734919061549b565b905080156147a657600654604051631e42d69b60e21b81526001600160a01b038086169263790b5a6c92614773928e9283929116908790600401615815565b600060405180830381600087803b15801561478d57600080fd5b505af11580156147a1573d6000803e3d6000fd5b505050505b600654604051637aeceb1f60e11b81526000916001600160a01b038087169263f5d9d63e926147dc928f9291169060040161555c565b602060405180830381865afa1580156147f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061481d919061549b565b9050801561491f576000836148328a8461586a565b61483c919061588f565b9050846001600160a01b031663098bf59d8c600660009054906101000a90046001600160a01b0316848f6040518563ffffffff1660e01b8152600401614885949392919061583f565b600060405180830381600087803b15801561489f57600080fd5b505af11580156148b3573d6000803e3d6000fd5b5050600654604051632770a7eb60e21b81526001600160a01b038f81166004830152602482018690529091169250639dc29fac9150604401600060405180830381600087803b15801561490557600080fd5b505af1158015614919573d6000803e3d6000fd5b50505050505b50505b7f6f17283f29c23ffe98180fd995042c0591bb1c4ff960d8f04c9fe63fa3bdbd3688888860405161169293929190615680565b600081116149755760405162461bcd60e51b8152600401611177906157de565b6001600160a01b038084166000908152601a60209081526040808320868516845290915290205416806149ba5760405162461bcd60e51b8152600401611177906155ad565b60405163098bf59d60e01b81526001600160a01b0382169063098bf59d906149ec90889088908790839060040161583f565b600060405180830381600087803b158015614a0657600080fd5b505af1158015614a1a573d6000803e3d6000fd5b505050507fa72ed75b69da44a21a45c4c5e073d9e8069ac56e207063fcd2e394f1c5d87e34858584604051614a5193929190615680565b60405180910390a15050505050565b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b17905251614aba91906158b1565b6000604051808303816000865af19150503d8060008114614af7576040519150601f19603f3d011682016040523d82523d6000602084013e614afc565b606091505b5091509150818015614b26575080511580614b26575080806020019051810190614b2691906158cd565b6113845760405163cbade9b160e01b815260040160405180910390fd5b6001600160a01b038083166000908152601a60209081526040808320600554851684529091529020600201541680614b8d5760405162461bcd60e51b815260040161117790615636565b60405163776de3bb60e11b81526001600160a01b0385811660048301526024820184905282169063eedbc77690604401600060405180830381600087803b158015614bd757600080fd5b505af1158015614beb573d6000803e3d6000fd5b505050507f23b1f655fd740e117cef17524584c5c1f4819a9629c777bac94c229585590fe384848460405161109a93929190615680565b6000614c35826301ffc9a760e01b614c55565b80156141275750614c4e826001600160e01b0319614c55565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015614cc7575060208210155b8015614cd35750600081115b979650505050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381163b614d9d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611177565b6000805160206158fe83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614dd583614df1565b600082511180614de25750805b15610afb576113b28383614e31565b614dfa81614d30565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614124838360405180606001604052806027815260200161591e602791396060600080856001600160a01b031685604051614e6e91906158b1565b600060405180830381855af49150503d8060008114614ea9576040519150601f19603f3d011682016040523d82523d6000602084013e614eae565b606091505b5091509150614ebf86838387614ec9565b9695505050505050565b60608315614f38578251600003614f31576001600160a01b0385163b614f315760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611177565b5081614f42565b614f428383614f4a565b949350505050565b815115614f5a5781518083602001fd5b8060405162461bcd60e51b815260040161117791906158ea565b6001600160a01b0381168114610b7757600080fd5b600080600060608486031215614f9e57600080fd5b8335614fa981614f74565b92506020840135614fb981614f74565b929592945050506040919091013590565b600060208284031215614fdc57600080fd5b5035919050565b600080600060608486031215614ff857600080fd5b833561500381614f74565b9250602084013561501381614f74565b9150604084013561502381614f74565b809150509250925092565b60008060006040848603121561504357600080fd5b833561504e81614f74565b9250602084013567ffffffffffffffff8082111561506b57600080fd5b818601915086601f83011261507f57600080fd5b81358181111561508e57600080fd5b8760208285010111156150a057600080fd5b6020830194508093505050509250925092565b600080600080608085870312156150c957600080fd5b84356150d481614f74565b935060208501356150e481614f74565b925060408501356150f481614f74565b9396929550929360600135925050565b60006020828403121561511657600080fd5b813561512181614f74565b9392505050565b600080600080600080600060e0888a03121561514357600080fd5b873561514e81614f74565b9650602088013561515e81614f74565b9550604088013561516e81614f74565b9450606088013561517e81614f74565b9350608088013561518e81614f74565b925060a088013561519e81614f74565b915060c08801356151ae81614f74565b8091505092959891949750929550565b600080604083850312156151d157600080fd5b82356151dc81614f74565b9150602083013561ffff811681146151f357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561522757600080fd5b823561523281614f74565b9150602083013567ffffffffffffffff8082111561524f57600080fd5b818501915085601f83011261526357600080fd5b813581811115615275576152756151fe565b604051601f8201601f19908116603f0116810190838211818310171561529d5761529d6151fe565b816040528281528860208487010111156152b657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080600060a086880312156152f057600080fd5b85356152fb81614f74565b9450602086013561530b81614f74565b9350604086013561531b81614f74565b9250606086013561532b81614f74565b9150608086013561533b81614f74565b809150509295509295909350565b8015158114610b7757600080fd5b6000806000806080858703121561536d57600080fd5b843561537881614f74565b9350602085013561538881614f74565b9250604085013561539881615349565b915060608501356153a881615349565b939692955090935050565b600080604083850312156153c657600080fd5b82356153d181614f74565b946020939093013593505050565b6000806000606084860312156153f457600080fd5b83356153ff81615349565b9250602084013561540f81615349565b9150604084013561502381615349565b6000806040838503121561543257600080fd5b823561543d81614f74565b915060208301356151f381614f74565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b60006020828403121561549057600080fd5b815161512181614f74565b6000602082840312156154ad57600080fd5b5051919050565b8183823760009101908152919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561559e57600080fd5b81516002811061512157600080fd5b60208082526025908201527f5374616b696e67526f757465723a20706f6f6c20747261636b6572206e6f7420604082015264199bdd5b9960da1b606082015260800190565b60208082526024908201527f5374616b696e67526f757465723a20706f6f6c20766573746572206e6f7420666040820152631bdd5b9960e21b606082015260800190565b6020808252602a908201527f5374616b696e67526f757465723a20706f6f6c206c6f616e20747261636b6572604082015269081b9bdd08199bdd5b9960b21b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60005b838110156156bf5781810151838201526020016156a7565b50506000910152565b600081518084526156e08160208601602086016156a4565b601f01601f19169290920160200192915050565b600060018060a01b03808a16835261ffff89166020840152808816604084015260e0606084015261572860e08401886156c8565b838103608085015261573a81886156c8565b95821660a0850152509290921660c0909101525095945050505050565b60808152600061576a60808301876156c8565b60208382038185015261577d82886156c8565b8481036040860152865180825282880193509082019060005b818110156157bb5784516001600160a01b031683529383019391830191600101615796565b50506001600160a01b039590951660609490940193909352509195945050505050565b6020808252601d908201527f5374616b696e67526f757465723a20696e76616c696420616d6f756e74000000604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b808202811582820484141761412757634e487b7160e01b600052601160045260246000fd5b6000826158ac57634e487b7160e01b600052601260045260246000fd5b500490565b600082516158c38184602087016156a4565b9190910192915050565b6000602082840312156158df57600080fd5b815161512181615349565b60208152600061412460208301846156c856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122093ffbd2cc6c263913667d7d516818fe161115869af643d913864d13cc79993a364736f6c63430008150033000000000000000000000000fd513630f697a9c1731f196185fb9eba6eaac20b0000000000000000000000007135ba051fcba0d3bde77add0601d8b69c91ece1