false
true
0

Contract Address Details

0xC0f4142B6703a51a1033f68e62790e1e1c0df7F3

Token
GreenPulse (GreenPulse)
Creator
0xe6497e–7a41fb at 0x517cee–d5b43c
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
26352231
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
ZeroTax




Optimization enabled
true
Compiler version
v0.8.19+commit.7dd6d404




Optimization runs
200
EVM Version
default




Verified at
2023-05-13T14:05:43.708520Z

Constructor Arguments

0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000a477265656e50756c736500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a477265656e50756c736500000000000000000000000000000000000000000000

Arg [0] (string) : GreenPulse
Arg [1] (string) : GreenPulse
Arg [2] (uint256) : 420

              

Contract source code

/*
 * ZeroTaxToken for PulseChain
 *
 * Written by: MrGreenCrypto
 * Co-Founder of CodeCraftrs.com
 * 
 * SPDX-License-Identifier: None
 */

pragma solidity 0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IDEXRouter {
    function factory() external pure returns (address);    
    function WPLS() external pure returns (address);
}
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

contract ZeroTax is IERC20 {
    string private _name;
    string private _symbol;
    uint8 constant _decimals = 18;
    uint256 _totalSupply;

    mapping(address => bool) public isExludedFromMaxWallet;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
   
    uint256 public maxWalletInPermille = 30;
    uint256 private maxTx = 100;
    
    address public ceo;
    address public pair;
    address public router = 0x98bf93ebf5c380C0e6Ae8e192A7e2AE08edAcc02;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private royalty1 = 0xe6497e1F2C5418978D5fC2cD32AA23315E7a41Fb;
    address private royalty2 = 0x2E51a8222bFf11C2D1BB78E1B4a07bCEa4baCc25;    

    modifier onlyCEO(){
        require (msg.sender == ceo, "Only the ceo can do that");
        _;
    }

    constructor(string memory name_, string memory symbol_, uint256 totalSupply_)  {
        ceo = msg.sender;
        _name = name_;
        _symbol = symbol_;
        _totalSupply = totalSupply_ * (10**_decimals);
        pair = IDEXFactory(IDEXRouter(router).factory()).createPair(IDEXRouter(router).WPLS(), address(this));

        isExludedFromMaxWallet[pair] = true;
        isExludedFromMaxWallet[address(this)] = true;

        _balances[ceo] = _totalSupply * 98 / 100;
        emit Transfer(address(0), ceo, _totalSupply * 98 / 100);
        _balances[royalty1] = _totalSupply/100;
        emit Transfer(address(0), royalty1, _totalSupply/100);
        _balances[royalty2] = _totalSupply/100;
        emit Transfer(address(0), royalty2, _totalSupply/100);
    }

    receive() external payable {}
    function name() public view override returns (string memory) {return _name;}
    function totalSupply() public view override returns (uint256) {return _totalSupply - _balances[DEAD];}
    function decimals() public pure override returns (uint8) {return _decimals;}
    function symbol() public view override returns (string memory) {return _symbol;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function rescueBnb(uint256 amount) external onlyCEO {(bool success,) = address(ceo).call{value: amount}("");success = true;}
    function rescueToken(address token, uint256 amount) external onlyCEO {IERC20(token).transfer(ceo, amount);}
    function allowance(address holder, address spender) public view override returns (uint256) {return _allowances[holder][spender];}
    function transfer(address recipient, uint256 amount) external override returns (bool) {return _transferFrom(msg.sender, recipient, amount);}
    function approveMax(address spender) external returns (bool) {return approve(spender, type(uint256).max);}
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(spender != address(0), "Can't use zero address here");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0), "Can't use zero address here");
        _allowances[msg.sender][spender]  = allowance(msg.sender, spender) + addedValue;
        emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(spender != address(0), "Can't use zero address here");
        require(allowance(msg.sender, spender) >= subtractedValue, "Can't subtract more than current allowance");
        _allowances[msg.sender][spender]  = allowance(msg.sender, spender) - subtractedValue;
        emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "Insufficient Allowance");
            _allowances[sender][msg.sender] -= amount;
            emit Approval(sender, msg.sender, _allowances[sender][msg.sender]);
        }
        return _transferFrom(sender, recipient, amount);
    }
    
    function setMaxWalletInPermille(uint256 permille) external onlyCEO {
        maxWalletInPermille = permille;
        require(maxWalletInPermille >= 10, "MaxWallet safety limit");
    }

    function setMaxTxInPercentOfMaxWallet(uint256 percent) external onlyCEO {
        maxTx = percent;
        require(maxTx >= 75, "MaxTx safety limit");
    }
    
    function setNameAndSymbol(string memory newName, string memory newSymbol) external onlyCEO {
        _name = newName;
        _symbol = newSymbol;
    }
    function excludeFromMax(address excludedWallet, bool status) external onlyCEO {
        isExludedFromMaxWallet[excludedWallet] = status;
    }    

    function renounceOerwrship() external onlyCEO {
        ceo = address(0);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        checkLimits(sender, recipient, amount);
        _lowGasTransfer(sender, recipient, amount);
        return true;
    }

    function checkLimits(address sender, address recipient, uint256 amount) internal view {
        if(maxWalletInPermille < 1000) {    
            if(!isExludedFromMaxWallet[recipient]) require(_balances[recipient] + amount <= _totalSupply * maxWalletInPermille / 1000, "MaxWallet");
            if(!isExludedFromMaxWallet[sender]) require(amount <= _totalSupply * maxWalletInPermille * maxTx / 1000 / 100, "MaxTx");
        }
    }

    function _lowGasTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "Can't use zero addresses here");
        require(amount <= _balances[sender], "Can't transfer more than you own");
        if(amount == 0) return true;
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
}
        

