92 txs
92 calls
constructor
constructor(address treasury_, address signer_)
functions
calculateAdditionalReward
viewfunction calculateAdditionalReward(uint256 usdAmount_, uint256 tokenAmount_) view returns (uint256)
codeBalanceOf
viewfunction codeBalanceOf(address token_, string referralCode_) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getAdditionalRewardInfo
viewfunction getAdditionalRewardInfo() view returns (tuple[])
getCell
viewfunction getCell(uint256 index_) view returns (tuple)
getCellsCount
viewfunction getCellsCount() view returns (uint256)
getCurrentCell
viewfunction getCurrentCell() view returns (uint256)
getGlobalStatus
viewfunction getGlobalStatus() view returns (uint8)
getMaxAmountIn
viewfunction getMaxAmountIn() view returns (uint256)
getMinAmountIn
viewfunction getMinAmountIn() view returns (uint256)
getPrice
viewfunction getPrice(uint8 type_) view returns (uint256)
getRates
viewfunction getRates() view returns (uint256, uint256)
getRefCode
viewfunction getRefCode(address user_, string referralCode_) view returns (string)
getRefCodeRates
viewfunction getRefCodeRates(string referralCode_) view returns (uint256, uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTotalRaised
viewfunction getTotalRaised() view returns (uint256)
getTreasury
viewfunction getTreasury() view returns (address)
getValidatedLimit
viewfunction getValidatedLimit() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isValidated
viewfunction isValidated(address user_) view returns (bool)
limitOf
viewfunction limitOf(address user_) view returns (uint256)
maxLimitOf
viewfunction maxLimitOf(address user_) view returns (uint256)
NODE_OPERATOR_ROLE
viewfunction NODE_OPERATOR_ROLE() view returns (bytes32)
NODE_RUNNER_ROLE
viewfunction NODE_RUNNER_ROLE() view returns (bytes32)
RECEIVER_ROLE
viewfunction RECEIVER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
trustRefData
viewfunction trustRefData() view returns (bool)
userFundsByCell
viewfunction userFundsByCell(uint256 cell_, address user_) view returns (uint256)
addNewCell
nonpayablefunction addNewCell(uint256 sPrice_, uint256 lPrice_, uint256 supply_)
addValidated
nonpayablefunction addValidated(address user_, bool value_)
addValidatedBatch
nonpayablefunction addValidatedBatch(address[] users_, bool[] values_)
claimRefCode
nonpayablefunction claimRefCode(address[] tokens_, string referralCode_, uint256 deadline_, uint8 v, bytes32 r, bytes32 s)
closeCell
nonpayablefunction closeCell(uint256 index_)
disableRefData
nonpayablefunction disableRefData(string referralCode_)
enableRefData
nonpayablefunction enableRefData(string referralCode_)
globalClose
nonpayablefunction globalClose()
globalOpen
nonpayablefunction globalOpen()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
openCell
nonpayablefunction openCell(uint256 index_)
recoverERC20
nonpayablefunction recoverERC20(address token_, uint256 amount_)
recoverETH
nonpayablefunction recoverETH()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAdditionalInfo
nonpayablefunction setAdditionalInfo(uint256[] percents_, uint256[] limits_)
setCellState
nonpayablefunction setCellState(address user_, address token_, uint256 amount_, uint256 sold_, string referralCode_, uint256 fReward_, uint256 sReward_)
setMaxAmountIn
nonpayablefunction setMaxAmountIn(uint256 amount_)
setMinAmountIn
nonpayablefunction setMinAmountIn(uint256 amount_)
setSigner
nonpayablefunction setSigner(address signer_)
setTreasury
nonpayablefunction setTreasury(address treasury_)
setTrustRefData
nonpayablefunction setTrustRefData(bool value)
setupRefCodeRate
nonpayablefunction setupRefCodeRate(uint256 refCodeRate1_, uint256 refCodeRate2_)
setupRefData
nonpayablefunction setupRefData(string[] referralCode_, uint256[] firstRefCodeRate_, uint256[] secondRefCodeRate_)
setValidatedLimit
nonpayablefunction setValidatedLimit(uint256 amount_)
updateCellPrice
nonpayablefunction updateCellPrice(uint256 index_, uint256 sPrice_, uint256 lPrice_)
updateCellSupply
nonpayablefunction updateCellSupply(uint256 index_, uint256 supply_)
events
CellAdded
event CellAdded(uint256 sPrice, uint256 lPrice, uint256 supply)
CellClosed
event CellClosed(uint256 indexed cell)
CellOpened
event CellOpened(uint256 indexed cell)
CellPriceUpdated
event CellPriceUpdated(uint256 indexed cell, uint256 sPrice, uint256 lPrice)
CellStateUpdated
event CellStateUpdated(uint8 cellState)
CellSupplyUpdated
event CellSupplyUpdated(uint256 indexed cell, uint256 supply)
CoinRefRecovered
event CoinRefRecovered(uint256 amount)
EIP712DomainChanged
event EIP712DomainChanged()
Erc20RefRecovered
event Erc20RefRecovered(address token, uint256 amount)
MaxAmountInUpdated
event MaxAmountInUpdated(uint256 amount)
MinAmountInUpdated
event MinAmountInUpdated(uint256 amount)
RefCodeRateSetup
event RefCodeRateSetup(uint256 firstRefCodeRate, uint256 secondRefCodeRate)
RefCodeRewardsClaimed
event RefCodeRewardsClaimed(string code, address indexed token, uint256 amount)
RefDataDisabled
event RefDataDisabled(string code)
RefDataEnabled
event RefDataEnabled(string code)
RefDataSetup
event RefDataSetup(string code, uint256 firstRefCodeRate, uint256 secondRefCodeRate)
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)
SignerSet
event SignerSet(address signer)
TreasuryUpdated
event TreasuryUpdated(address indexed treasury)
VerifiedLimitUpdated
event VerifiedLimitUpdated(uint256 limit)
VerifiedUserUpdated
event VerifiedUserUpdated(address indexed user, bool value)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CellClosedError
error CellClosedError()
CellStartedError
error CellStartedError()
CellSupplyError
error CellSupplyError()
CellUndefinedError
error CellUndefinedError()
ClosedError
error ClosedError()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EthCallError
error EthCallError()
FailedInnerCall
error FailedInnerCall()
FirstRefCodeFundsError
error FirstRefCodeFundsError()
HashAlreadyUsedError
error HashAlreadyUsedError()
InvalidAdditionalRewardArraysValue
error InvalidAdditionalRewardArraysValue()
InvalidArrayLengthError
error InvalidArrayLengthError()
InvalidShortString
error InvalidShortString()
InvalidSignerError
error InvalidSignerError()
MaxAmountInError
error MaxAmountInError()
MinAmountInError
error MinAmountInError()
OpenedError
error OpenedError()
ParamsInvalidError
error ParamsInvalidError()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RefCodeDisabledError
error RefCodeDisabledError()
RefCodeEnabledError
error RefCodeEnabledError()
RefCodeUndefinedError
error RefCodeUndefinedError()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SecondRefCodeFundsError
error SecondRefCodeFundsError()
SignerNotSetError
error SignerNotSetError()
StringTooLong
error StringTooLong(string str)
TokenUndefinedError
error TokenUndefinedError()
TransactionExpiredError
error TransactionExpiredError()
TransferNativeError
error TransferNativeError()
ValidatedLimitError
error ValidatedLimitError()
ZeroAddressError
error ZeroAddressError()
creation bytecode
0x61016080604052346101cf57604081613b1f803803809161002082856101d4565b8339810103126101cf5761003f60206100388361020d565b920161020d565b9060405161004e6040826101d4565b600481526020810190634e6f646560e01b8252604051916100706040846101d4565b600183526020830191603160f81b835261008981610465565b6101205261009684610627565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526100ff60c0826101d4565b5190206080523060c05260016003556001600160a01b031680156101be5760018060a01b0319600454161760045560018060a01b031660018060a01b0319600d541617600d5561014e33610221565b506101583361029d565b5061016233610335565b5061016c336103cd565b506040516132b990816107c682396080518161303b015260a051816130f8015260c0518161300c015260e0518161308a015261010051816130b001526101205181611440015261014051816114690152f35b633efa09af60e01b60005260046000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176101f757604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036101cf57565b6001600160a01b0381166000908152600080516020613abf833981519152602052604090205460ff16610297576001600160a01b03166000818152600080516020613abf83398151915260205260408120805460ff19166001179055339190600080516020613a7f8339815191528180a4600190565b50600090565b6001600160a01b0381166000908152600080516020613aff833981519152602052604090205460ff16610297576001600160a01b03166000818152600080516020613aff83398151915260205260408120805460ff191660011790553391907fa8c345a04d2a8ac0607aad39bfdb2ca6e358d1265f2dd655687a0837b5d74b0890600080516020613a7f8339815191529080a4600190565b6001600160a01b0381166000908152600080516020613adf833981519152602052604090205460ff16610297576001600160a01b03166000818152600080516020613adf83398151915260205260408120805460ff191660011790553391907fdfaad62f62823f50fce46f27f9c599a9a9fb5c9c366f7fadb546639fc78b161290600080516020613a7f8339815191529080a4600190565b6001600160a01b0381166000908152600080516020613a9f833981519152602052604090205460ff16610297576001600160a01b03166000818152600080516020613a9f83398151915260205260408120805460ff191660011790553391907f7a97506be97703960d71e3a118f1850a50b01da6957110e8293eacb08d8c606090600080516020613a7f8339815191529080a4600190565b908151602081106000146104fd575090601f8151116104a1576020815191015160208210610491571790565b6000198260200360031b1b161790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106104e55750508160006044809484010152601f80199101168101030190fd5b602082820181015160448784010152859350016104c3565b6001600160401b0381116101f757600054600181811c9116801561061d575b602082101461060757601f81116105d2575b50602092601f821160011461056e5792819293600092610563575b50508160011b916000199060031b1c19161760005560ff90565b015190503880610549565b601f1982169360008052806000209160005b8681106105ba57508360019596106105a1575b505050811b0160005560ff90565b015160001960f88460031b161c19169055388080610593565b91926020600181928685015181550194019201610580565b60008052601f6020600020910160051c810190601f830160051c015b8181106105fb575061052e565b600081556001016105ee565b634e487b7160e01b600052602260045260246000fd5b90607f169061051c565b908151602081106000146106af575090601f815111610653576020815191015160208210610491571790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106106975750508160006044809484010152601f80199101168101030190fd5b60208282018101516044878401015285935001610675565b6001600160401b0381116101f757600154600181811c911680156107bb575b602082101461060757601f8111610785575b50602092601f82116001146107205792819293600092610715575b50508160011b916000199060031b1c19161760015560ff90565b0151905038806106fb565b601f198216936001600052806000209160005b86811061076d5750836001959610610754575b505050811b0160015560ff90565b015160001960f88460031b161c19169055388080610746565b91926020600181928685015181550194019201610733565b6001600052601f6020600020910160051c810190601f830160051c015b8181106107af57506106e0565b600081556001016107a2565b90607f16906106ce56fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816301ffc9a71461242257508063026163f6146122205780630614117a146121c757806307dafd5c146120ef5780630b91eaf9146120b057806313a0c9e014611edd57806319298d3914611ea257806319d5aab914611e695780631dfc240114611e23578063206848f614611d47578063248a9ca314611d1a57806325368d8614611cd25780632a3ff37514611c435780632f2ff15d14611c0357806336568abe14611bbd57806337f1e7f214611b955780633b19e84a14611b6e57806342f78a6d14611a9e5780634db0d75514611a7b57806353d73648146119de578063546a2ca414611975578063587ae5fa14611957578063592cd013146119395780635cd7bf24146118fe5780635f0e46f31461185e57806365887e821461177a5780636c19e783146117055780636fc40499146116e7578063736befb6146116595780637ed42a271461152457806384b0196e146114275780638980f11f146113a95780638d2ce4bc14610f3a5780638db9477a14610ef257806391d1485414610ea45780639accab5514610e7f5780639b163a0814610dcf5780639e17403b14610d945780639f55029314610d76578063a217fddf14610d5a578063a5a52e3a14610cf6578063ac76453c14610ca2578063b5e141a714610c84578063bafc933514610c66578063bc0a26101461085b578063bd2954a7146107d2578063c9741d1e146106d6578063c9ae9d241461064c578063d47672dc14610569578063d547741f14610524578063dcfc2006146104f9578063de9f951b146103ec578063e2f6be5f146103cb578063f07baaaf14610399578063f0f44260146103125763f218521914610292573861000f565b3461030d57602036600319011261030d576004356102ae612c24565b80600854111580610301575b156102f0576020817f9ef47e273740d61ae0824364f5046d696aac027cba9e2765d1684c1c9830f4d292600955604051908152a1005b6339c6b68d60e11b60005260046000fd5b506007548111156102ba565b600080fd5b3461030d57602036600319011261030d576001600160a01b036103336124f8565b61033b612c96565b168015610388578073ffffffffffffffffffffffffffffffffffffffff1960045416176004557f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1600080a2005b633efa09af60e01b60005260046000fd5b3461030d576103c76103b36103ad36612552565b91612a69565b6040519182916020835260208301906125f2565b0390f35b3461030d5760206103e46103de3661259f565b90612956565b604051908152f35b3461030d576103fa3661259f565b610402612c24565b60ff600d5460a01c1660038110156104c1576002146104e85760ff6104268361280c565b505416156104d75760ff6104398361280c565b505460081c1660038110156104c1576002146104b05780600361045b8461280c565b5001541161049f576020817f6bd64a96009e868513c7f315548c6ac051fc4b1f02a3754da3b0a5f49dee2e1d9260046104938661280c565b500155604051908152a2005b63189408b960e21b60005260046000fd5b63ed56c96560e01b60005260046000fd5b634e487b7160e01b600052602160045260246000fd5b639a16162160e01b60005260046000fd5b6357e8e0ab60e11b60005260046000fd5b3461030d57600036600319011261030d57602060ff600d5460a01c166105226040518092612592565bf35b3461030d57604036600319011261030d5761001b60043561054361250e565b9061056461055f82600052600260205260016040600020015490565b612d5b565b612e35565b3461030d57600036600319011261030d57600c546105868161268d565b90610594604051928361266b565b808252602082019081600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76000915b83831061061f5784866040519182916020830190602084525180915260408301919060005b8181106105fa575050500390f35b82518051855260209081015181860152869550604090940193909201916001016105ec565b6002602060019260405161063281612617565b8554815284860154838201528152019201920191906105c7565b3461030d57602036600319011261030d57600435610668612c24565b6a52b7d2dcc80cd2e400000081116106c55760085481106106b4576020817f8e4ff4a45e5c01f688a5bfcf10166594fdd9308e48eb067950d847804778128b92600755604051908152a1005b6309fb6de960e41b60005260046000fd5b63aad7848960e01b60005260046000fd5b3461030d57602036600319011261030d576004356106f2612ce9565b60ff600d5460a01c1660038110156104c1576001036104e85760ff6107168261280c565b505416156104d75760ff6107298261280c565b505460081c1660038110156104c1576107c15760065460ff61074a8261280c565b505460081c1660038110156104c1576001146107a4575b5061076b8161280c565b5061010061ff0019825416179055806006557fa1ccd375b0599f67de8b8a9cdfd6e62cf2be7b8b90ddba4522c0b36dbe2f8a1c600080a2005b6107ad9061280c565b50805461ff00191661020017905581610761565b63ebe637c960e01b60005260046000fd5b3461030d57604036600319011261030d576107eb6124f8565b602435908115159081830361030d577f7a6aa13e3afa31569d0eea96395a3d832f39577b211200e8f6bc853e583b91d7916108526001600160a01b03602093610832612ce9565b169485600052600e845260406000209060ff801983541691151516179055565b604051908152a2005b3461030d5760e036600319011261030d576108746124f8565b61087c61250e565b9060643560843567ffffffffffffffff811161030d576108a0903690600401612524565b3360009081527f3575343ab8f8061a44208d1de3601c430157fe6f404108e3e21c5062eb740b6e6020526040902054919390929160ff1615610c2d576001600160a01b03169081600052600f60205261090060443560406000205461290f565b82600052600f60205260406000205561091b8160055461290f565b600555600654600361094261093c84836109348661280c565b50015461290f565b9261280c565b50015581600052601060205261096d604060002091600654928360005260205260406000205461290f565b908260005260106020526040600020906000526020526040600020556109943683856126c1565b9360209460006040516109a7888261266b565b5280518681159283610bff575b505050156109be57005b60ff6040518486823786818681016013815203019020541615610b7e575b6001600160a01b036040518486823786818681016012815203019020911660005284526040600020610a1160a435825461290f565b9055604051828482378481848101601281520301902073e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e560005284526040600020610a5360c435825461290f565b90556000526011835260406000209167ffffffffffffffff8211610b6857610a7b835461291c565b601f8111610b22575b50600093601f8311600114610ac1575092819293600092610ab6575b50508160011b916000199060031b1c1916179055005b013590508380610aa0565b90601f198316948481528281209281905b878210610b0a575050836001959610610af0575b505050811b019055005b0135600019600384901b60f8161c19169055838080610ae6565b80600184968294958701358155019501920190610ad2565b8360005284600020601f840160051c810191868510610b5e575b601f0160051c01905b818110610b525750610a84565b60008155600101610b45565b9091508190610b3c565b634e487b7160e01b600052604160045260246000fd5b6040518385823785818581016013815203019020600160ff19825416179055604051838582378581858101601381520301902061010061ff00198254161790557fa0f8998154c33966496592b2708f595b3cc4307add73b1ee7557653019f7dce1600a54600b5490610bf7604051928392888a856127e8565b0390a16109dc565b01207fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4701490508686816109b4565b63e2517d3f60e01b600052336004527f7a97506be97703960d71e3a118f1850a50b01da6957110e8293eacb08d8c606060245260446000fd5b3461030d57600036600319011261030d576020600754604051908152f35b3461030d57600036600319011261030d576020600854604051908152f35b3461030d57602036600319011261030d576001600160a01b03610cc36124f8565b16600052600f602052604060002054600754808210600014610ceb576020916103e4916126f8565b5050602060006103e4565b3461030d57602036600319011261030d57600435610d12612c24565b662386f26fc1000081106106b45760075481116106c5576020817f45345304f4b6c226c5d392b9b76fd3e92729b560e57efeee384888e8e02da13092600855604051908152a1005b3461030d57600036600319011261030d57602060405160008152f35b3461030d57600036600319011261030d576020600554604051908152f35b3461030d57600036600319011261030d5760206040517f7a97506be97703960d71e3a118f1850a50b01da6957110e8293eacb08d8c60608152f35b3461030d57610ddd366125b5565b610de5612c24565b60ff600d5460a01c1660038110156104c1576001036104e85760ff610e098461280c565b505416156104d75760ff610e1c8461280c565b505460081c1660038110156104c1576107c157816040917f4fac33752d00cdece9427ab8da7b07b85b516da72126047ceb42eb63339c2215936001610e608761280c565b500155806002610e6f8761280c565b50015582519182526020820152a2005b3461030d57600036600319011261030d576040600a54600b5482519182526020820152f35b3461030d57604036600319011261030d57610ebd61250e565b60043560005260026020526001600160a01b0360406000209116600052602052602060ff604060002054166040519015158152f35b3461030d57604036600319011261030d576001600160a01b03610f1361250e565b16600052601060205260406000206004356000526020526020604060002054604051908152f35b3461030d5760c036600319011261030d5760043567ffffffffffffffff811161030d573660238201121561030d578060040135610f768161268d565b91610f84604051938461266b565b81835260208301906024829360051b8201019036821161030d57602401915b8183106113895750505060243567ffffffffffffffff811161030d573660238201121561030d57610fde9036906024816004013591016126c1565b91604435916064359060ff8216820361030d576002600354146113785760026003556001600160a01b03600d541690811561136757428511156113565760405184516020820192839160005b8181106113375750505060426001600160a01b0393836110596110f2956110e99503601f19810183528261266b565b51902089519860208b01998a20906040519160208301937fc51b291246e05a3e5052c314d025466c200ecc3d586a02bdf49975c0613578f485526040840152606083015233608083015260a082015260a081526110b760c08261266b565b5190206110c2613002565b906040519161190160f01b835260028301526022820152209460a43590608435908761311e565b909291926131b3565b16036113265780600052601460205260ff604060002054166113155760005260146020526040600020600160ff198254161790558051156113045760ff60405160208186516111428183896125cf565b810160138152030190205416156112f35760ff60405160208186516111688183896125cf565b810160138152030190205460081c16156112e25760005b81518110156112db5760006001600160a01b0360208360051b85010151169060405160208188516111b181838b6125cf565b810160128152030190206001600160a01b038316825260205260408120549081156112d05760405160208189516111e981838c6125cf565b810160128152030190206001600160a01b038416825260205280604081205573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8314600014611299578080808085335af1611236612734565b501561128a5750907f969cc52af1a659ca623a332dab531d867d44efa0bdb76118cba36b022a2fbcc6600193925b60405180916040825261127a604083018b6125f2565b9060208301520390a25b0161117f565b632d7e629960e11b8152600490fd5b50907f969cc52af1a659ca623a332dab531d867d44efa0bdb76118cba36b022a2fbcc6826112cb600195943385612ec4565b611264565b505050600190611284565b6001600355005b6326910f5b60e21b60005260046000fd5b630c6cf17d60e21b60005260046000fd5b6319705d1760e01b60005260046000fd5b6385ee5abf60e01b60005260046000fd5b6335e0fb4b60e01b60005260046000fd5b82516001600160a01b031684526020938401939092019160010161102a565b6306a3cdf760e21b60005260046000fd5b6337c9c1a960e21b60005260046000fd5b633ee5aeb560e01b60005260046000fd5b82356001600160a01b038116810361030d57815260209283019201610fa3565b3461030d57604036600319011261030d577f5e4d15fd8f0c756ffe924a8f3de96974df217fe34e194beb7786b68fcffd5a6d6113e36124f8565b602435906113ef612c96565b61140382336001600160a01b038416612ec4565b604080516001600160a01b039092168252602082019290925290819081015b0390a1005b3461030d57600036600319011261030d576114c66114647f0000000000000000000000000000000000000000000000000000000000000000612f6e565b61148d7f0000000000000000000000000000000000000000000000000000000000000000612fcb565b60206114d4604051926114a0838561266b565b600084526000368137604051958695600f60f81b875260e08588015260e08701906125f2565b9085820360408701526125f2565b466060850152306080850152600060a085015283810360c085015281808451928381520193019160005b82811061150d57505050500390f35b8351855286955093810193928101926001016114fe565b3461030d57611532366125b5565b909161153c612c24565b60ff600d5460a01c1660038110156104c1576002146104e857604051916115628361264f565b600183526020830193600085526040840193838552606081019582875260808201906000825260a083019085825260155468010000000000000000811015610b68578060016115b4920160155561280c565b949094611643576115d490511515859060ff801983541691151516179055565b519160038310156104c1577fdeb1b7f77c6d6fdd89e4cd7c9336ca0e4bb67dbe0cf1f83faee96f8beb188f499860609860049461ff0087549160081b169061ff0019161786555160018601555160028501555160038401555191015560405192835260208301526040820152a1005b634e487b7160e01b600052600060045260246000fd5b3461030d57602036600319011261030d57600435611675612ce9565b60ff6116808261280c565b505416156104d75760ff6116938261280c565b505460081c1660038110156104c1576001036104b0576116b28161280c565b50805461ff0019166102001790557fb4898caa35904a4dbc90e7710a3d78bb4fe3e78797854cb6125acbeebc0ea08a600080a2005b3461030d57600036600319011261030d576020600654604051908152f35b3461030d57602036600319011261030d577f9eaa897564d022fb8c5efaf0acdb5d9d27b440b2aad44400b6e1c702e65b9ed360206001600160a01b036117496124f8565b611751612c96565b168073ffffffffffffffffffffffffffffffffffffffff19600d541617600d55604051908152a1005b3461030d57602036600319011261030d5760043567ffffffffffffffff811161030d576117ab903690600401612524565b906117b4612c24565b60ff6040518383823760208185810160138152030190205416156112f35760ff6040518383823760208185810160138152030190205460081c1661184d577fdf182a562f1fd35e56b2f09995b1f1fd5db5c075cbba26739ec0ae006b30330a9160405181838237602081838101601381520301902061010061ff00198254161790556114226040519283926020845260208401916127c7565b630dda188160e31b60005260046000fd5b3461030d57600036600319011261030d57611877612c96565b60ff600d5460a01c1660038110156104c1576118ed577401000000000000000000000000000000000000000060ff60a01b19600d541617600d557f9019b8b1735d72467185cfd541f4612cfce2cb5e389ff560474ee5853f750eac602060ff600d5460a01c166118ea6040518092612592565ba1005b637a9c747360e01b60005260046000fd5b3461030d57600036600319011261030d5760206040517fa8c345a04d2a8ac0607aad39bfdb2ca6e358d1265f2dd655687a0837b5d74b088152f35b3461030d57600036600319011261030d576020601554604051908152f35b3461030d57600036600319011261030d576020600954604051908152f35b3461030d57602036600319011261030d576001600160a01b036119966124f8565b1680600052600f6020526040600020549060095490600052600e60205260ff604060002054166119d5575b80821015610ceb576020916103e4916126f8565b506007546119c1565b3461030d576119ec3661259f565b6119f4612c24565b60ff600d5460a01c1660038110156104c1576002146104e8576103e88211611a6a576103e88111611a5957816040917f071413e757004fddf4393cefcf5c246f9aecf64242c47c2d862902a8d6e3566893600a5580600b5582519182526020820152a1005b6394f8e92160e01b60005260046000fd5b63b257279b60e01b60005260046000fd5b3461030d57600036600319011261030d57602060ff601654166040519015158152f35b3461030d57602036600319011261030d5760043567ffffffffffffffff811161030d57611acf903690600401612524565b90611ad8612c24565b60ff6040518383823760208185810160138152030190205416156112f35760ff6040518383823760208185810160138152030190205460081c16156112e2577f8f8b5cf8d82b1dfbd4f47c14d8cecb36be98a3f3232566d02c83e64671bd09d59160405181838237602081838101601381520301902061ff001981541690556114226040519283926020845260208401916127c7565b3461030d57600036600319011261030d5760206001600160a01b0360045416604051908152f35b3461030d57602036600319011261030d57600435600281101561030d576103e46020916128ba565b3461030d57604036600319011261030d57611bd661250e565b336001600160a01b03821603611bf25761001b90600435612e35565b63334bd91960e11b60005260046000fd5b3461030d57604036600319011261030d5761001b600435611c2261250e565b90611c3e61055f82600052600260205260016040600020015490565b612da2565b3461030d57600036600319011261030d57611c5c612c96565b60ff600d5460a01c1660038110156104c1576001036104e8577402000000000000000000000000000000000000000060ff60a01b19600d541617600d557f9019b8b1735d72467185cfd541f4612cfce2cb5e389ff560474ee5853f750eac602060ff600d5460a01c166118ea6040518092612592565b3461030d57602036600319011261030d5760043567ffffffffffffffff811161030d57611d0e611d086040923690600401612524565b9061282b565b82519182526020820152f35b3461030d57602036600319011261030d5760206103e4600435600052600260205260016040600020015490565b3461030d57602036600319011261030d57600060a0604051611d688161264f565b8281528260208201528260408201528260608201528260808201520152611d9060043561280c565b50604051611d9d8161264f565b60ff82548181161515835260081c1691602082019060038410156104c15760c093825260018101546040840190815260028201549060608501918252611e0960046003850154946080880195865201549460a08701958652604051965115158752516020870190612592565b5160408501525160608401525160808301525160a0820152f35b3461030d5760206001600160a01b03611e3b36612552565b9193908260405193849283378101601281520301902091166000526020526020604060002054604051908152f35b3461030d57602036600319011261030d5760043580151580910361030d57611e8f612c24565b60ff801960165416911617601655600080f35b3461030d57600036600319011261030d5760206040517fdfaad62f62823f50fce46f27f9c599a9a9fb5c9c366f7fadb546639fc78b16128152f35b3461030d57606036600319011261030d5760043567ffffffffffffffff811161030d57611f0e903690600401612475565b9060243567ffffffffffffffff811161030d57611f2f903690600401612475565b60449291923567ffffffffffffffff811161030d57611f52903690600401612475565b611f5d949194612ce9565b60ff600d5460a01c1660038110156104c1576002146104e857828614806120a7575b156120965760005b868110611f9057005b807fa0f8998154c33966496592b2708f595b3cc4307add73b1ee7557653019f7dce1858561208d8a61207f86898f828f81612078936120709260019f6002611fe98f928f611fe28f9583908e93612705565b3594612705565b3560405192611ff784612633565b600184526020840160018152604085019182526060850192835261204c60206120218a8a8a612785565b91908260405193849283378101601381520301902095511515869060ff801983541691151516179055565b51845461ff00191690151560081b61ff001617845551600184015551910155612785565b999098612705565b3593612705565b3590604051948594856127e8565b0390a101611f87565b6301bee01f60e61b60005260046000fd5b50808614611f7f565b3461030d57602036600319011261030d576001600160a01b036120d16124f8565b16600052600e602052602060ff604060002054166040519015158152f35b3461030d576120fd366124a6565b612108939293612ce9565b8084036120965760005b84811061211b57005b8061216e61213461212f6001948688612705565b612764565b6001600160a01b0361214f61214a858b8b612705565b612771565b16600052600e60205260406000209060ff801983541691151516179055565b61217c61214a828888612705565b7f7a6aa13e3afa31569d0eea96395a3d832f39577b211200e8f6bc853e583b91d760206001600160a01b036121b561212f86898b612705565b9360405194151585521692a201612112565b3461030d57600036600319011261030d576121e0612c96565b7f60a398d8cf3374a66d0cc84463b77e81c6c2870a2eb0de0858677f10a54739f8602047600080808084335af150612216612734565b50604051908152a1005b3461030d5761222e366124a6565b90612237612c24565b81830361130457600c546000600c558061238e575b5060005b83811061225957005b806123165783156123005784351515806122f0575b156122df575b61227f818484612705565b359061228c818688612705565b356040519061229a82612617565b815260208101928352600c5468010000000000000000811015610b68578060016122c79201600c55612715565b91909161164357518155915160019283015501612250565b63cb07214160e01b60005260046000fd5b508215612300578135151561226e565b634e487b7160e01b600052603260045260246000fd5b60001981018181116123785761232d818688612705565b35612339838789612705565b35119081612358575b506122745763cb07214160e01b60005260046000fd5b61236491508484612705565b35612370828585612705565b351186612342565b634e487b7160e01b600052601160045260246000fd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361237857600c60005260011b7fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7017fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b818110612410575061224c565b60008082556001820155600201612403565b3461030d57602036600319011261030d576004359063ffffffff60e01b821680920361030d57602091637965db0b60e01b8114908115612464575b5015158152f35b6301ffc9a760e01b1490508361245d565b9181601f8401121561030d5782359167ffffffffffffffff831161030d576020808501948460051b01011161030d57565b604060031982011261030d5760043567ffffffffffffffff811161030d57816124d191600401612475565b929092916024359067ffffffffffffffff821161030d576124f491600401612475565b9091565b600435906001600160a01b038216820361030d57565b602435906001600160a01b038216820361030d57565b9181601f8401121561030d5782359167ffffffffffffffff831161030d576020838186019501011161030d57565b90604060031983011261030d576004356001600160a01b038116810361030d57916024359067ffffffffffffffff821161030d576124f491600401612524565b9060038210156104c15752565b604090600319011261030d576004359060243590565b606090600319011261030d57600435906024359060443590565b60005b8381106125e25750506000910152565b81810151838201526020016125d2565b9060209161260b815180928185528580860191016125cf565b601f01601f1916010190565b6040810190811067ffffffffffffffff821117610b6857604052565b6080810190811067ffffffffffffffff821117610b6857604052565b60c0810190811067ffffffffffffffff821117610b6857604052565b90601f8019910116810190811067ffffffffffffffff821117610b6857604052565b67ffffffffffffffff8111610b685760051b60200190565b67ffffffffffffffff8111610b6857601f01601f191660200190565b9291926126cd826126a5565b916126db604051938461266b565b82948184528183011161030d578281602093846000960137010152565b9190820391821161237857565b91908110156123005760051b0190565b600c5481101561230057600c60005260206000209060011b0190600090565b3d1561275f573d90612745826126a5565b91612753604051938461266b565b82523d6000602084013e565b606090565b35801515810361030d5790565b356001600160a01b038116810361030d5790565b91908110156123005760051b81013590601e198136030182121561030d57019081359167ffffffffffffffff831161030d57602001823603811361030d579190565b908060209392818452848401376000828201840152601f01601f1916010190565b9061280290604093969594966060845260608401916127c7565b9460208201520152565b6015548110156123005760156000526005602060002091020190600090565b906020606093928260405193849283378101601381520301902060405161285181612633565b81549060ff80831615159283835260081c161515602082015260026001840154938460408401520154948591015261289057509050600a5490600b5490565b600a54808211156128b25750915b600b54808211156128ad575090565b905090565b90509161289e565b6006549060ff6128c98361280c565b505460081c1660038110156104c1576001146128e6575050600090565b60028110156104c157612904576128fe60019161280c565b50015490565b6128fe60029161280c565b9190820180921161237857565b90600182811c9216801561294c575b602083101461293657565b634e487b7160e01b600052602260045260246000fd5b91607f169161292b565b90600c549182156129de579091600019916000905b8282106129b0575b50505060001981146129a95761298890612715565b50549081810291818304149015171561237857670de0b6b3a7640000900490565b5050600090565b9091939260016129bf84612715565b50015482106129d7575060018201909391929361296b565b9293612973565b505050600090565b600092918154916129f68361291c565b8083529260018116908115612a4c5750600114612a1257505050565b60009081526020812093945091925b838310612a32575060209250010190565b600181602092949394548385870101520191019190612a21565b915050602093945060ff929192191683830152151560051b010190565b60ff60165416612c18576001600160a01b0316806000526011602052604060002060405190816000825492612a9d8461291c565b9360018116908115612bfe5750600114612bc2575b5060209250601381520301902060405190612acc82612633565b8054916060600260ff80861615159586855260081c1615159384602085015260018101546040850152015491015281612bba575b50612b91575060405182828237602081848101601381520301902060405190612b2882612633565b80549160ff831615906060600260ff84159687855260081c1615159485602085015260018101546040850152015491015291612b89575b50612b7b575050604051612b7460208261266b565b6000815290565b612b869136916126c1565b90565b905038612b5f565b9150506000526011602052612bb3612b866040600020604051928380926129e6565b038261266b565b905038612b00565b9150506000528160206000206000905b838210612be6575050602091810138612ab2565b60209192508060019154848701520191018391612bd2565b60ff19168452506020938015150283019150389050612ab2565b50612b869136916126c1565b3360009081527f2ec39ff340b31b192717c47c6e90f27c8c9cda2d3d2bc0db58f5346c344fb998602052604090205460ff1615612c5d57565b63e2517d3f60e01b600052336004527fa8c345a04d2a8ac0607aad39bfdb2ca6e358d1265f2dd655687a0837b5d74b0860245260446000fd5b3360009081527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b602052604090205460ff1615612ccf57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f5e28dbd3d9fcfccf11d6551d18dd05b50803938d8e621d356d144f342d9d04e5602052604090205460ff1615612d2257565b63e2517d3f60e01b600052336004527fdfaad62f62823f50fce46f27f9c599a9a9fb5c9c366f7fadb546639fc78b161260245260446000fd5b80600052600260205260406000206001600160a01b03331660005260205260ff6040600020541615612d8a5750565b63e2517d3f60e01b6000523360045260245260446000fd5b80600052600260205260406000206001600160a01b03831660005260205260ff60406000205416156000146129a95780600052600260205260406000206001600160a01b0383166000526020526040600020600160ff198254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4600190565b80600052600260205260406000206001600160a01b03831660005260205260ff604060002054166000146129a95780600052600260205260406000206001600160a01b038316600052602052604060002060ff1981541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4600190565b60405163a9059cbb60e01b602082019081526001600160a01b03938416602483015260448083019590955293815292612f209260009283929190612f0960648861266b565b1694519082865af1612f19612734565b9083613225565b8051908115159182612f4a575b5050612f365750565b635274afe760e01b60005260045260246000fd5b819250906020918101031261030d576020015180159081150361030d573880612f2d565b60ff8114612fb85760ff811690601f8211612fa7576040805192612f92828561266b565b6020808552840191601f190136833783525290565b632cd44ac360e21b60005260046000fd5b50604051612b8681612bb38160006129e6565b60ff8114612fef5760ff811690601f8211612fa7576040805192612f92828561266b565b50604051612b8681612bb38160016129e6565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163014806130f5575b1561305d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526130ef60c08261266b565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613034565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116131a7579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa1561319b576000516001600160a01b0381161561318f5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b50505060009160039190565b91909160048110156104c157806131c957509050565b6000600182036131e45763f645eedf60e01b60005260046000fd5b5060028103613202578263fce698f760e01b60005260045260246000fd5b9091600360009214613212575050565b6335e2f38360e21b825260045260249150fd5b9061324b575080511561323a57805190602001fd5b630a12f52160e11b60005260046000fd5b8151158061327a575b61325c575090565b6001600160a01b0390639996b31560e01b6000521660045260246000fd5b50803b1561325456fea26469706673582212209c03c384c954877af78286bf31f636640c7b0f91e079a618870992ed8171f39864736f6c634300081a00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d3575343ab8f8061a44208d1de3601c430157fe6f404108e3e21c5062eb740b6eac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5e28dbd3d9fcfccf11d6551d18dd05b50803938d8e621d356d144f342d9d04e52ec39ff340b31b192717c47c6e90f27c8c9cda2d3d2bc0db58f5346c344fb998000000000000000000000000816f7a76832079ab71b8ab07d5c6acdd84d6116b0000000000000000000000002a3b1ef5b0175908f39f348321fd9a0c89a48ff0