0 txs
7 calls
constructor
constructor(address token)
functions
_balanceBefore
viewfunction _balanceBefore() view returns (uint256)
_claimableReward
viewfunction _claimableReward() view returns (uint256)
_claimedPerCycle
viewfunction _claimedPerCycle() view returns (uint256)
_factory
viewfunction _factory() view returns (address)
_lastCycleId
viewfunction _lastCycleId() view returns (uint256)
_lastCycleReward
viewfunction _lastCycleReward() view returns (uint256)
_lastEndTime
viewfunction _lastEndTime() view returns (uint256)
_memberProperties
viewfunction _memberProperties(address) view returns (uint8 rank, uint256 claimedAmount)
_name
viewfunction _name() view returns (bytes32)
_paidMembers
viewfunction _paidMembers() view returns (uint256)
_paidPools
viewfunction _paidPools() view returns (uint256)
_rake
viewfunction _rake() view returns (uint256)
_rakePercent
viewfunction _rakePercent() view returns (uint256)
_token
viewfunction _token() view returns (address)
_VERSION
viewfunction _VERSION() view returns (uint256)
getActive
viewfunction getActive(uint256 from, uint256 to) view returns (address[])
getActiveNumber
viewfunction getActiveNumber() view returns (uint256)
getAllActive
viewfunction getAllActive() view returns (address[])
getAllMemberProperties
viewfunction getAllMemberProperties() view returns (tuple[])
getAllWhitelisted
viewfunction getAllWhitelisted() view returns (address[])
getClaimableAmount
viewfunction getClaimableAmount(bytes32[] merkleProof, address claimer, uint256 amount) view returns (uint256 claimableAmount)
getMemberProperties
viewfunction getMemberProperties(uint256 from, uint256 to) view returns (tuple[])
getWhitelisted
viewfunction getWhitelisted(uint256 from, uint256 to) view returns (address[])
getWhitelistedNumber
viewfunction getWhitelistedNumber() view returns (uint256)
isActive
viewfunction isActive(address user) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address user) view returns (bool)
verifyMerkleProof
viewfunction verifyMerkleProof(bytes32[] merkleProof, address claimer, uint256 amount) view returns (bool)
activateMembership
nonpayablefunction activateMembership()
addReward
nonpayablefunction addReward(uint256 reward, uint256 startTime, uint256 endTime)
addToWhitelist
nonpayablefunction addToWhitelist(address[] members)
changeRank
nonpayablefunction changeRank(address member, uint8 rank)
claimRake
nonpayablefunction claimRake(address receiver)
claimReward
nonpayablefunction claimReward(bytes32[] merkleProof, address receiver, uint256 amount)
exitBond
nonpayablefunction exitBond()
initialize
nonpayablefunction initialize(address admin, bytes32 name, uint256 rakePercent, uint256 initialMembersNumber)
payMemberFee
nonpayablefunction payMemberFee(uint256 members)
payPoolFee
nonpayablefunction payPoolFee(uint256 pools)
remove
nonpayablefunction remove(address[] members)
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address[] members)
setName
nonpayablefunction setName(bytes32 name)
sweepTokens
nonpayablefunction sweepTokens(address token, address recipient)
events
Activated
event Activated(address indexed member)
Initialized
event Initialized(uint8 version)
MemberFeePaid
event MemberFeePaid(uint256 membersAdded, uint256 paidMembers)
NameSet
event NameSet(bytes32 name)
PoolFeePaid
event PoolFeePaid(uint256 poolsAdded, uint256 paidPools)
RakeClaimed
event RakeClaimed(address claimer, address receiver, uint256 rakeReduced)
RakePercentSet
event RakePercentSet(uint256 rakePercent)
RankChanged
event RankChanged(address indexed member, uint8 rank)
Removed
event Removed(address indexed member)
RemovedFromWhitelist
event RemovedFromWhitelist(address indexed member)
RewardAdded
event RewardAdded(uint256 reward, uint256 claimableRewardAdded, uint256 rakeAdded, uint256 startTime, uint256 endTime)
RewardClaimed
event RewardClaimed(address claimer, address receiver, uint256 amount)
Whitelisted
event Whitelisted(address indexed member)
errors
AlreadySet
error AlreadySet()
MemberActive
error MemberActive()
MemberFeeNotPaid
error MemberFeeNotPaid()
MemberInABond
error MemberInABond()
MemberInvalid
error MemberInvalid()
MerkleProofInvalid
error MerkleProofInvalid()
NotEnoughBalance
error NotEnoughBalance()
NothingToClaim
error NothingToClaim()
NotWhitelisted
error NotWhitelisted()
RakePercentInvalid
error RakePercentInvalid()
TimeInvalid
error TimeInvalid()
Unauthorized
error Unauthorized()
creation bytecode
0x60c06040523480156200001157600080fd5b506040516200354738038062003547833981016040819052620000349162000116565b6200003e62000054565b6001600160a01b03166080523360a05262000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b60805160a051613369620001de600039600081816104f3015281816105cf0152818161076301528181610ae90152818161122f015281816113f3015281816114e60152818161178701528181611bda01528181611d34015281816120f9015281816121bd015281816124ab015261256f01526000818161057301528181610cf401528181611d820152611fe101526133696000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c80637220888d11610186578063b7c1d527116100e3578063d28d885211610097578063f4a1ffd011610071578063f4a1ffd014610595578063fcfbf8b4146105a8578063ff59d1be146105b157600080fd5b8063d28d88521461055c578063d7e6699414610565578063ecd0c0c31461056e57600080fd5b8063c62e21d3116100c8578063c62e21d31461052d578063cc2ece9a14610536578063d1ffd0e41461054957600080fd5b8063b7c1d527146104db578063c5cc6b6a146104ee57600080fd5b80638cad80b91161013a57806393636d171161011f57806393636d17146104b75780639f8a13d7146104c0578063b47ac121146104d357600080fd5b80638cad80b91461049b57806390fa3a49146104ae57600080fd5b80637f6497831161016b5780637f6497831461047857806382b9e10a1461048b57806385cc412e1461049357600080fd5b80637220888d1461045d5780637669a2a81461046557600080fd5b80633f4526bf11610234578063548db174116101e85780635e4ba17c116101cd5780635e4ba17c1461042e57806361611d92146104415780636fda11a81461045457600080fd5b8063548db174146104085780635ac801fe1461041b57600080fd5b8063468162901161021957806346816290146103da57806349b0db14146103ed5780634de41d3b146103f557600080fd5b80633f4526bf146103bc5780634245b7af146103c557600080fd5b806329c902aa1161028b5780633444920111610270578063344492011461037d5780633af32abf146103865780633b9f9d35146103a957600080fd5b806329c902aa1461035557806330abe1bf1461035d57600080fd5b80631609be1d116102bc5780631609be1d1461032f5780631ae51e0b146103445780631fe4602c1461034d57600080fd5b806303193ab8146102d857806315fb19db146102f4575b600080fd5b6102e160375481565b6040519081526020015b60405180910390f35b610321610302366004612d15565b603d602052600090815260409020805460019091015460ff9091169082565b6040516102eb929190612d9a565b61034261033d366004612db5565b6105c4565b005b6102e160345481565b6102e16106de565b6103426106ef565b61037061036b366004612de8565b6108c1565b6040516102eb9190612e0a565b6102e160395481565b610399610394366004612d15565b610a7a565b60405190151581526020016102eb565b6102e16103b7366004612ec1565b610a87565b6102e1603a5481565b6103cd610ad2565b6040516102eb9190612f1d565b6103426103e8366004612f6a565b610ade565b6102e1600281565b610342610403366004612d15565b610c4a565b610342610416366004612f96565b610d68565b610342610429366004612fd8565b610eac565b61034261043c366004612f96565b610f81565b6103cd61044f366004612de8565b6112ee565b6102e160335481565b6102e1611303565b610399610473366004612ec1565b61130f565b610342610486366004612f96565b611538565b610342611759565b6103706118f0565b6103cd6104a9366004612de8565b611a85565b6102e160365481565b6102e160425481565b6103996104ce366004612d15565b611a93565b6103cd611aa0565b6103426104e9366004612ff1565b611aac565b6105157f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102eb565b6102e160355481565b610342610544366004612ec1565b611edd565b610342610557366004612fd8565b612059565b6102e1603c5481565b6102e1603b5481565b6105157f000000000000000000000000000000000000000000000000000000000000000081565b6103426105a336600461302a565b61225f565b6102e160385481565b6103426105bf366004612fd8565b612412565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610626576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b99190613065565b90506106cf6001600160a01b03841683836125f4565b505060006037819055603b5550565b60006106ea6040612674565b905090565b604080516001808252818301909252600091602080830190803683370190505090503381600081518110610725576107256130ad565b6001600160a01b0392831660209182029290920101526040517f46ee84b00000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000909116906346ee84b09061079a908490600401612f1d565b602060405180830381600087803b1580156107b457600080fd5b505af11580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec91906130dc565b610822576040517f8d1984fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61082d60403361267e565b610863576040517f8d1984fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152603d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f066a905b79c0121afe61e3a44e0b14b6bc1ec16d854cdba09efdfc9b6aa9af819190a250565b606060006108d160408585612693565b905060006108df858561312d565b905060008167ffffffffffffffff8111156108fc576108fc61307e565b60405190808252806020026020018201604052801561096557816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161091a5790505b50905060005b82811015610a6e576000848281518110610987576109876130ad565b60200260200101519050808383815181106109a4576109a46130ad565b6020908102919091018101516001600160a01b0392831690529082166000908152603d9091526040902054835160ff909116908490849081106109e9576109e96130ad565b6020026020010151602001906002811115610a0657610a06612d30565b90816002811115610a1957610a19612d30565b9052506001600160a01b0381166000908152603d60205260409020600101548351849084908110610a4c57610a4c6130ad565b6020908102919091010151604001525080610a6681613144565b91505061096b565b50925050505b92915050565b6000610a74603e83612772565b6000610a958585858561130f565b610aa157506000610aca565b6001600160a01b0383166000908152603d6020526040902060010154610ac7908361312d565b90505b949350505050565b60606106ea603e612794565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b40576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082101580610b50575060425482105b80610b5a57504281115b15610b91576040517fa90a3db600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6042819055603a5460009061271090610baa908661317d565b610bb491906131ba565b905080603b6000828254610bc891906131f5565b9091555060009050610bda828661312d565b90508060376000828254610bee91906131f5565b9091555050604080518681526020810183905290810183905260608101859052608081018490527f8ce8cbe5f803930b0c6afe4640018bbfb02cbb5b0bfbe051b25a155201e80dac9060a0015b60405180910390a15050505050565b6002336000908152603d602052604090205460ff166002811115610c7057610c70612d30565b1015610ca8576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603b5480610ce2576040517fad3a8b9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000603b55610d1b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683836125f4565b604080513381526001600160a01b03841660208201529081018290527f60af6388e6679cb0fbf38be6770b14ed0b38b9edad154eb1f68288535754df999060600160405180910390a15050565b6001336000908152603d602052604090205460ff166002811115610d8e57610d8e612d30565b1015610dc6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610ea757610e03838383818110610de657610de66130ad565b9050602002016020810190610dfb9190612d15565b603e9061267e565b610e39576040517f8d1984fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828282818110610e4b57610e4b6130ad565b9050602002016020810190610e609190612d15565b6001600160a01b03167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a280610e9f81613144565b915050610dc9565b505050565b6002336000908152603d602052604090205460ff166002811115610ed257610ed2612d30565b1015610f0a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80603c541415610f46576040517fa741a04500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603c8190556040518181527ff0a448d0a232a52fa0d33cd44c69abd430849e6802c5a6e3b66f03678b11c6589060200160405180910390a150565b6001336000908152603d602052604090205460ff166002811115610fa757610fa7612d30565b1015610fdf576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152603d602052604081205460ff16905b828110156111fe57600282600281111561101057611010612d30565b14158015611087575081600281111561102b5761102b612d30565b603d6000868685818110611041576110416130ad565b90506020020160208101906110569190612d15565b6001600160a01b0316815260208101919091526040016000205460ff16600281111561108457611084612d30565b10155b156110be576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f08484838181106110d3576110d36130ad565b90506020020160208101906110e89190612d15565b60409061267e565b611126576040517f8d1984fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603d600085858481811061113c5761113c6130ad565b90506020020160208101906111519190612d15565b6001600160a01b03168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558383828181106111a2576111a26130ad565b90506020020160208101906111b79190612d15565b6001600160a01b03167f066a905b79c0121afe61e3a44e0b14b6bc1ec16d854cdba09efdfc9b6aa9af8160405160405180910390a2806111f681613144565b915050610ff4565b506040517f46ee84b00000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346ee84b090611266908690869060040161320d565b602060405180830381600087803b15801561128057600080fd5b505af1158015611294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b891906130dc565b610ea7576040517f8d1984fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606112fc60408484612693565b9392505050565b60006106ea603e612674565b604080513060208201526001600160a01b03841691810191909152606081018290526000908190608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061147986868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080517f2fc37ab200000000000000000000000000000000000000000000000000000000815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350632fc37ab292506004808301926020929190829003018186803b15801561143b57600080fd5b505afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190613065565b836127a1565b8061152e575061152e86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080517f5a49ec6d00000000000000000000000000000000000000000000000000000000815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350635a49ec6d92506004808301926020929190829003018186803b15801561143b57600080fd5b9695505050505050565b6001336000908152603d602052604090205460ff16600281111561155e5761155e612d30565b1015611596576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115a2603e612674565b905060006115b06040612674565b90506000836115bf83856131f5565b6115c991906131f5565b9050603354811115611607576040517f4240743c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8481101561175157611644868683818110611627576116276130ad565b905060200201602081019061163c9190612d15565b604090612772565b1561167b576040517f5a12e23900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116ad868683818110611690576116906130ad565b90506020020160208101906116a59190612d15565b603e906127b7565b6116e3576040517fa741a04500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8585828181106116f5576116f56130ad565b905060200201602081019061170a9190612d15565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a28061174981613144565b91505061160a565b505050505050565b6040517f269322280000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632693222890602401602060405180830381600087803b1580156117d357600080fd5b505af11580156117e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180b91906130dc565b611841576040517fa333646b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61184c603e3361267e565b611882576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61188d6040336127b7565b6118c3576040517fa741a04500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405133907f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf990600090a2565b606060006118fe6040612674565b905060008167ffffffffffffffff81111561191b5761191b61307e565b60405190808252806020026020018201604052801561198457816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816119395790505b50905060005b82811015611a7e57600061199f6040836127cc565b9050808383815181106119b4576119b46130ad565b6020908102919091018101516001600160a01b0392831690529082166000908152603d9091526040902054835160ff909116908490849081106119f9576119f96130ad565b6020026020010151602001906002811115611a1657611a16612d30565b90816002811115611a2957611a29612d30565b9052506001600160a01b0381166000908152603d60205260409020600101548351849084908110611a5c57611a5c6130ad565b6020908102919091010151604001525080611a7681613144565b91505061198a565b5092915050565b60606112fc603e8484612693565b6000610a74604083612772565b60606106ea6040612794565b600054610100900460ff1615808015611acc5750600054600160ff909116105b80611ae65750303b158015611ae6575060005460ff166001145b611b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611bd557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eb8b1ca96040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3157600080fd5b505afa158015611c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c699190613065565b611c7390856131f5565b10611caa576040517f72bb2e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603a83905560338290556001603455603c849055611cc96040866127b7565b506001600160a01b038581166000908152603d60205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055517f095ea7b30000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b390604401602060405180830381600087803b158015611dc857600080fd5b505af1158015611ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0091906130dc565b506040516001600160a01b038616907f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf990600090a2846001600160a01b03167fc1ccb20a244f6dc02647c6961322e693e91ede068d78addfd051649c447776f76002604051611e6f9190613259565b60405180910390a28015611ed657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610c3b565b5050505050565b611ee98484338461130f565b611f1f576040517fc8ac23c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152603d6020526040812060010154611f3c908361312d565b905080611f75576040517f969bf72800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152603d6020526040902060010182905560375480821115611fc7576040517fad3a8b9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fd1828261312d565b6037556120086001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685846125f4565b604080513381526001600160a01b03861660208201529081018390527f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b79060600160405180910390a1505050505050565b6002336000908152603d602052604090205460ff16600281111561207f5761207f612d30565b10156120b7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6034546040517f1edbf7df00000000000000000000000000000000000000000000000000000000815260048101839052602481018290523360448201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631edbf7df90606401602060405180830381600087803b15801561214557600080fd5b505af1158015612159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217d9190613065565b905061218983836131f5565b60348190555080603b60008282546121a1919061312d565b9091555050801561221657604080513381526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201529081018290527f60af6388e6679cb0fbf38be6770b14ed0b38b9edad154eb1f68288535754df999060600160405180910390a15b7fe83c612062f8034ec41af1f6f886d4499e2279b7a8cec1eb0c8c5c26f577b2f38361224281856131f5565b6040805192835260208301919091520160405180910390a1505050565b6002336000908152603d602052604090205460ff16600281111561228557612285612d30565b10156122bd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122c8604083612772565b6122fe576040517f8d1984fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600281111561231057612310612d30565b6001600160a01b0383166000908152603d602052604090205460ff16600281111561233d5761233d612d30565b1415612375576040517fa741a04500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000908152603d6020526040902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156123c8576123c8612d30565b0217905550816001600160a01b03167fc1ccb20a244f6dc02647c6961322e693e91ede068d78addfd051649c447776f7826040516124069190613259565b60405180910390a25050565b6002336000908152603d602052604090205460ff16600281111561243857612438612d30565b1015612470576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546040517fd05818b0000000000000000000000000000000000000000000000000000000008152600481018390523360248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d05818b090604401602060405180830381600087803b1580156124f757600080fd5b505af115801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f9190613065565b905061253b83836131f5565b60338190555080603b6000828254612553919061312d565b909155505080156125c857604080513381526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201529081018290527f60af6388e6679cb0fbf38be6770b14ed0b38b9edad154eb1f68288535754df999060600160405180910390a15b7f48b19481080941e7c7be0c19caa29d380d528468bd087521b590c49cdd2e82868361224281856131f5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ea79084906127d8565b6000610a74825490565b60006112fc836001600160a01b0384166128d7565b606060006126a085612674565b90508281116126af57806126b1565b825b925060006126bf858561312d565b905060008167ffffffffffffffff8111156126dc576126dc61307e565b604051908082528060200260200182016040528015612705578160200160208202803683370190505b5090506000865b868110156127655761271e89826127cc565b838361272981613144565b94508151811061273b5761273b6130ad565b6001600160a01b03909216602092830291909101909101528061275d81613144565b91505061270c565b5090979650505050505050565b6001600160a01b038116600090815260018301602052604081205415156112fc565b606060006112fc836129ca565b6000826127ae8584612a26565b14949350505050565b60006112fc836001600160a01b038416612a73565b60006112fc8383612ac2565b600061282d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612aec9092919063ffffffff16565b805190915015610ea7578080602001905181019061284b91906130dc565b610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611b6e565b600081815260018301602052604081205480156129c05760006128fb60018361312d565b855490915060009061290f9060019061312d565b905081811461297457600086600001828154811061292f5761292f6130ad565b9060005260206000200154905080876000018481548110612952576129526130ad565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061298557612985613267565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a74565b6000915050610a74565b606081600001805480602002602001604051908101604052809291908181526020018280548015612a1a57602002820191906000526020600020905b815481526020019060010190808311612a06575b50505050509050919050565b600081815b8451811015612a6b57612a5782868381518110612a4a57612a4a6130ad565b6020026020010151612afb565b915080612a6381613144565b915050612a2b565b509392505050565b6000818152600183016020526040812054612aba57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a74565b506000610a74565b6000826000018281548110612ad957612ad96130ad565b9060005260206000200154905092915050565b6060610aca8484600085612b2a565b6000818310612b175760008281526020849052604090206112fc565b60008381526020839052604090206112fc565b606082471015612bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611b6e565b6001600160a01b0385163b612c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611b6e565b600080866001600160a01b03168587604051612c4991906132c6565b60006040518083038185875af1925050503d8060008114612c86576040519150601f19603f3d011682016040523d82523d6000602084013e612c8b565b606091505b5091509150612c9b828286612ca6565b979650505050505050565b60608315612cb55750816112fc565b825115612cc55782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e91906132e2565b80356001600160a01b0381168114612d1057600080fd5b919050565b600060208284031215612d2757600080fd5b6112fc82612cf9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110612d96577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101612da88285612d5f565b8260208301529392505050565b60008060408385031215612dc857600080fd5b612dd183612cf9565b9150612ddf60208401612cf9565b90509250929050565b60008060408385031215612dfb57600080fd5b50508035926020909101359150565b602080825282518282018190526000919060409081850190868401855b82811015612e685781516001600160a01b03815116855286810151612e4e88870182612d5f565b508501518486015260609093019290850190600101612e27565b5091979650505050505050565b60008083601f840112612e8757600080fd5b50813567ffffffffffffffff811115612e9f57600080fd5b6020830191508360208260051b8501011115612eba57600080fd5b9250929050565b60008060008060608587031215612ed757600080fd5b843567ffffffffffffffff811115612eee57600080fd5b612efa87828801612e75565b9095509350612f0d905060208601612cf9565b9396929550929360400135925050565b6020808252825182820181905260009190848201906040850190845b81811015612f5e5783516001600160a01b031683529284019291840191600101612f39565b50909695505050505050565b600080600060608486031215612f7f57600080fd5b505081359360208301359350604090920135919050565b60008060208385031215612fa957600080fd5b823567ffffffffffffffff811115612fc057600080fd5b612fcc85828601612e75565b90969095509350505050565b600060208284031215612fea57600080fd5b5035919050565b6000806000806080858703121561300757600080fd5b61301085612cf9565b966020860135965060408601359560600135945092505050565b6000806040838503121561303d57600080fd5b61304683612cf9565b915060208301356003811061305a57600080fd5b809150509250929050565b60006020828403121561307757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156130ee57600080fd5b815180151581146112fc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561313f5761313f6130fe565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613176576131766130fe565b5060010190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131b5576131b56130fe565b500290565b6000826131f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115613208576132086130fe565b500190565b60208082528181018390526000908460408401835b8681101561324e576001600160a01b0361323b84612cf9565b1682529183019190830190600101613222565b509695505050505050565b60208101610a748284612d5f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60005b838110156132b1578181015183820152602001613299565b838111156132c0576000848401525b50505050565b600082516132d8818460208701613296565b9190910192915050565b6020815260008251806020840152613301816040850160208701613296565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e5d28ef04e15d73b5d9585da1fea5846a62fb935cf1a18ed1d00e2f3f8bc527064736f6c63430008090033000000000000000000000000fa980ced6895ac314e7de34ef1bfae90a5add21b