Contract ABI

[{"type":"constructor","inputs":[{"type":"string","name":"name_","internalType":"string"},{"type":"string","name":"symbol_","internalType":"string"},{"type":"uint256","name":"totalSupply_","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ceo","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"excludeFromMax","inputs":[{"type":"address","name":"excludedWallet","internalType":"address"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExludedFromMaxWallet","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxWalletInPermille","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOerwrship","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueBnb","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueToken","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxTxInPercentOfMaxWallet","inputs":[{"type":"uint256","name":"percent","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWalletInPermille","inputs":[{"type":"uint256","name":"permille","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setNameAndSymbol","inputs":[{"type":"string","name":"newName","internalType":"string"},{"type":"string","name":"newSymbol","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"receive"}]
              

Contract Creation Code

0x6080604052601e6006556064600755600a80546001600160a01b03199081167398bf93ebf5c380c0e6ae8e192a7e2ae08edacc0217909155600b8054821673e6497e1f2c5418978d5fc2cd32aa23315e7a41fb179055600c8054909116732e51a8222bff11c2d1bb78e1b4a07bcea4bacc251790553480156200008157600080fd5b5060405162001c0438038062001c04833981016040819052620000a491620004d7565b600880546001600160a01b031916331790556000620000c48482620005d9565b506001620000d38382620005d9565b50620000e26012600a620007ba565b620000ee9082620007d2565b600255600a546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156200013c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001629190620007ec565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ef8ef56f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea9190620007ec565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620007ec565b600980546001600160a01b0319166001600160a01b03929092169182179055600090815260036020526040808220805460ff1990811660019081179092553084529190922080549091169091179055600254606490620002bf906062620007d2565b620002cb919062000817565b600880546001600160a01b0390811660009081526004602052604081209390935590546002549116919060008051602062001be48339815191529060649062000316906062620007d2565b62000322919062000817565b60405190815260200160405180910390a3606460025462000344919062000817565b600b80546001600160a01b0390811660009081526004602052604081209390935590546002549116919060008051602062001be4833981519152906200038d9060649062000817565b60405190815260200160405180910390a36064600254620003af919062000817565b600c80546001600160a01b0390811660009081526004602052604081209390935590546002549116919060008051602062001be483398151915290620003f89060649062000817565b60405190815260200160405180910390a35050506200083a565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200043a57600080fd5b81516001600160401b038082111562000457576200045762000412565b604051601f8301601f19908116603f0116810190828211818310171562000482576200048262000412565b816040528381526020925086838588010111156200049f57600080fd5b600091505b83821015620004c35785820183015181830184015290820190620004a4565b600093810190920192909252949350505050565b600080600060608486031215620004ed57600080fd5b83516001600160401b03808211156200050557600080fd5b620005138783880162000428565b945060208601519150808211156200052a57600080fd5b50620005398682870162000428565b925050604084015190509250925092565b600181811c908216806200055f57607f821691505b6020821081036200058057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005d457600081815260208120601f850160051c81016020861015620005af5750805b601f850160051c820191505b81811015620005d057828155600101620005bb565b5050505b505050565b81516001600160401b03811115620005f557620005f562000412565b6200060d816200060684546200054a565b8462000586565b602080601f8311600181146200064557600084156200062c5750858301515b600019600386901b1c1916600185901b178555620005d0565b600085815260208120601f198616915b82811015620006765788860151825594840194600190910190840162000655565b5085821015620006955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006fc578160001904821115620006e057620006e0620006a5565b80851615620006ee57918102915b93841c9390800290620006c0565b509250929050565b6000826200071557506001620007b4565b816200072457506000620007b4565b81600181146200073d5760028114620007485762000768565b6001915050620007b4565b60ff8411156200075c576200075c620006a5565b50506001821b620007b4565b5060208310610133831016604e8410600b84101617156200078d575081810a620007b4565b620007998383620006bb565b8060001904821115620007b057620007b0620006a5565b0290505b92915050565b6000620007cb60ff84168362000704565b9392505050565b8082028115828204841417620007b457620007b4620006a5565b600060208284031215620007ff57600080fd5b81516001600160a01b0381168114620007cb57600080fd5b6000826200083557634e487b7160e01b600052601260045260246000fd5b500490565b61139a806200084a6000396000f3fe60806040526004361061014f5760003560e01c80637e6b9b46116100b6578063a9059cbb1161006f578063a9059cbb146103df578063bb2aec77146103ff578063c17376341461041f578063dd62ed3e1461043f578063e70d9a6f1461045f578063f887ea401461047557600080fd5b80637e6b9b461461030d5780638673208714610322578063908921fc1461035257806395d89b411461038a578063a457c2d71461039f578063a8aa1b31146103bf57600080fd5b806333f3d6281161010857806333f3d628146102375780633950935114610257578063571ac8b0146102775780635a4462151461029757806370a08231146102b7578063769eaa68146102ed57600080fd5b806306fdde031461015b578063095ea7b31461018657806318160ddd146101b657806323b872dd146101d9578063249ec2bb146101f9578063313ce5671461021b57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610495565b60405161017d9190610e99565b60405180910390f35b34801561019257600080fd5b506101a66101a1366004610f03565b610527565b604051901515815260200161017d565b3480156101c257600080fd5b506101cb6105be565b60405190815260200161017d565b3480156101e557600080fd5b506101a66101f4366004610f2d565b6105ff565b34801561020557600080fd5b50610219610214366004610f77565b61073f565b005b34801561022757600080fd5b506040516012815260200161017d565b34801561024357600080fd5b50610219610252366004610f03565b610794565b34801561026357600080fd5b506101a6610272366004610f03565b61083a565b34801561028357600080fd5b506101a6610292366004610fae565b6108ce565b3480156102a357600080fd5b506102196102b236600461106c565b6108dc565b3480156102c357600080fd5b506101cb6102d2366004610fae565b6001600160a01b031660009081526004602052604090205490565b3480156102f957600080fd5b506102196103083660046110d0565b61091f565b34801561031957600080fd5b5061021961099b565b34801561032e57600080fd5b506101a661033d366004610fae565b60036020526000908152604090205460ff1681565b34801561035e57600080fd5b50600854610372906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b34801561039657600080fd5b506101706109d7565b3480156103ab57600080fd5b506101a66103ba366004610f03565b6109e6565b3480156103cb57600080fd5b50600954610372906001600160a01b031681565b3480156103eb57600080fd5b506101a66103fa366004610f03565b610a8f565b34801561040b57600080fd5b5061021961041a3660046110d0565b610a9c565b34801561042b57600080fd5b5061021961043a3660046110d0565b610b11565b34801561044b57600080fd5b506101cb61045a3660046110e9565b610b94565b34801561046b57600080fd5b506101cb60065481565b34801561048157600080fd5b50600a54610372906001600160a01b031681565b6060600080546104a49061111c565b80601f01602080910402602001604051908101604052809291908181526020018280546104d09061111c565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b60006001600160a01b0383166105585760405162461bcd60e51b815260040161054f90611156565b60405180910390fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b61dead600090815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546002546105fa91906111a3565b905090565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461072a576001600160a01b03841660009081526005602090815260408083203384529091529020548211156106975760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640161054f565b6001600160a01b0384166000908152600560209081526040808320338452909152812080548492906106ca9084906111a3565b90915550506001600160a01b038416600081815260056020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b610735848484610bbf565b90505b9392505050565b6008546001600160a01b031633146107695760405162461bcd60e51b815260040161054f906111b6565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6008546001600160a01b031633146107be5760405162461bcd60e51b815260040161054f906111b6565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610811573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083591906111ed565b505050565b60006001600160a01b0383166108625760405162461bcd60e51b815260040161054f90611156565b8161086d3385610b94565b610877919061120a565b3360008181526005602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016105ac565b60006105b882600019610527565b6008546001600160a01b031633146109065760405162461bcd60e51b815260040161054f906111b6565b6000610912838261126b565b506001610835828261126b565b6008546001600160a01b031633146109495760405162461bcd60e51b815260040161054f906111b6565b6006819055600a8110156109985760405162461bcd60e51b815260206004820152601660248201527513585e15d85b1b195d081cd859995d1e481b1a5b5a5d60521b604482015260640161054f565b50565b6008546001600160a01b031633146109c55760405162461bcd60e51b815260040161054f906111b6565b600880546001600160a01b0319169055565b6060600180546104a49061111c565b60006001600160a01b038316610a0e5760405162461bcd60e51b815260040161054f90611156565b81610a193385610b94565b1015610a7a5760405162461bcd60e51b815260206004820152602a60248201527f43616e2774207375627472616374206d6f7265207468616e2063757272656e7460448201526920616c6c6f77616e636560b01b606482015260840161054f565b81610a853385610b94565b61087791906111a3565b6000610738338484610bbf565b6008546001600160a01b03163314610ac65760405162461bcd60e51b815260040161054f906111b6565b6007819055604b8110156109985760405162461bcd60e51b815260206004820152601260248201527113585e151e081cd859995d1e481b1a5b5a5d60721b604482015260640161054f565b6008546001600160a01b03163314610b3b5760405162461bcd60e51b815260040161054f906111b6565b6008546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610b88576040519150601f19603f3d011682016040523d82523d6000602084013e610b8d565b606091505b5050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000610bcc848484610be2565b610bd7848484610d16565b506001949350505050565b6103e86006541015610835576001600160a01b03821660009081526003602052604090205460ff16610c89576103e8600654600254610c21919061132b565b610c2b9190611342565b6001600160a01b038316600090815260046020526040902054610c4f90839061120a565b1115610c895760405162461bcd60e51b815260206004820152600960248201526813585e15d85b1b195d60ba1b604482015260640161054f565b6001600160a01b03831660009081526003602052604090205460ff166108355760646103e8600754600654600254610cc1919061132b565b610ccb919061132b565b610cd59190611342565b610cdf9190611342565b8111156108355760405162461bcd60e51b815260206004820152600560248201526409ac2f0a8f60db1b604482015260640161054f565b60006001600160a01b038416610d6e5760405162461bcd60e51b815260206004820152601d60248201527f43616e277420757365207a65726f206164647265737365732068657265000000604482015260640161054f565b6001600160a01b038416600090815260046020526040902054821115610dd65760405162461bcd60e51b815260206004820181905260248201527f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e604482015260640161054f565b81600003610de657506001610738565b6001600160a01b03841660009081526004602052604081208054849290610e0e9084906111a3565b90915550506001600160a01b03831660009081526004602052604081208054849290610e3b90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e8791815260200190565b60405180910390a35060019392505050565b600060208083528351808285015260005b81811015610ec657858101830151858201604001528201610eaa565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610efe57600080fd5b919050565b60008060408385031215610f1657600080fd5b610f1f83610ee7565b946020939093013593505050565b600080600060608486031215610f4257600080fd5b610f4b84610ee7565b9250610f5960208501610ee7565b9150604084013590509250925092565b801515811461099857600080fd5b60008060408385031215610f8a57600080fd5b610f9383610ee7565b91506020830135610fa381610f69565b809150509250929050565b600060208284031215610fc057600080fd5b61073882610ee7565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ff057600080fd5b813567ffffffffffffffff8082111561100b5761100b610fc9565b604051601f8301601f19908116603f0116810190828211818310171561103357611033610fc9565b8160405283815286602085880101111561104c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561107f57600080fd5b823567ffffffffffffffff8082111561109757600080fd5b6110a386838701610fdf565b935060208501359150808211156110b957600080fd5b506110c685828601610fdf565b9150509250929050565b6000602082840312156110e257600080fd5b5035919050565b600080604083850312156110fc57600080fd5b61110583610ee7565b915061111360208401610ee7565b90509250929050565b600181811c9082168061113057607f821691505b60208210810361115057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f43616e277420757365207a65726f206164647265737320686572650000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b8576105b861118d565b60208082526018908201527f4f6e6c79207468652063656f2063616e20646f20746861740000000000000000604082015260600190565b6000602082840312156111ff57600080fd5b815161073881610f69565b808201808211156105b8576105b861118d565b601f82111561083557600081815260208120601f850160051c810160208610156112445750805b601f850160051c820191505b8181101561126357828155600101611250565b505050505050565b815167ffffffffffffffff81111561128557611285610fc9565b61129981611293845461111c565b8461121d565b602080601f8311600181146112ce57600084156112b65750858301515b600019600386901b1c1916600185901b178555611263565b600085815260208120601f198616915b828110156112fd578886015182559484019460019091019084016112de565b508582101561131b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176105b8576105b861118d565b60008261135f57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220818e9ee827d6a92c889199e51bc1694ea8b2303f101126a27670a64b105a628e64736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000a477265656e50756c736500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a477265656e50756c736500000000000000000000000000000000000000000000

Deployed ByteCode

0x60806040526004361061014f5760003560e01c80637e6b9b46116100b6578063a9059cbb1161006f578063a9059cbb146103df578063bb2aec77146103ff578063c17376341461041f578063dd62ed3e1461043f578063e70d9a6f1461045f578063f887ea401461047557600080fd5b80637e6b9b461461030d5780638673208714610322578063908921fc1461035257806395d89b411461038a578063a457c2d71461039f578063a8aa1b31146103bf57600080fd5b806333f3d6281161010857806333f3d628146102375780633950935114610257578063571ac8b0146102775780635a4462151461029757806370a08231146102b7578063769eaa68146102ed57600080fd5b806306fdde031461015b578063095ea7b31461018657806318160ddd146101b657806323b872dd146101d9578063249ec2bb146101f9578063313ce5671461021b57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610495565b60405161017d9190610e99565b60405180910390f35b34801561019257600080fd5b506101a66101a1366004610f03565b610527565b604051901515815260200161017d565b3480156101c257600080fd5b506101cb6105be565b60405190815260200161017d565b3480156101e557600080fd5b506101a66101f4366004610f2d565b6105ff565b34801561020557600080fd5b50610219610214366004610f77565b61073f565b005b34801561022757600080fd5b506040516012815260200161017d565b34801561024357600080fd5b50610219610252366004610f03565b610794565b34801561026357600080fd5b506101a6610272366004610f03565b61083a565b34801561028357600080fd5b506101a6610292366004610fae565b6108ce565b3480156102a357600080fd5b506102196102b236600461106c565b6108dc565b3480156102c357600080fd5b506101cb6102d2366004610fae565b6001600160a01b031660009081526004602052604090205490565b3480156102f957600080fd5b506102196103083660046110d0565b61091f565b34801561031957600080fd5b5061021961099b565b34801561032e57600080fd5b506101a661033d366004610fae565b60036020526000908152604090205460ff1681565b34801561035e57600080fd5b50600854610372906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b34801561039657600080fd5b506101706109d7565b3480156103ab57600080fd5b506101a66103ba366004610f03565b6109e6565b3480156103cb57600080fd5b50600954610372906001600160a01b031681565b3480156103eb57600080fd5b506101a66103fa366004610f03565b610a8f565b34801561040b57600080fd5b5061021961041a3660046110d0565b610a9c565b34801561042b57600080fd5b5061021961043a3660046110d0565b610b11565b34801561044b57600080fd5b506101cb61045a3660046110e9565b610b94565b34801561046b57600080fd5b506101cb60065481565b34801561048157600080fd5b50600a54610372906001600160a01b031681565b6060600080546104a49061111c565b80601f01602080910402602001604051908101604052809291908181526020018280546104d09061111c565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b60006001600160a01b0383166105585760405162461bcd60e51b815260040161054f90611156565b60405180910390fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b61dead600090815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546002546105fa91906111a3565b905090565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461072a576001600160a01b03841660009081526005602090815260408083203384529091529020548211156106975760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640161054f565b6001600160a01b0384166000908152600560209081526040808320338452909152812080548492906106ca9084906111a3565b90915550506001600160a01b038416600081815260056020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b610735848484610bbf565b90505b9392505050565b6008546001600160a01b031633146107695760405162461bcd60e51b815260040161054f906111b6565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6008546001600160a01b031633146107be5760405162461bcd60e51b815260040161054f906111b6565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610811573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083591906111ed565b505050565b60006001600160a01b0383166108625760405162461bcd60e51b815260040161054f90611156565b8161086d3385610b94565b610877919061120a565b3360008181526005602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016105ac565b60006105b882600019610527565b6008546001600160a01b031633146109065760405162461bcd60e51b815260040161054f906111b6565b6000610912838261126b565b506001610835828261126b565b6008546001600160a01b031633146109495760405162461bcd60e51b815260040161054f906111b6565b6006819055600a8110156109985760405162461bcd60e51b815260206004820152601660248201527513585e15d85b1b195d081cd859995d1e481b1a5b5a5d60521b604482015260640161054f565b50565b6008546001600160a01b031633146109c55760405162461bcd60e51b815260040161054f906111b6565b600880546001600160a01b0319169055565b6060600180546104a49061111c565b60006001600160a01b038316610a0e5760405162461bcd60e51b815260040161054f90611156565b81610a193385610b94565b1015610a7a5760405162461bcd60e51b815260206004820152602a60248201527f43616e2774207375627472616374206d6f7265207468616e2063757272656e7460448201526920616c6c6f77616e636560b01b606482015260840161054f565b81610a853385610b94565b61087791906111a3565b6000610738338484610bbf565b6008546001600160a01b03163314610ac65760405162461bcd60e51b815260040161054f906111b6565b6007819055604b8110156109985760405162461bcd60e51b815260206004820152601260248201527113585e151e081cd859995d1e481b1a5b5a5d60721b604482015260640161054f565b6008546001600160a01b03163314610b3b5760405162461bcd60e51b815260040161054f906111b6565b6008546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610b88576040519150601f19603f3d011682016040523d82523d6000602084013e610b8d565b606091505b5050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000610bcc848484610be2565b610bd7848484610d16565b506001949350505050565b6103e86006541015610835576001600160a01b03821660009081526003602052604090205460ff16610c89576103e8600654600254610c21919061132b565b610c2b9190611342565b6001600160a01b038316600090815260046020526040902054610c4f90839061120a565b1115610c895760405162461bcd60e51b815260206004820152600960248201526813585e15d85b1b195d60ba1b604482015260640161054f565b6001600160a01b03831660009081526003602052604090205460ff166108355760646103e8600754600654600254610cc1919061132b565b610ccb919061132b565b610cd59190611342565b610cdf9190611342565b8111156108355760405162461bcd60e51b815260206004820152600560248201526409ac2f0a8f60db1b604482015260640161054f565b60006001600160a01b038416610d6e5760405162461bcd60e51b815260206004820152601d60248201527f43616e277420757365207a65726f206164647265737365732068657265000000604482015260640161054f565b6001600160a01b038416600090815260046020526040902054821115610dd65760405162461bcd60e51b815260206004820181905260248201527f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e604482015260640161054f565b81600003610de657506001610738565b6001600160a01b03841660009081526004602052604081208054849290610e0e9084906111a3565b90915550506001600160a01b03831660009081526004602052604081208054849290610e3b90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e8791815260200190565b60405180910390a35060019392505050565b600060208083528351808285015260005b81811015610ec657858101830151858201604001528201610eaa565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610efe57600080fd5b919050565b60008060408385031215610f1657600080fd5b610f1f83610ee7565b946020939093013593505050565b600080600060608486031215610f4257600080fd5b610f4b84610ee7565b9250610f5960208501610ee7565b9150604084013590509250925092565b801515811461099857600080fd5b60008060408385031215610f8a57600080fd5b610f9383610ee7565b91506020830135610fa381610f69565b809150509250929050565b600060208284031215610fc057600080fd5b61073882610ee7565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ff057600080fd5b813567ffffffffffffffff8082111561100b5761100b610fc9565b604051601f8301601f19908116603f0116810190828211818310171561103357611033610fc9565b8160405283815286602085880101111561104c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561107f57600080fd5b823567ffffffffffffffff8082111561109757600080fd5b6110a386838701610fdf565b935060208501359150808211156110b957600080fd5b506110c685828601610fdf565b9150509250929050565b6000602082840312156110e257600080fd5b5035919050565b600080604083850312156110fc57600080fd5b61110583610ee7565b915061111360208401610ee7565b90509250929050565b600181811c9082168061113057607f821691505b60208210810361115057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f43616e277420757365207a65726f206164647265737320686572650000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b8576105b861118d565b60208082526018908201527f4f6e6c79207468652063656f2063616e20646f20746861740000000000000000604082015260600190565b6000602082840312156111ff57600080fd5b815161073881610f69565b808201808211156105b8576105b861118d565b601f82111561083557600081815260208120601f850160051c810160208610156112445750805b601f850160051c820191505b8181101561126357828155600101611250565b505050505050565b815167ffffffffffffffff81111561128557611285610fc9565b61129981611293845461111c565b8461121d565b602080601f8311600181146112ce57600084156112b65750858301515b600019600386901b1c1916600185901b178555611263565b600085815260208120601f198616915b828110156112fd578886015182559484019460019091019084016112de565b508582101561131b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176105b8576105b861118d565b60008261135f57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220818e9ee827d6a92c889199e51bc1694ea8b2303f101126a27670a64b105a628e64736f6c63430008130033