ETH Price: $3,258.14 (+3.29%)
Gas: 3 Gwei

Token

Cowboy.Finance (COW)
 

Overview

Max Total Supply

18,992,023.575184896 COW

Holders

420 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
310.390167328 COW

Value
$0.00
0x6e9F05a4E3d1683A60924371fe28fd4Eb8948fCb
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

COW is a deflationary token, deflating 1% every 24 hours for 14 days and thereafter when price is greater than 5-day average plus 10%. The breed function rewards 10% of holders that don't transfer from previous day - daily reward is 175,000 COWs (split pro rata) for 30 days, halving every 30 days.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Cow

Compiler Version
v0.6.0+commit.26b70077

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-08-22
*/

pragma solidity 0.6.0;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable {
    address public _owner;

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

    constructor () public {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

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

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

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

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Cow is Ownable {
    using SafeMath for uint256;

    modifier validRecipient(address account) {
        //require(account != address(0x0));
        require(account != address(this));
        _;
    }

    struct Breeder {
        uint256 snapshotPeriod;
        uint256 snapshotBalance;
    }

    // events
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event LogWhitelisted(address indexed addr);
    event LogUnlocked(uint256 timestamp);
    event LogBandits(uint256 totalSupply);
    event LogBreed(uint256 indexed period, uint256 candidatesLength, uint256 estimatedBreeders, uint256 breededToken, uint256 availableUnits);

    // public constants
    string public constant name = "Cowboy.Finance";
    string public constant symbol = "COW";
    uint256 public constant decimals = 9;

    // private constants
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant INITIAL_TOKENS = 21 * 10**6;
    uint256 private constant INITIAL_SUPPLY = INITIAL_TOKENS * 10**decimals;
    uint256 private constant TOTAL_UNITS = MAX_UINT256 - (MAX_UINT256 % INITIAL_SUPPLY);
    uint256 private constant POOL_SIZE = 50; // 50%
    uint256 private constant INIT_POOL_FACTOR = 60;
    uint256 private constant BREED_MIN_BALANCE = 100 * 10**decimals;
    uint256 private constant BREED_ADDRESS_LIMIT = 1000;
    uint256 private constant TIMELOCK_TIME = 24 hours;
    uint256 private constant HALVING_PERIOD = 30;

    // mappings
    mapping(address => uint256) private _balances;
    mapping(address => mapping (address => uint256)) private _allowances;
    mapping(address => bool) private _whitelist;
    mapping(address => Breeder) private _breeders;
    mapping(address => bool) private _knownAddresses;
    mapping(uint256 => address) private _addresses;
    uint256 _addressesLength;

    // ints
    uint256 private _totalSupply;
    uint256 private _unitsPerToken;
    uint256 private _initialPoolToken;
    uint256 private _poolBalance;
    uint256 private _poolFactor;

    uint256 private _period;
    uint256 private _timelockBreeding;
    uint256 private _timelockBandits;

    // bools
    bool private _lockTransfer;
    bool private _lockBreeding;


    constructor() public override {
        _owner = msg.sender;

        // set toal supply = initial supply
        _totalSupply = INITIAL_SUPPLY;
        // set units per token based on total supply
        _unitsPerToken = TOTAL_UNITS.div(_totalSupply);

        // set pool balance = TOTAL_UNITS / 100 * POOL_SIZE
        _poolBalance = TOTAL_UNITS / 100 * POOL_SIZE;
        // set initial pool token balance
        _initialPoolToken = _poolBalance.div(_unitsPerToken);
        // set initial pool factor
        _poolFactor = INIT_POOL_FACTOR;

        // set owner balance
        _balances[_owner] = TOTAL_UNITS - _poolBalance;

        // init locks & set defaults
        _lockTransfer = true;
        _lockBreeding = true;

        emit Transfer(address(0x0), _owner, _totalSupply.sub(_initialPoolToken));
    }


    function whitelistAdd(address addr) external onlyOwner {
        _whitelist[addr] = true;
        emit LogWhitelisted(addr);
    }

    // main unlock function
    // 1. set period
    // 2. set timelocks
    // 3. allow token transfer
    function unlock() external onlyOwner {
        require(_period == 0, "contract is unlocked");
        _period = 1;
        _timelockBreeding = now.add(TIMELOCK_TIME);
        _timelockBandits = now.add(TIMELOCK_TIME);
        _lockTransfer = false;
        _lockBreeding = false;
        emit LogUnlocked(block.timestamp);
    }


    // bandits stuff
    function bandits() external onlyOwner {
        require(_lockTransfer == false, "contract is locked");
        require(_timelockBandits < now, "also bandits need time to rest");
        _timelockBandits = now.add(TIMELOCK_TIME);
        _totalSupply = _totalSupply.sub(_totalSupply.div(100));
        _unitsPerToken = TOTAL_UNITS.div(_totalSupply);
        emit LogBandits(_totalSupply);
    }

    function getSnapshotBalance(address addr) private view returns (uint256) {
        if (_breeders[addr].snapshotPeriod < _period) {
            return _balances[addr];
        }
        return  _breeders[addr].snapshotBalance;
    }

    // breed
    function breed() external onlyOwner {
        require(_lockTransfer == false, "contract is locked");
        require(_timelockBreeding < now, "timelock is active");
        _timelockBreeding = now.add(TIMELOCK_TIME);

        // need the sum of all breeder balances to calculate share in breed
        uint256 totalBreedersBalance = 0;

        // check if address is candidate
        address[] memory candidates = new address[](_addressesLength);
        uint256 candidatesLength = 0;
        for (uint256 i = 0; i < _addressesLength; i++) {
            address addr = _addresses[i];
            if(addr == address(0x0)) {
                continue;
            }
            uint256 snapbalance = getSnapshotBalance(addr);
            // dont put it on the list if too low
            if (snapbalance < BREED_MIN_BALANCE.mul(_unitsPerToken)) {
                continue;
            }
            // put it on the list if on of both conditions are true
            // 1. snapshot is old [no coins moved]
            // 2. balance >= snapshot balance [no tokens out]
            if ((_breeders[addr].snapshotPeriod < _period) || (_balances[addr] >= snapbalance)) {
                candidates[candidatesLength] = addr;
                candidatesLength++;
            }
        }

        uint256 estimatedBreeders = 0;
        uint256 breededUnits = 0;
        uint256 availableUnits = _initialPoolToken.div(_poolFactor).mul(_unitsPerToken);
        if(candidatesLength > 0) {
            estimatedBreeders = 1;
            // get lucky candidates breeders
            uint256 randomNumber = uint256(keccak256(abi.encodePacked((_addressesLength + _poolBalance + _period), now, blockhash(block.number))));
            uint256 randomIndex = randomNumber % 10;
            uint256 randomOffset = 0;
            if (candidatesLength >= 10) {
                estimatedBreeders = (candidatesLength - randomIndex - 1) / 10 + 1;
            }
            if (estimatedBreeders > BREED_ADDRESS_LIMIT) {
                randomOffset = (randomNumber / 100) % estimatedBreeders;
                estimatedBreeders = BREED_ADDRESS_LIMIT;
            }
            address[] memory breeders = new address[](estimatedBreeders);
            uint256 breedersLength = 0;
            for (uint256 i = 0; i < estimatedBreeders; i++) {
                address addr = candidates[(randomIndex + (i + randomOffset) * 10) % candidatesLength];
                breeders[breedersLength] = addr;
                breedersLength++;
                totalBreedersBalance = totalBreedersBalance.add(getSnapshotBalance(addr).div(_unitsPerToken));
            }


            for (uint256 i = 0; i < breedersLength; i++) {
                address addr = breeders[i];
                uint256 snapbalance = getSnapshotBalance(addr);
                uint256 tokensToAdd = availableUnits.div(_unitsPerToken).mul(snapbalance.div(_unitsPerToken)).div(totalBreedersBalance);
                uint256 unitsToAdd = tokensToAdd.mul(_unitsPerToken);
                _balances[addr] = _balances[addr].add(unitsToAdd);
                breededUnits = breededUnits.add(unitsToAdd);
            }

            if ((breededUnits < availableUnits) && (breedersLength > 0)) {
                address addr = breeders[breedersLength-1];
                uint256 rest = availableUnits.sub(breededUnits);
                _balances[addr] = _balances[addr].add(rest);
                breededUnits = breededUnits.add(rest);
            }
            if (breededUnits > 0) {
                _poolBalance = _poolBalance.sub(breededUnits);
            }
        }

        uint256 breededTokens = 0;
        if(breededUnits > 0) {
            breededTokens = breededUnits.div(_unitsPerToken);
        }
        emit LogBreed(_period, candidatesLength, estimatedBreeders, breededTokens, availableUnits);

        if(_period % HALVING_PERIOD == 0) {
            _poolFactor = _poolFactor.add(_poolFactor);
        }
        _period = _period.add(1);
    }


    function calcShareInTokens(uint256 snapshotToken, uint256 totalBreedersToken, uint256 availableToken) private pure returns(uint256) {
        return availableToken.mul(snapshotToken).div(totalBreedersToken);
    }

    function isOwnerOrWhitelisted(address addr) private view returns (bool) {
        if (addr == _owner) {
            return true;
        }
        return _whitelist[addr];
    }

    function acquaintAddress(address candidate) private returns (bool) {
        if((_knownAddresses[candidate] != true) && (candidate != _owner)) {
            _knownAddresses[candidate] = true;
            _addresses[_addressesLength] = candidate;
            _addressesLength++;
            return true;
        }
        return false;
    }


    function period() public view returns (uint256) {
        return _period;
    }

    function poolBalance() public view returns (uint256) {
        return _poolBalance.div(_unitsPerToken);
    }

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account].div(_unitsPerToken);
    }

    function processBreedersBeforeTransfer(address from, address to, uint256 units) private {

        // process sender
        // if we have no current snapshot, make it
        // snapshot is balance before sending
        if(_breeders[from].snapshotPeriod < _period) {
            _breeders[from].snapshotBalance = _balances[from];
            _breeders[from].snapshotPeriod = _period;
        } else {
            // snapshot is same period, set balance reduced by units (= current balance)
            _breeders[from].snapshotBalance = _balances[from].sub(units);
        }

        // process receiver
        // if we have no current snapshot, make it
        // snapshot is balance before receiving
        if(_breeders[to].snapshotPeriod < _period) {
            _breeders[to].snapshotBalance = _balances[to];
            _breeders[to].snapshotPeriod = _period;
        } else {
            // snapshot is same period, nothing to do -> new tokens have to rest at least 1 period
            // later in breeding we have also to check the snapshort period and update the balance if < to take care of no transfer/no updated snapshot balance situation
        }
    }

    function transfer(address recipient, uint256 value) public validRecipient(recipient) returns (bool) {
        require(((_lockTransfer == false) || isOwnerOrWhitelisted(msg.sender)), 'token transfer is locked');
        uint256 units = value.mul(_unitsPerToken);
        uint256 newSenderBalance = _balances[msg.sender].sub(units);
        processBreedersBeforeTransfer(msg.sender, recipient, units);
        _balances[msg.sender] = newSenderBalance;
        _balances[recipient] = _balances[recipient].add(units);
        acquaintAddress(recipient);
        emit Transfer(msg.sender, recipient, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public validRecipient(to) returns (bool) {
        require(((_lockTransfer == false) || isOwnerOrWhitelisted(msg.sender)), 'token transfer is locked');
        _allowances[from][msg.sender] = _allowances[from][msg.sender].sub(value);
        uint256 units = value.mul(_unitsPerToken);
        processBreedersBeforeTransfer(from, to, units);
        uint256 newSenderBalance = _balances[from].sub(units);
        _balances[from] = newSenderBalance;
        _balances[to] = _balances[to].add(units);
        acquaintAddress(to);
        emit Transfer(from, to, value);
        return true;
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value) public returns (bool) {
        _allowances[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _allowances[msg.sender][spender] = _allowances[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        uint256 oldValue = _allowances[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowances[msg.sender][spender] = 0;
        } else {
            _allowances[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogBandits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"candidatesLength","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"estimatedBreeders","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"breededToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"availableUnits","type":"uint256"}],"name":"LogBreed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LogUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"LogWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bandits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"breed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"whitelistAdd","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a0a6301406f4002600881905550620001346008546009600a0a6301406f4002600019816200011b57fe5b0660001903620002f860201b62002e371790919060201c565b600981905550603260646009600a0a6301406f4002600019816200015457fe5b0660001903816200016157fe5b0402600b8190555062000187600954600b54620002f860201b62002e371790919060201c565b600a81905550603c600c81905550600b546009600a0a6301406f400260001981620001ae57fe5b066000190303600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002dd600a546008546200034a60201b6200279a1790919060201c565b6040518082815260200191505060405180910390a36200052b565b60006200034283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200039c60201b60201c565b905092915050565b60006200039483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200046760201b60201c565b905092915050565b600080831182906200044c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000410578082015181840152602081019050620003f3565b50505050905090810190601f1680156200043e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200045957fe5b049050809150509392505050565b600083831115829062000518576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004dc578082015181840152602081019050620004bf565b50505050905090810190601f1680156200050a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b613084806200053b6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063a9059cbb1161007c578063a9059cbb14610558578063b2bdfa7b146105be578063dd62ed3e14610608578063ee3adf1214610680578063ef78d4fd1461068a578063f2fde38b146106a857610137565b80638da5cb5b146103fd57806395d89b411461044757806396365d44146104ca578063a457c2d7146104e8578063a69df4b51461054e57610137565b806339509351116100ff57806339509351146102e7578063524fa7b91461034d57806368b85fb11461039157806370a082311461039b578063715018a6146103f357610137565b806306fdde031461013c578063095ea7b3146101bf57806318160ddd1461022557806323b872dd14610243578063313ce567146102c9575b600080fd5b6101446106ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610725565b604051808215151515815260200191505060405180910390f35b61022d610817565b6040518082815260200191505060405180910390f35b6102af6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610821565b604051808215151515815260200191505060405180910390f35b6102d1610bd5565b6040518082815260200191505060405180910390f35b610333600480360360408110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bda565b604051808215151515815260200191505060405180910390f35b61038f6004803603602081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd6565b005b610399610f36565b005b6103dd600480360360208110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611831565b6040518082815260200191505060405180910390f35b6103fb61188e565b005b610405611a0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61044f611a38565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048f578082015181840152602081019050610474565b50505050905090810190601f1680156104bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104d2611a71565b6040518082815260200191505060405180910390f35b610534600480360360408110156104fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a8f565b604051808215151515815260200191505060405180910390f35b610556611d1f565b005b6105a46004803603604081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f08565b604051808215151515815260200191505060405180910390f35b6105c66121ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61066a6004803603604081101561061e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121d1565b6040518082815260200191505060405180910390f35b610688612258565b005b6106926124d5565b6040518082815260200191505060405180910390f35b6106ea600480360360208110156106be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124df565b005b6040518060400160405280600e81526020017f436f77626f792e46696e616e636500000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600854905090565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561085d57600080fd5b60001515601060009054906101000a900460ff16151514806108845750610883336126e5565b5b6108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f6b656e207472616e73666572206973206c6f636b6564000000000000000081525060200191505060405180910390fd5b61098583600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000610a1c600954856127e490919063ffffffff16565b9050610a2986868361286a565b6000610a7d82600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b905080600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1582600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b6186612bd1565b508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b600981565b6000610c6b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f8903e080b5c69a152a91cd02601be1ae6016a2e837de3a938084856cfacbbbfa60405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515601060009054906101000a900460ff16151514611081576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e7472616374206973206c6f636b6564000000000000000000000000000081525060200191505060405180910390fd5b42600e54106110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f74696d656c6f636b20697320616374697665000000000000000000000000000081525060200191505060405180910390fd5b61110e6201518042612b4990919063ffffffff16565b600e819055506000809050606060075460405190808252806020026020018201604052801561114c5781602001602082028038833980820191505090505b509050600080905060008090505b6007548110156113045760006006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d757506112f7565b60006111e282612d57565b90506112006009546009600a0a6064026127e490919063ffffffff16565b81101561120e5750506112f7565b600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154108061129f575080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156112f457818585815181106112b157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083806001019450505b50505b808060010191505061115a565b5060008090506000809050600061133c60095461132e600c54600a54612e3790919063ffffffff16565b6127e490919063ffffffff16565b9050600084111561176157600192506000600d54600b5460075401014243406040516020018084815260200183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000600a82816113a057fe5b0690506000809050600a87106113c6576001600a6001848a0303816113c157fe5b040195505b6103e88611156113ec5785606484816113db57fe5b04816113e357fe5b0690506103e895505b60608660405190808252806020026020018201604052801561141d5781602001602082028038833980820191505090505b509050600080905060008090505b888110156114e95760008b8b600a8785010288018161144657fe5b068151811061145157fe5b602002602001015190508084848151811061146857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082806001019350506114d96114ca6009546114bc84612d57565b612e3790919063ffffffff16565b8e612b4990919063ffffffff16565b9c5050808060010191505061142b565b5060008090505b8181101561164257600083828151811061150657fe5b60200260200101519050600061151b82612d57565b9050600061156c8f61155e61153b60095486612e3790919063ffffffff16565b6115506009548f612e3790919063ffffffff16565b6127e490919063ffffffff16565b612e3790919063ffffffff16565b90506000611585600954836127e490919063ffffffff16565b90506115d981600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061162f818d612b4990919063ffffffff16565b9b505050505080806001019150506114f0565b5085871080156116525750600081115b1561173657600082600183038151811061166857fe5b602002602001015190506000611687898961279a90919063ffffffff16565b90506116db81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611731818a612b4990919063ffffffff16565b985050505b600087111561175b5761175487600b5461279a90919063ffffffff16565b600b819055505b50505050505b600080905060008311156117875761178460095484612e3790919063ffffffff16565b90505b600d547ff5e6c03a98bcbcea0fcf83fad40e9ef7c93f1b8d3c4fcf24c50a3381bc5d965e868684866040518085815260200184815260200183815260200182815260200194505050505060405180910390a26000601e600d54816117e757fe5b06141561180c57611805600c54600c54612b4990919063ffffffff16565b600c819055505b6118226001600d54612b4990919063ffffffff16565b600d8190555050505050505050565b6000611887600954600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3790919063ffffffff16565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f434f57000000000000000000000000000000000000000000000000000000000081525081565b6000611a8a600954600b54612e3790919063ffffffff16565b905090565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310611b9f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c33565b611bb2838261279a90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600d5414611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f636f6e747261637420697320756e6c6f636b656400000000000000000000000081525060200191505060405180910390fd5b6001600d81905550611e776201518042612b4990919063ffffffff16565b600e81905550611e936201518042612b4990919063ffffffff16565b600f819055506000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055507fd7d780a3bd95c768e98ce5ef684c4dec35996ca55524e8c86c53e780b5d3715a426040518082815260200191505060405180910390a1565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f4457600080fd5b60001515601060009054906101000a900460ff1615151480611f6b5750611f6a336126e5565b5b611fdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f6b656e207472616e73666572206973206c6f636b6564000000000000000081525060200191505060405180910390fd5b6000611ff4600954856127e490919063ffffffff16565b9050600061204a82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b905061205733878461286a565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ed82600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061213986612bd1565b508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515601060009054906101000a900460ff161515146123a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e7472616374206973206c6f636b6564000000000000000000000000000081525060200191505060405180910390fd5b42600f541061241a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f616c736f2062616e64697473206e6565642074696d6520746f2072657374000081525060200191505060405180910390fd5b6124306201518042612b4990919063ffffffff16565b600f8190555061246061244f6064600854612e3790919063ffffffff16565b60085461279a90919063ffffffff16565b6008819055506124946008546009600a0a6301406f40026000198161248157fe5b0660001903612e3790919063ffffffff16565b6009819055507f58c9a7ab268085907be42d3edaf55113611fc4cf2905fad5a792a0e8d7a787d66008546040518082815260200191505060405180910390a1565b6000600d54905090565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612627576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806130086026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127455760019050612795565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b60006127dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e81565b905092915050565b6000808314156127f75760009050612864565b600082840290508284828161280857fe5b041461285f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061302e6021913960400191505060405180910390fd5b809150505b92915050565b600d54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154101561298a57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600d54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612a23565b6129dc81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015612b4357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612b44565b5b505050565b600080828401905083811015612bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060011515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015612c8157506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d4d576001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160066000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060076000815480929190600101919050555060019050612d52565b600090505b919050565b6000600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015612dec57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612e32565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490505b919050565b6000612e7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f41565b905092915050565b6000838311158290612f2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef3578082015181840152602081019050612ed8565b50505050905090810190601f168015612f205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290612fed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612fb2578082015181840152602081019050612f97565b50505050905090810190601f168015612fdf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612ff957fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220cd285d43e15b31a1d739d9a751cfd39f917563e712e187d067cc676d45bc1f4b64736f6c63430006000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c80638da5cb5b116100b8578063a9059cbb1161007c578063a9059cbb14610558578063b2bdfa7b146105be578063dd62ed3e14610608578063ee3adf1214610680578063ef78d4fd1461068a578063f2fde38b146106a857610137565b80638da5cb5b146103fd57806395d89b411461044757806396365d44146104ca578063a457c2d7146104e8578063a69df4b51461054e57610137565b806339509351116100ff57806339509351146102e7578063524fa7b91461034d57806368b85fb11461039157806370a082311461039b578063715018a6146103f357610137565b806306fdde031461013c578063095ea7b3146101bf57806318160ddd1461022557806323b872dd14610243578063313ce567146102c9575b600080fd5b6101446106ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610725565b604051808215151515815260200191505060405180910390f35b61022d610817565b6040518082815260200191505060405180910390f35b6102af6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610821565b604051808215151515815260200191505060405180910390f35b6102d1610bd5565b6040518082815260200191505060405180910390f35b610333600480360360408110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bda565b604051808215151515815260200191505060405180910390f35b61038f6004803603602081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd6565b005b610399610f36565b005b6103dd600480360360208110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611831565b6040518082815260200191505060405180910390f35b6103fb61188e565b005b610405611a0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61044f611a38565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561048f578082015181840152602081019050610474565b50505050905090810190601f1680156104bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104d2611a71565b6040518082815260200191505060405180910390f35b610534600480360360408110156104fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a8f565b604051808215151515815260200191505060405180910390f35b610556611d1f565b005b6105a46004803603604081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f08565b604051808215151515815260200191505060405180910390f35b6105c66121ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61066a6004803603604081101561061e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121d1565b6040518082815260200191505060405180910390f35b610688612258565b005b6106926124d5565b6040518082815260200191505060405180910390f35b6106ea600480360360208110156106be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124df565b005b6040518060400160405280600e81526020017f436f77626f792e46696e616e636500000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600854905090565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561085d57600080fd5b60001515601060009054906101000a900460ff16151514806108845750610883336126e5565b5b6108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f6b656e207472616e73666572206973206c6f636b6564000000000000000081525060200191505060405180910390fd5b61098583600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000610a1c600954856127e490919063ffffffff16565b9050610a2986868361286a565b6000610a7d82600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b905080600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1582600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b6186612bd1565b508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b600981565b6000610c6b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f8903e080b5c69a152a91cd02601be1ae6016a2e837de3a938084856cfacbbbfa60405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515601060009054906101000a900460ff16151514611081576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e7472616374206973206c6f636b6564000000000000000000000000000081525060200191505060405180910390fd5b42600e54106110f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f74696d656c6f636b20697320616374697665000000000000000000000000000081525060200191505060405180910390fd5b61110e6201518042612b4990919063ffffffff16565b600e819055506000809050606060075460405190808252806020026020018201604052801561114c5781602001602082028038833980820191505090505b509050600080905060008090505b6007548110156113045760006006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d757506112f7565b60006111e282612d57565b90506112006009546009600a0a6064026127e490919063ffffffff16565b81101561120e5750506112f7565b600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154108061129f575080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156112f457818585815181106112b157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083806001019450505b50505b808060010191505061115a565b5060008090506000809050600061133c60095461132e600c54600a54612e3790919063ffffffff16565b6127e490919063ffffffff16565b9050600084111561176157600192506000600d54600b5460075401014243406040516020018084815260200183815260200182815260200193505050506040516020818303038152906040528051906020012060001c90506000600a82816113a057fe5b0690506000809050600a87106113c6576001600a6001848a0303816113c157fe5b040195505b6103e88611156113ec5785606484816113db57fe5b04816113e357fe5b0690506103e895505b60608660405190808252806020026020018201604052801561141d5781602001602082028038833980820191505090505b509050600080905060008090505b888110156114e95760008b8b600a8785010288018161144657fe5b068151811061145157fe5b602002602001015190508084848151811061146857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082806001019350506114d96114ca6009546114bc84612d57565b612e3790919063ffffffff16565b8e612b4990919063ffffffff16565b9c5050808060010191505061142b565b5060008090505b8181101561164257600083828151811061150657fe5b60200260200101519050600061151b82612d57565b9050600061156c8f61155e61153b60095486612e3790919063ffffffff16565b6115506009548f612e3790919063ffffffff16565b6127e490919063ffffffff16565b612e3790919063ffffffff16565b90506000611585600954836127e490919063ffffffff16565b90506115d981600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061162f818d612b4990919063ffffffff16565b9b505050505080806001019150506114f0565b5085871080156116525750600081115b1561173657600082600183038151811061166857fe5b602002602001015190506000611687898961279a90919063ffffffff16565b90506116db81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611731818a612b4990919063ffffffff16565b985050505b600087111561175b5761175487600b5461279a90919063ffffffff16565b600b819055505b50505050505b600080905060008311156117875761178460095484612e3790919063ffffffff16565b90505b600d547ff5e6c03a98bcbcea0fcf83fad40e9ef7c93f1b8d3c4fcf24c50a3381bc5d965e868684866040518085815260200184815260200183815260200182815260200194505050505060405180910390a26000601e600d54816117e757fe5b06141561180c57611805600c54600c54612b4990919063ffffffff16565b600c819055505b6118226001600d54612b4990919063ffffffff16565b600d8190555050505050505050565b6000611887600954600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3790919063ffffffff16565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f434f57000000000000000000000000000000000000000000000000000000000081525081565b6000611a8a600954600b54612e3790919063ffffffff16565b905090565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310611b9f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c33565b611bb2838261279a90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600d5414611e59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f636f6e747261637420697320756e6c6f636b656400000000000000000000000081525060200191505060405180910390fd5b6001600d81905550611e776201518042612b4990919063ffffffff16565b600e81905550611e936201518042612b4990919063ffffffff16565b600f819055506000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff0219169083151502179055507fd7d780a3bd95c768e98ce5ef684c4dec35996ca55524e8c86c53e780b5d3715a426040518082815260200191505060405180910390a1565b6000823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f4457600080fd5b60001515601060009054906101000a900460ff1615151480611f6b5750611f6a336126e5565b5b611fdd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f746f6b656e207472616e73666572206973206c6f636b6564000000000000000081525060200191505060405180910390fd5b6000611ff4600954856127e490919063ffffffff16565b9050600061204a82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b905061205733878461286a565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120ed82600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4990919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061213986612bd1565b508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461231a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515601060009054906101000a900460ff161515146123a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f636f6e7472616374206973206c6f636b6564000000000000000000000000000081525060200191505060405180910390fd5b42600f541061241a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f616c736f2062616e64697473206e6565642074696d6520746f2072657374000081525060200191505060405180910390fd5b6124306201518042612b4990919063ffffffff16565b600f8190555061246061244f6064600854612e3790919063ffffffff16565b60085461279a90919063ffffffff16565b6008819055506124946008546009600a0a6301406f40026000198161248157fe5b0660001903612e3790919063ffffffff16565b6009819055507f58c9a7ab268085907be42d3edaf55113611fc4cf2905fad5a792a0e8d7a787d66008546040518082815260200191505060405180910390a1565b6000600d54905090565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612627576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806130086026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127455760019050612795565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b60006127dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e81565b905092915050565b6000808314156127f75760009050612864565b600082840290508284828161280857fe5b041461285f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061302e6021913960400191505060405180910390fd5b809150505b92915050565b600d54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154101561298a57600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600d54600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612a23565b6129dc81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279a90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015612b4357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612b44565b5b505050565b600080828401905083811015612bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060011515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015612c8157506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d4d576001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160066000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060076000815480929190600101919050555060019050612d52565b600090505b919050565b6000600d54600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015612dec57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612e32565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490505b919050565b6000612e7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f41565b905092915050565b6000838311158290612f2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ef3578082015181840152602081019050612ed8565b50505050905090810190601f168015612f205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290612fed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612fb2578082015181840152602081019050612f97565b50505050905090810190601f168015612fdf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612ff957fe5b04905080915050939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220cd285d43e15b31a1d739d9a751cfd39f917563e712e187d067cc676d45bc1f4b64736f6c63430006000033

Deployed Bytecode Sourcemap

2368:13454:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2368:13454:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3174:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3174:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14843:204;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14843:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11942:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14026:667;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14026:667:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3271:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15055:289;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15055:289:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5600:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5600:133:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6883:4070;;;:::i;:::-;;12041:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12041:130:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1977:140;;;:::i;:::-;;1765:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3227:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3227:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11823:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15352:465;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15352:465:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5849:336;;;:::i;:::-;;13379:639;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13379:639:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1515:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14701:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14701:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6217:400;;;:::i;:::-;;11734:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2125:236;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2125:236:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3174:46;;;;;;;;;;;;;;;;;;;:::o;14843:204::-;14908:4;14960:5;14925:11;:23;14937:10;14925:23;;;;;;;;;;;;;;;:32;14949:7;14925:32;;;;;;;;;;;;;;;:40;;;;15002:7;14981:36;;14990:10;14981:36;;;15011:5;14981:36;;;;;;;;;;;;;;;;;;15035:4;15028:11;;14843:204;;;;:::o;11942:91::-;11986:7;12013:12;;12006:19;;11942:91;:::o;14026:667::-;14124:4;14111:2;2558:4;2539:24;;:7;:24;;;;2531:33;;;;;;14168:5:::1;14151:22;;:13;;;;;;;;;;;:22;;;14150:60;;;;14178:32;14199:10;14178:20;:32::i;:::-;14150:60;14141:99;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14283:40;14317:5;14283:11;:17;14295:4;14283:17;;;;;;;;;;;;;;;:29;14301:10;14283:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;14251:11;:17;14263:4;14251:17;;;;;;;;;;;;;;;:29;14269:10;14251:29;;;;;;;;;;;;;;;:72;;;;14334:13;14350:25;14360:14;;14350:5;:9;;:25;;;;:::i;:::-;14334:41;;14386:46;14416:4;14422:2;14426:5;14386:29;:46::i;:::-;14443:24;14470:26;14490:5;14470:9;:15;14480:4;14470:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;14443:53;;14525:16;14507:9;:15;14517:4;14507:15;;;;;;;;;;;;;;;:34;;;;14568:24;14586:5;14568:9;:13;14578:2;14568:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;14552:9;:13;14562:2;14552:13;;;;;;;;;;;;;;;:40;;;;14603:19;14619:2;14603:15;:19::i;:::-;;14653:2;14638:25;;14647:4;14638:25;;;14657:5;14638:25;;;;;;;;;;;;;;;;;;14681:4;14674:11;;;;14026:667:::0;;;;;;:::o;3271:36::-;3306:1;3271:36;:::o;15055:289::-;15135:4;15187:48;15224:10;15187:11;:23;15199:10;15187:23;;;;;;;;;;;;;;;:32;15211:7;15187:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;15152:11;:23;15164:10;15152:23;;;;;;;;;;;;;;;:32;15176:7;15152:32;;;;;;;;;;;;;;;:83;;;;15272:7;15251:63;;15260:10;15251:63;;;15281:11;:23;15293:10;15281:23;;;;;;;;;;;;;;;:32;15305:7;15281:32;;;;;;;;;;;;;;;;15251:63;;;;;;;;;;;;;;;;;;15332:4;15325:11;;15055:289;;;;:::o;5600:133::-;1902:10;1892:20;;:6;;;;;;;;;;;:20;;;1884:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:4:::1;5666:10;:16;5677:4;5666:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;5720:4;5705:20;;;;;;;;;;;;5600:133:::0;:::o;6883:4070::-;1902:10;1892:20;;:6;;;;;;;;;;;:20;;;1884:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6955:5:::1;6938:22;;:13;;;;;;;;;;;:22;;;6930:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7022:3;7002:17;;:23;6994:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7079:22;3901:8;7079:3;:7;;:22;;;;:::i;:::-;7059:17;:42;;;;7191:28;7222:1:::0;7191:32:::1;;7278:27;7322:16;;7308:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;7308:31:0;;;;7278:61;;7350:24;7377:1:::0;7350:28:::1;;7394:9;7406:1:::0;7394:13:::1;;7389:799;7413:16;;7409:1;:20;7389:799;;;7451:12;7466:10;:13;7477:1;7466:13;;;;;;;;;;;;;;;;;;;;;7451:28;;7513:3;7497:20;;:4;:20;;;7494:68;;;7538:8;;;7494:68;7576:19;7598:24;7617:4;7598:18;:24::i;:::-;7576:46;;7706:37;7728:14;;3306:1;3783:2;:12;3777:3;:18;7706:21;;:37;;;;:::i;:::-;7692:11;:51;7688:100;;;7764:8;;;;7688:100;8024:7;;7991:9;:15;8001:4;7991:15;;;;;;;;;;;;;;;:30;;;:40;7990:78;;;;8056:11;8037:9;:15;8047:4;8037:15;;;;;;;;;;;;;;;;:30;;7990:78;7986:191;;;8120:4;8089:10;8100:16;8089:28;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;8143:18;;;;;;;7986:191;7389:799;;;7431:3;;;;;;;7389:799;;;;8200:25;8228:1:::0;8200:29:::1;;8240:20;8263:1:::0;8240:24:::1;;8275:22;8300:54;8339:14;;8300:34;8322:11;;8300:17;;:21;;:34;;;;:::i;:::-;:38;;:54;;;;:::i;:::-;8275:79;;8387:1;8368:16;:20;8365:2186;;;8425:1;8405:21;;8487:20;8580:7;;8565:12;;8546:16;;:31;:41;8590:3;8605:12;8595:23;8528:91;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8528:91:0;;;8518:102;;;;;;8510:111;;8487:134;;8636:19;8673:2;8658:12;:17;;;;;;8636:39;;8690:20;8713:1:::0;8690:24:::1;;8753:2;8733:16;:22;8729:128;;8840:1;8835:2;8830:1;8816:11;8797:16;:30;:34;8796:41;;;;;;:45;8776:65;;8729:128;3849:4;8875:17;:39;8871:193;;;8973:17;8966:3;8951:12;:18;;;;;;8950:40;;;;;;8935:55;;3849:4;9009:39;;8871:193;9078:25;9120:17;9106:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9106:32:0;;;;9078:60;;9153:22;9178:1:::0;9153:26:::1;;9199:9;9211:1:::0;9199:13:::1;;9194:365;9218:17;9214:1;:21;9194:365;;;9261:12;9276:10;9329:16;9323:2;9307:12;9303:1;:16;9302:23;9288:11;:37;9287:58;;;;;;9276:70;;;;;;;;;;;;;;9261:85;;9392:4;9365:8;9374:14;9365:24;;;;;;;;;;;;;:31;;;;;;;;;::::0;::::1;9415:16;;;;;;;9473:70;9498:44;9527:14;;9498:24;9517:4;9498:18;:24::i;:::-;:28;;:44;;;;:::i;:::-;9473:20;:24;;:70;;;;:::i;:::-;9450:93;;9194:365;9237:3;;;;;;;9194:365;;;;9582:9;9594:1:::0;9582:13:::1;;9577:510;9601:14;9597:1;:18;9577:510;;;9641:12;9656:8;9665:1;9656:11;;;;;;;;;;;;;;9641:26;;9686:19;9708:24;9727:4;9708:18;:24::i;:::-;9686:46;;9751:19;9773:97;9849:20;9773:71;9812:31;9828:14;;9812:11;:15;;:31;;;;:::i;:::-;9773:34;9792:14;;9773;:18;;:34;;;;:::i;:::-;:38;;:71;;;;:::i;:::-;:75;;:97;;;;:::i;:::-;9751:119;;9889:18;9910:31;9926:14;;9910:11;:15;;:31;;;;:::i;:::-;9889:52;;9978:31;9998:10;9978:9;:15;9988:4;9978:15;;;;;;;;;;;;;;;;:19;;:31;;;;:::i;:::-;9960:9;:15;9970:4;9960:15;;;;;;;;;;;;;;;:49;;;;10043:28;10060:10;10043:12;:16;;:28;;;;:::i;:::-;10028:43;;9577:510;;;;9617:3;;;;;;;9577:510;;;;10123:14;10108:12;:29;10107:55;;;;;10160:1;10143:14;:18;10107:55;10103:321;;;10183:12;10198:8;10222:1;10207:14;:16;10198:26;;;;;;;;;;;;;;10183:41;;10243:12;10258:32;10277:12;10258:14;:18;;:32;;;;:::i;:::-;10243:47;;10327:25;10347:4;10327:9;:15;10337:4;10327:15;;;;;;;;;;;;;;;;:19;;:25;;;;:::i;:::-;10309:9;:15;10319:4;10309:15;;;;;;;;;;;;;;;:43;;;;10386:22;10403:4;10386:12;:16;;:22;;;;:::i;:::-;10371:37;;10103:321;;;10457:1;10442:12;:16;10438:102;;;10494:30;10511:12;10494;;:16;;:30;;;;:::i;:::-;10479:12;:45;;;;10438:102;8365:2186;;;;;;10563:21;10587:1:::0;10563:25:::1;;10617:1;10602:12;:16;10599:96;;;10651:32;10668:14;;10651:12;:16;;:32;;;;:::i;:::-;10635:48;;10599:96;10719:7;;10710:85;10728:16;10746:17;10765:13;10780:14;10710:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10839:1;3958:2;10811:7;;:24;;;;;;:29;10808:103;;;10871:28;10887:11;;10871;;:15;;:28;;;;:::i;:::-;10857:11;:42;;;;10808:103;10931:14;10943:1;10931:7;;:11;;:14;;;;:::i;:::-;10921:7;:24;;;;1960:1;;;;;;;6883:4070::o:0;12041:130::-;12098:7;12125:38;12148:14;;12125:9;:18;12135:7;12125:18;;;;;;;;;;;;;;;;:22;;:38;;;;:::i;:::-;12118:45;;12041:130;;;:::o;1977:140::-;1902:10;1892:20;;:6;;;;;;;;;;;:20;;;1884:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2076:1:::1;2039:40;;2060:6;::::0;::::1;;;;;;;;;2039:40;;;;;;;;;;;;2107:1;2090:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1977:140::o:0;1765:79::-;1803:7;1830:6;;;;;;;;;;;1823:13;;1765:79;:::o;3227:37::-;;;;;;;;;;;;;;;;;;;:::o;11823:111::-;11867:7;11894:32;11911:14;;11894:12;;:16;;:32;;;;:::i;:::-;11887:39;;11823:111;:::o;15352:465::-;15437:4;15454:16;15473:11;:23;15485:10;15473:23;;;;;;;;;;;;;;;:32;15497:7;15473:32;;;;;;;;;;;;;;;;15454:51;;15539:8;15520:15;:27;15516:193;;15599:1;15564:11;:23;15576:10;15564:23;;;;;;;;;;;;;;;:32;15588:7;15564:32;;;;;;;;;;;;;;;:36;;;;15516:193;;;15668:29;15681:15;15668:8;:12;;:29;;;;:::i;:::-;15633:11;:23;15645:10;15633:23;;;;;;;;;;;;;;;:32;15657:7;15633:32;;;;;;;;;;;;;;;:64;;;;15516:193;15745:7;15724:63;;15733:10;15724:63;;;15754:11;:23;15766:10;15754:23;;;;;;;;;;;;;;;:32;15778:7;15754:32;;;;;;;;;;;;;;;;15724:63;;;;;;;;;;;;;;;;;;15805:4;15798:11;;;15352:465;;;;:::o;5849:336::-;1902:10;1892:20;;:6;;;;;;;;;;;:20;;;1884:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5916:1:::1;5905:7;;:12;5897:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;5963:1;5953:7;:11;;;;5995:22;3901:8;5995:3;:7;;:22;;;;:::i;:::-;5975:17;:42;;;;6047:22;3901:8;6047:3;:7;;:22;;;;:::i;:::-;6028:16;:41;;;;6096:5;6080:13;;:21;;;;;;;;;;;;;;;;;;6128:5;6112:13;;:21;;;;;;;;;;;;;;;;;;6149:28;6161:15;6149:28;;;;;;;;;;;;;;;;;;5849:336::o:0;13379:639::-;13473:4;13453:9;2558:4;2539:24;;:7;:24;;;;2531:33;;;;;;13517:5:::1;13500:22;;:13;;;;;;;;;;;:22;;;13499:60;;;;13527:32;13548:10;13527:20;:32::i;:::-;13499:60;13490:99;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13600:13;13616:25;13626:14;;13616:5;:9;;:25;;;;:::i;:::-;13600:41;;13652:24;13679:32;13705:5;13679:9;:21;13689:10;13679:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;13652:59;;13722;13752:10;13764:9;13775:5;13722:29;:59::i;:::-;13816:16;13792:9;:21;13802:10;13792:21;;;;;;;;;;;;;;;:40;;;;13866:31;13891:5;13866:9;:20;13876:9;13866:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;13843:9;:20;13853:9;13843:20;;;;;;;;;;;;;;;:54;;;;13908:26;13924:9;13908:15;:26::i;:::-;;13971:9;13950:38;;13959:10;13950:38;;;13982:5;13950:38;;;;;;;;;;;;;;;;;;14006:4;13999:11;;;;13379:639:::0;;;;;:::o;1515:21::-;;;;;;;;;;;;;:::o;14701:134::-;14773:7;14800:11;:18;14812:5;14800:18;;;;;;;;;;;;;;;:27;14819:7;14800:27;;;;;;;;;;;;;;;;14793:34;;14701:134;;;;:::o;6217:400::-;1902:10;1892:20;;:6;;;;;;;;;;;:20;;;1884:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6291:5:::1;6274:22;;:13;;;;;;;;;;;:22;;;6266:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;6357:3;6338:16;;:22;6330:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;6425:22;3901:8;6425:3;:7;;:22;;;;:::i;:::-;6406:16;:41;;;;6473:39;6490:21;6507:3;6490:12;;:16;;:21;;;;:::i;:::-;6473:12;;:16;;:39;;;;:::i;:::-;6458:12;:54;;;;6540:29;6556:12;;3306:1;3517:2;:12;3441:10;3500:29;3390:1;3381:11;3590:28;;;;;;3390:1;3381:11;3575:44;6540:15;;:29;;;;:::i;:::-;6523:14;:46;;;;6585:24;6596:12;;6585:24;;;;;;;;;;;;;;;;;;6217:400::o:0;11734:81::-;11773:7;11800;;11793:14;;11734:81;:::o;2125:236::-;1902:10;1892:20;;:6;;;;;;;;;;;:20;;;1884:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2226:1:::1;2206:22;;:8;:22;;;;2198:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:8;2287:38;;2308:6;::::0;::::1;;;;;;;;;2287:38;;;;;;;;;;;;2345:8;2336:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2125:236:::0;:::o;11186:182::-;11252:4;11281:6;;;;;;;;;;;11273:14;;:4;:14;;;11269:58;;;11311:4;11304:11;;;;11269:58;11344:10;:16;11355:4;11344:16;;;;;;;;;;;;;;;;;;;;;;;;;11337:23;;11186:182;;;;:::o;239:136::-;297:7;324:43;328:1;331;324:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;317:50;;239:136;;;;:::o;583:250::-;641:7;670:1;665;:6;661:47;;;695:1;688:8;;;;661:47;720:9;736:1;732;:5;720:17;;765:1;760;756;:5;;;;;;:10;748:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;824:1;817:8;;;583:250;;;;;:::o;12179:1192::-;12442:7;;12409:9;:15;12419:4;12409:15;;;;;;;;;;;;;;;:30;;;:40;12406:359;;;12500:9;:15;12510:4;12500:15;;;;;;;;;;;;;;;;12466:9;:15;12476:4;12466:15;;;;;;;;;;;;;;;:31;;:49;;;;12563:7;;12530:9;:15;12540:4;12530:15;;;;;;;;;;;;;;;:30;;:40;;;;12406:359;;;12727:26;12747:5;12727:9;:15;12737:4;12727:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;12693:9;:15;12703:4;12693:15;;;;;;;;;;;;;;;:31;;:60;;;;12406:359;12941:7;;12910:9;:13;12920:2;12910:13;;;;;;;;;;;;;;;:28;;;:38;12907:457;;;12997:9;:13;13007:2;12997:13;;;;;;;;;;;;;;;;12965:9;:13;12975:2;12965:13;;;;;;;;;;;;;;;:29;;:45;;;;13056:7;;13025:9;:13;13035:2;13025:13;;;;;;;;;;;;;;;:28;;:38;;;;12907:457;;;;12179:1192;;;:::o;50:181::-;108:7;128:9;144:1;140;:5;128:17;;169:1;164;:6;;156:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;222:1;215:8;;;50:181;;;;:::o;11376:348::-;11437:4;11488;11458:34;;:15;:26;11474:9;11458:26;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;11457:61;;;;;11511:6;;;;;;;;;;;11498:19;;:9;:19;;;;11457:61;11454:240;;;11564:4;11535:15;:26;11551:9;11535:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;11614:9;11583:10;:28;11594:16;;11583:28;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;11638:16;;:18;;;;;;;;;;;;;11678:4;11671:11;;;;11454:240;11711:5;11704:12;;11376:348;;;;:::o;6625:236::-;6689:7;6746;;6713:9;:15;6723:4;6713:15;;;;;;;;;;;;;;;:30;;;:40;6709:95;;;6777:9;:15;6787:4;6777:15;;;;;;;;;;;;;;;;6770:22;;;;6709:95;6822:9;:15;6832:4;6822:15;;;;;;;;;;;;;;;:31;;;6814:39;;6625:236;;;;:::o;841:132::-;899:7;926:39;930:1;933;926:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;919:46;;841:132;;;;:::o;383:192::-;469:7;502:1;497;:6;;505:12;489:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;489:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;529:9;545:1;541;:5;529:17;;566:1;559:8;;;383:192;;;;;:::o;981:191::-;1067:7;1099:1;1095;:5;1102:12;1087:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1087:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1126:9;1142:1;1138;:5;;;;;;1126:17;;1163:1;1156:8;;;981:191;;;;;:::o

Swarm Source

ipfs://cd285d43e15b31a1d739d9a751cfd39f917563e712e187d067cc676d45bc1f4b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.