Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Presale D... | 10255447 | 32 days ago | IN | 0.00000672 S | 0.31147039 | ||||
Enable Whitelist | 9995344 | 33 days ago | IN | 0.00000655 S | 0.01279393 | ||||
Create Presale D... | 9486640 | 35 days ago | IN | 0.00000672 S | 0.32450418 | ||||
Create Presale D... | 7368777 | 47 days ago | IN | 0.00000672 S | 0.34775509 | ||||
Call Finalize DG | 7234579 | 48 days ago | IN | 0 S | 0.01260901 | ||||
Create Presale D... | 6280016 | 55 days ago | IN | 0.00000672 S | 0.2902863 | ||||
Call Finalize DG | 5252190 | 65 days ago | IN | 0 S | 0.32502706 | ||||
Create Presale D... | 5251049 | 65 days ago | IN | 0.00000672 S | 0.30913619 | ||||
Call Finalize DG | 5250697 | 65 days ago | IN | 0 S | 0.01082675 | ||||
Create Presale D... | 5247330 | 65 days ago | IN | 0.00000672 S | 0.31117119 | ||||
Create Presale D... | 4826649 | 68 days ago | IN | 0.00000672 S | 0.311773 | ||||
Call Finalize DG | 2298573 | 86 days ago | IN | 0 S | 0.00648594 | ||||
Create Presale D... | 2296346 | 86 days ago | IN | 0 S | 0.0059292 | ||||
Update Presale D... | 2276236 | 87 days ago | IN | 0 S | 0.00003232 | ||||
Call Finalize DG | 2214069 | 87 days ago | IN | 0 S | 0.00655382 | ||||
Create Presale D... | 2106184 | 88 days ago | IN | 0 S | 0.00615812 | ||||
Transfer Ownersh... | 2064188 | 89 days ago | IN | 0 S | 0.00003302 | ||||
Change Voter Add... | 2064164 | 89 days ago | IN | 0 S | 0.0000304 | ||||
Add Router | 2064031 | 89 days ago | IN | 0 S | 0.00010253 | ||||
Change Voter Add... | 1302587 | 97 days ago | IN | 0 S | 0.00005205 |
Latest 10 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
10255447 | 32 days ago | 0.00000672 S | ||||
9995344 | 33 days ago | 0.00000655 S | ||||
9486640 | 35 days ago | 0.00000672 S | ||||
7368777 | 47 days ago | 0.00000672 S | ||||
6280016 | 55 days ago | 0.00000672 S | ||||
5251049 | 65 days ago | 0.00000672 S | ||||
5247330 | 65 days ago | 0.00000672 S | ||||
4826649 | 68 days ago | 0.00000672 S | ||||
2296346 | 86 days ago | 0 S | ||||
2106184 | 88 days ago | 0 S |
Loading...
Loading
Contract Name:
MainDeployerRegular
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; //pragma experimental ABIEncoderV2; //import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol"; //import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/UniswapFactory.sol"; //import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/UniswapPair.sol"; //import "https://github.com/pancakeswap/pancake-swap-periphery/blob/master/contracts/interfaces/UniswapRouter02.sol"; interface ERC20 { function transfer(address to, uint256 value) external returns(bool); function approve(address spender, uint256 value) external returns(bool); function transferFrom(address from, address to, uint256 value) external returns(bool); function totalSupply() external view returns(uint256); function balanceOf(address who) external view returns(uint256); function allowance(address owner, address spender) external view returns(uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns(uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns(uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns(uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns(uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b != 0, errorMessage); return a % b; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; address public voter; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyVoter() { require(msg.sender == voter); _; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } contract Consts { uint constant TOKEN_DECIMALS = 18; uint8 constant TOKEN_DECIMALS_UINT8 = 18; uint constant TOKEN_DECIMAL_MULTIPLIER = 10 ** TOKEN_DECIMALS; address public feeContract; uint256 airdrop_fees_Percentage = 2; uint256 public minLockTime = 2592000; // 10 mins for degen uint256 constant minStartDeltaTime = 600; // presale must be atleast 10 mins in future; } interface RouterContractInterface { function Approve() external returns(bool); function getpair(address token) external view returns(address); function AddLiquidity(uint256 amountTokenDesired) external payable; //function AddLiquidity() external payable; function refundUniLP(address _routerAddress) external payable; function refundUniLPbyPlatform(address _routerAddress) external payable; function uniBalance(address token) external view returns(uint256); } interface RouterDappInterface { function createRouter(address _tokenAddress, address _creatorAdress, uint256 _locktime, address routerAddressInput, uint256 _extraAmount, string memory _logo) external returns (address); } interface StorageContractInterface { //function CreatePresaleStorage(string[10] memory _tokenInfo, address tokenAddr, uint256 _lp_locked, address _creator, bool[3] memory _nftIdoFair) external returns(bool); function CreatePresaleStorage(address tokenAddr,uint256 _lp_locked, address _creator, bool[3] memory _nftIdoFair) external returns(bool); function addPresaleAddr(string[10] memory _tokenInfo, address _presale, address _creator, uint256 _presaleNum) external returns(bool); function fetchPresaleNumByOwner(address _creator) external returns(uint256); function fetchTokenAddrLiqLockTime(address _creator, uint256 _presaleNum) external view returns(address,uint256); function addRouterAddr(address _router, address _creator, uint256 _presaleNum) external returns(bool); function fetchPresaleStruct(address _creator, uint256 _presaleNum) external view returns(address,address,address); function setPresaleActiveFalse(address _creator, uint256 _presaleNum) external returns (bool); function setPresaleFilter(address _creator, uint256 _presaleNum) external returns (bool); function fetchPresaleAddress(address _creator, uint256 _presaleNum) external view returns(address); function fetchVoterCallData(address _creator, uint256 _presaleNum) external view returns(address,address); function addFailFilter(address _creator, uint256 _presaleNum) external; } interface PresaleDappInterface { function CreatePresaleRegular(address[4] memory presaleAddressInput_Router, uint256[2] memory start_end_time, uint256[5] memory soft_hard_cap_rate_min_max_eth, uint256[2] memory uniRatePercentage, uint256[2] memory extraAmountPer_lockTime) external returns(address); } interface PresaleContractInterface { function uniswapPercentage() external returns(uint256); function uniswapRate() external returns(uint256); function CheckTotalEthRaised() external view returns(uint256); function CheckSoftCap() external view returns(uint256); function mintForPlatform(address _platform, address _referrer, uint256 _refPer, bool tokenFeeToRef) external returns(bool); function mintForUniswap(address _routerAddr) external; function finalize(address[2] memory __finalizeInfo, uint256 refPer, bool validFinalize) external returns(bool); function finalizeAnytime(address[2] memory __finalizeInfo, bool validFinalize) external returns(bool); function enableWhitelist() external; function disableWhitelist() external; function addToWhitelist(address WhitelistAddress) external; function removeFromWhitelist(address WhitelistAddress) external; } interface ReferralContract { function getDiscountedPrice(string memory _code) external returns(uint256); function validateCode(string memory _code) external returns(bool); function fetchCodeOwner(string memory _code) external returns(address); function fetchCodeOwnerPercentage(string memory _code) external returns(uint256); function updateReferrerAmounts(address _referrer, uint256 _updateAmount) external returns(bool); function updateCodeUseNumber(string memory _code, address _presaleAddress) external returns(bool); } interface FeeCheckContractInterface { function getFees(string memory _dappName) external view returns(uint256); function getWhitelistFees(string memory _dappWhitelistName) external view returns(uint256); } interface FeeDepositContractInterface { function payment(uint256 _dappNum) external payable; } contract MainDeployerRegular is Consts, Ownable { //uint256 public presaleFees = 1 * (10**18); // 1 ETH //uint256 public whitelistFees = 0.9 * (10**18); // 0.9 ETH uint public minUniPercentage = 50; //minimum 50% has to go for uniswap lock address public presaleDappAddr; address public referralDappAddr; //address public presaleNFTDappAddr; //address public NFTDappAddr; // address public routerDappAddr; //address public FilterAddress; address public storageContract; address public feeCheckContract; uint256 public totalRaisedOnPlatform; uint256 public totalRefundedFromPlatform; uint256 public deltaStartEndTime = 2592000; string public dappName = "PresaleDeployer"; string public dappFeeName = "regPresaleFees"; string public dappWhitelistFeeName = "regWhitelistFees"; uint256 public tokenFee; bool public referralDisabled; bool public tokenFeeToReferrer; bool public activeFalse = true; bool public filter = true; // address public UNISWAP_ADDRESS = 0xc0fFee0000C824D24E0F280f1e4D21152625742b; //Koffeeswap Address // address public factoryAddress = 0xC0fFeE00000e1439651C6aD025ea2A71ED7F3Eab; //Koffeeswap factory Address constructor(address _presaleDappAddr, address _feeRecieveContract, address _storageContract, address _referralContract, address _feeCheckContract) { presaleDappAddr = _presaleDappAddr; feeContract = _feeRecieveContract; storageContract = _storageContract; referralDappAddr = _referralContract; feeCheckContract = _feeCheckContract; } using SafeMath for uint256; /* struct finalizeData { //bool exists; bool active; address uniswapDep; uint uniswapPercentage; uint256 uniswapRate; address tokenAddress; address presaleAddress; address nftPresaleAddress; bool nft; bool presale; } */ mapping(address => bool) public presales; //mapping(address => finalizeData) public finalizeDataStruct; mapping(address => mapping(uint256 => bool)) public presaleFinalized; mapping(address => address) public presaleToReferrer; mapping(address => uint256) public presaleToRefPer; mapping(uint256 => address) public presaleOwners; mapping(address => bool) public RouterValid; mapping(uint256 => address) public routerRecord; mapping(address => uint256) public routerNumber; uint256 public totalRouters; uint256 public extraAmountPer = 2; //uint256 public extraAmountPerVal; uint256 public hundred = 100; bool public creationPresaleEnabled = true; bool public creationNFTPresaleEnabled = true; function CreatePresaleDep(string[10] memory _tokenInfo, address tokenAddr, uint256[2] memory start_end_time, uint256[5] memory soft_hard_cap_rate_min_max_eth, uint256[3] memory uniswap_info_arr, address _routerAddress, string memory _referralCode) public payable { require(creationPresaleEnabled, "creation Presale disabled"); //require(!presales[msg.sender], "User already made a presale"); require(start_end_time[0] > block.timestamp, "start time not in future"); require(start_end_time[1] <= (start_end_time[0].add(deltaStartEndTime)), "presale duration exceeds limit"); require(soft_hard_cap_rate_min_max_eth[0] >= (soft_hard_cap_rate_min_max_eth[1].div(2)), "scap must be atleast half of hcap!"); require(soft_hard_cap_rate_min_max_eth[3] > 0, "min cont must be > 0"); require(soft_hard_cap_rate_min_max_eth[4] >= soft_hard_cap_rate_min_max_eth[3], "max cont must be >= min cont"); //uint256[2] memory start_end_time = [start_end_gov_time[0], start_end_gov_time[1]]; require(RouterValid[_routerAddress], "invalid router address"); if(referralDisabled){ require(keccak256(abi.encodePacked(_referralCode)) == keccak256(abi.encodePacked("default")),"only default code allowed"); } if(keccak256(abi.encodePacked(_referralCode)) != keccak256(abi.encodePacked("default"))){ require(ReferralContract(referralDappAddr).validateCode(_referralCode),"invalid discount code"); require(msg.value >= (FeeCheckContractInterface(feeCheckContract).getFees(dappFeeName)).mul(hundred.sub(ReferralContract(referralDappAddr).getDiscountedPrice(_referralCode))).div(hundred), "msg.value must be equal to referral fee!"); //payable(feeContract).transfer(msg.value); //if(ReferralContract(referralDappAddr).fetchCodeOwnerPercentage(_referralCode) > 0){ uint256 referrerAmount = (msg.value).mul(ReferralContract(referralDappAddr).fetchCodeOwnerPercentage(_referralCode)).div(100); payable(ReferralContract(referralDappAddr).fetchCodeOwner(_referralCode)).call{value:referrerAmount}(""); FeeDepositContractInterface(feeContract).payment{value: (msg.value).mul(hundred.sub(ReferralContract(referralDappAddr).fetchCodeOwnerPercentage(_referralCode))).div(100)}(0); // 0 at the end means it will be registerred in the fee deposit contract as a referral regular presale //payable(feeContract).transfer((msg.value).mul(hundred.sub(ReferralContract(referralDappAddr).fetchCodeOwnerPercentage(_referralCode))).div(100)); require(ReferralContract(referralDappAddr).updateReferrerAmounts(ReferralContract(referralDappAddr).fetchCodeOwner(_referralCode), referrerAmount),"referrerAmountUpdate failed"); } else{ require(msg.value >= FeeCheckContractInterface(feeCheckContract).getFees(dappFeeName), "msg.value must be equal to presale fee!"); FeeDepositContractInterface(feeContract).payment{value: msg.value}(1); // 1 at the end means it will be registerred in the fee deposit contract as a NO referral regular presale //payable(feeContract).transfer(msg.value); } // require(start_end_gov_time[1] >= now.add(minTimeThreshold),"presale end time less than minimum threshold"); require((start_end_time[0].add(minStartDeltaTime)) <= start_end_time[1], "presale period less than minimum"); require(uniswap_info_arr[0] > (start_end_time[1].add(minLockTime)), "Lock time must be higher than presale end plus minimum lock time"); // require(soft_hard_cap_rate_min_max_eth[5] >=0 && soft_hard_cap_rate_min_max_eth[5] <=100, "Governance amount is beyond range"); require((uniswap_info_arr[2] > minUniPercentage), "Uniswap percentage is lower than min threshold"); // require((uniswap_info_arr[2].add(soft_hard_cap_rate_min_max_eth[5])) <= 100, "gov plus uni % greater than 100"); //(bool storageSuccess, bytes memory storageFetch) = storageContract.call(abi.encodeWithSignature("CreatePresaleStorage(string[10],address,uint256[6],uint256,address,bool[2])", _tokenInfo, tokenAddr, soft_hard_cap_rate_min_max_eth,uniswap_info_arr[0],msg.sender,[true,false,false])); //require(storageSuccess, "storage creation failed"); require(StorageContractInterface(storageContract).CreatePresaleStorage(tokenAddr,uniswap_info_arr[0],msg.sender,[true,false,false]),"storage addition failed"); //(bool presaleSuccess, bytes memory presaleFetch) = presaleDappAddr.call(abi.encodeWithSignature("CreatePresaleRegular(address[3],uint256[2],uint256[6],uint256[2])", [address(this), msg.sender, tokenAddr], start_end_time, soft_hard_cap_rate_min_max_eth, [uniswap_info_arr[1],uniswap_info_arr[2]],extraAmountPer)); //require(presaleSuccess, "presale creation failed"); //address presaleAddrReturn = abi.decode(presaleFetch, (address)); address presaleAddrReturn = PresaleDappInterface(presaleDappAddr).CreatePresaleRegular([address(this), msg.sender, tokenAddr,_routerAddress], start_end_time, soft_hard_cap_rate_min_max_eth, [uniswap_info_arr[1],uniswap_info_arr[2]],[extraAmountPer,uniswap_info_arr[0]]); presaleToReferrer[presaleAddrReturn] = ReferralContract(referralDappAddr).fetchCodeOwner(_referralCode); presaleToRefPer[presaleAddrReturn] = ReferralContract(referralDappAddr).fetchCodeOwnerPercentage(_referralCode); //(bool presaleNumFetch, bytes memory presaleNum) = storageContract.call(abi.encodeWithSignature("fetchPresaleNumByOwner(address)",msg.sender)); //require(presaleNumFetch, "presaleNum fetch failed"); //uint256 presaleNumCorrect = (abi.decode(presaleNum, (uint256))).sub(1); uint256 presaleNumCorrect = (StorageContractInterface(storageContract).fetchPresaleNumByOwner(msg.sender)).sub(1); //(bool presaleAdd, bytes memory presaleAddFetch) = storageContract.call(abi.encodeWithSignature("addPresaleAddr(address,address,uint256)", presaleAddrReturn,msg.sender,presaleNumCorrect)); // subtraction by 1 is important to set it to correct presale storage since creating storage increments the variable by 1 //require(presaleAdd, "presale addr add failed"); require(StorageContractInterface(storageContract).addPresaleAddr(_tokenInfo,presaleAddrReturn,msg.sender,presaleNumCorrect),"presale addr add failed"); /* if(_allInOne){ createRouter(msg.sender,_routerAddress,presaleNumCorrect,_tokenInfo[2]); } */ require(ReferralContract(referralDappAddr).updateCodeUseNumber(_referralCode,presaleAddrReturn),"code use update failed"); } function changeDeltaStartEndTime(uint256 _newDelta) public onlyOwner { require(_newDelta >= 0, "invalid delta number"); deltaStartEndTime = _newDelta; } function changeUniPercentage(uint uniPer) public onlyOwner { require((uniPer >= 0) && (uniPer <= 100), "uniPer value outside range"); minUniPercentage = uniPer; } function ChangeVoterAddr(address _newVoterAddress) public onlyOwner { // require(_newVoterAddress != voter, "New addr is same as Old Addr"); require(_newVoterAddress != address(0), "New Addr cant be zero addr"); voter = _newVoterAddress; } /* function ChangeFilterAddr(address _newFilterAddress) public onlyOwner { // require(_newFilterAddress != FilterAddress, "New addr is same as Old Addr"); require(_newFilterAddress != address(0), "New Addr cant be zero addr"); FilterAddress = _newFilterAddress; } */ function ChangeAirdropFee(uint _newAirdropFee) public onlyOwner { require(_newAirdropFee >= 0 && _newAirdropFee <= 100, "out of range fee value"); require(_newAirdropFee != airdrop_fees_Percentage, "New fee is same as Old fee"); airdrop_fees_Percentage = _newAirdropFee; } /* function changePresaleFees(uint256 _newFee) public onlyOwner { require((_newFee >= 0), "_newFee value must be >= 0"); presaleFees = _newFee; } function changeWhitelistFees(uint256 _newFee) public onlyOwner { require((_newFee >= 0), "_newFee value must be >= 0"); whitelistFees = _newFee; } */ function disableReferral() public onlyOwner { referralDisabled = true; } function enableReferral() public onlyOwner { referralDisabled = false; } // function callFinalize( uint256 _governStartTime, uint256 _governEndTime) public { function callFinalizeDG(uint256 _presaleNum) public { //require(!presaleFinalized[msg.sender][_presaleNum],"already finalized"); //(bool PresaleStructBool, bytes memory PresaleStructFetch) = storageContract.call(abi.encodeWithSignature("fetchPresaleStruct(address,uint256)",msg.sender,_presaleNum)); //require(PresaleStructBool, "nft presale struct fetch failed"); //(finalizeDataStruct[msg.sender].tokenAddress, //finalizeDataStruct[msg.sender].presaleAddress,finalizeDataStruct[msg.sender].uniswapDep, //finalizeDataStruct[msg.sender].uniswapPercentage,finalizeDataStruct[msg.sender].uniswapRate) = abi.decode(PresaleStructFetch, (address,address,address)); (address _tokenAddr,address _presaleAddr, address _uniswapDep) = StorageContractInterface(storageContract).fetchPresaleStruct(msg.sender,_presaleNum); uint256 _uniPer = PresaleContractInterface(_presaleAddr).uniswapPercentage(); uint256 _uniRate = PresaleContractInterface(_presaleAddr).uniswapRate(); //(finalizeDataStruct[msg.sender].uniswapPercentage,finalizeDataStruct[msg.sender].uniswapRate) //(bool nftPresaleStatBool, bytes memory nftPresaleStatFetch) = storageContract.call(abi.encodeWithSignature("fetchNftPresaleStatAddr(address,uint256)",msg.sender,_presaleNum)); //require(nftPresaleStatBool, "nft presale stat and addr fetch failed"); //(finalizeDataStruct[msg.sender].active,finalizeDataStruct[msg.sender].nft, //finalizeDataStruct[msg.sender].nftPresaleAddress) = abi.decode(nftPresaleStatFetch, (bool,bool,address)); //require(!nftBool,"this function is not for nft presale"); //require(active, "User doesnt have a running presale to finalize"); //(bool setPresaleActiveFalseAndFilter, bytes memory _setPresaleActiveFalseAndFilter) = storageContract.call(abi.encodeWithSignature("setPresaleActiveFalseAndFilter(address,uint256)",msg.sender,_presaleNum)); //require(setPresaleActiveFalseAndFilter, "presale active fetch set to false failed"); if(filter){ require(StorageContractInterface(storageContract).setPresaleFilter(msg.sender,_presaleNum),"unable to set presale Filter"); } if(activeFalse){ require(StorageContractInterface(storageContract).setPresaleActiveFalse(msg.sender,_presaleNum),"unable to set presale active status"); } //extraAmountPerVal = extraAmountPer.add(hundred); //(bool checkEthRaised, bytes memory _totalEthRaised) = finalizeDataStruct[msg.sender].presaleAddress.call(abi.encodeWithSignature("CheckTotalEthRaised()")); //require(checkEthRaised, "failed to check eth raised"); //uint256 totalEthRaised = abi.decode(_totalEthRaised, (uint256)); uint256 totalEthRaised = PresaleContractInterface(_presaleAddr).CheckTotalEthRaised(); //(bool checkSoftCap, bytes memory _SoftCap) = finalizeDataStruct[msg.sender].presaleAddress.call(abi.encodeWithSignature("CheckSoftCap()")); //require(checkSoftCap, "failed to check soft cap"); //uint256 SoftCap = abi.decode(_SoftCap, (uint256)); uint256 SoftCap = PresaleContractInterface(_presaleAddr).CheckSoftCap(); if (!(totalEthRaised < (SoftCap)) && !(totalEthRaised == 0) && !(_uniPer == 0)) { // CREATE UNISWAP CONTRACT START totalRaisedOnPlatform = totalRaisedOnPlatform.add(totalEthRaised); uint256 tokenFeeCalc = totalEthRaised.mul(airdrop_fees_Percentage).div(100); require(PresaleContractInterface(_presaleAddr).mintForPlatform(feeContract,presaleToReferrer[_presaleAddr],presaleToRefPer[_presaleAddr],tokenFeeToReferrer),"error at mint for plat"); require(PresaleContractInterface(_presaleAddr).finalize([presaleToReferrer[_presaleAddr], msg.sender],presaleToRefPer[_presaleAddr],true),"finalize failed at success"); require(ReferralContract(referralDappAddr).updateReferrerAmounts(presaleToReferrer[_presaleAddr],tokenFeeCalc.mul(presaleToRefPer[_presaleAddr]).div(100)),"referrer update failed at finalize"); } else if ((totalEthRaised < SoftCap) || (totalEthRaised == 0)) { totalRefundedFromPlatform = totalRefundedFromPlatform.add(totalEthRaised); require(PresaleContractInterface(_presaleAddr).finalize([address(0), address(msg.sender)],presaleToRefPer[_presaleAddr],false),"finalize failed at refund"); } // presaleFinalized[msg.sender][_presaleNum] = true; } function checkTotalEthraisedOfPresale(address presaleToRefundFromOwnerAddress, uint256 _presaleNum) public view returns(uint256) { //(bool presaleAddressBool, bytes memory presaleAddressFetch) = storageContract.call(abi.encodeWithSignature("fetchPresaleAddress(address,uint256)",presaleToRefundFromOwnerAddress,_presaleNum)); //require(presaleAddressBool, "presale address fetch failed"); //address presaleAddressFetched = abi.decode(presaleAddressFetch, (address)); address presaleAddressFetched = StorageContractInterface(storageContract).fetchPresaleAddress(presaleToRefundFromOwnerAddress,_presaleNum); //(bool checkEthRaised, bytes memory _totalEthRaised) = presaleAddressFetched.call(abi.encodeWithSignature("CheckTotalEthRaised()")); //require(checkEthRaised, "failed to check eth raised"); //uint256 totalEthRaised = abi.decode(_totalEthRaised, (uint256)); uint256 totalEthRaised = PresaleContractInterface(presaleAddressFetched).CheckTotalEthRaised(); return totalEthRaised; } function voterCallsFinalizeRefund(address presaleToRefundFromOwnerAddress,uint256 _presaleNum) onlyVoter public { //(bool fetchVoterCallData, bytes memory VoterCallData) = storageContract.call(abi.encodeWithSignature("fetchVoterCallData(address,uint256)",presaleToRefundFromOwnerAddress,_presaleNum)); //require(fetchVoterCallData, "voter data fetch failed"); //(address presaleAddressFetched,address uniAddressFetched) = abi.decode(VoterCallData, (address,address)); (address presaleAddressFetched,address uniAddressFetched) = StorageContractInterface(storageContract).fetchVoterCallData(presaleToRefundFromOwnerAddress,_presaleNum); totalRefundedFromPlatform = totalRefundedFromPlatform.add(checkTotalEthraisedOfPresale(presaleToRefundFromOwnerAddress,_presaleNum)); // require(now > presales[presaleToRefundFromOwnerAddress].govStartTime, "governance time not started yet"); //address[3] memory finalizeInput = [address(0), presaleToRefundFromOwnerAddress, uniAddressFetched]; //(bool _finalized, bytes memory _finalizedReturn) = presaleAddressFetched.call(abi.encodeWithSignature("finalize(address[3],bool)", finalizeInput, false)); //require(_finalized, "Finalization Refund call failed"); require(PresaleContractInterface(presaleAddressFetched).finalize([address(0), presaleToRefundFromOwnerAddress],presaleToRefPer[presaleAddressFetched],false),"finalize failed at voter call refund"); //(bool addFailFilter, bytes memory addFailFilterReturn) = storageContract.call(abi.encodeWithSignature("addFailFilter(address,uint256)", presaleToRefundFromOwnerAddress, _presaleNum)); //require(addFailFilter, "adding to Fail Filter failed"); StorageContractInterface(storageContract).addFailFilter(presaleToRefundFromOwnerAddress, _presaleNum); } function voterCallsFinalizeRefundAnytime(address presaleToRefundFromOwnerAddress,uint256 _presaleNum) onlyVoter public { //(bool fetchVoterCallData, bytes memory VoterCallData) = storageContract.call(abi.encodeWithSignature("fetchVoterCallData(address,uint256)",presaleToRefundFromOwnerAddress,_presaleNum)); //require(fetchVoterCallData, "voter data fetch failed"); //(address presaleAddressFetched,address uniAddressFetched) = abi.decode(VoterCallData, (address,address)); (address presaleAddressFetched,address uniAddressFetched) = StorageContractInterface(storageContract).fetchVoterCallData(presaleToRefundFromOwnerAddress,_presaleNum); totalRefundedFromPlatform = totalRefundedFromPlatform.add(checkTotalEthraisedOfPresale(presaleToRefundFromOwnerAddress,_presaleNum)); // require(now > presales[presaleToRefundFromOwnerAddress].govStartTime, "governance time not started yet"); //address[3] memory finalizeInput = [address(0), presaleToRefundFromOwnerAddress, uniAddressFetched]; //(bool _finalized, bytes memory _finalizedReturn) = presaleAddressFetched.call(abi.encodeWithSignature("finalizeAnytime(address[3],bool)", finalizeInput, false)); //require(_finalized, "Finalization Refund call failed"); PresaleContractInterface(presaleAddressFetched).finalizeAnytime([address(0), presaleToRefundFromOwnerAddress],false); //(bool addFailFilter, bytes memory addFailFilterReturn) = storageContract.call(abi.encodeWithSignature("addFailFilter(address,uint256)", presaleToRefundFromOwnerAddress, _presaleNum)); //require(addFailFilter, "adding to Fail Filter failed"); StorageContractInterface(storageContract).addFailFilter(presaleToRefundFromOwnerAddress, _presaleNum); } /* function getNumberOfPresaleOwners() public view returns(uint256) { return OwnerIndex; } *//* function PlatformUnlockLP(address presaleToRefundFromOwnerAddress, address _routerAddress) public onlyOwner { RouterInterface(payable(presales[presaleToRefundFromOwnerAddress].uniswapDep)).refundUniLPbyPlatform(_routerAddress); } */ function enableWhitelist(uint256 _presaleNum) public payable { //(bool presaleAddressBool, bytes memory presaleAddressFetch) = storageContract.call(abi.encodeWithSignature("fetchPresaleAddress(address,uint256)",msg.sender,_presaleNum)); //require(presaleAddressBool, "presale address fetch failed"); //address presaleAddressFetched = abi.decode(presaleAddressFetch, (address)); address presaleAddressFetched = StorageContractInterface(storageContract).fetchPresaleAddress(msg.sender,_presaleNum); require(msg.value >= FeeCheckContractInterface(feeCheckContract).getWhitelistFees(dappWhitelistFeeName), "msg.value must be >= whitelist fees!"); //payable(feeContract).transfer(msg.value); FeeDepositContractInterface(feeContract).payment{value: msg.value}(2); // 2 at the end means it will be registerred in the fee deposit contract as a whitelist fee for regular presale //require(presales[msg.sender].exists, "user has no presale!"); //(bool _enableWhitelist, bytes memory _whitelistEnableReturn) = presaleAddressFetched.call(abi.encodeWithSignature("enableWhitelist()")); //require(_enableWhitelist, "Whitelist enablement failed"); PresaleContractInterface(presaleAddressFetched).enableWhitelist(); } function disableWhitelist(uint256 _presaleNum) public { //(bool presaleAddressBool, bytes memory presaleAddressFetch) = storageContract.call(abi.encodeWithSignature("fetchPresaleAddress(address,uint256)",msg.sender,_presaleNum)); //require(presaleAddressBool, "presale address fetch failed"); //address presaleAddressFetched = abi.decode(presaleAddressFetch, (address)); address presaleAddressFetched = StorageContractInterface(storageContract).fetchPresaleAddress(msg.sender,_presaleNum); //require(msg.value >= whitelistFees, "msg.value must be >= whitelist fees!"); //payable(feeContract).transfer(whitelistFees); //require(presales[msg.sender].exists, "user has no presale!"); //(bool _disableWhitelist, bytes memory _whitelistDisableReturn) = presaleAddressFetched.call(abi.encodeWithSignature("disableWhitelist()")); //require(_disableWhitelist, "Whitelist disablement failed"); PresaleContractInterface(presaleAddressFetched).disableWhitelist(); } function AddToWhitelist(address[] memory _whitelistAddress, uint256 _presaleNum) public { //(bool presaleAddressBool, bytes memory presaleAddressFetch) = storageContract.call(abi.encodeWithSignature("fetchPresaleAddress(address,uint256)",msg.sender,_presaleNum)); //require(presaleAddressBool, "presale address fetch failed"); //address presaleAddressFetched = abi.decode(presaleAddressFetch, (address)); address presaleAddressFetched = StorageContractInterface(storageContract).fetchPresaleAddress(msg.sender,_presaleNum); //require(presales[msg.sender].exists, "user has no presale!"); for (uint256 i = 0; i < _whitelistAddress.length; i++) { //(bool _addToWhitelist, bytes memory _addToWhitelistReturn) = presaleAddressFetched.call(abi.encodeWithSignature("addToWhitelist(address)", _whitelistAddress[i])); //require(_addToWhitelist, "Whitelist addition failed"); PresaleContractInterface(presaleAddressFetched).addToWhitelist(_whitelistAddress[i]); } } function RemoveFromWhitelist(address[] memory _whitelistAddress, uint256 _presaleNum) public { //(bool presaleAddressBool, bytes memory presaleAddressFetch) = storageContract.call(abi.encodeWithSignature("fetchPresaleAddress(address,uint256)",msg.sender,_presaleNum)); //require(presaleAddressBool, "presale address fetch failed"); //address presaleAddressFetched = abi.decode(presaleAddressFetch, (address)); address presaleAddressFetched = StorageContractInterface(storageContract).fetchPresaleAddress(msg.sender,_presaleNum); //require(presales[msg.sender].exists, "user has no presale!"); for (uint256 i = 0; i < _whitelistAddress.length; i++) { //(bool _addToWhitelist, bytes memory _addToWhitelistReturn) = presaleAddressFetched.call(abi.encodeWithSignature("removeFromWhitelist(address)", _whitelistAddress[i])); //require(_addToWhitelist, "Whitelist removal failed"); PresaleContractInterface(presaleAddressFetched).removeFromWhitelist(_whitelistAddress[i]); } } function updatePresaleDapp(address _newPresaleDapp) onlyOwner public { require(_newPresaleDapp != address(0x0), "presale dapp cant be 0x0"); presaleDappAddr = _newPresaleDapp; } /* function updateNFTPresaleDapp(address _newNFTPresaleDapp) onlyOwner public { require(_newNFTPresaleDapp != address(0x0), "presale dapp cant be 0x0"); presaleNFTDappAddr = _newNFTPresaleDapp; } function updateNFTDapp(address _newNFTDapp) onlyOwner public { require(_newNFTDapp != address(0x0), "presale dapp cant be 0x0"); NFTDappAddr = _newNFTDapp; } */ /* function updateRouterDapp(address _newRouterDapp) onlyOwner public { require(_newRouterDapp != address(0x0), "router dapp cant be 0x0"); routerDappAddr = _newRouterDapp; } */ function creationPresaleStateChange(bool _input) public onlyOwner { // require(creationEnabled,"already disabled"); creationPresaleEnabled = _input; } function creationNFTPresaleStateChange(bool _input) public onlyOwner { // require(creationEnabled,"already disabled"); creationNFTPresaleEnabled = _input; } function addRouter(address _newRouter) onlyOwner public { require(!RouterValid[_newRouter], "already added!"); RouterValid[_newRouter] = true; routerNumber[_newRouter] = totalRouters; routerRecord[totalRouters] = _newRouter; totalRouters++; } function getStuckBNB() public onlyOwner { payable(owner).transfer(address(this).balance); } function removeRouter(address _newRouter) onlyOwner public { require(RouterValid[_newRouter], "not in added list"); RouterValid[_newRouter] = false; } function changeExtraTokenPer(uint256 _newPer) onlyOwner public { require(_newPer > 0, "Invalid percentage value"); extraAmountPer = _newPer; } function changeFeeContract(address _newContract) onlyOwner public { require(_newContract != address(0x0),"addr cannot be zero"); feeContract = _newContract; } function changeFeeCheckContract(address _newFeeCheckContract) onlyOwner public { require(_newFeeCheckContract != address(0x0),"addr cannot be zero"); feeCheckContract = _newFeeCheckContract; } function changeStorageContract(address _newStorageContract) onlyOwner public { require(_newStorageContract != address(0x0),"addr cannot be zero"); storageContract = _newStorageContract; } function changeReferralContract(address _newReferralContract) onlyOwner public { require(_newReferralContract != address(0x0),"addr cannot be zero"); referralDappAddr = _newReferralContract; } function enableRefTOkenFee() onlyOwner public { require(!tokenFeeToReferrer,"already enabled"); tokenFeeToReferrer = true; } function disableRefTOkenFee() onlyOwner public { require(tokenFeeToReferrer,"already disabled"); tokenFeeToReferrer = false; } function changeminLockTime(uint256 _newMinLockTime) onlyOwner public { minLockTime = _newMinLockTime; } function transferPresaleOwner(address _presale,address _newOwner) onlyOwner public { Ownable(_presale).transferOwnership(_newOwner); } function setActiveFalseFilter(bool _activeFalse,bool _filter) onlyOwner public { activeFalse = _activeFalse; filter = _filter; } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_presaleDappAddr","type":"address"},{"internalType":"address","name":"_feeRecieveContract","type":"address"},{"internalType":"address","name":"_storageContract","type":"address"},{"internalType":"address","name":"_referralContract","type":"address"},{"internalType":"address","name":"_feeCheckContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address[]","name":"_whitelistAddress","type":"address[]"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"AddToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAirdropFee","type":"uint256"}],"name":"ChangeAirdropFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newVoterAddress","type":"address"}],"name":"ChangeVoterAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[10]","name":"_tokenInfo","type":"string[10]"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256[2]","name":"start_end_time","type":"uint256[2]"},{"internalType":"uint256[5]","name":"soft_hard_cap_rate_min_max_eth","type":"uint256[5]"},{"internalType":"uint256[3]","name":"uniswap_info_arr","type":"uint256[3]"},{"internalType":"address","name":"_routerAddress","type":"address"},{"internalType":"string","name":"_referralCode","type":"string"}],"name":"CreatePresaleDep","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_whitelistAddress","type":"address[]"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"RemoveFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"RouterValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activeFalse","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRouter","type":"address"}],"name":"addRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"callFinalizeDG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDelta","type":"uint256"}],"name":"changeDeltaStartEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPer","type":"uint256"}],"name":"changeExtraTokenPer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newFeeCheckContract","type":"address"}],"name":"changeFeeCheckContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newContract","type":"address"}],"name":"changeFeeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newReferralContract","type":"address"}],"name":"changeReferralContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newStorageContract","type":"address"}],"name":"changeStorageContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uniPer","type":"uint256"}],"name":"changeUniPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinLockTime","type":"uint256"}],"name":"changeminLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presaleToRefundFromOwnerAddress","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"checkTotalEthraisedOfPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creationNFTPresaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_input","type":"bool"}],"name":"creationNFTPresaleStateChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creationPresaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_input","type":"bool"}],"name":"creationPresaleStateChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dappFeeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dappName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dappWhitelistFeeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deltaStartEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableRefTOkenFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"disableWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRefTOkenFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"enableWhitelist","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"extraAmountPer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeCheckContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"filter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStuckBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hundred","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minUniPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleDappAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"presaleFinalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"presaleOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleToRefPer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleToReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralDappAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRouter","type":"address"}],"name":"removeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"routerNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"routerRecord","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_activeFalse","type":"bool"},{"internalType":"bool","name":"_filter","type":"bool"}],"name":"setActiveFalseFilter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"storageContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenFeeToReferrer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRaisedOnPlatform","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRefundedFromPlatform","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRouters","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_presale","type":"address"},{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferPresaleOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPresaleDapp","type":"address"}],"name":"updatePresaleDapp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"voter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"presaleToRefundFromOwnerAddress","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"voterCallsFinalizeRefund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presaleToRefundFromOwnerAddress","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"voterCallsFinalizeRefundAnytime","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6002600181905562278d00908190556032600555600c5560c0604052600f60809081526e283932b9b0b632a232b83637bcb2b960891b60a052600d9062000047908262000221565b5060408051808201909152600e8082526d72656750726573616c654665657360901b6020830152906200007b908262000221565b5060408051808201909152601081526f72656757686974656c6973744665657360801b6020820152600f90620000b2908262000221565b506011805463ffff0000191663010100001790556002601b556064601c55601d805461ffff1916610101179055348015620000ec57600080fd5b506040516200457d3803806200457d8339810160408190526200010f916200030a565b60038054336001600160a01b0319918216179091556006805482166001600160a01b0397881617905560008054821695871695909517909455600880548516938616939093179092556007805484169185169190911790556009805490921692169190911790556200037a565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001a757607f821691505b602082108103620001c857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021c57600081815260208120601f850160051c81016020861015620001f75750805b601f850160051c820191505b81811015620002185782815560010162000203565b5050505b505050565b81516001600160401b038111156200023d576200023d6200017c565b62000255816200024e845462000192565b84620001ce565b602080601f8311600181146200028d5760008415620002745750858301515b600019600386901b1c1916600185901b17855562000218565b600085815260208120601f198616915b82811015620002be578886015182559484019460019091019084016200029d565b5085821015620002dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516001600160a01b03811681146200030557600080fd5b919050565b600080600080600060a086880312156200032357600080fd5b6200032e86620002ed565b94506200033e60208701620002ed565b93506200034e60408701620002ed565b92506200035e60608701620002ed565b91506200036e60808701620002ed565b90509295509295909350565b6141f3806200038a6000396000f3fe6080604052600436106102e95760003560e01c8063041f78cc146102ee578063042d97821461031057806306bb746e1461034457806306e29712146103645780630c52662e146103915780630d77c7df146103b1578063108d9447146103c457806311ce0267146103fa57806324ca984e1461041a578063280db4401461043a578063284def151461045a578063297054fb1461047e578063344eaa2714610494578063363d9efc146104b65780634055f612146104cc578063426b487f146104ec5780634503a6d31461050b578063455991361461052057806346c96aac1461053657806348e5b7d4146105565780634e6b53f7146105915780634f81c1ff146105b15780634fa361e7146105c65780635787b142146105e657806359f962f6146106065780635bc39e0f1461061c5780635bff9a271461063c5780635fadcc1e1461065257806360b2aff314610673578063662b3522146106a957806369f5ef4a146106be5780636ae0b154146106d85780636e62d42f146106f8578063715018a6146107185780637a594b791461072d5780637d06b7fd1461074d5780637f928c82146107625780638da5cb5b1461077757806390f6c06514610797578063a42b45bf146107b7578063a60ff766146107cd578063a614fec1146107e3578063ab4304df14610819578063ae27508414610839578063b02fa76c14610859578063b517da2d14610879578063b56a038a14610899578063bc599775146108af578063c31c0187146108cf578063c8b7bc2e146108fc578063c94673171461090f578063d0b328631461092f578063d0f0d7361461095c578063d276aded1461097c578063d39492541461099c578063d50494cf146109bc578063d97f558e146109dc578063dd13b0dd146109fc578063dec379ff14610a2c578063e11f2d1314610a4c578063e3613cd914610a6c578063ea354fcb14610a81578063efcd708f14610aa1578063f2fde38b14610ad1578063f5415c1f14610af1578063f625fd3e14610b06575b600080fd5b3480156102fa57600080fd5b5061030e6103093660046137a8565b610b20565b005b34801561031c57600080fd5b5060115461032f90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561035057600080fd5b5061030e61035f3660046137a8565b610bed565b34801561037057600080fd5b50600054610384906001600160a01b031681565b60405161033b91906137c1565b34801561039d57600080fd5b5061030e6103ac366004613869565b610c09565b61030e6103bf3660046137a8565b610d1b565b3480156103d057600080fd5b506103846103df366004613920565b6014602052600090815260409020546001600160a01b031681565b34801561040657600080fd5b50600854610384906001600160a01b031681565b34801561042657600080fd5b5061030e610435366004613920565b610efd565b34801561044657600080fd5b5061030e610455366004613920565b610fd2565b34801561046657600080fd5b5061047060055481565b60405190815260200161033b565b34801561048a57600080fd5b50610470600c5481565b3480156104a057600080fd5b506104a9611031565b60405161033b919061398d565b3480156104c257600080fd5b50610470601a5481565b3480156104d857600080fd5b50600754610384906001600160a01b031681565b3480156104f857600080fd5b50601d5461032f90610100900460ff1681565b34801561051757600080fd5b5061030e6110bf565b34801561052c57600080fd5b5061047060105481565b34801561054257600080fd5b50600454610384906001600160a01b031681565b34801561056257600080fd5b5061032f6105713660046139a0565b601360209081526000928352604080842090915290825290205460ff1681565b34801561059d57600080fd5b5061030e6105ac366004613920565b6110e2565b3480156105bd57600080fd5b506104a961116c565b3480156105d257600080fd5b5061030e6105e13660046137a8565b611179565b3480156105f257600080fd5b5061030e610601366004613920565b61197f565b34801561061257600080fd5b50610470601b5481565b34801561062857600080fd5b5061030e6106373660046139da565b6119de565b34801561064857600080fd5b50610470601c5481565b34801561065e57600080fd5b5060115461032f906301000000900460ff1681565b34801561067f57600080fd5b5061038461068e3660046137a8565b6016602052600090815260409020546001600160a01b031681565b3480156106b557600080fd5b5061030e611a0f565b3480156106ca57600080fd5b5060115461032f9060ff1681565b3480156106e457600080fd5b5061030e6106f3366004613920565b611a7d565b34801561070457600080fd5b50600654610384906001600160a01b031681565b34801561072457600080fd5b5061030e611b11565b34801561073957600080fd5b5061030e6107483660046137a8565b611b72565b34801561075957600080fd5b5061030e611bd9565b34801561076e57600080fd5b5061030e611bff565b34801561078357600080fd5b50600354610384906001600160a01b031681565b3480156107a357600080fd5b5061030e6107b23660046137a8565b611c52565b3480156107c357600080fd5b50610470600a5481565b3480156107d957600080fd5b5061047060025481565b3480156107ef57600080fd5b506103846107fe3660046137a8565b6018602052600090815260409020546001600160a01b031681565b34801561082557600080fd5b5061030e6108343660046139da565b611c6e565b34801561084557600080fd5b5061030e6108543660046139f7565b611c98565b34801561086557600080fd5b5060115461032f9062010000900460ff1681565b34801561088557600080fd5b5061030e610894366004613920565b611ce1565b3480156108a557600080fd5b50610470600b5481565b3480156108bb57600080fd5b5061030e6108ca3660046137a8565b611d40565b3480156108db57600080fd5b506104706108ea366004613920565b60196020526000908152604090205481565b61030e61090a366004613b9e565b611df4565b34801561091b57600080fd5b5061030e61092a366004613920565b612dd1565b34801561093b57600080fd5b5061047061094a366004613920565b60156020526000908152604090205481565b34801561096857600080fd5b50600954610384906001600160a01b031681565b34801561098857600080fd5b5061030e6109973660046139a0565b612e30565b3480156109a857600080fd5b506104706109b73660046139a0565b612fc1565b3480156109c857600080fd5b5061030e6109d7366004613869565b6130aa565b3480156109e857600080fd5b5061030e6109f73660046139a0565b6131b6565b348015610a0857600080fd5b5061032f610a17366004613920565b60176020526000908152604090205460ff1681565b348015610a3857600080fd5b5061030e610a47366004613920565b613378565b348015610a5857600080fd5b5061030e610a673660046137a8565b613404565b348015610a7857600080fd5b506104a961346e565b348015610a8d57600080fd5b5061030e610a9c366004613cb3565b61347b565b348015610aad57600080fd5b5061032f610abc366004613920565b60126020526000908152604090205460ff1681565b348015610add57600080fd5b5061030e610aec366004613920565b6134d8565b348015610afd57600080fd5b5061030e6134f8565b348015610b1257600080fd5b50601d5461032f9060ff1681565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a690610b539033908690600401613ce1565b602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190613cfa565b9050806001600160a01b031663d6b0f4846040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bd157600080fd5b505af1158015610be5573d6000803e3d6000fd5b505050505050565b6003546001600160a01b03163314610c0457600080fd5b600255565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a690610c3c9033908690600401613ce1565b602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7d9190613cfa565b905060005b8351811015610d1557816001600160a01b0316638ab1d681858381518110610cac57610cac613d17565b60200260200101516040518263ffffffff1660e01b8152600401610cd091906137c1565b600060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050508080610d0d90613d43565b915050610c82565b50505050565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a690610d4e9033908690600401613ce1565b602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190613cfa565b600954604051631a51134960e01b81529192506001600160a01b031690631a51134990610dc190600f90600401613d96565b602060405180830381865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190613e42565b341015610e625760405162461bcd60e51b8152602060048201526024808201527f6d73672e76616c7565206d757374206265203e3d2077686974656c69737420666044820152636565732160e01b60648201526084015b60405180910390fd5b600054604051638b3c99e360e01b8152600260048201526001600160a01b0390911690638b3c99e39034906024016000604051808303818588803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b5050505050806001600160a01b031663cdfb2b4e6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bd157600080fd5b6003546001600160a01b03163314610f1457600080fd5b6001600160a01b03811660009081526017602052604090205460ff1615610f6e5760405162461bcd60e51b815260206004820152600e60248201526d616c72656164792061646465642160901b6044820152606401610e59565b6001600160a01b0381166000818152601760209081526040808320805460ff19166001179055601a80546019845282852081905584526018909252822080546001600160a01b03191690931790925581549190610fca83613d43565b919050555050565b6003546001600160a01b03163314610fe957600080fd5b6001600160a01b03811661100f5760405162461bcd60e51b8152600401610e5990613e5b565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600f805461103e90613d5c565b80601f016020809104026020016040519081016040528092919081815260200182805461106a90613d5c565b80156110b75780601f1061108c576101008083540402835291602001916110b7565b820191906000526020600020905b81548152906001019060200180831161109a57829003601f168201915b505050505081565b6003546001600160a01b031633146110d657600080fd5b6011805460ff19169055565b6003546001600160a01b031633146110f957600080fd5b6001600160a01b03811661114a5760405162461bcd60e51b8152602060048201526018602482015277070726573616c6520646170702063616e74206265203078360441b6044820152606401610e59565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600d805461103e90613d5c565b600854604051637e2439b360e11b8152600091829182916001600160a01b03169063fc487366906111b09033908890600401613ce1565b606060405180830381865afa1580156111cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f19190613e88565b9250925092506000826001600160a01b0316630f98c9186040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125d9190613e42565b90506000836001600160a01b03166329279ce96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c59190613e42565b6011549091506301000000900460ff161561139a5760085460405163cf25127360e01b81526001600160a01b039091169063cf2512739061130c9033908a90600401613ce1565b6020604051808303816000875af115801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190613ed5565b61139a5760405162461bcd60e51b815260206004820152601c60248201527b3ab730b13632903a379039b2ba10383932b9b0b632902334b63a32b960211b6044820152606401610e59565b60115462010000900460ff16156114785760085460405163f3d7443b60e01b81526001600160a01b039091169063f3d7443b906113dd9033908a90600401613ce1565b6020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190613ed5565b6114785760405162461bcd60e51b815260206004820152602360248201527f756e61626c6520746f207365742070726573616c65206163746976652073746160448201526274757360e81b6064820152608401610e59565b6000846001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190613e42565b90506000856001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115429190613e42565b905080821015801561155357508115155b801561155e57508315155b1561187957600a54611570908361356a565b600a556001546000906115919060649061158b9086906135ce565b90613650565b600080546001600160a01b038a81168084526014602090815260408086205460159092529485902054601154955163f6e99c0d60e01b8152948416600486015292166024840152604483019190915261010090920460ff16151560648201529192509063f6e99c0d906084016020604051808303816000875af115801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613ed5565b6116855760405162461bcd60e51b8152602060048201526016602482015275195c9c9bdc88185d081b5a5b9d08199bdc881c1b185d60521b6044820152606401610e59565b6040805180820182526001600160a01b03808a166000818152601460209081528582205490931684523383850152818152601590925290839020549251634d2a907360e01b81529092634d2a9073926116e692909190600190600401613f1e565b6020604051808303816000875af1158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190613ed5565b6117725760405162461bcd60e51b815260206004820152601a60248201527966696e616c697a65206661696c6564206174207375636365737360301b6044820152606401610e59565b6007546001600160a01b0388811660009081526014602090815260408083205460159092529091205492821692631d592a4d9291909116906117bc9060649061158b9087906135ce565b6040518363ffffffff1660e01b81526004016117d9929190613ce1565b6020604051808303816000875af11580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181c9190613ed5565b6118735760405162461bcd60e51b815260206004820152602260248201527f726566657272657220757064617465206661696c65642061742066696e616c696044820152617a6560f01b6064820152608401610e59565b50611975565b80821080611885575081155b1561197557600b54611897908361356a565b600b556040805180820182526000808252336020808401919091526001600160a01b038a168083526015909152838220549351634d2a907360e01b81529093634d2a9073936118ea939092600401613f1e565b6020604051808303816000875af1158015611909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192d9190613ed5565b6119755760405162461bcd60e51b8152602060048201526019602482015278199a5b985b1a5e994819985a5b195908185d081c99599d5b99603a1b6044820152606401610e59565b5050505050505050565b6003546001600160a01b0316331461199657600080fd5b6001600160a01b0381166119bc5760405162461bcd60e51b8152600401610e5990613e5b565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146119f557600080fd5b601d80549115156101000261ff0019909216919091179055565b6003546001600160a01b03163314611a2657600080fd5b601154610100900460ff16611a705760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610e59565b6011805461ff0019169055565b6003546001600160a01b03163314611a9457600080fd5b6001600160a01b03811660009081526017602052604090205460ff16611af05760405162461bcd60e51b81526020600482015260116024820152701b9bdd081a5b881859191959081b1a5cdd607a1b6044820152606401610e59565b6001600160a01b03166000908152601760205260409020805460ff19169055565b6003546001600160a01b03163314611b2857600080fd5b6003546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600380546001600160a01b0319169055565b6003546001600160a01b03163314611b8957600080fd5b60008111611bd45760405162461bcd60e51b8152602060048201526018602482015277496e76616c69642070657263656e746167652076616c756560401b6044820152606401610e59565b601b55565b6003546001600160a01b03163314611bf057600080fd5b6011805460ff19166001179055565b6003546001600160a01b03163314611c1657600080fd5b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611c4f573d6000803e3d6000fd5b50565b6003546001600160a01b03163314611c6957600080fd5b600c55565b6003546001600160a01b03163314611c8557600080fd5b601d805460ff1916911515919091179055565b6003546001600160a01b03163314611caf57600080fd5b6011805463ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102179055565b6003546001600160a01b03163314611cf857600080fd5b6001600160a01b038116611d1e5760405162461bcd60e51b8152600401610e5990613e5b565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314611d5757600080fd5b6064811115611da15760405162461bcd60e51b81526020600482015260166024820152756f7574206f662072616e6765206665652076616c756560501b6044820152606401610e59565b6001548103611def5760405162461bcd60e51b815260206004820152601a6024820152794e6577206665652069732073616d65206173204f6c642066656560301b6044820152606401610e59565b600155565b601d5460ff16611e425760405162461bcd60e51b815260206004820152601960248201527818dc99585d1a5bdb88141c995cd85b1948191a5cd8589b1959603a1b6044820152606401610e59565b84514210611e8d5760405162461bcd60e51b815260206004820152601860248201527773746172742074696d65206e6f7420696e2066757475726560401b6044820152606401610e59565b600c54611ea3908660005b60200201519061356a565b60208601511115611ef65760405162461bcd60e51b815260206004820152601e60248201527f70726573616c65206475726174696f6e2065786365656473206c696d697400006044820152606401610e59565b6020840151611f06906002613650565b84511015611f615760405162461bcd60e51b815260206004820152602260248201527f73636170206d7573742062652061746c656173742068616c66206f6620686361604482015261702160f01b6064820152608401610e59565b6060840151611fa95760405162461bcd60e51b815260206004820152601460248201527306d696e20636f6e74206d757374206265203e20360641b6044820152606401610e59565b6060840151608085015110156120005760405162461bcd60e51b815260206004820152601c60248201527b1b585e0818dbdb9d081b5d5cdd081899480f8f481b5a5b8818dbdb9d60221b6044820152606401610e59565b6001600160a01b03821660009081526017602052604090205460ff166120615760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420726f75746572206164647265737360501b6044820152606401610e59565b60115460ff16156121015760405160200161207b90613f42565b60405160208183030381529060405280519060200120816040516020016120a29190613f55565b60405160208183030381529060405280519060200120146121015760405162461bcd60e51b81526020600482015260196024820152781bdb9b1e48191959985d5b1d0818dbd91948185b1b1bddd959603a1b6044820152606401610e59565b60405160200161211090613f42565b60405160208183030381529060405280519060200120816040516020016121379190613f55565b604051602081830303815290604052805190602001201461267f576007546040516349e96fdd60e01b81526001600160a01b03909116906349e96fdd9061218290849060040161398d565b6020604051808303816000875af11580156121a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c59190613ed5565b6122095760405162461bcd60e51b8152602060048201526015602482015274696e76616c696420646973636f756e7420636f646560581b6044820152606401610e59565b601c54600754604051635f51485160e11b815261230b929161158b91612293916001600160a01b03169063bea290a29061224790889060040161398d565b6020604051808303816000875af1158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228a9190613e42565b601c549061368f565b600954604051633ae42caf60e21b81526001600160a01b039091169063eb90b2bc906122c490600e90600401613d96565b602060405180830381865afa1580156122e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123059190613e42565b906135ce565b34101561236b5760405162461bcd60e51b815260206004820152602860248201527f6d73672e76616c7565206d75737420626520657175616c20746f20726566657260448201526772616c206665652160c01b6064820152608401610e59565b600754604051630fc0b3fd60e01b81526000916123f39160649161158b916001600160a01b0390911690630fc0b3fd906123a990889060040161398d565b6020604051808303816000875af11580156123c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ec9190613e42565b34906135ce565b600754604051630f22420560e11b81529192506001600160a01b031690631e44840a9061242490859060040161398d565b6020604051808303816000875af1158015612443573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124679190613cfa565b6001600160a01b03168160405160006040518083038185875af1925050503d80600081146124b1576040519150601f19603f3d011682016040523d82523d6000602084013e6124b6565b606091505b5050600054600754604051630fc0b3fd60e01b81526001600160a01b039283169350638b3c99e3926125039260649261158b926123ec921690630fc0b3fd90612247908b9060040161398d565b6040516001600160e01b031960e084901b168152600060048201526024016000604051808303818588803b15801561253a57600080fd5b505af115801561254e573d6000803e3d6000fd5b5050600754604051630f22420560e11b81526001600160a01b039091169350631d592a4d9250839150631e44840a9061258b90879060040161398d565b6020604051808303816000875af11580156125aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ce9190613cfa565b836040518363ffffffff1660e01b81526004016125ec929190613ce1565b6020604051808303816000875af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190613ed5565b6126795760405162461bcd60e51b815260206004820152601b60248201527a1c9959995c9c995c905b5bdd5b9d155c19185d194819985a5b1959602a1b6044820152606401610e59565b506127b1565b600954604051633ae42caf60e21b81526001600160a01b039091169063eb90b2bc906126b090600e90600401613d96565b602060405180830381865afa1580156126cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f19190613e42565b3410156127505760405162461bcd60e51b815260206004820152602760248201527f6d73672e76616c7565206d75737420626520657175616c20746f2070726573616044820152666c65206665652160c81b6064820152608401610e59565b600054604051638b3c99e360e01b8152600160048201526001600160a01b0390911690638b3c99e39034906024016000604051808303818588803b15801561279757600080fd5b505af11580156127ab573d6000803e3d6000fd5b50505050505b60208501516127c4610258876000611e98565b11156128125760405162461bcd60e51b815260206004820181905260248201527f70726573616c6520706572696f64206c657373207468616e206d696e696d756d6044820152606401610e59565b60025461282190866001611e98565b835111612898576040805162461bcd60e51b81526020600482015260248101919091527f4c6f636b2074696d65206d75737420626520686967686572207468616e20707260448201527f6573616c6520656e6420706c7573206d696e696d756d206c6f636b2074696d656064820152608401610e59565b6005546040840151116129045760405162461bcd60e51b815260206004820152602e60248201527f556e69737761702070657263656e74616765206973206c6f776572207468616e60448201526d081b5a5b881d1a1c995cda1bdb1960921b6064820152608401610e59565b60085483516040805160608101825260018152600060208201819052818301529051630282544d60e21b81526001600160a01b0390931692630a09513492612953928b92339190600401613f71565b6020604051808303816000875af1158015612972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129969190613ed5565b6129dc5760405162461bcd60e51b81526020600482015260176024820152761cdd1bdc9859d9481859191a5d1a5bdb8819985a5b1959604a1b6044820152606401610e59565b60065460408051608081018252308152336020808301919091526001600160a01b038a811683850152868116606084015283518085018552888301518152888501518184015284518086018652601b5481528951938101939093529351638c2f037d60e01b81526000959190911693638c2f037d93612a659390928c928c929091600401613feb565b6020604051808303816000875af1158015612a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa89190613cfa565b600754604051630f22420560e11b81529192506001600160a01b031690631e44840a90612ad990859060040161398d565b6020604051808303816000875af1158015612af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1c9190613cfa565b6001600160a01b038281166000908152601460205260409081902080546001600160a01b031916938316939093179092556007549151630fc0b3fd60e01b8152911690630fc0b3fd90612b7390859060040161398d565b6020604051808303816000875af1158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb69190613e42565b6001600160a01b03808316600090815260156020526040808220939093556008549251631996f55960e11b81529092612c4c9260019291169063332deab290612c039033906004016137c1565b6020604051808303816000875af1158015612c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c469190613e42565b9061368f565b600854604051638252401760e01b81529192506001600160a01b031690638252401790612c83908c9086903390879060040161407d565b6020604051808303816000875af1158015612ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc69190613ed5565b612d0c5760405162461bcd60e51b81526020600482015260176024820152761c1c995cd85b19481859191c881859190819985a5b1959604a1b6044820152606401610e59565b600754604051635ac066d560e01b81526001600160a01b0390911690635ac066d590612d3e90869086906004016140e8565b6020604051808303816000875af1158015612d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d819190613ed5565b612dc65760405162461bcd60e51b815260206004820152601660248201527518dbd919481d5cd9481d5c19185d194819985a5b195960521b6044820152606401610e59565b505050505050505050565b6003546001600160a01b03163314612de857600080fd5b6001600160a01b038116612e0e5760405162461bcd60e51b8152600401610e5990613e5b565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b03163314612e4757600080fd5b60085460405163d6b4441160e01b815260009182916001600160a01b039091169063d6b4441190612e7e9087908790600401613ce1565b6040805180830381865afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe9190614112565b91509150612ed8612ecf8585612fc1565b600b549061356a565b600b5560408051808201825260008082526001600160a01b0387811660208401529251631c8d674960e01b815292851692631c8d674992612f1d929091600401614141565b6020604051808303816000875af1158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190613ed5565b50600854604051634f647a1b60e11b81526001600160a01b0390911690639ec8f43690612f939087908790600401613ce1565b600060405180830381600087803b158015612fad57600080fd5b505af1158015611975573d6000803e3d6000fd5b600854604051632b6419d360e11b815260009182916001600160a01b03909116906356c833a690612ff89087908790600401613ce1565b602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190613cfa565b90506000816001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f9190613e42565b925050505b92915050565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a6906130dd9033908690600401613ce1565b602060405180830381865afa1580156130fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311e9190613cfa565b905060005b8351811015610d1557816001600160a01b031663e43252d785838151811061314d5761314d613d17565b60200260200101516040518263ffffffff1660e01b815260040161317191906137c1565b600060405180830381600087803b15801561318b57600080fd5b505af115801561319f573d6000803e3d6000fd5b5050505080806131ae90613d43565b915050613123565b6004546001600160a01b031633146131cd57600080fd5b60085460405163d6b4441160e01b815260009182916001600160a01b039091169063d6b44411906132049087908790600401613ce1565b6040805180830381865afa158015613220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132449190614112565b91509150613255612ecf8585612fc1565b600b5560408051808201825260008082526001600160a01b038781166020808501919091529086168083526015909152838220549351634d2a907360e01b81529093634d2a9073936132ab939092600401613f1e565b6020604051808303816000875af11580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190613ed5565b6133465760405162461bcd60e51b8152602060048201526024808201527f66696e616c697a65206661696c656420617420766f7465722063616c6c207265604482015263199d5b9960e21b6064820152608401610e59565b600854604051634f647a1b60e11b81526001600160a01b0390911690639ec8f43690612f939087908790600401613ce1565b6003546001600160a01b0316331461338f57600080fd5b6001600160a01b0381166133e25760405162461bcd60e51b815260206004820152601a6024820152792732bb9020b232391031b0b73a103132903d32b9379030b2323960311b6044820152606401610e59565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461341b57600080fd5b60648111156134695760405162461bcd60e51b815260206004820152601a602482015279756e695065722076616c7565206f7574736964652072616e676560301b6044820152606401610e59565b600555565b600e805461103e90613d5c565b6003546001600160a01b0316331461349257600080fd5b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b906134be9084906004016137c1565b600060405180830381600087803b158015610bd157600080fd5b6003546001600160a01b031633146134ef57600080fd5b611c4f816136d1565b6003546001600160a01b0316331461350f57600080fd5b601154610100900460ff16156135595760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610e59565b6011805461ff001916610100179055565b600080613577838561415e565b9050838110156135c75760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b6044820152606401610e59565b9392505050565b6000826000036135e0575060006130a4565b60006135ec8385614171565b9050826135f98583614188565b146135c75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e59565b60006135c783836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250613740565b60006135c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613777565b6001600160a01b0381166136e457600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600081836137615760405162461bcd60e51b8152600401610e59919061398d565b50600061376e8486614188565b95945050505050565b6000818484111561379b5760405162461bcd60e51b8152600401610e59919061398d565b50600061376e84866141aa565b6000602082840312156137ba57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171561380e5761380e6137d5565b60405290565b604051601f8201601f191681016001600160401b038111828210171561383c5761383c6137d5565b604052919050565b6001600160a01b0381168114611c4f57600080fd5b803561386481613844565b919050565b6000806040838503121561387c57600080fd5b82356001600160401b038082111561389357600080fd5b818501915085601f8301126138a757600080fd5b81356020828211156138bb576138bb6137d5565b8160051b92506138cc818401613814565b82815292840181019281810190898511156138e657600080fd5b948201945b84861015613910578535935061390084613844565b83825294820194908201906138eb565b9997909101359750505050505050565b60006020828403121561393257600080fd5b81356135c781613844565b60005b83811015613958578181015183820152602001613940565b50506000910152565b6000815180845261397981602086016020860161393d565b601f01601f19169290920160200192915050565b6020815260006135c76020830184613961565b600080604083850312156139b357600080fd5b82356139be81613844565b946020939093013593505050565b8015158114611c4f57600080fd5b6000602082840312156139ec57600080fd5b81356135c7816139cc565b60008060408385031215613a0a57600080fd5b8235613a15816139cc565b91506020830135613a25816139cc565b809150509250929050565b600082601f830112613a4157600080fd5b81356001600160401b03811115613a5a57613a5a6137d5565b613a6d601f8201601f1916602001613814565b818152846020838601011115613a8257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613ab057600080fd5b604080519081016001600160401b0381118282101715613ad257613ad26137d5565b8060405250806040840185811115613ae957600080fd5b845b81811015613b03578035835260209283019201613aeb565b509195945050505050565b600082601f830112613b1f57600080fd5b60405160a081016001600160401b0381118282101715613b4157613b416137d5565b6040528060a0840185811115613ae957600080fd5b600082601f830112613b6757600080fd5b604051606081016001600160401b0381118282101715613b8957613b896137d5565b604052806060840185811115613ae957600080fd5b60008060008060008060006101c0888a031215613bba57600080fd5b6001600160401b038835811015613bd057600080fd5b883589018a601f820112613be357600080fd5b613beb6137eb565b8061014083018d811115613bfe57600080fd5b835b81811015613c31578581351115613c1657600080fd5b613c238f82358701613a30565b845260209384019301613c00565b5050809a50505050613c4560208a01613859565b9650613c548a60408b01613a9f565b9550613c638a60808b01613b0e565b9450613c738a6101208b01613b56565b9350613c826101808a01613859565b92506101a089013581811115613c9757600080fd5b613ca38b828c01613a30565b9250505092959891949750929550565b60008060408385031215613cc657600080fd5b8235613cd181613844565b91506020830135613a2581613844565b6001600160a01b03929092168252602082015260400190565b600060208284031215613d0c57600080fd5b81516135c781613844565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613d5557613d55613d2d565b5060010190565b600181811c90821680613d7057607f821691505b602082108103613d9057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208083526000845481600182811c915080831680613db857607f831692505b8583108103613dd557634e487b7160e01b85526022600452602485fd5b878601838152602001818015613df25760018114613e0857613e33565b60ff198616825284151560051b82019650613e33565b60008b81526020902060005b86811015613e2d57815484820152908501908901613e14565b83019750505b50949998505050505050505050565b600060208284031215613e5457600080fd5b5051919050565b602080825260139082015272616464722063616e6e6f74206265207a65726f60681b604082015260600190565b600080600060608486031215613e9d57600080fd5b8351613ea881613844565b6020850151909350613eb981613844565b6040850151909250613eca81613844565b809150509250925092565b600060208284031215613ee757600080fd5b81516135c7816139cc565b8060005b6002811015610d155781516001600160a01b0316845260209384019390910190600101613ef6565b60808101613f2c8286613ef2565b8360408301528215156060830152949350505050565b66191959985d5b1d60ca1b815260070190565b60008251613f6781846020870161393d565b9190910192915050565b6001600160a01b0385811682526020808301869052908416604083015260c082019060608301908460005b6003811015613fbb578151151584529282019290820190600101613f9c565b5050505095945050505050565b8060005b6002811015610d15578151845260209384019390910190600101613fcc565b6101e08101818760005b600481101561401d5781516001600160a01b0316835260209283019290910190600101613ff5565b50505061402d6080830187613fc8565b60c082018560005b6005811015614054578151835260209283019290910190600101614035565b505050614065610160830185613fc8565b6140736101a0830184613fc8565b9695505050505050565b60808082526000906101c0830190830187835b600a8110156140c257607f198685030183526140ad848351613961565b93506020928301929190910190600101614090565b5050506001600160a01b0395861660208401529390941660408201526060015292915050565b6040815260006140fb6040830185613961565b905060018060a01b03831660208301529392505050565b6000806040838503121561412557600080fd5b825161413081613844565b6020840151909250613a2581613844565b6060810161414f8285613ef2565b82151560408301529392505050565b808201808211156130a4576130a4613d2d565b80820281158282048414176130a4576130a4613d2d565b6000826141a557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156130a4576130a4613d2d56fea26469706673582212201360b4a341f921ba523dff17711a9a463e03fc73ce4d2828339e9bea0956183a64736f6c634300081100330000000000000000000000003d9411fbe9b0f7b7d55eedd3ae718bcdac0ae9ed0000000000000000000000000febb541ef3632925cd67daf9e82cdc8ec7a71ef00000000000000000000000037d79eea1f3d5475a7e0f0cd8f8130df8500ca29000000000000000000000000344129238deb523c02e8be4c0e7e630780711bc5000000000000000000000000c1b4c3862d252e4146ca7776faf4460b5bc2ffd9
Deployed Bytecode
0x6080604052600436106102e95760003560e01c8063041f78cc146102ee578063042d97821461031057806306bb746e1461034457806306e29712146103645780630c52662e146103915780630d77c7df146103b1578063108d9447146103c457806311ce0267146103fa57806324ca984e1461041a578063280db4401461043a578063284def151461045a578063297054fb1461047e578063344eaa2714610494578063363d9efc146104b65780634055f612146104cc578063426b487f146104ec5780634503a6d31461050b578063455991361461052057806346c96aac1461053657806348e5b7d4146105565780634e6b53f7146105915780634f81c1ff146105b15780634fa361e7146105c65780635787b142146105e657806359f962f6146106065780635bc39e0f1461061c5780635bff9a271461063c5780635fadcc1e1461065257806360b2aff314610673578063662b3522146106a957806369f5ef4a146106be5780636ae0b154146106d85780636e62d42f146106f8578063715018a6146107185780637a594b791461072d5780637d06b7fd1461074d5780637f928c82146107625780638da5cb5b1461077757806390f6c06514610797578063a42b45bf146107b7578063a60ff766146107cd578063a614fec1146107e3578063ab4304df14610819578063ae27508414610839578063b02fa76c14610859578063b517da2d14610879578063b56a038a14610899578063bc599775146108af578063c31c0187146108cf578063c8b7bc2e146108fc578063c94673171461090f578063d0b328631461092f578063d0f0d7361461095c578063d276aded1461097c578063d39492541461099c578063d50494cf146109bc578063d97f558e146109dc578063dd13b0dd146109fc578063dec379ff14610a2c578063e11f2d1314610a4c578063e3613cd914610a6c578063ea354fcb14610a81578063efcd708f14610aa1578063f2fde38b14610ad1578063f5415c1f14610af1578063f625fd3e14610b06575b600080fd5b3480156102fa57600080fd5b5061030e6103093660046137a8565b610b20565b005b34801561031c57600080fd5b5060115461032f90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561035057600080fd5b5061030e61035f3660046137a8565b610bed565b34801561037057600080fd5b50600054610384906001600160a01b031681565b60405161033b91906137c1565b34801561039d57600080fd5b5061030e6103ac366004613869565b610c09565b61030e6103bf3660046137a8565b610d1b565b3480156103d057600080fd5b506103846103df366004613920565b6014602052600090815260409020546001600160a01b031681565b34801561040657600080fd5b50600854610384906001600160a01b031681565b34801561042657600080fd5b5061030e610435366004613920565b610efd565b34801561044657600080fd5b5061030e610455366004613920565b610fd2565b34801561046657600080fd5b5061047060055481565b60405190815260200161033b565b34801561048a57600080fd5b50610470600c5481565b3480156104a057600080fd5b506104a9611031565b60405161033b919061398d565b3480156104c257600080fd5b50610470601a5481565b3480156104d857600080fd5b50600754610384906001600160a01b031681565b3480156104f857600080fd5b50601d5461032f90610100900460ff1681565b34801561051757600080fd5b5061030e6110bf565b34801561052c57600080fd5b5061047060105481565b34801561054257600080fd5b50600454610384906001600160a01b031681565b34801561056257600080fd5b5061032f6105713660046139a0565b601360209081526000928352604080842090915290825290205460ff1681565b34801561059d57600080fd5b5061030e6105ac366004613920565b6110e2565b3480156105bd57600080fd5b506104a961116c565b3480156105d257600080fd5b5061030e6105e13660046137a8565b611179565b3480156105f257600080fd5b5061030e610601366004613920565b61197f565b34801561061257600080fd5b50610470601b5481565b34801561062857600080fd5b5061030e6106373660046139da565b6119de565b34801561064857600080fd5b50610470601c5481565b34801561065e57600080fd5b5060115461032f906301000000900460ff1681565b34801561067f57600080fd5b5061038461068e3660046137a8565b6016602052600090815260409020546001600160a01b031681565b3480156106b557600080fd5b5061030e611a0f565b3480156106ca57600080fd5b5060115461032f9060ff1681565b3480156106e457600080fd5b5061030e6106f3366004613920565b611a7d565b34801561070457600080fd5b50600654610384906001600160a01b031681565b34801561072457600080fd5b5061030e611b11565b34801561073957600080fd5b5061030e6107483660046137a8565b611b72565b34801561075957600080fd5b5061030e611bd9565b34801561076e57600080fd5b5061030e611bff565b34801561078357600080fd5b50600354610384906001600160a01b031681565b3480156107a357600080fd5b5061030e6107b23660046137a8565b611c52565b3480156107c357600080fd5b50610470600a5481565b3480156107d957600080fd5b5061047060025481565b3480156107ef57600080fd5b506103846107fe3660046137a8565b6018602052600090815260409020546001600160a01b031681565b34801561082557600080fd5b5061030e6108343660046139da565b611c6e565b34801561084557600080fd5b5061030e6108543660046139f7565b611c98565b34801561086557600080fd5b5060115461032f9062010000900460ff1681565b34801561088557600080fd5b5061030e610894366004613920565b611ce1565b3480156108a557600080fd5b50610470600b5481565b3480156108bb57600080fd5b5061030e6108ca3660046137a8565b611d40565b3480156108db57600080fd5b506104706108ea366004613920565b60196020526000908152604090205481565b61030e61090a366004613b9e565b611df4565b34801561091b57600080fd5b5061030e61092a366004613920565b612dd1565b34801561093b57600080fd5b5061047061094a366004613920565b60156020526000908152604090205481565b34801561096857600080fd5b50600954610384906001600160a01b031681565b34801561098857600080fd5b5061030e6109973660046139a0565b612e30565b3480156109a857600080fd5b506104706109b73660046139a0565b612fc1565b3480156109c857600080fd5b5061030e6109d7366004613869565b6130aa565b3480156109e857600080fd5b5061030e6109f73660046139a0565b6131b6565b348015610a0857600080fd5b5061032f610a17366004613920565b60176020526000908152604090205460ff1681565b348015610a3857600080fd5b5061030e610a47366004613920565b613378565b348015610a5857600080fd5b5061030e610a673660046137a8565b613404565b348015610a7857600080fd5b506104a961346e565b348015610a8d57600080fd5b5061030e610a9c366004613cb3565b61347b565b348015610aad57600080fd5b5061032f610abc366004613920565b60126020526000908152604090205460ff1681565b348015610add57600080fd5b5061030e610aec366004613920565b6134d8565b348015610afd57600080fd5b5061030e6134f8565b348015610b1257600080fd5b50601d5461032f9060ff1681565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a690610b539033908690600401613ce1565b602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b949190613cfa565b9050806001600160a01b031663d6b0f4846040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bd157600080fd5b505af1158015610be5573d6000803e3d6000fd5b505050505050565b6003546001600160a01b03163314610c0457600080fd5b600255565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a690610c3c9033908690600401613ce1565b602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7d9190613cfa565b905060005b8351811015610d1557816001600160a01b0316638ab1d681858381518110610cac57610cac613d17565b60200260200101516040518263ffffffff1660e01b8152600401610cd091906137c1565b600060405180830381600087803b158015610cea57600080fd5b505af1158015610cfe573d6000803e3d6000fd5b505050508080610d0d90613d43565b915050610c82565b50505050565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a690610d4e9033908690600401613ce1565b602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190613cfa565b600954604051631a51134960e01b81529192506001600160a01b031690631a51134990610dc190600f90600401613d96565b602060405180830381865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190613e42565b341015610e625760405162461bcd60e51b8152602060048201526024808201527f6d73672e76616c7565206d757374206265203e3d2077686974656c69737420666044820152636565732160e01b60648201526084015b60405180910390fd5b600054604051638b3c99e360e01b8152600260048201526001600160a01b0390911690638b3c99e39034906024016000604051808303818588803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b5050505050806001600160a01b031663cdfb2b4e6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bd157600080fd5b6003546001600160a01b03163314610f1457600080fd5b6001600160a01b03811660009081526017602052604090205460ff1615610f6e5760405162461bcd60e51b815260206004820152600e60248201526d616c72656164792061646465642160901b6044820152606401610e59565b6001600160a01b0381166000818152601760209081526040808320805460ff19166001179055601a80546019845282852081905584526018909252822080546001600160a01b03191690931790925581549190610fca83613d43565b919050555050565b6003546001600160a01b03163314610fe957600080fd5b6001600160a01b03811661100f5760405162461bcd60e51b8152600401610e5990613e5b565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600f805461103e90613d5c565b80601f016020809104026020016040519081016040528092919081815260200182805461106a90613d5c565b80156110b75780601f1061108c576101008083540402835291602001916110b7565b820191906000526020600020905b81548152906001019060200180831161109a57829003601f168201915b505050505081565b6003546001600160a01b031633146110d657600080fd5b6011805460ff19169055565b6003546001600160a01b031633146110f957600080fd5b6001600160a01b03811661114a5760405162461bcd60e51b8152602060048201526018602482015277070726573616c6520646170702063616e74206265203078360441b6044820152606401610e59565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600d805461103e90613d5c565b600854604051637e2439b360e11b8152600091829182916001600160a01b03169063fc487366906111b09033908890600401613ce1565b606060405180830381865afa1580156111cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f19190613e88565b9250925092506000826001600160a01b0316630f98c9186040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125d9190613e42565b90506000836001600160a01b03166329279ce96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c59190613e42565b6011549091506301000000900460ff161561139a5760085460405163cf25127360e01b81526001600160a01b039091169063cf2512739061130c9033908a90600401613ce1565b6020604051808303816000875af115801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190613ed5565b61139a5760405162461bcd60e51b815260206004820152601c60248201527b3ab730b13632903a379039b2ba10383932b9b0b632902334b63a32b960211b6044820152606401610e59565b60115462010000900460ff16156114785760085460405163f3d7443b60e01b81526001600160a01b039091169063f3d7443b906113dd9033908a90600401613ce1565b6020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190613ed5565b6114785760405162461bcd60e51b815260206004820152602360248201527f756e61626c6520746f207365742070726573616c65206163746976652073746160448201526274757360e81b6064820152608401610e59565b6000846001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190613e42565b90506000856001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115429190613e42565b905080821015801561155357508115155b801561155e57508315155b1561187957600a54611570908361356a565b600a556001546000906115919060649061158b9086906135ce565b90613650565b600080546001600160a01b038a81168084526014602090815260408086205460159092529485902054601154955163f6e99c0d60e01b8152948416600486015292166024840152604483019190915261010090920460ff16151560648201529192509063f6e99c0d906084016020604051808303816000875af115801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613ed5565b6116855760405162461bcd60e51b8152602060048201526016602482015275195c9c9bdc88185d081b5a5b9d08199bdc881c1b185d60521b6044820152606401610e59565b6040805180820182526001600160a01b03808a166000818152601460209081528582205490931684523383850152818152601590925290839020549251634d2a907360e01b81529092634d2a9073926116e692909190600190600401613f1e565b6020604051808303816000875af1158015611705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117299190613ed5565b6117725760405162461bcd60e51b815260206004820152601a60248201527966696e616c697a65206661696c6564206174207375636365737360301b6044820152606401610e59565b6007546001600160a01b0388811660009081526014602090815260408083205460159092529091205492821692631d592a4d9291909116906117bc9060649061158b9087906135ce565b6040518363ffffffff1660e01b81526004016117d9929190613ce1565b6020604051808303816000875af11580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181c9190613ed5565b6118735760405162461bcd60e51b815260206004820152602260248201527f726566657272657220757064617465206661696c65642061742066696e616c696044820152617a6560f01b6064820152608401610e59565b50611975565b80821080611885575081155b1561197557600b54611897908361356a565b600b556040805180820182526000808252336020808401919091526001600160a01b038a168083526015909152838220549351634d2a907360e01b81529093634d2a9073936118ea939092600401613f1e565b6020604051808303816000875af1158015611909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192d9190613ed5565b6119755760405162461bcd60e51b8152602060048201526019602482015278199a5b985b1a5e994819985a5b195908185d081c99599d5b99603a1b6044820152606401610e59565b5050505050505050565b6003546001600160a01b0316331461199657600080fd5b6001600160a01b0381166119bc5760405162461bcd60e51b8152600401610e5990613e5b565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031633146119f557600080fd5b601d80549115156101000261ff0019909216919091179055565b6003546001600160a01b03163314611a2657600080fd5b601154610100900460ff16611a705760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610e59565b6011805461ff0019169055565b6003546001600160a01b03163314611a9457600080fd5b6001600160a01b03811660009081526017602052604090205460ff16611af05760405162461bcd60e51b81526020600482015260116024820152701b9bdd081a5b881859191959081b1a5cdd607a1b6044820152606401610e59565b6001600160a01b03166000908152601760205260409020805460ff19169055565b6003546001600160a01b03163314611b2857600080fd5b6003546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600380546001600160a01b0319169055565b6003546001600160a01b03163314611b8957600080fd5b60008111611bd45760405162461bcd60e51b8152602060048201526018602482015277496e76616c69642070657263656e746167652076616c756560401b6044820152606401610e59565b601b55565b6003546001600160a01b03163314611bf057600080fd5b6011805460ff19166001179055565b6003546001600160a01b03163314611c1657600080fd5b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611c4f573d6000803e3d6000fd5b50565b6003546001600160a01b03163314611c6957600080fd5b600c55565b6003546001600160a01b03163314611c8557600080fd5b601d805460ff1916911515919091179055565b6003546001600160a01b03163314611caf57600080fd5b6011805463ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102179055565b6003546001600160a01b03163314611cf857600080fd5b6001600160a01b038116611d1e5760405162461bcd60e51b8152600401610e5990613e5b565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314611d5757600080fd5b6064811115611da15760405162461bcd60e51b81526020600482015260166024820152756f7574206f662072616e6765206665652076616c756560501b6044820152606401610e59565b6001548103611def5760405162461bcd60e51b815260206004820152601a6024820152794e6577206665652069732073616d65206173204f6c642066656560301b6044820152606401610e59565b600155565b601d5460ff16611e425760405162461bcd60e51b815260206004820152601960248201527818dc99585d1a5bdb88141c995cd85b1948191a5cd8589b1959603a1b6044820152606401610e59565b84514210611e8d5760405162461bcd60e51b815260206004820152601860248201527773746172742074696d65206e6f7420696e2066757475726560401b6044820152606401610e59565b600c54611ea3908660005b60200201519061356a565b60208601511115611ef65760405162461bcd60e51b815260206004820152601e60248201527f70726573616c65206475726174696f6e2065786365656473206c696d697400006044820152606401610e59565b6020840151611f06906002613650565b84511015611f615760405162461bcd60e51b815260206004820152602260248201527f73636170206d7573742062652061746c656173742068616c66206f6620686361604482015261702160f01b6064820152608401610e59565b6060840151611fa95760405162461bcd60e51b815260206004820152601460248201527306d696e20636f6e74206d757374206265203e20360641b6044820152606401610e59565b6060840151608085015110156120005760405162461bcd60e51b815260206004820152601c60248201527b1b585e0818dbdb9d081b5d5cdd081899480f8f481b5a5b8818dbdb9d60221b6044820152606401610e59565b6001600160a01b03821660009081526017602052604090205460ff166120615760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420726f75746572206164647265737360501b6044820152606401610e59565b60115460ff16156121015760405160200161207b90613f42565b60405160208183030381529060405280519060200120816040516020016120a29190613f55565b60405160208183030381529060405280519060200120146121015760405162461bcd60e51b81526020600482015260196024820152781bdb9b1e48191959985d5b1d0818dbd91948185b1b1bddd959603a1b6044820152606401610e59565b60405160200161211090613f42565b60405160208183030381529060405280519060200120816040516020016121379190613f55565b604051602081830303815290604052805190602001201461267f576007546040516349e96fdd60e01b81526001600160a01b03909116906349e96fdd9061218290849060040161398d565b6020604051808303816000875af11580156121a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c59190613ed5565b6122095760405162461bcd60e51b8152602060048201526015602482015274696e76616c696420646973636f756e7420636f646560581b6044820152606401610e59565b601c54600754604051635f51485160e11b815261230b929161158b91612293916001600160a01b03169063bea290a29061224790889060040161398d565b6020604051808303816000875af1158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228a9190613e42565b601c549061368f565b600954604051633ae42caf60e21b81526001600160a01b039091169063eb90b2bc906122c490600e90600401613d96565b602060405180830381865afa1580156122e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123059190613e42565b906135ce565b34101561236b5760405162461bcd60e51b815260206004820152602860248201527f6d73672e76616c7565206d75737420626520657175616c20746f20726566657260448201526772616c206665652160c01b6064820152608401610e59565b600754604051630fc0b3fd60e01b81526000916123f39160649161158b916001600160a01b0390911690630fc0b3fd906123a990889060040161398d565b6020604051808303816000875af11580156123c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ec9190613e42565b34906135ce565b600754604051630f22420560e11b81529192506001600160a01b031690631e44840a9061242490859060040161398d565b6020604051808303816000875af1158015612443573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124679190613cfa565b6001600160a01b03168160405160006040518083038185875af1925050503d80600081146124b1576040519150601f19603f3d011682016040523d82523d6000602084013e6124b6565b606091505b5050600054600754604051630fc0b3fd60e01b81526001600160a01b039283169350638b3c99e3926125039260649261158b926123ec921690630fc0b3fd90612247908b9060040161398d565b6040516001600160e01b031960e084901b168152600060048201526024016000604051808303818588803b15801561253a57600080fd5b505af115801561254e573d6000803e3d6000fd5b5050600754604051630f22420560e11b81526001600160a01b039091169350631d592a4d9250839150631e44840a9061258b90879060040161398d565b6020604051808303816000875af11580156125aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ce9190613cfa565b836040518363ffffffff1660e01b81526004016125ec929190613ce1565b6020604051808303816000875af115801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190613ed5565b6126795760405162461bcd60e51b815260206004820152601b60248201527a1c9959995c9c995c905b5bdd5b9d155c19185d194819985a5b1959602a1b6044820152606401610e59565b506127b1565b600954604051633ae42caf60e21b81526001600160a01b039091169063eb90b2bc906126b090600e90600401613d96565b602060405180830381865afa1580156126cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f19190613e42565b3410156127505760405162461bcd60e51b815260206004820152602760248201527f6d73672e76616c7565206d75737420626520657175616c20746f2070726573616044820152666c65206665652160c81b6064820152608401610e59565b600054604051638b3c99e360e01b8152600160048201526001600160a01b0390911690638b3c99e39034906024016000604051808303818588803b15801561279757600080fd5b505af11580156127ab573d6000803e3d6000fd5b50505050505b60208501516127c4610258876000611e98565b11156128125760405162461bcd60e51b815260206004820181905260248201527f70726573616c6520706572696f64206c657373207468616e206d696e696d756d6044820152606401610e59565b60025461282190866001611e98565b835111612898576040805162461bcd60e51b81526020600482015260248101919091527f4c6f636b2074696d65206d75737420626520686967686572207468616e20707260448201527f6573616c6520656e6420706c7573206d696e696d756d206c6f636b2074696d656064820152608401610e59565b6005546040840151116129045760405162461bcd60e51b815260206004820152602e60248201527f556e69737761702070657263656e74616765206973206c6f776572207468616e60448201526d081b5a5b881d1a1c995cda1bdb1960921b6064820152608401610e59565b60085483516040805160608101825260018152600060208201819052818301529051630282544d60e21b81526001600160a01b0390931692630a09513492612953928b92339190600401613f71565b6020604051808303816000875af1158015612972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129969190613ed5565b6129dc5760405162461bcd60e51b81526020600482015260176024820152761cdd1bdc9859d9481859191a5d1a5bdb8819985a5b1959604a1b6044820152606401610e59565b60065460408051608081018252308152336020808301919091526001600160a01b038a811683850152868116606084015283518085018552888301518152888501518184015284518086018652601b5481528951938101939093529351638c2f037d60e01b81526000959190911693638c2f037d93612a659390928c928c929091600401613feb565b6020604051808303816000875af1158015612a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa89190613cfa565b600754604051630f22420560e11b81529192506001600160a01b031690631e44840a90612ad990859060040161398d565b6020604051808303816000875af1158015612af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1c9190613cfa565b6001600160a01b038281166000908152601460205260409081902080546001600160a01b031916938316939093179092556007549151630fc0b3fd60e01b8152911690630fc0b3fd90612b7390859060040161398d565b6020604051808303816000875af1158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb69190613e42565b6001600160a01b03808316600090815260156020526040808220939093556008549251631996f55960e11b81529092612c4c9260019291169063332deab290612c039033906004016137c1565b6020604051808303816000875af1158015612c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c469190613e42565b9061368f565b600854604051638252401760e01b81529192506001600160a01b031690638252401790612c83908c9086903390879060040161407d565b6020604051808303816000875af1158015612ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc69190613ed5565b612d0c5760405162461bcd60e51b81526020600482015260176024820152761c1c995cd85b19481859191c881859190819985a5b1959604a1b6044820152606401610e59565b600754604051635ac066d560e01b81526001600160a01b0390911690635ac066d590612d3e90869086906004016140e8565b6020604051808303816000875af1158015612d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d819190613ed5565b612dc65760405162461bcd60e51b815260206004820152601660248201527518dbd919481d5cd9481d5c19185d194819985a5b195960521b6044820152606401610e59565b505050505050505050565b6003546001600160a01b03163314612de857600080fd5b6001600160a01b038116612e0e5760405162461bcd60e51b8152600401610e5990613e5b565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b03163314612e4757600080fd5b60085460405163d6b4441160e01b815260009182916001600160a01b039091169063d6b4441190612e7e9087908790600401613ce1565b6040805180830381865afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe9190614112565b91509150612ed8612ecf8585612fc1565b600b549061356a565b600b5560408051808201825260008082526001600160a01b0387811660208401529251631c8d674960e01b815292851692631c8d674992612f1d929091600401614141565b6020604051808303816000875af1158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190613ed5565b50600854604051634f647a1b60e11b81526001600160a01b0390911690639ec8f43690612f939087908790600401613ce1565b600060405180830381600087803b158015612fad57600080fd5b505af1158015611975573d6000803e3d6000fd5b600854604051632b6419d360e11b815260009182916001600160a01b03909116906356c833a690612ff89087908790600401613ce1565b602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190613cfa565b90506000816001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f9190613e42565b925050505b92915050565b600854604051632b6419d360e11b81526000916001600160a01b0316906356c833a6906130dd9033908690600401613ce1565b602060405180830381865afa1580156130fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311e9190613cfa565b905060005b8351811015610d1557816001600160a01b031663e43252d785838151811061314d5761314d613d17565b60200260200101516040518263ffffffff1660e01b815260040161317191906137c1565b600060405180830381600087803b15801561318b57600080fd5b505af115801561319f573d6000803e3d6000fd5b5050505080806131ae90613d43565b915050613123565b6004546001600160a01b031633146131cd57600080fd5b60085460405163d6b4441160e01b815260009182916001600160a01b039091169063d6b44411906132049087908790600401613ce1565b6040805180830381865afa158015613220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132449190614112565b91509150613255612ecf8585612fc1565b600b5560408051808201825260008082526001600160a01b038781166020808501919091529086168083526015909152838220549351634d2a907360e01b81529093634d2a9073936132ab939092600401613f1e565b6020604051808303816000875af11580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190613ed5565b6133465760405162461bcd60e51b8152602060048201526024808201527f66696e616c697a65206661696c656420617420766f7465722063616c6c207265604482015263199d5b9960e21b6064820152608401610e59565b600854604051634f647a1b60e11b81526001600160a01b0390911690639ec8f43690612f939087908790600401613ce1565b6003546001600160a01b0316331461338f57600080fd5b6001600160a01b0381166133e25760405162461bcd60e51b815260206004820152601a6024820152792732bb9020b232391031b0b73a103132903d32b9379030b2323960311b6044820152606401610e59565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461341b57600080fd5b60648111156134695760405162461bcd60e51b815260206004820152601a602482015279756e695065722076616c7565206f7574736964652072616e676560301b6044820152606401610e59565b600555565b600e805461103e90613d5c565b6003546001600160a01b0316331461349257600080fd5b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b906134be9084906004016137c1565b600060405180830381600087803b158015610bd157600080fd5b6003546001600160a01b031633146134ef57600080fd5b611c4f816136d1565b6003546001600160a01b0316331461350f57600080fd5b601154610100900460ff16156135595760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610e59565b6011805461ff001916610100179055565b600080613577838561415e565b9050838110156135c75760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b6044820152606401610e59565b9392505050565b6000826000036135e0575060006130a4565b60006135ec8385614171565b9050826135f98583614188565b146135c75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e59565b60006135c783836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250613740565b60006135c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613777565b6001600160a01b0381166136e457600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600081836137615760405162461bcd60e51b8152600401610e59919061398d565b50600061376e8486614188565b95945050505050565b6000818484111561379b5760405162461bcd60e51b8152600401610e59919061398d565b50600061376e84866141aa565b6000602082840312156137ba57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171561380e5761380e6137d5565b60405290565b604051601f8201601f191681016001600160401b038111828210171561383c5761383c6137d5565b604052919050565b6001600160a01b0381168114611c4f57600080fd5b803561386481613844565b919050565b6000806040838503121561387c57600080fd5b82356001600160401b038082111561389357600080fd5b818501915085601f8301126138a757600080fd5b81356020828211156138bb576138bb6137d5565b8160051b92506138cc818401613814565b82815292840181019281810190898511156138e657600080fd5b948201945b84861015613910578535935061390084613844565b83825294820194908201906138eb565b9997909101359750505050505050565b60006020828403121561393257600080fd5b81356135c781613844565b60005b83811015613958578181015183820152602001613940565b50506000910152565b6000815180845261397981602086016020860161393d565b601f01601f19169290920160200192915050565b6020815260006135c76020830184613961565b600080604083850312156139b357600080fd5b82356139be81613844565b946020939093013593505050565b8015158114611c4f57600080fd5b6000602082840312156139ec57600080fd5b81356135c7816139cc565b60008060408385031215613a0a57600080fd5b8235613a15816139cc565b91506020830135613a25816139cc565b809150509250929050565b600082601f830112613a4157600080fd5b81356001600160401b03811115613a5a57613a5a6137d5565b613a6d601f8201601f1916602001613814565b818152846020838601011115613a8257600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613ab057600080fd5b604080519081016001600160401b0381118282101715613ad257613ad26137d5565b8060405250806040840185811115613ae957600080fd5b845b81811015613b03578035835260209283019201613aeb565b509195945050505050565b600082601f830112613b1f57600080fd5b60405160a081016001600160401b0381118282101715613b4157613b416137d5565b6040528060a0840185811115613ae957600080fd5b600082601f830112613b6757600080fd5b604051606081016001600160401b0381118282101715613b8957613b896137d5565b604052806060840185811115613ae957600080fd5b60008060008060008060006101c0888a031215613bba57600080fd5b6001600160401b038835811015613bd057600080fd5b883589018a601f820112613be357600080fd5b613beb6137eb565b8061014083018d811115613bfe57600080fd5b835b81811015613c31578581351115613c1657600080fd5b613c238f82358701613a30565b845260209384019301613c00565b5050809a50505050613c4560208a01613859565b9650613c548a60408b01613a9f565b9550613c638a60808b01613b0e565b9450613c738a6101208b01613b56565b9350613c826101808a01613859565b92506101a089013581811115613c9757600080fd5b613ca38b828c01613a30565b9250505092959891949750929550565b60008060408385031215613cc657600080fd5b8235613cd181613844565b91506020830135613a2581613844565b6001600160a01b03929092168252602082015260400190565b600060208284031215613d0c57600080fd5b81516135c781613844565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613d5557613d55613d2d565b5060010190565b600181811c90821680613d7057607f821691505b602082108103613d9057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208083526000845481600182811c915080831680613db857607f831692505b8583108103613dd557634e487b7160e01b85526022600452602485fd5b878601838152602001818015613df25760018114613e0857613e33565b60ff198616825284151560051b82019650613e33565b60008b81526020902060005b86811015613e2d57815484820152908501908901613e14565b83019750505b50949998505050505050505050565b600060208284031215613e5457600080fd5b5051919050565b602080825260139082015272616464722063616e6e6f74206265207a65726f60681b604082015260600190565b600080600060608486031215613e9d57600080fd5b8351613ea881613844565b6020850151909350613eb981613844565b6040850151909250613eca81613844565b809150509250925092565b600060208284031215613ee757600080fd5b81516135c7816139cc565b8060005b6002811015610d155781516001600160a01b0316845260209384019390910190600101613ef6565b60808101613f2c8286613ef2565b8360408301528215156060830152949350505050565b66191959985d5b1d60ca1b815260070190565b60008251613f6781846020870161393d565b9190910192915050565b6001600160a01b0385811682526020808301869052908416604083015260c082019060608301908460005b6003811015613fbb578151151584529282019290820190600101613f9c565b5050505095945050505050565b8060005b6002811015610d15578151845260209384019390910190600101613fcc565b6101e08101818760005b600481101561401d5781516001600160a01b0316835260209283019290910190600101613ff5565b50505061402d6080830187613fc8565b60c082018560005b6005811015614054578151835260209283019290910190600101614035565b505050614065610160830185613fc8565b6140736101a0830184613fc8565b9695505050505050565b60808082526000906101c0830190830187835b600a8110156140c257607f198685030183526140ad848351613961565b93506020928301929190910190600101614090565b5050506001600160a01b0395861660208401529390941660408201526060015292915050565b6040815260006140fb6040830185613961565b905060018060a01b03831660208301529392505050565b6000806040838503121561412557600080fd5b825161413081613844565b6020840151909250613a2581613844565b6060810161414f8285613ef2565b82151560408301529392505050565b808201808211156130a4576130a4613d2d565b80820281158282048414176130a4576130a4613d2d565b6000826141a557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156130a4576130a4613d2d56fea26469706673582212201360b4a341f921ba523dff17711a9a463e03fc73ce4d2828339e9bea0956183a64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003d9411fbe9b0f7b7d55eedd3ae718bcdac0ae9ed0000000000000000000000000febb541ef3632925cd67daf9e82cdc8ec7a71ef00000000000000000000000037d79eea1f3d5475a7e0f0cd8f8130df8500ca29000000000000000000000000344129238deb523c02e8be4c0e7e630780711bc5000000000000000000000000c1b4c3862d252e4146ca7776faf4460b5bc2ffd9
-----Decoded View---------------
Arg [0] : _presaleDappAddr (address): 0x3D9411fBe9B0f7b7D55eedD3AE718bCDAC0Ae9ED
Arg [1] : _feeRecieveContract (address): 0x0FEbB541Ef3632925cD67DAf9e82CdC8Ec7a71ef
Arg [2] : _storageContract (address): 0x37d79eea1f3D5475a7e0F0CD8f8130dF8500CA29
Arg [3] : _referralContract (address): 0x344129238deB523C02e8be4C0e7E630780711BC5
Arg [4] : _feeCheckContract (address): 0xC1b4c3862d252e4146CA7776FaF4460B5bc2FFd9
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000003d9411fbe9b0f7b7d55eedd3ae718bcdac0ae9ed
Arg [1] : 0000000000000000000000000febb541ef3632925cd67daf9e82cdc8ec7a71ef
Arg [2] : 00000000000000000000000037d79eea1f3d5475a7e0f0cd8f8130df8500ca29
Arg [3] : 000000000000000000000000344129238deb523c02e8be4c0e7e630780711bc5
Arg [4] : 000000000000000000000000c1b4c3862d252e4146ca7776faf4460b5bc2ffd9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.