Overview
ETH Balance
0.0496475508 ETH
Eth Value
$133.47 (@ $2,688.28/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 137 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 12340514 | 1196 days ago | IN | 0 ETH | 0.00119347 | ||||
Withdraw | 12337382 | 1197 days ago | IN | 0 ETH | 0.00126894 | ||||
Withdraw | 12336903 | 1197 days ago | IN | 0 ETH | 0.00574283 | ||||
Withdraw | 12336892 | 1197 days ago | IN | 0 ETH | 0.00652952 | ||||
Withdraw | 12329761 | 1198 days ago | IN | 0 ETH | 0.00474607 | ||||
Withdraw | 12328658 | 1198 days ago | IN | 0 ETH | 0.00181157 | ||||
Withdraw | 12327370 | 1198 days ago | IN | 0 ETH | 0.0017328 | ||||
Withdraw | 12326507 | 1199 days ago | IN | 0 ETH | 0.00145868 | ||||
Withdraw | 12325407 | 1199 days ago | IN | 0 ETH | 0.00168432 | ||||
Withdraw | 12325279 | 1199 days ago | IN | 0 ETH | 0.00185095 | ||||
Withdraw | 12324258 | 1199 days ago | IN | 0 ETH | 0.00244168 | ||||
Withdraw | 12324055 | 1199 days ago | IN | 0 ETH | 0.00218803 | ||||
Withdraw | 12323670 | 1199 days ago | IN | 0 ETH | 0.00307179 | ||||
Withdraw | 12323563 | 1199 days ago | IN | 0 ETH | 0.00371201 | ||||
Withdraw | 12322839 | 1199 days ago | IN | 0 ETH | 0.00202227 | ||||
Withdraw | 12322781 | 1199 days ago | IN | 0 ETH | 0.00225433 | ||||
Withdraw | 12322777 | 1199 days ago | IN | 0 ETH | 0.00215488 | ||||
Withdraw | 12322543 | 1199 days ago | IN | 0 ETH | 0.00190608 | ||||
Withdraw | 12322209 | 1199 days ago | IN | 0 ETH | 0.00162444 | ||||
Withdraw | 12322209 | 1199 days ago | IN | 0 ETH | 0.00162444 | ||||
Withdraw | 12322066 | 1199 days ago | IN | 0 ETH | 0.00189819 | ||||
Withdraw | 12320751 | 1200 days ago | IN | 0 ETH | 0.00164616 | ||||
Withdraw | 12320718 | 1200 days ago | IN | 0 ETH | 0.00149184 | ||||
Withdraw | 12320642 | 1200 days ago | IN | 0 ETH | 0.00122662 | ||||
End Participatio... | 12320626 | 1200 days ago | IN | 0 ETH | 0.00131422 |
Latest 17 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12329761 | 1198 days ago | 3.1444 ETH | ||||
12328658 | 1198 days ago | 0.927 ETH | ||||
12327370 | 1198 days ago | 0.102 ETH | ||||
12325407 | 1199 days ago | 0.25268852 ETH | ||||
12325279 | 1199 days ago | 0.2496 ETH | ||||
12324258 | 1199 days ago | 1.02 ETH | ||||
12323670 | 1199 days ago | 0.1545 ETH | ||||
12323563 | 1199 days ago | 1.024 ETH | ||||
12322543 | 1199 days ago | 0.2652 ETH | ||||
12322066 | 1199 days ago | 1.06 ETH | ||||
12320751 | 1200 days ago | 1.01 ETH | ||||
12318894 | 1200 days ago | 0.9797 ETH | ||||
12316992 | 1200 days ago | 0.2652 ETH | ||||
12314763 | 1200 days ago | 0.2424 ETH | ||||
12304329 | 1202 days ago | 0.3524 ETH | ||||
12296320 | 1203 days ago | 0.48244939 ETH | ||||
11938541 | 1258 days ago | 0.48004939 ETH |
Loading...
Loading
Contract Name:
DAppCluster
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-03 */ // SPDX-License-Identifier: MIT /** * Program Name : DAppCluster * Website : https://dappcluster.com/ * Telegram : https://t.me/dappcluster * Concept : High Return On Investment Contract * Category : Passive Income * Risk Category : High Risk **/ pragma solidity >=0.6.0 <0.8.1; abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract DAppCluster is Ownable { using SafeMath for uint256; //Custom datatype to store investment details struct Investment { uint256 investmentAmount; uint256 interestEarned; uint256 investmentDate; uint256 referralBonus; uint256 expiryDate; bool isExpired; uint256 level1RefId; uint256 level2RefId; uint256 level3RefId; } uint256 public constant DEVELOPER_FEES = 4; uint256 public constant MARKETING_FEES = 4; uint256 public constant REFERRAL_LEVEL1_RATE = 8; uint256 public constant REFERRAL_LEVEL2_RATE = 4; uint256 public constant REFERRAL_LEVEL3_RATE = 2; uint256 public constant MINIMUM_INVESTMENT = 10000000000000000; uint256 public constant DAILY_INTEREST = 2; uint256 public constant HARD_LOCKPERIOD_DAYS = 50; uint256 public constant SOFT_LOCKPERIOD_DAYS = 11; uint256 private constant START_USERCODE = 1000; uint256 private latestUserCode; uint256 private totalInvestment; uint256 private totalWithdrawal; uint256 private totalInterestPaid; uint256 private totalReferralBonusPaid; address private developerAccount; address private marketingAccount; // mapping to store UserId of address mapping(address => uint256) private UID; // mapping to store investment details of UserId mapping(uint256 => Investment) private investment; // events to log action event onInvest(address investor, uint256 amount, uint256 referral_Level1, uint256 referral_Level2, uint256 referral_Level3); event onWithdraw(address investor, uint256 amount, uint256 interest, uint256 referralBonus, uint256 totalAmount); // constructor to initiate variables constructor() { latestUserCode = START_USERCODE; } // function to get UserID if address is already part of system and generate new UserId if address is new in system function getUserID(address _addr) internal returns(uint256 UserId){ uint256 uid = UID[_addr]; if (uid == 0){ latestUserCode = latestUserCode.add(1); UID[_addr] = latestUserCode; uid = latestUserCode; } return uid; } // function to change marketing account function setMarketingAccount(address payable _newMarketingAccount) public onlyOwner returns(bool) { require(_newMarketingAccount != address(0)); // marketing account able to withdraw bonus without locking as this money needs to pay for advertising & enhancement uint256 uid = getUserID(_newMarketingAccount); // make sure marketing account has not invested because locking doesn't get applied on it and eligible only to get bonus require(investment[uid].investmentAmount == 0); marketingAccount = _newMarketingAccount; return true; } // function to get marketing account function getMarketingAccount() public view returns (address) { return marketingAccount; } // function to change developer account function setDeveloperAccount(address payable _newDeveloperAccount) public onlyOwner returns(bool) { require(_newDeveloperAccount != address(0)); // developer account able to withdraw bonus without locking as this money needs to pay for advertising & enhancement uint256 uid = getUserID(_newDeveloperAccount); // make sure developer account has not invested because locking doesn't get applied on it and eligible only to get bonus require(investment[uid].investmentAmount == 0); developerAccount = _newDeveloperAccount; return true; } // function to get developer account function getDeveloperAccount() public view returns (address) { return developerAccount; } // function to get contract balance function getContractBalance() public view returns (uint256) { return address(this).balance; } // fallback function to handle accidently send investment fallback() payable external{ _invest(msg.sender, 0, msg.value); } // receive function to handle received coin receive() payable external{ _invest(msg.sender, 0, msg.value); } // invest function to handle investment using referral code function invest(uint256 _referrerCode) public payable{ _invest(msg.sender, _referrerCode, msg.value); } // _invest function to process received investment function _invest(address _addr, uint256 _referrerCode, uint256 _amount) internal returns(bool){ require(_amount >= MINIMUM_INVESTMENT, "Less than the minimum amount of deposit requirement"); // Restricting marketing & developer account from investment as locking doesn't get applied on it and they can only earn bonus require(_addr != marketingAccount && _addr != developerAccount, "Marketing & Developement Account Are Not Allowed To Invest"); uint256 uid = getUserID(_addr); // assign development fees & marketing fees as bonus investment[UID[developerAccount]].referralBonus = investment[UID[developerAccount]].referralBonus.add(_amount.mul(DEVELOPER_FEES).div(100)); investment[UID[marketingAccount]].referralBonus = investment[UID[marketingAccount]].referralBonus.add(_amount.mul(MARKETING_FEES).div(100)); // assign referral level if user invested via referral link if (_referrerCode != 0 && _referrerCode != uid && investment[uid].investmentAmount == 0){ investment[uid].level1RefId = _referrerCode; if (investment[_referrerCode].level1RefId !=0){ investment[uid].level2RefId = investment[_referrerCode].level1RefId; if (investment[_referrerCode].level2RefId != 0){ investment[uid].level3RefId = investment[_referrerCode].level2RefId; } else{ investment[uid].level3RefId = 0; } } else{ investment[uid].level2RefId = 0; investment[uid].level3RefId = 0; } } // assign level1 referral bonus only if still invested in system if (investment[uid].level1RefId != 0 && (investment[uid].level1RefId > START_USERCODE && investment[uid].level1RefId <= latestUserCode) && investment[investment[uid].level1RefId].isExpired != true){ investment[investment[uid].level1RefId].referralBonus = investment[investment[uid].level1RefId].referralBonus.add(_amount.mul(REFERRAL_LEVEL1_RATE).div(100)); // Assign Level2 Referral Bonus Only If Level1 & Level2 Still Invested In System if (investment[uid].level2RefId != 0 && (investment[uid].level2RefId > START_USERCODE && investment[uid].level2RefId <= latestUserCode) && investment[investment[uid].level2RefId].isExpired != true){ investment[investment[uid].level2RefId].referralBonus = investment[investment[uid].level2RefId].referralBonus.add(_amount.mul(REFERRAL_LEVEL2_RATE).div(100)); // Assign Level3 Referral Bonus Only If Level1, Level2 & Level3 Still Invested In System if (investment[uid].level3RefId != 0 && (investment[uid].level3RefId > START_USERCODE && investment[uid].level3RefId <= latestUserCode) && investment[investment[uid].level3RefId].isExpired != true){ investment[investment[uid].level3RefId].referralBonus = investment[investment[uid].level3RefId].referralBonus.add(_amount.mul(REFERRAL_LEVEL3_RATE).div(100)); } } } // if user is already part of system & investing additional fund then calculate interest for previous investment and update balance with new fund if (investment[uid].isExpired != true && investment[uid].investmentAmount != 0){ uint256 day = block.timestamp.sub(investment[uid].investmentDate).div(60).div(60).div(24); investment[uid].interestEarned = investment[uid].interestEarned.add(investment[uid].investmentAmount.mul(DAILY_INTEREST).div(100).mul(day)); } // if user is already part of system with endParticipation & investing additional fund then calculate interest for previous investment and update balance with new fund if (investment[uid].isExpired == true && investment[uid].investmentAmount != 0){ uint256 day = investment[uid].expiryDate.sub(investment[uid].investmentDate).div(60).div(60).div(24); investment[uid].interestEarned = investment[uid].interestEarned.add(investment[uid].investmentAmount.mul(DAILY_INTEREST).div(100).mul(day)); } investment[uid].investmentAmount = investment[uid].investmentAmount.add(_amount); // update investment date & activate participation investment[uid].investmentDate = block.timestamp; investment[uid].expiryDate = 0; investment[uid].isExpired = false; totalInvestment = totalInvestment.add(_amount); emit onInvest(_addr, _amount, investment[uid].level1RefId, investment[uid].level2RefId, investment[uid].level3RefId); return true; } // endParticipation function to apply for SOFT_LOCKPERIOD function endParticipation() public returns(bool){ address _addr = msg.sender; uint256 uid = UID[_addr]; uint256 day = block.timestamp.sub(investment[uid].investmentDate).div(60).div(60).div(24); // user must be part of system require(uid != 0); // check HARD_LOCKPERIOD if finished require(day > HARD_LOCKPERIOD_DAYS, "Hard locking period is not finished"); // enable SOFT_LOCKPERIOD and update time investment[uid].isExpired = true; investment[uid].expiryDate = block.timestamp; return true; } // withdraw function to get investmentAmount, interest, referralBonus after SOFT_LOCKPERIOD completion function withdraw() public returns(bool){ address _addr = msg.sender; uint256 uid = UID[_addr]; uint256 day = 0 ; // user must be part of system require(uid != 0); // locking is not applicable on marketing & developer account and they will be only eligible to withdraw bonus. // Investement using Developement & marketing accounts are restricted via _invest function if (_addr != developerAccount && _addr != marketingAccount){ // check SOFT_LOCKPERIOD is enabled require(investment[uid].isExpired == true, "End participation & wait for soft locking period before withdrawing"); require(investment[uid].expiryDate != 0, "End participation & wait for soft locking period before withdrawing"); day = block.timestamp.sub(investment[uid].expiryDate).div(60).div(60).div(24); // check SOFT_LOCKPERIOD is completed require(day > SOFT_LOCKPERIOD_DAYS,"Wait for soft locking period before withdrawing"); } uint256 amountToSend; // calculate days to pay interest day = investment[uid].expiryDate.sub(investment[uid].investmentDate).div(60).div(60).div(24); //calculate amount to pay uint256 interest = investment[uid].investmentAmount.mul(DAILY_INTEREST).div(100).mul(day); amountToSend = investment[uid].investmentAmount.add(investment[uid].interestEarned).add(investment[uid].referralBonus).add(interest); // set global variables to keep record of totalWithdrawal, totalInterestPaid & totalReferralBonusPaid totalWithdrawal = totalWithdrawal.add(investment[uid].investmentAmount); totalInterestPaid = totalInterestPaid.add(investment[uid].interestEarned).add(interest); totalReferralBonusPaid = totalReferralBonusPaid.add(investment[uid].referralBonus); // log event for withdrawal emit onWithdraw(_addr, investment[uid].investmentAmount, interest.add(investment[uid].interestEarned), investment[uid].referralBonus, amountToSend); // update user balance details investment[uid].investmentAmount = 0; investment[uid].interestEarned = 0; investment[uid].investmentDate = 0; investment[uid].referralBonus = 0; investment[uid].expiryDate = 0; investment[uid].isExpired = false; // transfer fund to user wallet payable(address(_addr)).transfer(amountToSend); return true; } // function to get user balance ddetails function getUserInformation(address _walletAddress) public view returns(uint256, uint256, uint256, uint256, uint256, uint256, bool){ require(msg.sender == _walletAddress || msg.sender == owner(),"User can only check own balance"); uint256 investmentAmount; uint256 interestEarned; uint256 referralBonus; uint256 investmentDate; uint256 expiryDate; bool isExpired; uint day; address _addr = _walletAddress; uint256 uid = UID[_addr]; investmentAmount = investment[uid].investmentAmount; // calculate days invested if (investment[uid].isExpired != true){ day = block.timestamp.sub(investment[uid].investmentDate).div(60).div(60).div(24); } if (investment[uid].isExpired == true){ day = investment[uid].expiryDate.sub(investment[uid].investmentDate).div(60).div(60).div(24); } // calculate interest earned interestEarned = investment[uid].interestEarned.add(investment[uid].investmentAmount.mul(DAILY_INTEREST).div(100).mul(day)); referralBonus = investment[uid].referralBonus; investmentDate = investment[uid].investmentDate; expiryDate = investment[uid].expiryDate; isExpired = investment[uid].isExpired; return (uid, investmentAmount, interestEarned, referralBonus, investmentDate, expiryDate, isExpired); } // function to get contract holding details function getContractInformation() public view returns(uint256, uint256, uint256, uint256, uint256, uint256){ uint256 contractBalance; contractBalance = address(this).balance; return (contractBalance, totalInvestment, totalWithdrawal, totalInterestPaid, totalReferralBonusPaid, latestUserCode - START_USERCODE); } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referral_Level1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referral_Level2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referral_Level3","type":"uint256"}],"name":"onInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interest","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referralBonus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"onWithdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DAILY_INTEREST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVELOPER_FEES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HARD_LOCKPERIOD_DAYS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_FEES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_INVESTMENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_LEVEL1_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_LEVEL2_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_LEVEL3_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOFT_LOCKPERIOD_DAYS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endParticipation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractInformation","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeveloperAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_walletAddress","type":"address"}],"name":"getUserInformation","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_referrerCode","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newDeveloperAccount","type":"address"}],"name":"setDeveloperAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newMarketingAccount","type":"address"}],"name":"setMarketingAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36103e86001556117ea8061006f6000396000f3fe6080604052600436106101395760003560e01c80638a4660fe116100ab578063d7a0cd721161006f578063d7a0cd7214610184578063ec000e27146101e5578063f2fde38b146102ed578063f3e7569f1461030d578063f6dfdad11461032d578063f872e6e0146103545761014d565b80638a4660fe1461027b5780638da5cb5b146102905780639862d5f0146102a5578063a9afafec146102d8578063c1bd4e22146101e55761014d565b806345ba868f116100fd57806345ba868f146101e557806350b2a881146101fa5780636f9fb98a1461021a578063715018a61461022f5780637e3ee80d14610244578063838fcc90146102665761014d565b8063070618ab14610159578063267edd2f1461018457806329ef8815146101995780632afcf480146101ae5780633ccfd60b146101c35761014d565b3661014d5761014a33600034610369565b50005b61014a33600034610369565b34801561016557600080fd5b5061016e610a46565b60405161017b91906116b5565b60405180910390f35b34801561019057600080fd5b5061016e610a4b565b3480156101a557600080fd5b5061016e610a50565b6101c16101bc3660046113f3565b610a55565b005b3480156101cf57600080fd5b506101d8610a64565b60405161017b919061144d565b3480156101f157600080fd5b5061016e610d57565b34801561020657600080fd5b506101d86102153660046113d7565b610d5c565b34801561022657600080fd5b5061016e610de7565b34801561023b57600080fd5b506101c1610deb565b34801561025057600080fd5b50610259610e5f565b60405161017b919061140b565b34801561027257600080fd5b50610259610e6e565b34801561028757600080fd5b5061016e610e7d565b34801561029c57600080fd5b50610259610e88565b3480156102b157600080fd5b506102c56102c03660046113d7565b610e97565b60405161017b97969594939291906116e6565b3480156102e457600080fd5b506101d86110d9565b3480156102f957600080fd5b506101c16103083660046113d7565b611177565b34801561031957600080fd5b506101d86103283660046113d7565b611222565b34801561033957600080fd5b506103426112ad565b60405161017b969594939291906116be565b34801561036057600080fd5b5061016e6112ec565b6000662386f26fc1000082101561039b5760405162461bcd60e51b815260040161039290611662565b60405180910390fd5b6007546001600160a01b038581169116148015906103c757506006546001600160a01b03858116911614155b6103e35760405162461bcd60e51b815260040161039290611605565b60006103ee856112f1565b905061043a6104096064610403866004611345565b9061137e565b6006546001600160a01b031660009081526008602090815260408083205483526009909152902060030154906113a0565b6006546001600160a01b0316600090815260086020908152604080832054835260099091529020600301556104a96104786064610403866004611345565b6007546001600160a01b031660009081526008602090815260408083205483526009909152902060030154906113a0565b6007546001600160a01b03166000908152600860209081526040808320548352600990915290206003015583158015906104e35750808414155b80156104fb5750600081815260096020526040902054155b156105a4576000818152600960205260408082206006908101879055868352912001541561058a576000848152600960205260408082206006810154848452918320600790810192909255918690520154156105725760008481526009602052604080822060070154838352912060080155610585565b6000818152600960205260408120600801555b6105a4565b600081815260096020526040812060078101829055600801555b600081815260096020526040902060060154158015906105f457506000818152600960205260409020600601546103e81080156105f4575060015460008281526009602052604090206006015411155b8015610620575060008181526009602052604080822060060154825290206005015460ff161515600114155b15610809576106596106386064610403866008611345565b600083815260096020526040808220600601548252902060030154906113a0565b600082815260096020526040808220600681015483529082206003019290925582905260070154158015906106be57506000818152600960205260409020600701546103e81080156106be575060015460008281526009602052604090206007015411155b80156106ea575060008181526009602052604080822060070154825290206005015460ff161515600114155b15610809576107236107026064610403866004611345565b600083815260096020526040808220600701548252902060030154906113a0565b6000828152600960205260408082206007810154835290822060030192909255829052600801541580159061078857506000818152600960205260409020600801546103e8108015610788575060015460008281526009602052604090206008015411155b80156107b4575060008181526009602052604080822060080154825290206005015460ff161515600114155b15610809576107ed6107cc6064610403866002611345565b600083815260096020526040808220600801548252902060030154906113a0565b6000828152600960205260408082206008015482529020600301555b60008181526009602052604090206005015460ff16151560011480159061083d575060008181526009602052604090205415155b156108dc57600061087c6018610403603c610403603c610403600960008a815260200190815260200160002060020154426113bc90919063ffffffff16565b6000838152600960205260409020549091506108c8906108b09083906108aa90606490610403906002611345565b90611345565b600084815260096020526040902060010154906113a0565b600083815260096020526040902060010155505b60008181526009602052604090206005015460ff161515600114801561090f575060008181526009602052604090205415155b1561098857600081815260096020526040812060028101546004909101546109469160189161040391603c918391839183916113bc565b600083815260096020526040902054909150610974906108b09083906108aa90606490610403906002611345565b600083815260096020526040902060010155505b6000818152600960205260409020546109a190846113a0565b60008281526009602052604081209182554260028084019190915560048301919091556005909101805460ff19169055546109dc90846113a0565b600255600081815260096020526040908190206006810154600782015460089092015492517fb65512704c919591df0cf0b58f8f242bde1980f2db668e47e5dad4eac952762e93610a33938a93899390929061141f565b60405180910390a1506001949350505050565b603281565b600281565b600b81565b610a60338234610369565b5050565b336000818152600860205260408120549091908281610a8257600080fd5b6006546001600160a01b03848116911614801590610aae57506007546001600160a01b03848116911614155b15610b715760008281526009602052604090206005015460ff161515600114610ae95760405162461bcd60e51b815260040161039290611518565b600082815260096020526040902060040154610b175760405162461bcd60e51b815260040161039290611518565b610b4f6018610403603c610403603c610403600960008a815260200190815260200160002060040154426113bc90919063ffffffff16565b9050600b8111610b715760405162461bcd60e51b815260040161039290611581565b60008281526009602052604081206002810154600490910154610ba39160189161040391603c918391839183916113bc565b60008481526009602052604081205491935090610bce9084906108aa90606490610403906002611345565b6000858152600960205260409020600381015460018201549154929350610c03928492610bfd929183916113a0565b906113a0565b600085815260096020526040902054600354919350610c2291906113a0565b600355600084815260096020526040902060010154600454610c49918391610bfd916113a0565b600455600084815260096020526040902060030154600554610c6a916113a0565b600555600084815260096020526040902080546001909101547fcec0d427a3bb225af399d516cf77e516ba972de93abdb14e98cebe7c6068bcd6918791610cb29085906113a0565b60008881526009602052604090819020600301549051610cd79493929190889061141f565b60405180910390a160008481526009602052604080822082815560018101839055600281018390556003810183905560048101839055600501805460ff19169055516001600160a01b0387169184156108fc02918591818181858888f19350505050158015610d4a573d6000803e3d6000fd5b5060019550505050505090565b600481565b600080546001600160a01b03163314610d875760405162461bcd60e51b8152600401610392906115d0565b6001600160a01b038216610d9a57600080fd5b6000610da5836112f1565b60008181526009602052604090205490915015610dc157600080fd5b5050600780546001600160a01b0383166001600160a01b03199091161790556001919050565b4790565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610392906115d0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006546001600160a01b031690565b6007546001600160a01b031690565b662386f26fc1000081565b6000546001600160a01b031690565b6000808080808080336001600160a01b0389161480610ece5750610eb9610e88565b6001600160a01b0316336001600160a01b0316145b610eea5760405162461bcd60e51b81526004016103929061149b565b6000806000806000806000808f9050600060086000836001600160a01b03166001600160a01b03168152602001908152602001600020549050600960008281526020019081526020016000206000015498506009600082815260200190815260200160002060050160009054906101000a900460ff1615156001151514610fa657610fa36018610403603c610403603c6104036009600089815260200190815260200160002060020154426113bc90919063ffffffff16565b92505b60008181526009602052604090206005015460ff16151560011415610ffa5760008181526009602052604090206002810154600490910154610ff79160189161040391603c918391839183916113bc565b92505b60008181526009602052604090205461103d906110259085906108aa90606490610403906002611345565b600083815260096020526040902060010154906113a0565b97506009600082815260200190815260200160002060030154965060096000828152602001908152602001600020600201549550600960008281526020019081526020016000206004015494506009600082815260200190815260200160002060050160009054906101000a900460ff169350808989898989899f509f509f509f509f509f509f50505050505050505050919395979092949650565b336000818152600860209081526040808320548084526009909252822060020154919291839061111a9060189061040390603c9082908290829042906113bc565b90508161112657600080fd5b603281116111465760405162461bcd60e51b815260040161039290611458565b50600090815260096020526040902060058101805460ff191660019081179091554260049092019190915591505090565b6000546001600160a01b031633146111a15760405162461bcd60e51b8152600401610392906115d0565b6001600160a01b0381166111c75760405162461bcd60e51b8152600401610392906114d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0316331461124d5760405162461bcd60e51b8152600401610392906115d0565b6001600160a01b03821661126057600080fd5b600061126b836112f1565b6000818152600960205260409020549091501561128757600080fd5b5050600680546001600160a01b0383166001600160a01b03199091161790556001919050565b6000806000806000806000479050806002546003546004546005546103e86001546112d8919061176f565b949c939b5091995097509550909350915050565b600881565b6001600160a01b0381166000908152600860205260408120548061133f576001805461131c916113a0565b60018190556001600160a01b038416600090815260086020526040902081905590505b92915050565b6000826113545750600061133f565b60006113608385611750565b90508261136d8583611730565b1461137757600080fd5b9392505050565b600080821161138c57600080fd5b60006113988385611730565b949350505050565b6000806113ad8385611718565b90508381101561137757600080fd5b6000828211156113cb57600080fd5b6000611398838561176f565b6000602082840312156113e8578081fd5b81356113778161179c565b600060208284031215611404578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b901515815260200190565b60208082526023908201527f48617264206c6f636b696e6720706572696f64206973206e6f742066696e69736040820152621a195960ea1b606082015260800190565b6020808252601f908201527f557365722063616e206f6e6c7920636865636b206f776e2062616c616e636500604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526043908201527f456e642070617274696369706174696f6e2026207761697420666f7220736f6660408201527f74206c6f636b696e6720706572696f64206265666f7265207769746864726177606082015262696e6760e81b608082015260a00190565b6020808252602f908201527f5761697420666f7220736f6674206c6f636b696e6720706572696f642062656660408201526e6f7265207769746864726177696e6760881b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603a908201527f4d61726b6574696e67202620446576656c6f70656d656e74204163636f756e7460408201527f20417265204e6f7420416c6c6f77656420546f20496e76657374000000000000606082015260800190565b60208082526033908201527f4c657373207468616e20746865206d696e696d756d20616d6f756e74206f662060408201527219195c1bdcda5d081c995c5d5a5c995b595b9d606a1b606082015260800190565b90815260200190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b6000821982111561172b5761172b611786565b500190565b60008261174b57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561176a5761176a611786565b500290565b60008282101561178157611781611786565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117b157600080fd5b5056fea2646970667358221220ee5b38fabe8ff0828ebe7826c740fa401211c1915e14d4b7be00562f258a82d664736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101395760003560e01c80638a4660fe116100ab578063d7a0cd721161006f578063d7a0cd7214610184578063ec000e27146101e5578063f2fde38b146102ed578063f3e7569f1461030d578063f6dfdad11461032d578063f872e6e0146103545761014d565b80638a4660fe1461027b5780638da5cb5b146102905780639862d5f0146102a5578063a9afafec146102d8578063c1bd4e22146101e55761014d565b806345ba868f116100fd57806345ba868f146101e557806350b2a881146101fa5780636f9fb98a1461021a578063715018a61461022f5780637e3ee80d14610244578063838fcc90146102665761014d565b8063070618ab14610159578063267edd2f1461018457806329ef8815146101995780632afcf480146101ae5780633ccfd60b146101c35761014d565b3661014d5761014a33600034610369565b50005b61014a33600034610369565b34801561016557600080fd5b5061016e610a46565b60405161017b91906116b5565b60405180910390f35b34801561019057600080fd5b5061016e610a4b565b3480156101a557600080fd5b5061016e610a50565b6101c16101bc3660046113f3565b610a55565b005b3480156101cf57600080fd5b506101d8610a64565b60405161017b919061144d565b3480156101f157600080fd5b5061016e610d57565b34801561020657600080fd5b506101d86102153660046113d7565b610d5c565b34801561022657600080fd5b5061016e610de7565b34801561023b57600080fd5b506101c1610deb565b34801561025057600080fd5b50610259610e5f565b60405161017b919061140b565b34801561027257600080fd5b50610259610e6e565b34801561028757600080fd5b5061016e610e7d565b34801561029c57600080fd5b50610259610e88565b3480156102b157600080fd5b506102c56102c03660046113d7565b610e97565b60405161017b97969594939291906116e6565b3480156102e457600080fd5b506101d86110d9565b3480156102f957600080fd5b506101c16103083660046113d7565b611177565b34801561031957600080fd5b506101d86103283660046113d7565b611222565b34801561033957600080fd5b506103426112ad565b60405161017b969594939291906116be565b34801561036057600080fd5b5061016e6112ec565b6000662386f26fc1000082101561039b5760405162461bcd60e51b815260040161039290611662565b60405180910390fd5b6007546001600160a01b038581169116148015906103c757506006546001600160a01b03858116911614155b6103e35760405162461bcd60e51b815260040161039290611605565b60006103ee856112f1565b905061043a6104096064610403866004611345565b9061137e565b6006546001600160a01b031660009081526008602090815260408083205483526009909152902060030154906113a0565b6006546001600160a01b0316600090815260086020908152604080832054835260099091529020600301556104a96104786064610403866004611345565b6007546001600160a01b031660009081526008602090815260408083205483526009909152902060030154906113a0565b6007546001600160a01b03166000908152600860209081526040808320548352600990915290206003015583158015906104e35750808414155b80156104fb5750600081815260096020526040902054155b156105a4576000818152600960205260408082206006908101879055868352912001541561058a576000848152600960205260408082206006810154848452918320600790810192909255918690520154156105725760008481526009602052604080822060070154838352912060080155610585565b6000818152600960205260408120600801555b6105a4565b600081815260096020526040812060078101829055600801555b600081815260096020526040902060060154158015906105f457506000818152600960205260409020600601546103e81080156105f4575060015460008281526009602052604090206006015411155b8015610620575060008181526009602052604080822060060154825290206005015460ff161515600114155b15610809576106596106386064610403866008611345565b600083815260096020526040808220600601548252902060030154906113a0565b600082815260096020526040808220600681015483529082206003019290925582905260070154158015906106be57506000818152600960205260409020600701546103e81080156106be575060015460008281526009602052604090206007015411155b80156106ea575060008181526009602052604080822060070154825290206005015460ff161515600114155b15610809576107236107026064610403866004611345565b600083815260096020526040808220600701548252902060030154906113a0565b6000828152600960205260408082206007810154835290822060030192909255829052600801541580159061078857506000818152600960205260409020600801546103e8108015610788575060015460008281526009602052604090206008015411155b80156107b4575060008181526009602052604080822060080154825290206005015460ff161515600114155b15610809576107ed6107cc6064610403866002611345565b600083815260096020526040808220600801548252902060030154906113a0565b6000828152600960205260408082206008015482529020600301555b60008181526009602052604090206005015460ff16151560011480159061083d575060008181526009602052604090205415155b156108dc57600061087c6018610403603c610403603c610403600960008a815260200190815260200160002060020154426113bc90919063ffffffff16565b6000838152600960205260409020549091506108c8906108b09083906108aa90606490610403906002611345565b90611345565b600084815260096020526040902060010154906113a0565b600083815260096020526040902060010155505b60008181526009602052604090206005015460ff161515600114801561090f575060008181526009602052604090205415155b1561098857600081815260096020526040812060028101546004909101546109469160189161040391603c918391839183916113bc565b600083815260096020526040902054909150610974906108b09083906108aa90606490610403906002611345565b600083815260096020526040902060010155505b6000818152600960205260409020546109a190846113a0565b60008281526009602052604081209182554260028084019190915560048301919091556005909101805460ff19169055546109dc90846113a0565b600255600081815260096020526040908190206006810154600782015460089092015492517fb65512704c919591df0cf0b58f8f242bde1980f2db668e47e5dad4eac952762e93610a33938a93899390929061141f565b60405180910390a1506001949350505050565b603281565b600281565b600b81565b610a60338234610369565b5050565b336000818152600860205260408120549091908281610a8257600080fd5b6006546001600160a01b03848116911614801590610aae57506007546001600160a01b03848116911614155b15610b715760008281526009602052604090206005015460ff161515600114610ae95760405162461bcd60e51b815260040161039290611518565b600082815260096020526040902060040154610b175760405162461bcd60e51b815260040161039290611518565b610b4f6018610403603c610403603c610403600960008a815260200190815260200160002060040154426113bc90919063ffffffff16565b9050600b8111610b715760405162461bcd60e51b815260040161039290611581565b60008281526009602052604081206002810154600490910154610ba39160189161040391603c918391839183916113bc565b60008481526009602052604081205491935090610bce9084906108aa90606490610403906002611345565b6000858152600960205260409020600381015460018201549154929350610c03928492610bfd929183916113a0565b906113a0565b600085815260096020526040902054600354919350610c2291906113a0565b600355600084815260096020526040902060010154600454610c49918391610bfd916113a0565b600455600084815260096020526040902060030154600554610c6a916113a0565b600555600084815260096020526040902080546001909101547fcec0d427a3bb225af399d516cf77e516ba972de93abdb14e98cebe7c6068bcd6918791610cb29085906113a0565b60008881526009602052604090819020600301549051610cd79493929190889061141f565b60405180910390a160008481526009602052604080822082815560018101839055600281018390556003810183905560048101839055600501805460ff19169055516001600160a01b0387169184156108fc02918591818181858888f19350505050158015610d4a573d6000803e3d6000fd5b5060019550505050505090565b600481565b600080546001600160a01b03163314610d875760405162461bcd60e51b8152600401610392906115d0565b6001600160a01b038216610d9a57600080fd5b6000610da5836112f1565b60008181526009602052604090205490915015610dc157600080fd5b5050600780546001600160a01b0383166001600160a01b03199091161790556001919050565b4790565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610392906115d0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6006546001600160a01b031690565b6007546001600160a01b031690565b662386f26fc1000081565b6000546001600160a01b031690565b6000808080808080336001600160a01b0389161480610ece5750610eb9610e88565b6001600160a01b0316336001600160a01b0316145b610eea5760405162461bcd60e51b81526004016103929061149b565b6000806000806000806000808f9050600060086000836001600160a01b03166001600160a01b03168152602001908152602001600020549050600960008281526020019081526020016000206000015498506009600082815260200190815260200160002060050160009054906101000a900460ff1615156001151514610fa657610fa36018610403603c610403603c6104036009600089815260200190815260200160002060020154426113bc90919063ffffffff16565b92505b60008181526009602052604090206005015460ff16151560011415610ffa5760008181526009602052604090206002810154600490910154610ff79160189161040391603c918391839183916113bc565b92505b60008181526009602052604090205461103d906110259085906108aa90606490610403906002611345565b600083815260096020526040902060010154906113a0565b97506009600082815260200190815260200160002060030154965060096000828152602001908152602001600020600201549550600960008281526020019081526020016000206004015494506009600082815260200190815260200160002060050160009054906101000a900460ff169350808989898989899f509f509f509f509f509f509f50505050505050505050919395979092949650565b336000818152600860209081526040808320548084526009909252822060020154919291839061111a9060189061040390603c9082908290829042906113bc565b90508161112657600080fd5b603281116111465760405162461bcd60e51b815260040161039290611458565b50600090815260096020526040902060058101805460ff191660019081179091554260049092019190915591505090565b6000546001600160a01b031633146111a15760405162461bcd60e51b8152600401610392906115d0565b6001600160a01b0381166111c75760405162461bcd60e51b8152600401610392906114d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0316331461124d5760405162461bcd60e51b8152600401610392906115d0565b6001600160a01b03821661126057600080fd5b600061126b836112f1565b6000818152600960205260409020549091501561128757600080fd5b5050600680546001600160a01b0383166001600160a01b03199091161790556001919050565b6000806000806000806000479050806002546003546004546005546103e86001546112d8919061176f565b949c939b5091995097509550909350915050565b600881565b6001600160a01b0381166000908152600860205260408120548061133f576001805461131c916113a0565b60018190556001600160a01b038416600090815260086020526040902081905590505b92915050565b6000826113545750600061133f565b60006113608385611750565b90508261136d8583611730565b1461137757600080fd5b9392505050565b600080821161138c57600080fd5b60006113988385611730565b949350505050565b6000806113ad8385611718565b90508381101561137757600080fd5b6000828211156113cb57600080fd5b6000611398838561176f565b6000602082840312156113e8578081fd5b81356113778161179c565b600060208284031215611404578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b901515815260200190565b60208082526023908201527f48617264206c6f636b696e6720706572696f64206973206e6f742066696e69736040820152621a195960ea1b606082015260800190565b6020808252601f908201527f557365722063616e206f6e6c7920636865636b206f776e2062616c616e636500604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526043908201527f456e642070617274696369706174696f6e2026207761697420666f7220736f6660408201527f74206c6f636b696e6720706572696f64206265666f7265207769746864726177606082015262696e6760e81b608082015260a00190565b6020808252602f908201527f5761697420666f7220736f6674206c6f636b696e6720706572696f642062656660408201526e6f7265207769746864726177696e6760881b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603a908201527f4d61726b6574696e67202620446576656c6f70656d656e74204163636f756e7460408201527f20417265204e6f7420416c6c6f77656420546f20496e76657374000000000000606082015260800190565b60208082526033908201527f4c657373207468616e20746865206d696e696d756d20616d6f756e74206f662060408201527219195c1bdcda5d081c995c5d5a5c995b595b9d606a1b606082015260800190565b90815260200190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b968752602087019590955260408601939093526060850191909152608084015260a0830152151560c082015260e00190565b6000821982111561172b5761172b611786565b500190565b60008261174b57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561176a5761176a611786565b500290565b60008282101561178157611781611786565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117b157600080fd5b5056fea2646970667358221220ee5b38fabe8ff0828ebe7826c740fa401211c1915e14d4b7be00562f258a82d664736f6c63430008000033
Deployed Bytecode Sourcemap
1241:15242:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:33;5744:10;5756:1;5759:9;5736:7;:33::i;:::-;;1241:15242;;5597:33;5605:10;5617:1;5620:9;5597:7;:33::i;2077:49::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2028:42;;;;;;;;;;;;;:::i;2133:49::-;;;;;;;;;;;;;:::i;5854:117::-;;;;;;:::i;:::-;;:::i;:::-;;11830:2653;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1696:42::-;;;;;;;;;;;;;:::i;3661:651::-;;;;;;;;;;-1:-1:-1;3661:651:0;;;;;:::i;:::-;;:::i;5377:107::-;;;;;;;;;;;;;:::i;832:148::-;;;;;;;;;;;;;:::i;5221:103::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4366:::-;;;;;;;;;;;;;:::i;1959:62::-;;;;;;;;;;;;;:::i;616:79::-;;;;;;;;;;;;;:::i;14541:1524::-;;;;;;;;;;-1:-1:-1;14541:1524:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;11072:638::-;;;;;;;;;;;;;:::i;988:244::-;;;;;;;;;;-1:-1:-1;988:244:0;;;;;:::i;:::-;;:::i;4526:641::-;;;;;;;;;;-1:-1:-1;4526:641:0;;;;;:::i;:::-;;:::i;16126:354::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;1794:48::-;;;;;;;;;;;;;:::i;6039:4958::-;6128:4;2004:17;6159:7;:29;;6151:93;;;;-1:-1:-1;;;6151:93:0;;;;;;;:::i;:::-;;;;;;;;;6418:16;;-1:-1:-1;;;;;6409:25:0;;;6418:16;;6409:25;;;;:54;;-1:-1:-1;6447:16:0;;-1:-1:-1;;;;;6438:25:0;;;6447:16;;6438:25;;6409:54;6401:125;;;;-1:-1:-1;;;6401:125:0;;;;;;;:::i;:::-;6544:11;6558:16;6568:5;6558:9;:16::i;:::-;6544:30;-1:-1:-1;6707:89:0;6759:36;6791:3;6759:27;:7;1737:1;6759:11;:27::i;:::-;:31;;:36::i;:::-;6722:16;;-1:-1:-1;;;;;6722:16:0;6707:33;6718:21;;;:3;:21;;;;;;;;;6707:33;;:10;:33;;;;;:47;;;;:51;:89::i;:::-;6672:16;;-1:-1:-1;;;;;6672:16:0;6657:33;6668:21;;;:3;:21;;;;;;;;;6657:33;;:10;:33;;;;;:47;;:139;6857:89;6909:36;6941:3;6909:27;:7;1786:1;6909:11;:27::i;:36::-;6872:16;;-1:-1:-1;;;;;6872:16:0;6857:33;6868:21;;;:3;:21;;;;;;;;;6857:33;;:10;:33;;;;;:47;;;;:51;:89::i;:::-;6822:16;;-1:-1:-1;;;;;6822:16:0;6807:33;6818:21;;;:3;:21;;;;;;;;;6807:33;;:10;:33;;;;;:47;;:139;7040:18;;;;;:42;;;7079:3;7062:13;:20;;7040:42;:83;;;;-1:-1:-1;7086:15:0;;;;:10;:15;;;;;:32;:37;7040:83;7036:771;;;7153:15;;;;:10;:15;;;;;;:27;;;;:43;;;7229:25;;;;;:37;;:41;7225:571;;7320:25;;;;:10;:25;;;;;;:37;;;;7290:15;;;;;;:27;;;;:67;;;;7398:25;;;;:37;;:42;7394:253;;7494:25;;;;:10;:25;;;;;;:37;;;7464:15;;;;;:27;;:67;7394:253;;;7626:1;7596:15;;;:10;:15;;;;;:27;;:31;7394:253;7225:571;;;7729:1;7699:15;;;:10;:15;;;;;:27;;;:31;;;7749:27;;:31;7225:571;7905:15;;;;:10;:15;;;;;:27;;;:32;;;;:131;;-1:-1:-1;7942:15:0;;;;:10;:15;;;;;:27;;;2231:4;-1:-1:-1;7942:93:0;;;;-1:-1:-1;8021:14:0;;7990:15;;;;:10;:15;;;;;:27;;;:45;;7942:93;7905:192;;;;-1:-1:-1;8040:39:0;8051:15;;;8040:10;8051:15;;;;;;:27;;;8040:39;;;;:49;;;;;:57;;:49;:57;;7905:192;7901:1451;;;8169:101;8227:42;8265:3;8227:33;:7;1841:1;8227:11;:33::i;:42::-;8169:39;8180:15;;;8169:10;8180:15;;;;;;:27;;;8169:39;;;;:53;;;;:57;:101::i;:::-;8113:39;8124:15;;;8113:10;8124:15;;;;;;:27;;;;8113:39;;;;;:53;;:157;;;;8405:15;;;:27;;;:32;;;;:131;;-1:-1:-1;8442:15:0;;;;:10;:15;;;;;:27;;;2231:4;-1:-1:-1;8442:93:0;;;;-1:-1:-1;8521:14:0;;8490:15;;;;:10;:15;;;;;:27;;;:45;;8442:93;8405:192;;;;-1:-1:-1;8540:39:0;8551:15;;;8540:10;8551:15;;;;;;:27;;;8540:39;;;;:49;;;;;:57;;:49;:57;;8405:192;8401:940;;;8673:101;8731:42;8769:3;8731:33;:7;1896:1;8731:11;:33::i;:42::-;8673:39;8684:15;;;8673:10;8684:15;;;;;;:27;;;8673:39;;;;:53;;;;:57;:101::i;:::-;8617:39;8628:15;;;8617:10;8628:15;;;;;;:27;;;;8617:39;;;;;:53;;:157;;;;8929:15;;;:27;;;:32;;;;:131;;-1:-1:-1;8966:15:0;;;;:10;:15;;;;;:27;;;2231:4;-1:-1:-1;8966:93:0;;;;-1:-1:-1;9045:14:0;;9014:15;;;;:10;:15;;;;;:27;;;:45;;8966:93;8929:192;;;;-1:-1:-1;9064:39:0;9075:15;;;9064:10;9075:15;;;;;;:27;;;9064:39;;;;:49;;;;;:57;;:49;:57;;8929:192;8925:401;;;9201:101;9259:42;9297:3;9259:33;:7;1951:1;9259:11;:33::i;:42::-;9201:39;9212:15;;;9201:10;9212:15;;;;;;:27;;;9201:39;;;;:53;;;;:57;:101::i;:::-;9145:39;9156:15;;;9145:10;9156:15;;;;;;:27;;;9145:39;;;;:53;;:157;8925:401;9532:15;;;;:10;:15;;;;;:25;;;;;:33;;:25;:33;;;;:74;;-1:-1:-1;9569:15:0;;;;:10;:15;;;;;:32;:37;;9532:74;9528:349;;;9622:11;9636:75;9708:2;9636:67;9700:2;9636:59;9692:2;9636:51;9656:10;:15;9667:3;9656:15;;;;;;;;;;;:30;;;9636:15;:19;;:51;;;;:::i;:75::-;9794:15;;;;:10;:15;;;;;:32;9622:89;;-1:-1:-1;9759:106:0;;9794:70;;9622:89;;9794:61;;9851:3;;9794:52;;2069:1;9794:36;:52::i;:61::-;:65;;:70::i;:::-;9759:15;;;;:10;:15;;;;;:30;;;;:34;:106::i;:::-;9726:15;;;;:10;:15;;;;;:30;;:139;-1:-1:-1;9528:349:0;10079:15;;;;:10;:15;;;;;:25;;;;;:33;;:25;:33;:74;;;;-1:-1:-1;10116:15:0;;;;:10;:15;;;;;:32;:37;;10079:74;10075:360;;;10169:11;10214:15;;;:10;:15;;;;;:30;;;;10183:26;;;;;:86;;10266:2;;10183:78;;10258:2;;10183:78;;10258:2;;10183:78;;:30;:62::i;:86::-;10352:15;;;;:10;:15;;;;;:32;10169:100;;-1:-1:-1;10317:106:0;;10352:70;;10169:100;;10352:61;;10409:3;;10352:52;;2069:1;10352:36;:52::i;10317:106::-;10284:15;;;;:10;:15;;;;;:30;;:139;-1:-1:-1;10075:360:0;10494:15;;;;:10;:15;;;;;:32;:45;;10531:7;10494:36;:45::i;:::-;10459:15;;;;:10;:15;;;;;:80;;;10653:15;10620:30;;;;:48;;;;10679:26;;;:30;;;;10720:25;;;;:33;;-1:-1:-1;;10720:33:0;;;10792:15;:28;;10812:7;10792:19;:28::i;:::-;10774:15;:46;10871:15;;;;:10;:15;;;;;;;:27;;;;10900;;;;10929;;;;;10846:111;;;;;;10855:5;;10862:7;;10871:27;;10929;10846:111;:::i;:::-;;;;;;;;-1:-1:-1;10985:4:0;;6039:4958;-1:-1:-1;;;;6039:4958:0:o;2077:49::-;2124:2;2077:49;:::o;2028:42::-;2069:1;2028:42;:::o;2133:49::-;2180:2;2133:49;:::o;5854:117::-;5918:45;5926:10;5938:13;5953:9;5918:7;:45::i;:::-;;5854:117;:::o;11830:2653::-;11897:10;11865:4;11932:10;;;:3;:10;;;;;;11865:4;;11897:10;11865:4;12038:8;12030:17;;;;;;12312:16;;-1:-1:-1;;;;;12303:25:0;;;12312:16;;12303:25;;;;:54;;-1:-1:-1;12341:16:0;;-1:-1:-1;;;;;12332:25:0;;;12341:16;;12332:25;;12303:54;12299:637;;;12430:15;;;;:10;:15;;;;;:25;;;;;:33;;:25;:33;12422:113;;;;-1:-1:-1;;;12422:113:0;;;;;;;:::i;:::-;12558:15;;;;:10;:15;;;;;:26;;;12550:111;;;;-1:-1:-1;;;12550:111:0;;;;;;;:::i;:::-;12692:71;12760:2;12692:63;12752:2;12692:55;12744:2;12692:47;12712:10;:15;12723:3;12712:15;;;;;;;;;;;:26;;;12692:15;:19;;:47;;;;:::i;:71::-;12686:77;;2180:2;12847:3;:26;12839:85;;;;-1:-1:-1;;;12839:85:0;;;;;;;:::i;:::-;12956:20;13077:15;;;:10;:15;;;;;:30;;;;13046:26;;;;;:86;;13129:2;;13046:78;;13121:2;;13046:78;;13121:2;;13046:78;;:30;:62::i;:86::-;13188:16;13207:15;;;:10;:15;;;;;:32;13040:92;;-1:-1:-1;13188:16:0;13207:70;;13040:92;;13207:61;;13264:3;;13207:52;;2069:1;13207:36;:52::i;:70::-;13376:15;;;;:10;:15;;;;;:29;;;;13340:30;;;;13303:32;;13188:89;;-1:-1:-1;13303:117:0;;13188:89;;13303:103;;13376:29;13303:103;;:36;:68::i;:::-;:72;;:103::i;:117::-;13590:15;;;;:10;:15;;;;;:32;13570:15;;13288:132;;-1:-1:-1;13570:53:0;;:15;:19;:53::i;:::-;13552:15;:71;13676:15;;;;:10;:15;;;;;:30;;;13654:17;;:67;;13712:8;;13654:53;;:21;:53::i;:67::-;13634:17;:87;13784:15;;;;:10;:15;;;;;:29;;;13757:22;;:57;;:26;:57::i;:::-;13732:22;:82;13895:15;;;;:10;:15;;;;;:32;;13942:30;;;;;13877:142;;13888:5;;13929:44;;:8;;:12;:44::i;:::-;13975:15;;;;:10;:15;;;;;;;:29;;;13877:142;;;;;;;13975:29;14006:12;;13877:142;:::i;:::-;;;;;;;;14115:1;14080:15;;;:10;:15;;;;;;:36;;;14127:30;;;:34;;;14172:30;;;:34;;;14217:29;;;:33;;;14261:26;;;:30;;;14302:25;;:33;;-1:-1:-1;;14302:33:0;;;14397:46;-1:-1:-1;;;;;14397:32:0;;;:46;;;;;14430:12;;14397:46;14115:1;14397:46;14430:12;14397:32;:46;;;;;;;;;;;;;;;;;;;;;14471:4;14464:11;;;;;;;11830:2653;:::o;1696:42::-;1737:1;1696:42;:::o;3661:651::-;3753:4;743:6;;-1:-1:-1;;;;;743:6:0;753:10;743:20;735:65;;;;-1:-1:-1;;;735:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3778:34:0;::::1;3770:43;;;::::0;::::1;;3970:11;3984:31;3994:20;3984:9;:31::i;:::-;4174:15;::::0;;;:10:::1;:15;::::0;;;;:32;3970:45;;-1:-1:-1;4174:37:0;4166:46:::1;;;::::0;::::1;;-1:-1:-1::0;;4233:16:0::1;:39:::0;;-1:-1:-1;;;;;4233:39:0;::::1;-1:-1:-1::0;;;;;;4233:39:0;;::::1;;::::0;;;3661:651;;;:::o;5377:107::-;5455:21;5377:107;:::o;832:148::-;743:6;;-1:-1:-1;;;;;743:6:0;753:10;743:20;735:65;;;;-1:-1:-1;;;735:65:0;;;;;;;:::i;:::-;939:1:::1;923:6:::0;;902:40:::1;::::0;-1:-1:-1;;;;;923:6:0;;::::1;::::0;902:40:::1;::::0;939:1;;902:40:::1;970:1;953:19:::0;;-1:-1:-1;;;;;;953:19:0::1;::::0;;832:148::o;5221:103::-;5300:16;;-1:-1:-1;;;;;5300:16:0;5221:103;:::o;4366:::-;4445:16;;-1:-1:-1;;;;;4445:16:0;4366:103;:::o;1959:62::-;2004:17;1959:62;:::o;616:79::-;654:7;681:6;-1:-1:-1;;;;;681:6:0;616:79;:::o;14541:1524::-;14613:7;;;;;;;14691:10;-1:-1:-1;;;;;14691:28:0;;;;:53;;;14737:7;:5;:7::i;:::-;-1:-1:-1;;;;;14723:21:0;:10;-1:-1:-1;;;;;14723:21:0;;14691:53;14683:96;;;;-1:-1:-1;;;14683:96:0;;;;;;;:::i;:::-;14800:24;14835:22;14868:21;14900:22;14933:18;14962:14;14987:8;15016:13;15032:14;15016:30;;15067:11;15081:3;:10;15085:5;-1:-1:-1;;;;;15081:10:0;-1:-1:-1;;;;;15081:10:0;;;;;;;;;;;;;15067:24;;15131:10;:15;15142:3;15131:15;;;;;;;;;;;:32;;;15112:51;;15224:10;:15;15235:3;15224:15;;;;;;;;;;;:25;;;;;;;;;;;;:33;;15253:4;15224:33;;;15220:146;;15279:75;15351:2;15279:67;15343:2;15279:59;15335:2;15279:51;15299:10;:15;15310:3;15299:15;;;;;;;;;;;:30;;;15279:15;:19;;:51;;;;:::i;:75::-;15273:81;;15220:146;15390:15;;;;:10;:15;;;;;:25;;;;;:33;;:25;:33;15386:157;;;15476:15;;;;:10;:15;;;;;:30;;;;15445:26;;;;;:86;;15528:2;;15445:78;;15520:2;;15445:78;;15520:2;;15445:78;;:30;:62::i;:86::-;15439:92;;15386:157;15653:15;;;;:10;:15;;;;;:32;15618:106;;15653:70;;15719:3;;15653:61;;15710:3;;15653:52;;2069:1;15653:36;:52::i;:70::-;15618:15;;;;:10;:15;;;;;:30;;;;:34;:106::i;:::-;15601:123;;15751:10;:15;15762:3;15751:15;;;;;;;;;;;:29;;;15735:45;;15808:10;:15;15819:3;15808:15;;;;;;;;;;;:30;;;15791:47;;15862:10;:15;15873:3;15862:15;;;;;;;;;;;:26;;;15849:39;;15911:10;:15;15922:3;15911:15;;;;;;;;;;;:25;;;;;;;;;;;;15899:37;;15965:3;15970:16;15988:14;16004:13;16019:14;16035:10;16047:9;15957:100;;;;;;;;;;;;;;;;;;;;;;;14541:1524;;;;;;;;;:::o;11072:638::-;11147:10;11115:4;11182:10;;;:3;:10;;;;;;;;;11237:15;;;:10;:15;;;;;:30;;;11115:4;;11147:10;11115:4;;11217:75;;11289:2;;11217:67;;11281:2;;11217:67;;11281:2;;11217:67;;:15;;:19;:51::i;:75::-;11203:89;-1:-1:-1;11361:8:0;11353:17;;;;;;2124:2;11445:3;:26;11437:74;;;;-1:-1:-1;;;11437:74:0;;;;;;;:::i;:::-;-1:-1:-1;11583:15:0;;;;:10;:15;;;;;:25;;;:32;;-1:-1:-1;;11583:32:0;11611:4;11583:32;;;;;;11655:15;11626:26;;;;:44;;;;11611:4;-1:-1:-1;;11072:638:0;:::o;988:244::-;743:6;;-1:-1:-1;;;;;743:6:0;753:10;743:20;735:65;;;;-1:-1:-1;;;735:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1077:22:0;::::1;1069:73;;;;-1:-1:-1::0;;;1069:73:0::1;;;;;;;:::i;:::-;1179:6;::::0;;1158:38:::1;::::0;-1:-1:-1;;;;;1158:38:0;;::::1;::::0;1179:6;::::1;::::0;1158:38:::1;::::0;::::1;1207:6;:17:::0;;-1:-1:-1;;;;;;1207:17:0::1;-1:-1:-1::0;;;;;1207:17:0;;;::::1;::::0;;;::::1;::::0;;988:244::o;4526:641::-;4618:4;743:6;;-1:-1:-1;;;;;743:6:0;753:10;743:20;735:65;;;;-1:-1:-1;;;735:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4643:34:0;::::1;4635:43;;;::::0;::::1;;4825:11;4839:31;4849:20;4839:9;:31::i;:::-;5029:15;::::0;;;:10:::1;:15;::::0;;;;:32;4825:45;;-1:-1:-1;5029:37:0;5021:46:::1;;;::::0;::::1;;-1:-1:-1::0;;5088:16:0::1;:39:::0;;-1:-1:-1;;;;;5088:39:0;::::1;-1:-1:-1::0;;;;;;5088:39:0;;::::1;;::::0;;;4526:641;;;:::o;16126:354::-;16180:7;16189;16198;16207;16216;16225;16244:23;16296:21;16278:39;;16346:15;16363;;16380;;16397:17;;16416:22;;2231:4;16440:14;;:31;;;;:::i;:::-;16338:134;;;;-1:-1:-1;16338:134:0;;-1:-1:-1;16338:134:0;-1:-1:-1;16338:134:0;-1:-1:-1;16338:134:0;;-1:-1:-1;16126:354:0;-1:-1:-1;;16126:354:0:o;1794:48::-;1841:1;1794:48;:::o;3289:315::-;-1:-1:-1;;;;;3380:10:0;;3340:14;3380:10;;;:3;:10;;;;;;3415:8;3411:155;;3475:1;3456:14;;:21;;:18;:21::i;:::-;3439:14;:38;;;-1:-1:-1;;;;;3492:10:0;;;;;;:3;:10;;;;;:27;;;3439:38;-1:-1:-1;3411:155:0;3593:3;3289:315;-1:-1:-1;;3289:315:0:o;16513:187::-;16571:7;16595:6;16591:25;;-1:-1:-1;16612:1:0;16605:8;;16591:25;16626:9;16638:5;16642:1;16638;:5;:::i;:::-;16626:17;-1:-1:-1;16671:1:0;16662:5;16666:1;16626:17;16662:5;:::i;:::-;:10;16654:19;;;;;;16691:1;16513:187;-1:-1:-1;;;16513:187:0:o;16706:147::-;16764:7;16796:1;16792;:5;16784:14;;;;;;16809:9;16821:5;16825:1;16821;:5;:::i;:::-;16809:17;16706:147;-1:-1:-1;;;;16706:147:0:o;17013:148::-;17071:7;;17103:5;17107:1;17103;:5;:::i;:::-;17091:17;;17132:1;17127;:6;;17119:15;;;;;16859:148;16917:7;16950:1;16945;:6;;16937:15;;;;;;16963:9;16975:5;16979:1;16975;:5;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;550:190::-;;662:2;650:9;641:7;637:23;633:32;630:2;;;683:6;675;668:22;630:2;-1:-1:-1;711:23:1;;620:120;-1:-1:-1;620:120:1:o;745:203::-;-1:-1:-1;;;;;909:32:1;;;;891:51;;879:2;864:18;;846:102::o;953:489::-;-1:-1:-1;;;;;1230:32:1;;;;1212:51;;1294:2;1279:18;;1272:34;;;;1337:2;1322:18;;1315:34;;;;1380:2;1365:18;;1358:34;1423:3;1408:19;;1401:35;1199:3;1184:19;;1166:276::o;1447:187::-;1612:14;;1605:22;1587:41;;1575:2;1560:18;;1542:92::o;1639:399::-;1841:2;1823:21;;;1880:2;1860:18;;;1853:30;1919:34;1914:2;1899:18;;1892:62;-1:-1:-1;;;1985:2:1;1970:18;;1963:33;2028:3;2013:19;;1813:225::o;2043:355::-;2245:2;2227:21;;;2284:2;2264:18;;;2257:30;2323:33;2318:2;2303:18;;2296:61;2389:2;2374:18;;2217:181::o;2403:402::-;2605:2;2587:21;;;2644:2;2624:18;;;2617:30;2683:34;2678:2;2663:18;;2656:62;-1:-1:-1;;;2749:2:1;2734:18;;2727:36;2795:3;2780:19;;2577:228::o;2810:471::-;3012:2;2994:21;;;3051:2;3031:18;;;3024:30;3090:34;3085:2;3070:18;;3063:62;3161:34;3156:2;3141:18;;3134:62;-1:-1:-1;;;3227:3:1;3212:19;;3205:34;3271:3;3256:19;;2984:297::o;3286:411::-;3488:2;3470:21;;;3527:2;3507:18;;;3500:30;3566:34;3561:2;3546:18;;3539:62;-1:-1:-1;;;3632:2:1;3617:18;;3610:45;3687:3;3672:19;;3460:237::o;3702:356::-;3904:2;3886:21;;;3923:18;;;3916:30;3982:34;3977:2;3962:18;;3955:62;4049:2;4034:18;;3876:182::o;4063:422::-;4265:2;4247:21;;;4304:2;4284:18;;;4277:30;4343:34;4338:2;4323:18;;4316:62;4414:28;4409:2;4394:18;;4387:56;4475:3;4460:19;;4237:248::o;4490:415::-;4692:2;4674:21;;;4731:2;4711:18;;;4704:30;4770:34;4765:2;4750:18;;4743:62;-1:-1:-1;;;4836:2:1;4821:18;;4814:49;4895:3;4880:19;;4664:241::o;4910:177::-;5056:25;;;5044:2;5029:18;;5011:76::o;5092:535::-;5379:25;;;5435:2;5420:18;;5413:34;;;;5478:2;5463:18;;5456:34;;;;5521:2;5506:18;;5499:34;5564:3;5549:19;;5542:35;5608:3;5593:19;;5586:35;5366:3;5351:19;;5333:294::o;5632:617::-;5941:25;;;5997:2;5982:18;;5975:34;;;;6040:2;6025:18;;6018:34;;;;6083:2;6068:18;;6061:34;;;;6126:3;6111:19;;6104:35;6170:3;6155:19;;6148:35;6227:14;6220:22;6214:3;6199:19;;6192:51;5928:3;5913:19;;5895:354::o;6254:128::-;;6325:1;6321:6;6318:1;6315:13;6312:2;;;6331:18;;:::i;:::-;-1:-1:-1;6367:9:1;;6302:80::o;6387:217::-;;6453:1;6443:2;;-1:-1:-1;;;6478:31:1;;6532:4;6529:1;6522:15;6560:4;6485:1;6550:15;6443:2;-1:-1:-1;6589:9:1;;6433:171::o;6609:168::-;;6715:1;6711;6707:6;6703:14;6700:1;6697:21;6692:1;6685:9;6678:17;6674:45;6671:2;;;6722:18;;:::i;:::-;-1:-1:-1;6762:9:1;;6661:116::o;6782:125::-;;6850:1;6847;6844:8;6841:2;;;6855:18;;:::i;:::-;-1:-1:-1;6892:9:1;;6831:76::o;6912:127::-;6973:10;6968:3;6964:20;6961:1;6954:31;7004:4;7001:1;6994:15;7028:4;7025:1;7018:15;7044:133;-1:-1:-1;;;;;7121:31:1;;7111:42;;7101:2;;7167:1;7164;7157:12;7101:2;7091:86;:::o
Swarm Source
ipfs://ee5b38fabe8ff0828ebe7826c740fa401211c1915e14d4b7be00562f258a82d6
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.