0 txs
1.5k calls
constructor
constructor()
functions
_nextTokenId
viewfunction _nextTokenId() view returns (uint256)
addressToReferralCode
viewfunction addressToReferralCode(address) view returns (string)
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
availableNodesInCurrentTier
viewfunction availableNodesInCurrentTier() view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
balanceOfContract
viewfunction balanceOfContract() view returns (uint256)
crossDomainMessenger
viewfunction crossDomainMessenger() view returns (address)
currentTier
viewfunction currentTier() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
ethUsdPriceFeed
viewfunction ethUsdPriceFeed() view returns (address)
extraDiscountPercentageOnR0AR
viewfunction extraDiscountPercentageOnR0AR() view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getContractVersion
purefunction getContractVersion() pure returns (string)
getLatestEthPriceInUsd
viewfunction getLatestEthPriceInUsd() view returns (int256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getUsdPriceInEth
viewfunction getUsdPriceInEth() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isActiveReferral
viewfunction isActiveReferral(string) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isBlackListed
viewfunction isBlackListed(address) view returns (bool)
isContract
viewfunction isContract(address _addr) view returns (bool)
isKYC
viewfunction isKYC(address) view returns (bool)
isNodeHosted
viewfunction isNodeHosted(uint256) view returns (bool)
l2GasNeeded
viewfunction l2GasNeeded() view returns (uint32)
l2NodeSummary
viewfunction l2NodeSummary() view returns (address)
LOCK_PERIOD
viewfunction LOCK_PERIOD() view returns (uint256)
maxR0ARPriceAge
viewfunction maxR0ARPriceAge() view returns (uint256)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paymentReceiver
viewfunction paymentReceiver() view returns (address)
perUserCap
viewfunction perUserCap() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
r0arBalanceOfContract
viewfunction r0arBalanceOfContract() view returns (uint256)
r0arTokenAddress
viewfunction r0arTokenAddress() view returns (address)
r0arTokenPriceLastUpdatedAt
viewfunction r0arTokenPriceLastUpdatedAt() view returns (uint256)
r0arTokensInOneUSD
viewfunction r0arTokensInOneUSD() view returns (uint256)
referralCodeToAddress
viewfunction referralCodeToAddress(string) view returns (address)
referredCommissionPercentage
viewfunction referredCommissionPercentage() view returns (uint256)
referrerCommissionPercentage
viewfunction referrerCommissionPercentage() view returns (uint256)
supportedTokens
viewfunction supportedTokens(address) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tierInfo
viewfunction tierInfo(uint256) view returns (uint256 priceInUSD, uint256 supply, uint256 sold)
tokenBalanceOfContract
viewfunction tokenBalanceOfContract(address tokenAddress) view returns (uint256)
tokenMintTimestamp
viewfunction tokenMintTimestamp(uint256) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalAvailableNodes
viewfunction totalAvailableNodes() view returns (uint256 total)
totalTierCount
viewfunction totalTierCount() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
userHoldings
viewfunction userHoldings(address) view returns (uint256)
addTier
nonpayablefunction addTier(uint256 priceInUSD, uint256 supply)
approve
nonpayablefunction approve(address to, uint256 tokenId)
generateReferralCode
nonpayablefunction generateReferralCode(string referralCode)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _ethUsdPriceFeed, address _usdtContractAddress, address _usdcContractAddress, address _r0arTokenAddress, address _paymentReceiver, address _messenger, address _l2NodeSummary)
mint
payablefunction mint(uint256 _quantity, string referralCode) payable
mintWithR0AR
nonpayablefunction mintWithR0AR(uint256 _quantity, string referralCode)
mintWithUSDCOrUSDT
nonpayablefunction mintWithUSDCOrUSDT(address _token, uint256 _quantity, string referralCode)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string baseTokenURI)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
updateBlackListUser
nonpayablefunction updateBlackListUser(address userAddress, bool status)
updateExtraDiscountPercentageOnR0AR
nonpayablefunction updateExtraDiscountPercentageOnR0AR(uint256 newDiscountPercentageOnR0AR)
updateKYCStatus
nonpayablefunction updateKYCStatus(address userAddress, bool status)
updatel2GasNeeded
nonpayablefunction updatel2GasNeeded(uint32 _l2GasNeeded)
updatel2NodeSummary
nonpayablefunction updatel2NodeSummary(address newl2NodeSummary)
updateMaxR0ARPriceAge
nonpayablefunction updateMaxR0ARPriceAge(uint256 newPriceAge)
updateNodeHostedStatus
nonpayablefunction updateNodeHostedStatus(uint256 _id, bool _isNodeHosted)
updatePaymentReceiver
nonpayablefunction updatePaymentReceiver(address _paymentReceiver)
updateR0ARTokensInOneUSD
nonpayablefunction updateR0ARTokensInOneUSD(uint256 newR0ARTokensInOneUSD)
updateReferredCommissionPercentage
nonpayablefunction updateReferredCommissionPercentage(uint256 newReferredCommissionPercentage)
updateReferrerCommissionPercentage
nonpayablefunction updateReferrerCommissionPercentage(uint256 newReferrerCommissionPercentage)
updateUserReferralActiveness
nonpayablefunction updateUserReferralActiveness(string referralCode, bool isActive)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw()
withdrawR0ARTokens
nonpayablefunction withdrawR0ARTokens()
withdrawTokens
nonpayablefunction withdrawTokens(address _token)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BaseTokenURIUpdated
event BaseTokenURIUpdated(string newURI)
ETHWithdrawn
event ETHWithdrawn(address indexed paymentReceiver, uint256 amount)
ExtraDiscountPercentageOnR0ARUpdated
event ExtraDiscountPercentageOnR0ARUpdated(uint256 newDiscountPercentageOnR0AR)
Initialized
event Initialized(uint64 version)
L2NodeSummaryUpdated
event L2NodeSummaryUpdated(address indexed newl2NodeSummary)
NodeHostedStatusUpdated
event NodeHostedStatusUpdated(address indexed nodeHostedStatusUpdatedBy, uint256 id, bool status)
PaymentReceiverUpdated
event PaymentReceiverUpdated(address indexed newPaymentReceiver, address indexed oldPaymentReceiver)
R0ARPriceAgeUpdated
event R0ARPriceAgeUpdated(uint256 oldPriceAge, uint256 newPriceAge)
R0ARTokenPriceUpdated
event R0ARTokenPriceUpdated(uint256 oldPrice, uint256 newPrice, uint256 updatedAt)
ReferralCodeActivenessUpdated
event ReferralCodeActivenessUpdated(string referralCode, bool isActive)
ReferralCodeGenerated
event ReferralCodeGenerated(address indexed user, string referralCode)
ReferredCommissionPercentageUpdated
event ReferredCommissionPercentageUpdated(uint256 newReferredCommissionPercentage)
ReferrerCommissionPercentageUpdated
event ReferrerCommissionPercentageUpdated(uint256 newReferrerCommissionPercentage)
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)
TierAdded
event TierAdded(uint256 indexed tier, uint256 priceInUSD, uint256 supply)
TokensWithdrawn
event TokensWithdrawn(address indexed paymentReceiver, address token, uint256 amount)
TradeOrder
event TradeOrder(address indexed sender, uint256 quantity, string paymentMethod, string referralCode, uint256 referredCommission, uint256 referrerCommission, uint256 contractAmount, uint256 tier)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Upgraded
event Upgraded(address indexed implementation)
UserBlacklistedStatusUpdate
event UserBlacklistedStatusUpdate(address indexed user, bool status)
UserKYCStatusUpdate
event UserKYCStatusUpdate(address indexed user, bool status)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516156ed6100fd60003960008181613d2601528181613d4f0152613eb201526156ed6000f3fe6080604052600436106104895760003560e01c8063704033cd11610255578063b9f26a6c11610144578063de567cd6116100c1578063ea54ff0e11610085578063ea54ff0e14610e5a578063ec49101314610e7a578063f43b361314610e9a578063f72c0d8b14610eba578063f84d780214610eee578063fd2bd06a14610f0e57600080fd5b8063de567cd614610da7578063e1d814c014610dd7578063e47d606014610df7578063e6c7c45614610e27578063e985e9c514610e3a57600080fd5b8063cbed7cd011610108578063cbed7cd014610cf0578063cc26500514610d10578063d547741f14610d30578063d679677a14610d50578063d6f9237214610d6657600080fd5b8063b9f26a6c14610c37578063ba82383314610c57578063bb1accd714610c90578063c87b56dd14610cb0578063cb37f3b214610cd057600080fd5b80639e7de2b1116101d2578063a8e909c711610196578063a8e909c714610b91578063ad3cb1cc14610ba6578063b3b5fd4e14610bd7578063b868e7a114610bf7578063b88d4fde14610c1757600080fd5b80639e7de2b114610ada578063a217fddf14610af0578063a22cb46514610b05578063a267c2c414610b25578063a600a52714610b7c57600080fd5b80638a48ea96116102195780638a48ea9614610a315780638aa1043514610a4757806391d1485414610a7557806395d89b4114610a955780639944f51814610aaa57600080fd5b8063704033cd1461099957806370a08231146109af57806375b238fc146109cf57806377097fc8146109f157806384fc6de314610a0457600080fd5b80633ccfd60b1161037c57806352328b6f116102f95780635611e057116102bd5780635611e057146108e95780635dbb2c3c146108ff5780636352211e1461091457806368c4ac261461093457806369b101e3146109645780636d3aaf801461098457600080fd5b806352328b6f1461083957806352d1902d1461087457806353df9d761461088957806354185e81146108a957806355f804b3146108c957600080fd5b806349df728c1161034057806349df728c146107ba5780634a60f620146107da5780634ae3c983146107f05780634c112aff146108065780634f1ef2861461082657600080fd5b80633ccfd60b1461072f57806342842e0e1461074457806342f6fb29146107645780634504671514610784578063453507591461079a57600080fd5b80631d18f00b1161040a57806333f16c7d116103ce57806333f16c7d1461068d57806335876476146106a257806336568abe146106c257806336c053fe146106e25780633b9af5e91461070257600080fd5b80631d18f00b146105f757806323b872dd1461060d578063248a9ca31461062d5780632f2ff15d1461064d5780632fe716f31461066d57600080fd5b80630bdfe46c116104515780630bdfe46c146105635780630e0791b51461058357806316279055146105a35780631820cabb146105ca5780631c8c8f04146105e257600080fd5b806301ffc9a71461048e578063053f424d146104c357806306fdde03146104e7578063081812fc14610509578063095ea7b314610541575b600080fd5b34801561049a57600080fd5b506104ae6104a9366004614a62565b610f2e565b60405190151581526020015b60405180910390f35b3480156104cf57600080fd5b506104d960155481565b6040519081526020016104ba565b3480156104f357600080fd5b506104fc610f3f565b6040516104ba9190614acf565b34801561051557600080fd5b50610529610524366004614ae2565b610fe3565b6040516001600160a01b0390911681526020016104ba565b34801561054d57600080fd5b5061056161055c366004614b17565b610ff8565b005b34801561056f57600080fd5b5061056161057e366004614b41565b611007565b34801561058f57600080fd5b5061056161059e366004614b41565b61109f565b3480156105af57600080fd5b506104ae6105be366004614b41565b3b63ffffffff16151590565b3480156105d657600080fd5b506104d96301e1338081565b3480156105ee57600080fd5b506104d9611128565b34801561060357600080fd5b506104d960125481565b34801561061957600080fd5b50610561610628366004614b5c565b6111a0565b34801561063957600080fd5b506104d9610648366004614ae2565b611279565b34801561065957600080fd5b50610561610668366004614b99565b61129b565b34801561067957600080fd5b50610561610688366004614ae2565b6112b7565b34801561069957600080fd5b506104d961130c565b3480156106ae57600080fd5b506105616106bd366004614bc5565b61135f565b3480156106ce57600080fd5b506105616106dd366004614b99565b611660565b3480156106ee57600080fd5b506105616106fd366004614ae2565b611698565b34801561070e57600080fd5b506104d961071d366004614ae2565b60196020526000908152604090205481565b34801561073b57600080fd5b506105616116e5565b34801561075057600080fd5b5061056161075f366004614b5c565b61183f565b34801561077057600080fd5b50600054610529906001600160a01b031681565b34801561079057600080fd5b506104d960135481565b3480156107a657600080fd5b506105616107b5366004614c4b565b61185a565b3480156107c657600080fd5b506105616107d5366004614b41565b611948565b3480156107e657600080fd5b506104d960165481565b3480156107fc57600080fd5b506104d9600b5481565b34801561081257600080fd5b50610561610821366004614d19565b611b25565b610561610834366004614d60565b612083565b34801561084557600080fd5b506104ae610854366004614d98565b8051602081830181018051600e8252928201919093012091525460ff1681565b34801561088057600080fd5b506104d961209e565b34801561089557600080fd5b506105616108a4366004614ddd565b6120bb565b3480156108b557600080fd5b506105616108c4366004614e07565b612151565b3480156108d557600080fd5b506105616108e4366004614d98565b612655565b3480156108f557600080fd5b506104d9600a5481565b34801561090b57600080fd5b506104d96126a9565b34801561092057600080fd5b5061052961092f366004614ae2565b612722565b34801561094057600080fd5b506104ae61094f366004614b41565b60186020526000908152604090205460ff1681565b34801561097057600080fd5b50600254610529906001600160a01b031681565b34801561099057600080fd5b5061056161272d565b3480156109a557600080fd5b506104d960065481565b3480156109bb57600080fd5b506104d96109ca366004614b41565b6128d4565b3480156109db57600080fd5b506104d960008051602061569883398151915281565b6105616109ff366004614d19565b612930565b348015610a1057600080fd5b506104d9610a1f366004614b41565b60146020526000908152604090205481565b348015610a3d57600080fd5b506104d960095481565b348015610a5357600080fd5b50604080518082019091526005815264302e302e3160d81b60208201526104fc565b348015610a8157600080fd5b506104ae610a90366004614b99565b612d5d565b348015610aa157600080fd5b506104fc612d95565b348015610ab657600080fd5b506104ae610ac5366004614b41565b60106020526000908152604090205460ff1681565b348015610ae657600080fd5b506104d960115481565b348015610afc57600080fd5b506104d9600081565b348015610b1157600080fd5b50610561610b20366004614ddd565b612dd4565b348015610b3157600080fd5b50610b61610b40366004614ae2565b60046020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104ba565b348015610b8857600080fd5b506104d9612ddf565b348015610b9d57600080fd5b506104d9612e4e565b348015610bb257600080fd5b506104fc604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610be357600080fd5b50610561610bf2366004614ae2565b612e87565b348015610c0357600080fd5b506104fc610c12366004614b41565b612f35565b348015610c2357600080fd5b50610561610c32366004614e5e565b612fcf565b348015610c4357600080fd5b50610561610c52366004614ec6565b6130aa565b348015610c6357600080fd5b50600254610c7b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016104ba565b348015610c9c57600080fd5b506104d9610cab366004614b41565b6130e9565b348015610cbc57600080fd5b506104fc610ccb366004614ae2565b61318e565b348015610cdc57600080fd5b50600354610529906001600160a01b031681565b348015610cfc57600080fd5b50610561610d0b366004614eec565b613207565b348015610d1c57600080fd5b50600854610529906001600160a01b031681565b348015610d3c57600080fd5b50610561610d4b366004614b99565b6132d2565b348015610d5c57600080fd5b506104d960055481565b348015610d7257600080fd5b50610529610d81366004614d98565b8051602081830181018051600c825292820191909301209152546001600160a01b031681565b348015610db357600080fd5b506104ae610dc2366004614ae2565b60076020526000908152604090205460ff1681565b348015610de357600080fd5b50610561610df2366004614ae2565b6132ee565b348015610e0357600080fd5b506104ae610e12366004614b41565b600f6020526000908152604090205460ff1681565b348015610e3357600080fd5b50476104d9565b348015610e4657600080fd5b506104ae610e55366004614f0f565b61333b565b348015610e6657600080fd5b50610561610e75366004614ddd565b613388565b348015610e8657600080fd5b50610561610e95366004614ae2565b61341e565b348015610ea657600080fd5b50600154610529906001600160a01b031681565b348015610ec657600080fd5b506104d97f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610efa57600080fd5b50610561610f09366004614d98565b61346b565b348015610f1a57600080fd5b50610561610f29366004614f39565b61371d565b6000610f3982613824565b92915050565b6000805160206155a18339815191528054606091908190610f5f90614f7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8b90614f7e565b8015610fd85780601f10610fad57610100808354040283529160200191610fd8565b820191906000526020600020905b815481529060010190602001808311610fbb57829003601f168201915b505050505091505090565b6000610fee82613849565b50610f3982613881565b6110038282336138bb565b5050565b6000611012816138c8565b6001600160a01b0382166110415760405162461bcd60e51b815260040161103890614fb8565b60405180910390fd5b6003546040516001600160a01b03918216918416907f7624d2b1b42408d9c15d3542ca5b5c61cb0db48787ddee0405ca78daa31622d290600090a350600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206156988339815191526110b7816138c8565b6001600160a01b0382166110dd5760405162461bcd60e51b815260040161103890614fb8565b600280546001600160a01b0319166001600160a01b0384169081179091556040517f11db6bd7c5371d1a0ef3ca8b61b3a43a95baa6a585d25ff3e2100d38c1e5a1bc90600090a25050565b6000806111336126a9565b9050600081136111855760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964204554482070726963652066726f6d206f7261636c650000006044820152606401611038565b61119a816a52b7d2dcc80cd2e4000000614ffb565b91505090565b600081815260076020526040902054819060ff1615156001036111f65760405162461bcd60e51b815260206004820152600e60248201526d139bd919481a5cc81a1bdcdd195960921b6044820152606401611038565b600082815260196020526040902054611214906301e133809061501d565b42101561125e5760405162461bcd60e51b81526020600482015260186024820152774e4654206c6f636b656420666f72203132206d6f6e74687360401b6044820152606401611038565b6112698484846138d2565b6112738284613957565b50505050565b60009081526000805160206155e1833981519152602052604090206001015490565b6112a482611279565b6112ad816138c8565b6112738383613a18565b6000805160206156988339815191526112cf816138c8565b60118290556040518281527f9b1230ccd9cd68ebe973d3bd7cfbb7a9e00af4d5421dff745769b0c2453826f8906020015b60405180910390a15050565b6005546000905b600654811161135b576000818152600460205260409020600281015460019091015461133f9190615030565b611349908361501d565b915061135481615043565b9050611313565b5090565b6000611369613abd565b805490915060ff600160401b820416159067ffffffffffffffff166000811580156113915750825b905060008267ffffffffffffffff1660011480156113ae5750303b155b9050811580156113bc575080155b156113da5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561140457845460ff60401b1916600160401b1785555b61145f6040518060400160405280601781526020017f5230415220436861696e204e6f6465204c6963656e7365000000000000000000815250604051806040016040528060048152602001631490d39360e21b815250613ae6565b611467613af8565b61146f613af8565b611477613b02565b8b3b63ffffffff1661149b5760405162461bcd60e51b81526004016110389061505c565b863b63ffffffff166114bf5760405162461bcd60e51b81526004016110389061505c565b8a3b63ffffffff166114e35760405162461bcd60e51b81526004016110389061505c565b893b63ffffffff166115075760405162461bcd60e51b81526004016110389061505c565b883b63ffffffff1661152b5760405162461bcd60e51b81526004016110389061505c565b6001600160a01b0386166115515760405162461bcd60e51b815260040161103890614fb8565b6001600160a01b0388166115775760405162461bcd60e51b815260040161103890614fb8565b611582600033613a18565b50600080546001600160a01b03199081166001600160a01b038f81169190911783556001805483168b83161781556002805484168b84161790556003805484168d84161790558e8216845260186020526040808520805460ff1990811684179091558f84168652942080549094161790925560088054909116918b1691909117905561160c613b12565b831561165257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b03811633146116895760405163334bd91960e11b815260040160405180910390fd5b6116938282613b70565b505050565b6000805160206156988339815191526116b0816138c8565b60138290556040518281527f7aa0785400076349f1f4dd19ae9a334725c42c5593a38297fe9d32dc4a1f87db90602001611300565b6000805160206156988339815191526116fd816138c8565b611705613bec565b47806117485760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b6044820152606401611038565b6003546040518281526001600160a01b03909116907f94b2de810873337ed265c5f8cf98c9cffefa06b8607f9a2f1fbaebdfbcfbef1c9060200160405180910390a26003546040516000916001600160a01b03169083908381818185875af1925050503d80600081146117d7576040519150601f19603f3d011682016040523d82523d6000602084013e6117dc565b606091505b50509050806118235760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401611038565b505061183c600160008051602061567883398151915255565b50565b61169383838360405180602001604052806000815250612fcf565b600080516020615698833981519152611872816138c8565b600082116118b35760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420737570706c7960901b6044820152606401611038565b600680549060006118c383615043565b9091555050604080516060810182528481526020808201858152600083850181815260068054835260048552918690209451855591516001850155905160029093019290925590548251868152918201859052917f8a68dd5ddbfcc5467b08bb78844d64853315ada46e7fcfe61e44f1a011ccc0d291015b60405180910390a2505050565b600080516020615698833981519152611960816138c8565b611968613bec565b6001600160a01b03821660009081526018602052604090205460ff1615156001146119a55760405162461bcd60e51b81526004016110389061508c565b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156119ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1291906150b7565b905060008111611a5c5760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606401611038565b600354604080516001600160a01b03878116825260208201859052909216917f6337ed398c0e8467698c581374fdce4db14922df487b5a39483079f5f59b60a4910160405180910390a260035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b505050505050611003600160008051602061567883398151915255565b611b2d613bec565b81600003611b4d5760405162461bcd60e51b8152600401611038906150d0565b600b54600a54611b5d9042615030565b1115611ba05760405162461bcd60e51b8152602060048201526012602482015271148c1054881c1c9a58d948195e1c1a5c995960721b6044820152606401611038565b60155433600090815260146020526040902054611bbe90849061501d565b1115611bdc5760405162461bcd60e51b8152600401611038906150f7565b6006546005541115611c005760405162461bcd60e51b81526004016110389061511f565b600554600090815260046020526040902060028101546001820154611c259190615030565b831115611c445760405162461bcd60e51b815260040161103890615147565b336000908152600f602052604090205460ff1615611c745760405162461bcd60e51b81526004016110389061517e565b3360009081526010602052604090205460ff16611ca35760405162461bcd60e51b8152600401611038906151a8565b600954815460009190611cb690866151d7565b611cc091906151d7565b9050606460135482611cd291906151d7565b611cdc9190614ffb565b611ce69082615030565b60085484519192506001600160a01b03169060009015611d6d57600e85604051611d1091906151ee565b9081526040519081900360200190205460ff161515600114611d445760405162461bcd60e51b81526004016110389061520a565b606460115484611d5491906151d7565b611d5e9190614ffb565b9050611d6a8184615030565b92505b604051636eb1769f60e11b815233600482015230602482015283906001600160a01b0384169063dd62ed3e90604401602060405180830381865afa158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906150b7565b1015611e2b5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e6365000000006044820152606401611038565b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038316906323b872dd90606401600060405180830381600087803b158015611e7957600080fd5b505af1158015611e8d573d6000803e3d6000fd5b5050505060008551600014611f4d576000600c87604051611eae91906151ee565b908152604051908190036020019020546012546001600160a01b039091169150606490611edb90876151d7565b611ee59190614ffb565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390529193509085169063a9059cbb90604401600060405180830381600087803b158015611f3357600080fd5b505af1158015611f47573d6000803e3d6000fd5b50505050505b3360009081526014602052604081208054899290611f6c90849061501d565b90915550600090505b87811015611fb8576000601660008154611f8e90615043565b91829055509050611f9f3382613c38565b6000908152601960205260409020429055600101611f75565b50611fdc87601654611fca9190615030565b611fd590600161501d565b8833613c52565b86856002016000828254611ff0919061501d565b9091555050600185015460028601540361201a576005805490600061201483615043565b91905055505b337f98af960be92ee87612df61540e65ae151aca4aea0dd8d47217ee5c2ae0f493f18888858561204a818b615030565b60055460405161205f96959493929190615241565b60405180910390a25050505050611003600160008051602061567883398151915255565b61208b613d1b565b61209482613dc0565b6110038282613dea565b60006120a8613ea7565b506000805160206155c183398151915290565b6000805160206156988339815191526120d3816138c8565b6001600160a01b0383166120f95760405162461bcd60e51b815260040161103890614fb8565b6001600160a01b038316600081815260106020908152604091829020805460ff191686151590811790915591519182527f58ddee8483dccfd93c151ea27fe0e76dcd291cee24151f05e3b305df81c81cae910161193b565b612159613bec565b6001600160a01b03831660009081526018602052604090205460ff1615156001146121965760405162461bcd60e51b81526004016110389061508c565b816000036121b65760405162461bcd60e51b8152600401611038906150d0565b601554336000908152601460205260409020546121d490849061501d565b11156121f25760405162461bcd60e51b8152600401611038906150f7565b60065460055411156122165760405162461bcd60e51b81526004016110389061511f565b60055460009081526004602052604090206002810154600182015461223b9190615030565b83111561225a5760405162461bcd60e51b815260040161103890615147565b336000908152600f602052604090205460ff161561228a5760405162461bcd60e51b81526004016110389061517e565b3360009081526010602052604090205460ff166122b95760405162461bcd60e51b8152600401611038906151a8565b80546000906122c890856151d7565b6122d590620f42406151d7565b835190915085906000901561235157600e856040516122f491906151ee565b9081526040519081900360200190205460ff1615156001146123285760405162461bcd60e51b81526004016110389061520a565b60646011548461233891906151d7565b6123429190614ffb565b905061234e8184615030565b92505b604051636eb1769f60e11b815233600482015230602482015283906001600160a01b0384169063dd62ed3e90604401602060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c191906150b7565b101561240f5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e6365000000006044820152606401611038565b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038316906323b872dd90606401600060405180830381600087803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b5050505060008551600014612531576000600c8760405161249291906151ee565b908152604051908190036020019020546012546001600160a01b0390911691506064906124bf90876151d7565b6124c99190614ffb565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390529193509085169063a9059cbb90604401600060405180830381600087803b15801561251757600080fd5b505af115801561252b573d6000803e3d6000fd5b50505050505b336000908152601460205260408120805489929061255090849061501d565b90915550600090505b8781101561259c57600060166000815461257290615043565b918290555090506125833382613c38565b6000908152601960205260409020429055600101612559565b506125ae87601654611fca9190615030565b868560020160008282546125c2919061501d565b909155505060018501546002860154036125ec57600580549060006125e683615043565b91905055505b337f98af960be92ee87612df61540e65ae151aca4aea0dd8d47217ee5c2ae0f493f18888858561261c818b615030565b6005546040516126319695949392919061529d565b60405180910390a25050505050611693600160008051602061567883398151915255565b60008051602061569883398151915261266d816138c8565b60176126798382615320565b507fe6e4cd5c2dc7d2c20519b41832cd550fd3ea1186bf299d108179bf71fb8e00e5826040516113009190614acf565b6000805460408051633fabe5a360e21b8152905183926001600160a01b03169163feaf968c9160048083019260a09291908290030181865afa1580156126f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271791906153f9565b509195945050505050565b6000610f3982613849565b600080516020615698833981519152612745816138c8565b61274d613bec565b6008546040516370a0823160e01b81523060048201526001600160a01b0390911690819060009082906370a0823190602401602060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c091906150b7565b90506000811161280a5760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606401611038565b600354604080516001600160a01b03868116825260208201859052909216917f6337ed398c0e8467698c581374fdce4db14922df487b5a39483079f5f59b60a4910160405180910390a260035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401600060405180830381600087803b1580156128a257600080fd5b505af11580156128b6573d6000803e3d6000fd5b5050505050505061183c600160008051602061567883398151915255565b60006000805160206155a18339815191526001600160a01b03831661290f576040516322718ad960e21b815260006004820152602401611038565b6001600160a01b039092166000908152600390920160205250604090205490565b612938613bec565b816000036129585760405162461bcd60e51b8152600401611038906150d0565b6015543360009081526014602052604090205461297690849061501d565b11156129945760405162461bcd60e51b8152600401611038906150f7565b60065460055411156129b85760405162461bcd60e51b81526004016110389061511f565b6005546000908152600460205260409020600281015460018201546129dd9190615030565b8311156129fc5760405162461bcd60e51b815260040161103890615147565b336000908152600f602052604090205460ff1615612a2c5760405162461bcd60e51b81526004016110389061517e565b3360009081526010602052604090205460ff16612a5b5760405162461bcd60e51b8152600401611038906151a8565b6000612a65611128565b8254612a7191906151d7565b612a7b90856151d7565b905060008351600014612af557600e84604051612a9891906151ee565b9081526040519081900360200190205460ff161515600114612acc5760405162461bcd60e51b81526004016110389061520a565b606460115483612adc91906151d7565b612ae69190614ffb565b9050612af28183615030565b91505b81341015612b385760405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152606401611038565b600033612b458434615030565b604051600081818185875af1925050503d8060008114612b81576040519150601f19603f3d011682016040523d82523d6000602084013e612b86565b606091505b5050905080612bcd5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401611038565b60008551600014612c5d576000600c87604051612bea91906151ee565b908152604051908190036020019020546012546001600160a01b039091169150606490612c1790876151d7565b612c219190614ffb565b6040519092506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015612c5a573d6000803e3d6000fd5b50505b3360009081526014602052604081208054899290612c7c90849061501d565b90915550600090505b87811015612cc8576000601660008154612c9e90615043565b91829055509050612caf3382613c38565b6000908152601960205260409020429055600101612c85565b50612cda87601654611fca9190615030565b86856002016000828254612cee919061501d565b90915550506001850154600286015403612d185760058054906000612d1283615043565b91905055505b337f98af960be92ee87612df61540e65ae151aca4aea0dd8d47217ee5c2ae0f493f188888685612d48818b615030565b60055460405161205f9695949392919061544b565b60009182526000805160206155e1833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060916000805160206155a183398151915291610f5f90614f7e565b611003338383613ef0565b6008546040516370a0823160e01b81523060048201526000916001600160a01b03169081906370a0823190602401602060405180830381865afa158015612e2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a91906150b7565b60006006546005541115612e625750600090565b60055460009081526004602052604090206002810154600182015461119a9190615030565b600080516020615698833981519152612e9f816138c8565b81600003612ee55760405162461bcd60e51b81526020600482015260136024820152720546f6b656e207175616e74697479206973203606c1b6044820152606401611038565b42600a81905560095460408051918252602082018590528101919091527f3b1a9c76ff0da78543933c9e920fafb4859970e30cecc2f410dafde07dbec0f39060600160405180910390a150600955565b600d6020526000908152604090208054612f4e90614f7e565b80601f0160208091040260200160405190810160405280929190818152602001828054612f7a90614f7e565b8015612fc75780601f10612f9c57610100808354040283529160200191612fc7565b820191906000526020600020905b815481529060010190602001808311612faa57829003601f168201915b505050505081565b600082815260076020526040902054829060ff1615156001036130255760405162461bcd60e51b815260206004820152600e60248201526d139bd919481a5cc81a1bdcdd195960921b6044820152606401611038565b600083815260196020526040902054613043906301e133809061501d565b42101561308d5760405162461bcd60e51b81526020600482015260186024820152774e4654206c6f636b656420666f72203132206d6f6e74687360401b6044820152606401611038565b61309985858585613fa1565b6130a38385613957565b5050505050565b6000805160206156988339815191526130c2816138c8565b506002805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6001600160a01b03811660009081526018602052604081205460ff1615156001146131265760405162461bcd60e51b81526004016110389061508c565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561316a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3991906150b7565b606061319982613849565b5060006131a4613fb9565b905060006131b18461404b565b905060008251116131d157604051806020016040528060008152506131ff565b816131de8260ff166140eb565b6040516020016131ef929190615481565b6040516020818303038152906040525b949350505050565b60008051602061569883398151915261321f816138c8565b60008381526007602052604090205482151560ff90911615150361327e5760405162461bcd60e51b815260206004820152601660248201527514dd185d1d5cc8185b1c9958591e481d5c19185d195960521b6044820152606401611038565b600083815260076020908152604091829020805460ff191685151590811790915582518681529182015233917f8ae0e2e74fdf197dd6e94bb7da22d7b448205759783a348a235ea469b11cb675910161193b565b6132db82611279565b6132e4816138c8565b6112738383613b70565b60006132f9816138c8565b600b5460408051918252602082018490527fac9cfaa1e7f925ba225e32aa13e0e85689ad2f1ba8d42c2800473a1336dbd012910160405180910390a150600b55565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b6000805160206156988339815191526133a0816138c8565b6001600160a01b0383166133c65760405162461bcd60e51b815260040161103890614fb8565b6001600160a01b0383166000818152600f6020908152604091829020805460ff191686151590811790915591519182527f8f7c4738b5c49406f13677340f47da6778e0fbc9f2ed993f0c1ef04f995d9403910161193b565b600080516020615698833981519152613436816138c8565b60128290556040518281527f5a2082bb32bf8c37bd49096089eaa9317f9d354a1eaf9754929c13f3be23a38790602001611300565b600681511015801561347f5750600a815111155b6134c35760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420726566657272616c20636f646560581b6044820152606401611038565b6134cc8161417e565b6135185760405162461bcd60e51b815260206004820152601a60248201527f4e6f2073706163657320696e20726566657272616c20636f64650000000000006044820152606401611038565b60006001600160a01b0316600c8260405161353391906151ee565b908152604051908190036020019020546001600160a01b0316146135995760405162461bcd60e51b815260206004820152601b60248201527f526566657272616c20636f646520616c726561647920657869737400000000006044820152606401611038565b336000908152600d6020526040902080546135b390614f7e565b1590506135f95760405162461bcd60e51b8152602060048201526014602482015273526566657272616c20636f64652065786973747360601b6044820152606401611038565b336000908152600f602052604090205460ff16156136295760405162461bcd60e51b81526004016110389061517e565b3360009081526010602052604090205460ff166136585760405162461bcd60e51b8152600401611038906151a8565b33600c8260405161366991906151ee565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039490941693909317909255336000908152600d909152206136af8282615320565b506001600e826040516136c291906151ee565b908152604051908190036020018120805492151560ff199093169290921790915533907f86d606287c9d4f3a350b0e6ea78a04d97425fff091713f4a433942578dc6f16190613712908490614acf565b60405180910390a250565b600080516020615698833981519152613735816138c8565b60006001600160a01b0316600c8460405161375091906151ee565b908152604051908190036020019020546001600160a01b0316036137b65760405162461bcd60e51b815260206004820152601760248201527f526566657272616c20636f6465206e6f742065786973740000000000000000006044820152606401611038565b81600e846040516137c791906151ee565b908152604051908190036020018120805492151560ff19909316929092179091557f63bac90b9b3df6d7b737f7046d67a6731e531359f669a85f837fb9db826a9ddc9061381790859085906154d2565b60405180910390a1505050565b60006001600160e01b03198216637965db0b60e01b1480610f395750610f39826141d3565b60008061385583614223565b90506001600160a01b038116610f3957604051637e27328960e01b815260048101849052602401611038565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b611693838383600161425d565b61183c8133614373565b6001600160a01b0382166138fc57604051633250574960e11b815260006004820152602401611038565b60006139098383336143ac565b9050836001600160a01b0316816001600160a01b031614611273576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401611038565b60025460408051602481018590526001600160a01b038481166044808401919091528351808403909101815260649092018352602082018051634bba4a8360e11b6001600160e01b039091161790526001549251633dbb202b60e01b8152919392811692633dbb202b926139e1928216918691600160a01b90910463ffffffff16906004016154f6565b600060405180830381600087803b1580156139fb57600080fd5b505af1158015613a0f573d6000803e3d6000fd5b50505050505050565b60006000805160206155e1833981519152613a338484612d5d565b613ab3576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613a693390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610f39565b6000915050610f39565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610f39565b613aee6144b8565b61100382826144dd565b613b006144b8565b565b613b0a6144b8565b613b0061450e565b6002805463ffffffff60a01b1916610c3560a51b1790556040805160a0810190915260778082526156016020830139601790613b4e9082615320565b50611c20600b556000601155600a601281905560138190556015556001600555565b60006000805160206155e1833981519152613b8b8484612d5d565b15613ab3576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610f39565b600080516020615678833981519152805460011901613c1e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600160008051602061567883398151915255565b611003828260405180602001604052806000815250614516565b6002546040805160248101869052604481018590526001600160a01b038481166064808401919091528351808403909101815260849092018352602082018051635ca7645d60e01b6001600160e01b039091161790526001549251633dbb202b60e01b8152919392811692633dbb202b92613ce3928216918691600160a01b90910463ffffffff16906004016154f6565b600060405180830381600087803b158015613cfd57600080fd5b505af1158015613d11573d6000803e3d6000fd5b5050505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613da257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613d966000805160206155c1833981519152546001600160a01b031690565b6001600160a01b031614155b15613b005760405163703e46dd60e11b815260040160405180910390fd5b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3611003816138c8565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613e44575060408051601f3d908101601f19168201909252613e41918101906150b7565b60015b613e6c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611038565b6000805160206155c18339815191528114613e9d57604051632a87526960e21b815260048101829052602401611038565b611693838361452e565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613b005760405163703e46dd60e11b815260040160405180910390fd5b6000805160206155a18339815191526001600160a01b038316613f3157604051630b61174360e31b81526001600160a01b0384166004820152602401611038565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b613fac8484846111a0565b6112733385858585614584565b606060178054613fc890614f7e565b80601f0160208091040260200160405190810160405280929190818152602001828054613ff490614f7e565b80156140415780601f1061401657610100808354040283529160200191614041565b820191906000526020600020905b81548152906001019060200180831161402457829003601f168201915b5050505050905090565b60006001821015801561406157506201368c8211155b61409f5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401611038565b6105dc82116140b057506001919050565b61119482116140c157506002919050565b614c2c82116140d257506003919050565b61d4e482116140e357506004919050565b506005919050565b606060006140f8836146ae565b600101905060008167ffffffffffffffff81111561411857614118614c6d565b6040519080825280601f01601f191660200182016040528015614142576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461414c57509392505050565b600081815b81518110156141c95781818151811061419e5761419e615530565b01602001516001600160f81b031916600160fd1b036141c1575060009392505050565b600101614183565b5060019392505050565b60006001600160e01b031982166380ac58cd60e01b148061420457506001600160e01b03198216635b5e139f60e01b145b80610f3957506301ffc9a760e01b6001600160e01b0319831614610f39565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b6000805160206155a1833981519152818061428057506001600160a01b03831615155b1561434257600061429085613849565b90506001600160a01b038416158015906142bc5750836001600160a01b0316816001600160a01b031614155b80156142cf57506142cd818561333b565b155b156142f85760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401611038565b82156143405784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61437d8282612d5d565b6110035760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401611038565b60006000805160206155a1833981519152816143c785614223565b90506001600160a01b038416156143e3576143e3818587614786565b6001600160a01b038116156144235761440060008660008061425d565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615614454576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b6144c06147ea565b613b0057604051631afcd79f60e31b815260040160405180910390fd5b6144e56144b8565b6000805160206155a1833981519152806144ff8482615320565b50600181016112738382615320565b613c246144b8565b6145208383614804565b611693336000858585614584565b61453782614869565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561457c5761169382826148ce565b611003614944565b6001600160a01b0383163b156130a357604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906145c6908890889087908790600401615546565b6020604051808303816000875af1925050508015614601575060408051601f3d908101601f191682019092526145fe91810190615583565b60015b61466a573d80801561462f576040519150601f19603f3d011682016040523d82523d6000602084013e614634565b606091505b50805160000361466257604051633250574960e11b81526001600160a01b0385166004820152602401611038565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b146146a657604051633250574960e11b81526001600160a01b0385166004820152602401611038565b505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106146ed5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614719576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061473757662386f26fc10000830492506010015b6305f5e100831061474f576305f5e100830492506008015b612710831061476357612710830492506004015b60648310614775576064830492506002015b600a8310610f395760010192915050565b614791838383614963565b611693576001600160a01b0383166147bf57604051637e27328960e01b815260048101829052602401611038565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401611038565b60006147f4613abd565b54600160401b900460ff16919050565b6001600160a01b03821661482e57604051633250574960e11b815260006004820152602401611038565b600061483c838360006143ac565b90506001600160a01b03811615611693576040516339e3563760e11b815260006004820152602401611038565b806001600160a01b03163b60000361489f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611038565b6000805160206155c183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516148eb91906151ee565b600060405180830381855af49150503d8060008114614926576040519150601f19603f3d011682016040523d82523d6000602084013e61492b565b606091505b509150915061493b8583836149c8565b95945050505050565b3415613b005760405163b398979f60e01b815260040160405180910390fd5b60006001600160a01b038316158015906131ff5750826001600160a01b0316846001600160a01b0316148061499d575061499d848461333b565b806131ff5750826001600160a01b03166149b683613881565b6001600160a01b031614949350505050565b6060826149dd576149d882614a24565b6144b1565b81511580156149f457506001600160a01b0384163b155b15614a1d57604051639996b31560e01b81526001600160a01b0385166004820152602401611038565b50806144b1565b805115614a3357805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160e01b03198116811461183c57600080fd5b600060208284031215614a7457600080fd5b81356144b181614a4c565b60005b83811015614a9a578181015183820152602001614a82565b50506000910152565b60008151808452614abb816020860160208601614a7f565b601f01601f19169290920160200192915050565b6020815260006144b16020830184614aa3565b600060208284031215614af457600080fd5b5035919050565b80356001600160a01b0381168114614b1257600080fd5b919050565b60008060408385031215614b2a57600080fd5b614b3383614afb565b946020939093013593505050565b600060208284031215614b5357600080fd5b6144b182614afb565b600080600060608486031215614b7157600080fd5b614b7a84614afb565b9250614b8860208501614afb565b929592945050506040919091013590565b60008060408385031215614bac57600080fd5b82359150614bbc60208401614afb565b90509250929050565b600080600080600080600060e0888a031215614be057600080fd5b614be988614afb565b9650614bf760208901614afb565b9550614c0560408901614afb565b9450614c1360608901614afb565b9350614c2160808901614afb565b9250614c2f60a08901614afb565b9150614c3d60c08901614afb565b905092959891949750929550565b60008060408385031215614c5e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614c9457600080fd5b81356020830160008067ffffffffffffffff841115614cb557614cb5614c6d565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715614ce457614ce4614c6d565b604052838152905080828401871015614cfc57600080fd5b838360208301376000602085830101528094505050505092915050565b60008060408385031215614d2c57600080fd5b82359150602083013567ffffffffffffffff811115614d4a57600080fd5b614d5685828601614c83565b9150509250929050565b60008060408385031215614d7357600080fd5b614d7c83614afb565b9150602083013567ffffffffffffffff811115614d4a57600080fd5b600060208284031215614daa57600080fd5b813567ffffffffffffffff811115614dc157600080fd5b6131ff84828501614c83565b80358015158114614b1257600080fd5b60008060408385031215614df057600080fd5b614df983614afb565b9150614bbc60208401614dcd565b600080600060608486031215614e1c57600080fd5b614e2584614afb565b925060208401359150604084013567ffffffffffffffff811115614e4857600080fd5b614e5486828701614c83565b9150509250925092565b60008060008060808587031215614e7457600080fd5b614e7d85614afb565b9350614e8b60208601614afb565b925060408501359150606085013567ffffffffffffffff811115614eae57600080fd5b614eba87828801614c83565b91505092959194509250565b600060208284031215614ed857600080fd5b813563ffffffff811681146144b157600080fd5b60008060408385031215614eff57600080fd5b82359150614bbc60208401614dcd565b60008060408385031215614f2257600080fd5b614f2b83614afb565b9150614bbc60208401614afb565b60008060408385031215614f4c57600080fd5b823567ffffffffffffffff811115614f6357600080fd5b614f6f85828601614c83565b925050614bbc60208401614dcd565b600181811c90821680614f9257607f821691505b602082108103614fb257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601390820152724e6f7420612076616c6964206164647265737360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261501857634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610f3957610f39614fe5565b81810381811115610f3957610f39614fe5565b60006001820161505557615055614fe5565b5060010190565b6020808252601690820152754e6f74206120636f6e7472616374206164647265737360501b604082015260600190565b6020808252601190820152702ab739bab83837b93a32b2103a37b5b2b760791b604082015260600190565b6000602082840312156150c957600080fd5b5051919050565b6020808252600d908201526c05175616e74697479206973203609c1b604082015260600190565b6020808252600e908201526d131a5b5a5d08195e18d95959195960921b604082015260600190565b6020808252600e908201526d105b1b081d1a595c9cc81cdbdb1960921b604082015260600190565b6020808252601b908201527f4275792072656d61696e696e6720696e20746965722066697273740000000000604082015260600190565b60208082526010908201526f213630b1b5b634b9ba32b2102ab9b2b960811b604082015260600190565b602080825260159082015274155cd95c881ade58c81a5cc81b9bdd081d985b1a59605a1b604082015260600190565b8082028115828204841417610f3957610f39614fe5565b60008251615200818460208701614a7f565b9190910192915050565b6020808252601b908201527f526566657272616c20436f6465206973206e6f74206163746976650000000000604082015260600190565b86815260e06020820152600460e082015263291820a960e11b61010082015261012060408201526000615278610120830188614aa3565b90508560608301528460808301528360a08301528260c0830152979650505050505050565b86815260e06020820152600960e0820152681554d110cbd554d11560ba1b61010082015261012060408201526000615278610120830188614aa3565b601f82111561169357806000526020600020601f840160051c810160208510156153005750805b601f840160051c820191505b818110156130a3576000815560010161530c565b815167ffffffffffffffff81111561533a5761533a614c6d565b61534e816153488454614f7e565b846152d9565b6020601f821160018114615382576000831561536a5750848201515b600019600385901b1c1916600184901b1784556130a3565b600084815260208120601f198516915b828110156153b25787850151825560209485019460019092019101615392565b50848210156153d05786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b805169ffffffffffffffffffff81168114614b1257600080fd5b600080600080600060a0868803121561541157600080fd5b61541a866153df565b6020870151604088015160608901519297509095509350915061543f608087016153df565b90509295509295909350565b86815260e06020820152600360e08201526208aa8960eb1b61010082015261012060408201526000615278610120830188614aa3565b60008351615493818460208801614a7f565b633a34b2b960e11b90830190815283516154b4816004840160208801614a7f565b64173539b7b760d91b60049290910191820152600901949350505050565b6040815260006154e56040830185614aa3565b905082151560208301529392505050565b6001600160a01b038416815260606020820181905260009061551a90830185614aa3565b905063ffffffff83166040830152949350505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061557990830184614aa3565b9695505050505050565b60006020828403121561559557600080fd5b81516144b181614a4c56fe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680068747470733a2f2f616d6172616e74682d656c61626f726174652d7072696d6174652d3233362e6d7970696e6174612e636c6f75642f697066732f62616679626569616c6432796b7a753377346e7035796f6a3374756f69346b7a776374717a37726c346470347770686a327535797033776f3475342f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a264697066735822122010a25052bab4bb1ca2a4be10c12610544f2fd5fed84dccc45ea29f060f9e2e7164736f6c634300081a0033