ETH Price: $2,097.61 (+13.14%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve242205072026-01-12 18:45:1144 days ago1768243511IN
0xdA5D2025...434dA9e7d
0 ETH0.000025850.55460603
Approve241998732026-01-09 21:40:2347 days ago1767994823IN
0xdA5D2025...434dA9e7d
0 ETH0.000026710.57309796
Approve241998632026-01-09 21:38:2347 days ago1767994703IN
0xdA5D2025...434dA9e7d
0 ETH0.000026690.57262031
Approve241996552026-01-09 20:56:3547 days ago1767992195IN
0xdA5D2025...434dA9e7d
0 ETH0.000095012.04073909
Approve241275052025-12-30 19:21:4757 days ago1767122507IN
0xdA5D2025...434dA9e7d
0 ETH0.000008030.1735357
Approve235797832025-10-15 1:21:35133 days ago1760491295IN
0xdA5D2025...434dA9e7d
0 ETH0.000011370.24570348
Approve235417682025-10-09 17:48:23139 days ago1760032103IN
0xdA5D2025...434dA9e7d
0 ETH0.000045340.97975407
Transfer232443462025-08-29 4:18:47180 days ago1756441127IN
0xdA5D2025...434dA9e7d
0 ETH0.000033520.31501698
Approve231471322025-08-15 14:48:23194 days ago1755269303IN
0xdA5D2025...434dA9e7d
0 ETH0.000032731.34535737
Approve229813432025-07-23 10:42:11217 days ago1753267331IN
0xdA5D2025...434dA9e7d
0 ETH0.00001620.66598637
Approve227559372025-06-21 22:53:11248 days ago1750546391IN
0xdA5D2025...434dA9e7d
0 ETH0.000049121.06008811
Approve225798042025-05-28 7:33:47273 days ago1748417627IN
0xdA5D2025...434dA9e7d
0 ETH0.000058391.26016678
Approve225797922025-05-28 7:31:23273 days ago1748417483IN
0xdA5D2025...434dA9e7d
0 ETH0.000151223.248081
Approve225758532025-05-27 18:16:35274 days ago1748369795IN
0xdA5D2025...434dA9e7d
0 ETH0.00022284.81639391
Approve225666792025-05-26 11:30:47275 days ago1748259047IN
0xdA5D2025...434dA9e7d
0 ETH0.00007891.69259536
Transfer225666092025-05-26 11:16:35275 days ago1748258195IN
0xdA5D2025...434dA9e7d
0 ETH0.000048821.16026031
Approve224836472025-05-14 20:02:47287 days ago1747252967IN
0xdA5D2025...434dA9e7d
0 ETH0.000114372.47122156
Approve224107532025-05-04 13:40:35297 days ago1746366035IN
0xdA5D2025...434dA9e7d
0 ETH0.000020570.44213076
Approve223635692025-04-27 23:06:11303 days ago1745795171IN
0xdA5D2025...434dA9e7d
0 ETH0.000023290.50353022
Approve223231812025-04-22 7:54:47309 days ago1745308487IN
0xdA5D2025...434dA9e7d
0 ETH0.000076052.58182569
Approve222759282025-04-15 17:39:23316 days ago1744738763IN
0xdA5D2025...434dA9e7d
0 ETH0.000037320.80667493
Approve221670712025-03-31 13:02:59331 days ago1743426179IN
0xdA5D2025...434dA9e7d
0 ETH0.000089213.02229827
Approve221082452025-03-23 7:58:11339 days ago1742716691IN
0xdA5D2025...434dA9e7d
0 ETH0.000023250.50266843
Approve220571922025-03-16 4:55:35346 days ago1742100935IN
0xdA5D2025...434dA9e7d
0 ETH0.000043630.93698798
Approve220164372025-03-10 12:21:11352 days ago1741609271IN
0xdA5D2025...434dA9e7d
0 ETH0.000131182.81750853
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Casper

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-04-23
*/

pragma solidity 0.5.10;

/**
 * Casper
 * The future-proof blockchain
 * The first proof-of-stake blockchain built off the Casper CBC specification
 * Website: https://casper.network
 */
library SafeMath {

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

        return c;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {

    address internal _owner;

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

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

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

    modifier onlyOwner() {
        require(isOwner(msg.sender), "Caller is not the owner");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == _owner;
    }

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

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

}

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }


    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

/**
 * @title MinterRole
 * @dev role for addresses who has permission to mint tokens.
 */
contract MinterRole is Ownable {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    modifier onlyMinter() {
        require(isMinter(msg.sender), "Caller has no permission");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return(_minters.has(account) || isOwner(account));
    }

    function addMinter(address account) public onlyOwner {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function removeMinter(address account) public onlyOwner {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

/**
 * @title HalterRole
 * @dev role for addresses who has permission to pause any token movement.
 */
contract HalterRole is Ownable {
    using Roles for Roles.Role;

    event HalterAdded(address indexed account);
    event HalterRemoved(address indexed account);

    Roles.Role private _halters;

    modifier onlyHalter() {
        require(isHalter(msg.sender), "Caller has no permission");
        _;
    }

    function isHalter(address account) public view returns (bool) {
        return(_halters.has(account) || isOwner(account));
    }

    function addHalter(address account) public onlyOwner {
        _halters.add(account);
        emit HalterAdded(account);
    }

    function removeHalter(address account) public onlyOwner {
        _halters.remove(account);
        emit HalterRemoved(account);
    }
}

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * See https://eips.ethereum.org/EIPS/eip-20
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowed;

    uint256 private _totalSupply;

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

    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

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

    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        require(spender != address(0));
        require(owner != address(0));

        _allowed[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _burn(address account, uint256 amount) internal {
        require(account != address(0));

        _balances[account] = _balances[account].sub(amount);
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowed[account][msg.sender].sub(amount));
    }

}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for.
 */
contract ERC20Burnable is ERC20 {

    function burn(uint256 amount) public {
        _burn(msg.sender, amount);
    }

    function burnFrom(address account, uint256 amount) public {
        _burnFrom(account, amount);
    }

}

/**
 * @dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},
 * which have permission to mint (create) new tokens as they see fit.
 */
contract ERC20Mintable is ERC20Burnable, MinterRole {

    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }

}

/**
 * @dev Extension of {ERC20} that adds a possibility to temporary prevent any token movements.
 */
contract ERC20Haltable is ERC20Mintable, HalterRole {

    bool public paused;

    event Paused(address by);
    event Unpaused(address by);

    modifier notPaused() {
        require(!paused);
        _;
    }

    function pause() public onlyHalter {
        paused = true;
        emit Paused(msg.sender);
    }

    function unpause() public onlyHalter {
        paused = false;
        emit Unpaused(msg.sender);
    }

    function _transfer(address from, address to, uint256 value) internal notPaused {
        super._transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal notPaused {
        super._mint(account, value);
    }

    function _burn(address account, uint256 amount) internal notPaused {
        super._burn(account, amount);
    }

}

/**
 * @title ApproveAndCall Interface.
 * @dev ApproveAndCall system allows to communicate with smart-contracts.
 */
interface IApproveAndCallFallBack {
    function receiveApproval(address from, uint256 amount, address token, bytes calldata extraData) external;
}

/**
 * @title The main project contract.
 */
contract Casper is ERC20Haltable {

    string private _name = "Casper";
    string private _symbol = "CSPR";
    uint8 private _decimals = 18;

    uint256 internal constant _emission = 1000000000 * (10 ** 18);

    mapping (address => bool) private _contracts;

    bool public mintingFinished;

    mapping (address => uint256) internal holderMap;

    address[] public holderList;

    modifier onlyMinter() {
        if (mintingFinished) {
            revert();
        }
        require(isMinter(msg.sender), "Caller has no permission");
        _;
    }

    constructor() public {
        _addHolder(address(0));
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (value != 0) {
            if (holderMap[to] == 0) {
                _addHolder(to);
            }
            if (balanceOf(from).sub(value) == 0) {
                _removeHolder(from);
            }
        }

        super._transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= _emission);

        if (value != 0 && holderMap[account] == 0) {
            _addHolder(account);
        }

        super._mint(account, value);
    }

    function _burn(address account, uint256 amount) internal {
        if (balanceOf(account).sub(amount) == 0) {
            _removeHolder(account);
        }

        super._burn(account, amount);
    }

    function _addHolder(address account) internal {
        holderList.push(account);
        holderMap[account] = holderList.length.sub(1);
    }

    function _removeHolder(address account) internal {
        if (holderList.length > 1) {
            holderList[holderMap[account]] = holderList[holderList.length.sub(1)];
            holderMap[holderList[holderList.length.sub(1)]] = holderMap[account];
        }
        holderMap[account] = 0;
        holderList.length = holderList.length.sub(1);
    }

    function approveAndCall(address spender, uint256 amount, bytes memory extraData) public returns (bool) {
        require(approve(spender, amount));

        IApproveAndCallFallBack(spender).receiveApproval(msg.sender, amount, address(this), extraData);

        return true;
    }

    function transfer(address to, uint256 value) public returns (bool) {

        if (_contracts[to]) {
            approveAndCall(to, value, new bytes(0));
        } else {
            super.transfer(to, value);
        }

        return true;

    }

    function registerContract(address addr) public onlyOwner {
        require(isContract(addr));
        _contracts[addr] = true;
    }

    function unregisterContract(address addr) external onlyOwner {
        _contracts[addr] = false;
    }

    function finishMinting() external onlyMinter {
        mintingFinished = true;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

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

    function isRegistered(address addr) public view returns (bool) {
        return _contracts[addr];
    }

    function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    function amountOfHolders() public view returns (uint256) {
        return holderList.length.sub(1);
    }

    function holders() public view returns (address[] memory) {
        return holderList;
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"holderList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"registerContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isHalter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"holders","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeHalter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"amountOfHolders","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isRegistered","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addHalter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"unregisterContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"by","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"by","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"HalterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"HalterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526040518060400160405280600681526020017f436173706572000000000000000000000000000000000000000000000000000081525060079080519060200190620000519291906200028d565b506040518060400160405280600481526020017f4353505200000000000000000000000000000000000000000000000000000000815250600890805190602001906200009f9291906200028d565b506012600960006101000a81548160ff021916908360ff160217905550348015620000c957600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200019a6000620001a060201b60201c565b6200033c565b600d8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002266001600d805490506200026c60201b620023601790919060201c565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000828211156200027c57600080fd5b600082840390508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d057805160ff191683800117855562000301565b8280016001018555821562000301579182015b8281111562000300578251825591602001919060010190620002e3565b5b50905062000310919062000314565b5090565b6200033991905b80821115620003355760008160009055506001016200031b565b5090565b90565b613057806200034c6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806379cc679011610125578063a74baaa4116100ad578063c440b5f61161007c578063c440b5f614610ae2578063cae9ca5114610b26578063dd62ed3e14610c23578063f2fde38b14610c9b578063fac2c62114610cdf5761021c565b8063a74baaa4146109a6578063a9059cbb146109c4578063aa271e1a14610a2a578063c3c5a54714610a865761021c565b80638da5cb5b116100f45780638da5cb5b146107eb57806395d89b4114610835578063983b2d56146108b8578063a1e8b4f1146108fc578063a457c2d7146109405761021c565b806379cc67901461072a5780637d64bcb4146107785780638188f71c146107825780638456cb59146107e15761021c565b8063313ce567116101a857806342966c681161017757806342966c681461061c5780635c975abb1461064a5780635fe0a0181461066c57806370a08231146106c8578063715018a6146107205761021c565b8063313ce5671461052257806339509351146105465780633f4ba83a146105ac57806340c10f19146105b65761021c565b806318160ddd116101ef57806318160ddd1461039a57806322a5dde4146103b857806323b872dd146103fc5780632f54bf6e146104825780633092afd5146104de5761021c565b806305d2035b1461022157806306fdde0314610243578063095ea7b3146102c657806316ad42ad1461032c575b600080fd5b610229610d23565b604051808215151515815260200191505060405180910390f35b61024b610d36565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028b578082015181840152602081019050610270565b50505050905090810190601f1680156102b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610312600480360360408110156102dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd8565b604051808215151515815260200191505060405180910390f35b6103586004803603602081101561034257600080fd5b8101908080359060200190929190505050610def565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a2610e2b565b6040518082815260200191505060405180910390f35b6103fa600480360360208110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e35565b005b6104686004803603606081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1d565b604051808215151515815260200191505060405180910390f35b6104c46004803603602081101561049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fce565b604051808215151515815260200191505060405180910390f35b610520600480360360208110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611028565b005b61052a6110fd565b604051808260ff1660ff16815260200191505060405180910390f35b6105926004803603604081101561055c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611114565b604051808215151515815260200191505060405180910390f35b6105b46111b9565b005b610602600480360360408110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b4565b604051808215151515815260200191505060405180910390f35b6106486004803603602081101561063257600080fd5b810190808035906020019092919050505061135f565b005b61065261136c565b604051808215151515815260200191505060405180910390f35b6106ae6004803603602081101561068257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061137f565b604051808215151515815260200191505060405180910390f35b61070a600480360360208110156106de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113ac565b6040518082815260200191505060405180910390f35b6107286113f4565b005b6107766004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b005b61078061153e565b005b61078a6115f0565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107cd5780820151818401526020810190506107b2565b505050509050019250505060405180910390f35b6107e961167e565b005b6107f3611779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61083d6117a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087d578082015181840152602081019050610862565b50505050905090810190601f1680156108aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108fa600480360360208110156108ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611845565b005b61093e6004803603602081101561091257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191a565b005b61098c6004803603604081101561095657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ef565b604051808215151515815260200191505060405180910390f35b6109ae611a94565b6040518082815260200191505060405180910390f35b610a10600480360360408110156109da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ab4565b604051808215151515815260200191505060405180910390f35b610a6c60048036036020811015610a4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b63565b604051808215151515815260200191505060405180910390f35b610ac860048036036020811015610a9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b90565b604051808215151515815260200191505060405180910390f35b610b2460048036036020811015610af857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be6565b005b610c0960048036036060811015610b3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b8357600080fd5b820183602082011115610b9557600080fd5b80359060200191846001830284011164010000000083111715610bb757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cbb565b604051808215151515815260200191505060405180910390f35b610c8560048036036040811015610c3957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1b565b6040518082815260200191505060405180910390f35b610cdd60048036036020811015610cb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ea2565b005b610d2160048036036020811015610cf557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612080565b005b600b60009054906101000a900460ff1681565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b6000610de5338484612156565b6001905092915050565b600d8181548110610dfc57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610e3e33610fce565b610eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b610eb9816122b5565b610ec257600080fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610f2a8484846122c8565b610fc38433610fbe85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b612156565b600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61103133610fce565b6110a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6110b781600461238090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000600960009054906101000a900460ff16905090565b60006111af33846111aa85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243d90919063ffffffff16565b612156565b6001905092915050565b6111c23361137f565b611234576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600b60009054906101000a900460ff16156112d057600080fd5b6112d933611b63565b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b611355838361245c565b6001905092915050565b61136933826124fb565b50565b600660009054906101000a900460ff1681565b600061139582600561253690919063ffffffff16565b806113a557506113a482610fce565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113fd33610fce565b61146f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61153a8282612614565b5050565b600b60009054906101000a900460ff161561155857600080fd5b61156133611b63565b6115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550565b6060600d80548060200260200160405190810160405280929190818152602001828054801561167457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161162a575b5050505050905090565b6116873361137f565b6116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561183b5780601f106118105761010080835404028352916020019161183b565b820191906000526020600020905b81548152906001019060200180831161181e57829003601f168201915b5050505050905090565b61184e33610fce565b6118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6118d48160046126bb90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61192333610fce565b611995576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6119a981600561238090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f4aea7d7b9f1c782799f10f55c8dd49fbe23c0824d22887043ec8cb631e9289e560405160405180910390a250565b6000611a8a3384611a8585600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b612156565b6001905092915050565b6000611aaf6001600d8054905061236090919063ffffffff16565b905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b4d57611b47838360006040519080825280601f01601f191660200182016040528015611b415781602001600182028038833980820191505090505b50611cbb565b50611b59565b611b578383612796565b505b6001905092915050565b6000611b7982600461253690919063ffffffff16565b80611b895750611b8882610fce565b5b9050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611bef33610fce565b611c61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b611c758160056126bb90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fc3957472ba41ba0725d850fd85857b6c5ea0070f71229e02b17fb370eb0abba760405160405180910390a250565b6000611cc78484610dd8565b611cd057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611da9578082015181840152602081019050611d8e565b50505050905090810190601f168015611dd65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b50505050600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611eab33610fce565b611f1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61208933610fce565b6120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121ca57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080823b905060008111915050919050565b60008114612350576000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561232257612321826127ad565b5b600061233f82612331866113ac565b61236090919063ffffffff16565b141561234f5761234e83612872565b5b5b61235b838383612aa6565b505050565b60008282111561236f57600080fd5b600082840390508091505092915050565b61238a8282612536565b6123df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612fe06021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101561245257600080fd5b8091505092915050565b6b033b2e3c9fd0803ce800000061248382612475610e2b565b61243d90919063ffffffff16565b111561248e57600080fd5b600081141580156124de57506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156124ed576124ec826127ad565b5b6124f78282612ad0565b5050565b60006125188261250a856113ac565b61236090919063ffffffff16565b14156125285761252782612872565b5b6125328282612af8565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806130016022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61261e82826124fb565b6126b782336126b284600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b612156565b5050565b6126c58282612536565b15612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006127a33384846122c8565b6001905092915050565b600d8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061282c6001600d8054905061236090919063ffffffff16565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6001600d805490501115612a3757600d61289b6001600d8054905061236090919063ffffffff16565b815481106128a557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061291c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c6000600d6129c36001600d8054905061236090919063ffffffff16565b815481106129cd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a956001600d8054905061236090919063ffffffff16565b600d81612aa29190612f8e565b5050565b600660009054906101000a900460ff1615612ac057600080fd5b612acb838383612b20565b505050565b600660009054906101000a900460ff1615612aea57600080fd5b612af48282612cea565b5050565b600660009054906101000a900460ff1615612b1257600080fd5b612b1c8282612e3c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b5a57600080fd5b612bab816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d2457600080fd5b612d398160025461243d90919063ffffffff16565b600281905550612d90816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e7657600080fd5b612ec7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f1e8160025461236090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b815481835581811115612fb557818360005260206000209182019101612fb49190612fba565b5b505050565b612fdc91905b80821115612fd8576000816000905550600101612fc0565b5090565b9056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a723058202006eb4e773cdecf2f1483966ae271703816b37feec38a9062cb0d30969c4ec464736f6c634300050a0032

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061021c5760003560e01c806379cc679011610125578063a74baaa4116100ad578063c440b5f61161007c578063c440b5f614610ae2578063cae9ca5114610b26578063dd62ed3e14610c23578063f2fde38b14610c9b578063fac2c62114610cdf5761021c565b8063a74baaa4146109a6578063a9059cbb146109c4578063aa271e1a14610a2a578063c3c5a54714610a865761021c565b80638da5cb5b116100f45780638da5cb5b146107eb57806395d89b4114610835578063983b2d56146108b8578063a1e8b4f1146108fc578063a457c2d7146109405761021c565b806379cc67901461072a5780637d64bcb4146107785780638188f71c146107825780638456cb59146107e15761021c565b8063313ce567116101a857806342966c681161017757806342966c681461061c5780635c975abb1461064a5780635fe0a0181461066c57806370a08231146106c8578063715018a6146107205761021c565b8063313ce5671461052257806339509351146105465780633f4ba83a146105ac57806340c10f19146105b65761021c565b806318160ddd116101ef57806318160ddd1461039a57806322a5dde4146103b857806323b872dd146103fc5780632f54bf6e146104825780633092afd5146104de5761021c565b806305d2035b1461022157806306fdde0314610243578063095ea7b3146102c657806316ad42ad1461032c575b600080fd5b610229610d23565b604051808215151515815260200191505060405180910390f35b61024b610d36565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028b578082015181840152602081019050610270565b50505050905090810190601f1680156102b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610312600480360360408110156102dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd8565b604051808215151515815260200191505060405180910390f35b6103586004803603602081101561034257600080fd5b8101908080359060200190929190505050610def565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a2610e2b565b6040518082815260200191505060405180910390f35b6103fa600480360360208110156103ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e35565b005b6104686004803603606081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1d565b604051808215151515815260200191505060405180910390f35b6104c46004803603602081101561049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fce565b604051808215151515815260200191505060405180910390f35b610520600480360360208110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611028565b005b61052a6110fd565b604051808260ff1660ff16815260200191505060405180910390f35b6105926004803603604081101561055c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611114565b604051808215151515815260200191505060405180910390f35b6105b46111b9565b005b610602600480360360408110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b4565b604051808215151515815260200191505060405180910390f35b6106486004803603602081101561063257600080fd5b810190808035906020019092919050505061135f565b005b61065261136c565b604051808215151515815260200191505060405180910390f35b6106ae6004803603602081101561068257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061137f565b604051808215151515815260200191505060405180910390f35b61070a600480360360208110156106de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113ac565b6040518082815260200191505060405180910390f35b6107286113f4565b005b6107766004803603604081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b005b61078061153e565b005b61078a6115f0565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107cd5780820151818401526020810190506107b2565b505050509050019250505060405180910390f35b6107e961167e565b005b6107f3611779565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61083d6117a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561087d578082015181840152602081019050610862565b50505050905090810190601f1680156108aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108fa600480360360208110156108ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611845565b005b61093e6004803603602081101561091257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191a565b005b61098c6004803603604081101561095657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ef565b604051808215151515815260200191505060405180910390f35b6109ae611a94565b6040518082815260200191505060405180910390f35b610a10600480360360408110156109da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ab4565b604051808215151515815260200191505060405180910390f35b610a6c60048036036020811015610a4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b63565b604051808215151515815260200191505060405180910390f35b610ac860048036036020811015610a9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b90565b604051808215151515815260200191505060405180910390f35b610b2460048036036020811015610af857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be6565b005b610c0960048036036060811015610b3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610b8357600080fd5b820183602082011115610b9557600080fd5b80359060200191846001830284011164010000000083111715610bb757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cbb565b604051808215151515815260200191505060405180910390f35b610c8560048036036040811015610c3957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1b565b6040518082815260200191505060405180910390f35b610cdd60048036036020811015610cb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ea2565b005b610d2160048036036020811015610cf557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612080565b005b600b60009054906101000a900460ff1681565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b6000610de5338484612156565b6001905092915050565b600d8181548110610dfc57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610e3e33610fce565b610eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b610eb9816122b5565b610ec257600080fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610f2a8484846122c8565b610fc38433610fbe85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b612156565b600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61103133610fce565b6110a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6110b781600461238090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000600960009054906101000a900460ff16905090565b60006111af33846111aa85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243d90919063ffffffff16565b612156565b6001905092915050565b6111c23361137f565b611234576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600b60009054906101000a900460ff16156112d057600080fd5b6112d933611b63565b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b611355838361245c565b6001905092915050565b61136933826124fb565b50565b600660009054906101000a900460ff1681565b600061139582600561253690919063ffffffff16565b806113a557506113a482610fce565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113fd33610fce565b61146f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61153a8282612614565b5050565b600b60009054906101000a900460ff161561155857600080fd5b61156133611b63565b6115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6001600b60006101000a81548160ff021916908315150217905550565b6060600d80548060200260200160405190810160405280929190818152602001828054801561167457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161162a575b5050505050905090565b6116873361137f565b6116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561183b5780601f106118105761010080835404028352916020019161183b565b820191906000526020600020905b81548152906001019060200180831161181e57829003601f168201915b5050505050905090565b61184e33610fce565b6118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6118d48160046126bb90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61192333610fce565b611995576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6119a981600561238090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f4aea7d7b9f1c782799f10f55c8dd49fbe23c0824d22887043ec8cb631e9289e560405160405180910390a250565b6000611a8a3384611a8585600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b612156565b6001905092915050565b6000611aaf6001600d8054905061236090919063ffffffff16565b905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b4d57611b47838360006040519080825280601f01601f191660200182016040528015611b415781602001600182028038833980820191505090505b50611cbb565b50611b59565b611b578383612796565b505b6001905092915050565b6000611b7982600461253690919063ffffffff16565b80611b895750611b8882610fce565b5b9050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611bef33610fce565b611c61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b611c758160056126bb90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fc3957472ba41ba0725d850fd85857b6c5ea0070f71229e02b17fb370eb0abba760405160405180910390a250565b6000611cc78484610dd8565b611cd057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611da9578082015181840152602081019050611d8e565b50505050905090810190601f168015611dd65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b50505050600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611eab33610fce565b611f1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61208933610fce565b6120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121ca57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080823b905060008111915050919050565b60008114612350576000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561232257612321826127ad565b5b600061233f82612331866113ac565b61236090919063ffffffff16565b141561234f5761234e83612872565b5b5b61235b838383612aa6565b505050565b60008282111561236f57600080fd5b600082840390508091505092915050565b61238a8282612536565b6123df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612fe06021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101561245257600080fd5b8091505092915050565b6b033b2e3c9fd0803ce800000061248382612475610e2b565b61243d90919063ffffffff16565b111561248e57600080fd5b600081141580156124de57506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156124ed576124ec826127ad565b5b6124f78282612ad0565b5050565b60006125188261250a856113ac565b61236090919063ffffffff16565b14156125285761252782612872565b5b6125328282612af8565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806130016022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61261e82826124fb565b6126b782336126b284600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b612156565b5050565b6126c58282612536565b15612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006127a33384846122c8565b6001905092915050565b600d8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061282c6001600d8054905061236090919063ffffffff16565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6001600d805490501115612a3757600d61289b6001600d8054905061236090919063ffffffff16565b815481106128a557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061291c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c6000600d6129c36001600d8054905061236090919063ffffffff16565b815481106129cd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a956001600d8054905061236090919063ffffffff16565b600d81612aa29190612f8e565b5050565b600660009054906101000a900460ff1615612ac057600080fd5b612acb838383612b20565b505050565b600660009054906101000a900460ff1615612aea57600080fd5b612af48282612cea565b5050565b600660009054906101000a900460ff1615612b1257600080fd5b612b1c8282612e3c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b5a57600080fd5b612bab816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d2457600080fd5b612d398160025461243d90919063ffffffff16565b600281905550612d90816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461243d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e7657600080fd5b612ec7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f1e8160025461236090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b815481835581811115612fb557818360005260206000209182019101612fb49190612fba565b5b505050565b612fdc91905b80821115612fd8576000816000905550600101612fc0565b5090565b9056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a723058202006eb4e773cdecf2f1483966ae271703816b37feec38a9062cb0d30969c4ec464736f6c634300050a0032

Deployed Bytecode Sourcemap

9926:3711:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9926:3711:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10204:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12860:83;;;:::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;12860:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5792:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5792:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10296:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10296:27:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5292:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12511:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12511:135:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5948:228;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5948:228:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1208:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1208:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3171:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3171:137:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13046:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6184:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6184:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9108:106;;;:::i;:::-;;8511:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8511:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8087:81;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8087:81:0;;;;;;;;;;;;;;;;;:::i;:::-;;8830:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3752:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3752:130:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5391:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5391:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1320:140;;;:::i;:::-;;8176:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8176:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12766:86;;;:::i;:::-;;13538:94;;;:::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;13538:94:0;;;;;;;;;;;;;;;;;8999:101;;;:::i;:::-;;1006:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12951:87;;;:::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;12951:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3034:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3034:129:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4027:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4027:137:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6395:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6395:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13423:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12246:257;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12246:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2896:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2896:130:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13137:105;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13137:105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3890:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3890:129:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11952:286;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11952:286:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11952:286:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11952:286:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11952:286:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11952:286:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5505:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5505:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1468:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1468:227:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12654:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12654:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10204:27;;;;;;;;;;;;;:::o;12860:83::-;12897:13;12930:5;12923:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12860:83;:::o;5792:148::-;5857:4;5874:36;5883:10;5895:7;5904:5;5874:8;:36::i;:::-;5928:4;5921:11;;5792:148;;;;:::o;10296:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5292:91::-;5336:7;5363:12;;5356:19;;5292:91;:::o;12511:135::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12587:16;12598:4;12587:10;:16::i;:::-;12579:25;;;;;;12634:4;12615:10;:16;12626:4;12615:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12511:135;:::o;5948:228::-;6027:4;6044:26;6054:4;6060:2;6064:5;6044:9;:26::i;:::-;6081:65;6090:4;6096:10;6108:37;6139:5;6108:8;:14;6117:4;6108:14;;;;;;;;;;;;;;;:26;6123:10;6108:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;6081:8;:65::i;:::-;6164:4;6157:11;;5948:228;;;;;:::o;1208:104::-;1263:4;1298:6;;;;;;;;;;;1287:17;;:7;:17;;;1280:24;;1208:104;;;:::o;3171:137::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3238:24;3254:7;3238:8;:15;;:24;;;;:::i;:::-;3292:7;3278:22;;;;;;;;;;;;3171:137;:::o;13046:83::-;13087:5;13112:9;;;;;;;;;;;13105:16;;13046:83;:::o;6184:203::-;6264:4;6281:76;6290:10;6302:7;6311:45;6345:10;6311:8;:20;6320:10;6311:20;;;;;;;;;;;;;;;:29;6332:7;6311:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;6281:8;:76::i;:::-;6375:4;6368:11;;6184:203;;;;:::o;9108:106::-;3675:20;3684:10;3675:8;:20::i;:::-;3667:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9165:5;9156:6;;:14;;;;;;;;;;;;;;;;;;9186:20;9195:10;9186:20;;;;;;;;;;;;;;;;;;;;;;9108:106::o;8511:143::-;8585:4;10369:15;;;;;;;;;;;10365:56;;;10401:8;;;10365:56;10439:20;10448:10;10439:8;:20::i;:::-;10431:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8602:22;8608:7;8617:6;8602:5;:22::i;:::-;8642:4;8635:11;;8511:143;;;;:::o;8087:81::-;8135:25;8141:10;8153:6;8135:5;:25::i;:::-;8087:81;:::o;8830:18::-;;;;;;;;;;;;;:::o;3752:130::-;3808:4;3832:21;3845:7;3832:8;:12;;:21;;;;:::i;:::-;:41;;;;3857:16;3865:7;3857;:16::i;:::-;3832:41;3825:49;;3752:130;;;:::o;5391:106::-;5446:7;5473:9;:16;5483:5;5473:16;;;;;;;;;;;;;;;;5466:23;;5391:106;;;:::o;1320:140::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1419:1;1382:40;;1403:6;;;;;;;;;;;1382:40;;;;;;;;;;;;1450:1;1433:6;;:19;;;;;;;;;;;;;;;;;;1320:140::o;8176:103::-;8245:26;8255:7;8264:6;8245:9;:26::i;:::-;8176:103;;:::o;12766:86::-;10369:15;;;;;;;;;;;10365:56;;;10401:8;;;10365:56;10439:20;10448:10;10439:8;:20::i;:::-;10431:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12840:4;12822:15;;:22;;;;;;;;;;;;;;;;;;12766:86::o;13538:94::-;13578:16;13614:10;13607:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13538:94;:::o;8999:101::-;3675:20;3684:10;3675:8;:20::i;:::-;3667:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9054:4;9045:6;;:13;;;;;;;;;;;;;;;;;;9074:18;9081:10;9074:18;;;;;;;;;;;;;;;;;;;;;;8999:101::o;1006:79::-;1044:7;1071:6;;;;;;;;;;;1064:13;;1006:79;:::o;12951:87::-;12990:13;13023:7;13016:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12951:87;:::o;3034:129::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3098:21;3111:7;3098:8;:12;;:21;;;;:::i;:::-;3147:7;3135:20;;;;;;;;;;;;3034:129;:::o;4027:137::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4094:24;4110:7;4094:8;:15;;:24;;;;:::i;:::-;4148:7;4134:22;;;;;;;;;;;;4027:137;:::o;6395:213::-;6480:4;6497:81;6506:10;6518:7;6527:50;6561:15;6527:8;:20;6536:10;6527:20;;;;;;;;;;;;;;;:29;6548:7;6527:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;6497:8;:81::i;:::-;6596:4;6589:11;;6395:213;;;;:::o;13423:107::-;13471:7;13498:24;13520:1;13498:10;:17;;;;:21;;:24;;;;:::i;:::-;13491:31;;13423:107;:::o;12246:257::-;12307:4;12330:10;:14;12341:2;12330:14;;;;;;;;;;;;;;;;;;;;;;;;;12326:144;;;12361:39;12376:2;12380:5;12397:1;12387:12;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;12387:12:0;;;;12361:14;:39::i;:::-;;12326:144;;;12433:25;12448:2;12452:5;12433:14;:25::i;:::-;;12326:144;12489:4;12482:11;;12246:257;;;;:::o;2896:130::-;2952:4;2976:21;2989:7;2976:8;:12;;:21;;;;:::i;:::-;:41;;;;3001:16;3009:7;3001;:16::i;:::-;2976:41;2969:49;;2896:130;;;:::o;13137:105::-;13194:4;13218:10;:16;13229:4;13218:16;;;;;;;;;;;;;;;;;;;;;;;;;13211:23;;13137:105;;;:::o;3890:129::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3954:21;3967:7;3954:8;:12;;:21;;;;:::i;:::-;4003:7;3991:20;;;;;;;;;;;;3890:129;:::o;11952:286::-;12049:4;12074:24;12082:7;12091:6;12074:7;:24::i;:::-;12066:33;;;;;;12136:7;12112:48;;;12161:10;12173:6;12189:4;12196:9;12112:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;12112:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12112:94:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12112:94:0;;;;12226:4;12219:11;;11952:286;;;;;:::o;5505:131::-;5577:7;5604:8;:15;5613:5;5604:15;;;;;;;;;;;;;;;:24;5620:7;5604:24;;;;;;;;;;;;;;;;5597:31;;5505:131;;;;:::o;1468:227::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:1;1549:22;;:8;:22;;;;1541:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1650:8;1621:38;;1642:6;;;;;;;;;;;1621:38;;;;;;;;;;;;1679:8;1670:6;;:17;;;;;;;;;;;;;;;;;;1468:227;:::o;12654:104::-;1133:19;1141:10;1133:7;:19::i;:::-;1125:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12745:5;12726:10;:16;12737:4;12726:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;12654:104;:::o;7163:254::-;7275:1;7256:21;;:7;:21;;;;7248:30;;;;;;7314:1;7297:19;;:5;:19;;;;7289:28;;;;;;7357:5;7330:8;:15;7339:5;7330:15;;;;;;;;;;;;;;;:24;7346:7;7330:24;;;;;;;;;;;;;;;:32;;;;7394:7;7378:31;;7387:5;7378:31;;;7403:5;7378:31;;;;;;;;;;;;;;;;;;7163:254;;;:::o;13250:165::-;13307:4;13324:9;13375:4;13363:17;13355:25;;13406:1;13399:4;:8;13392:15;;;13250:165;;;:::o;10586:352::-;10679:1;10670:5;:10;10666:220;;10718:1;10701:9;:13;10711:2;10701:13;;;;;;;;;;;;;;;;:18;10697:73;;;10740:14;10751:2;10740:10;:14::i;:::-;10697:73;10818:1;10788:26;10808:5;10788:15;10798:4;10788:9;:15::i;:::-;:19;;:26;;;;:::i;:::-;:31;10784:91;;;10840:19;10854:4;10840:13;:19::i;:::-;10784:91;10666:220;10898:32;10914:4;10920:2;10924:5;10898:15;:32::i;:::-;10586:352;;;:::o;221:150::-;279:7;312:1;307;:6;;299:15;;;;;;325:9;341:1;337;:5;325:17;;362:1;355:8;;;221:150;;;;:::o;2069:183::-;2149:18;2153:4;2159:7;2149:3;:18::i;:::-;2141:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:5;2216:4;:11;;:20;2228:7;2216:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2069:183;;:::o;379:150::-;437:7;457:9;473:1;469;:5;457:17;;498:1;493;:6;;485:15;;;;;;520:1;513:8;;;379:150;;;;:::o;10946:262::-;10119:23;11021:24;11039:5;11021:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:37;;11013:46;;;;;;11085:1;11076:5;:10;;:37;;;;;11112:1;11090:9;:18;11100:7;11090:18;;;;;;;;;;;;;;;;:23;11076:37;11072:89;;;11130:19;11141:7;11130:10;:19::i;:::-;11072:89;11173:27;11185:7;11194:5;11173:11;:27::i;:::-;10946:262;;:::o;11216:206::-;11322:1;11288:30;11311:6;11288:18;11298:7;11288:9;:18::i;:::-;:22;;:30;;;;:::i;:::-;:35;11284:90;;;11340:22;11354:7;11340:13;:22::i;:::-;11284:90;11386:28;11398:7;11407:6;11386:11;:28::i;:::-;11216:206;;:::o;2262:203::-;2334:4;2378:1;2359:21;;:7;:21;;;;2351:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:4;:11;;:20;2449:7;2437:20;;;;;;;;;;;;;;;;;;;;;;;;;2430:27;;2262:203;;;;:::o;7706:185::-;7778:22;7784:7;7793:6;7778:5;:22::i;:::-;7811:72;7820:7;7829:10;7841:41;7875:6;7841:8;:17;7850:7;7841:17;;;;;;;;;;;;;;;:29;7859:10;7841:29;;;;;;;;;;;;;;;;:33;;:41;;;;:::i;:::-;7811:8;:72::i;:::-;7706:185;;:::o;1883:178::-;1961:18;1965:4;1971:7;1961:3;:18::i;:::-;1960:19;1952:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2049:4;2026;:11;;:20;2038:7;2026:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1883:178;;:::o;5644:140::-;5705:4;5722:32;5732:10;5744:2;5748:5;5722:9;:32::i;:::-;5772:4;5765:11;;5644:140;;;;:::o;11430:145::-;11487:10;11503:7;11487:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11487:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11543;11565:1;11543:10;:17;;;;:21;;:24;;;;:::i;:::-;11522:9;:18;11532:7;11522:18;;;;;;;;;;;;;;;:45;;;;11430:145;:::o;11583:361::-;11667:1;11647:10;:17;;;;:21;11643:206;;;11718:10;11729:24;11751:1;11729:10;:17;;;;:21;;:24;;;;:::i;:::-;11718:36;;;;;;;;;;;;;;;;;;;;;;;;;11685:10;11696:9;:18;11706:7;11696:18;;;;;;;;;;;;;;;;11685:30;;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;11819:9;:18;11829:7;11819:18;;;;;;;;;;;;;;;;11769:9;:47;11779:10;11790:24;11812:1;11790:10;:17;;;;:21;;:24;;;;:::i;:::-;11779:36;;;;;;;;;;;;;;;;;;;;;;;;;11769:47;;;;;;;;;;;;;;;:68;;;;11643:206;11880:1;11859:9;:18;11869:7;11859:18;;;;;;;;;;;;;;;:22;;;;11912:24;11934:1;11912:10;:17;;;;:21;;:24;;;;:::i;:::-;11892:10;:44;;;;;:::i;:::-;;11583:361;:::o;9222:130::-;8964:6;;;;;;;;;;;8963:7;8955:16;;;;;;9312:32;9328:4;9334:2;9338:5;9312:15;:32::i;:::-;9222:130;;;:::o;9360:112::-;8964:6;;;;;;;;;;;8963:7;8955:16;;;;;;9437:27;9449:7;9458:5;9437:11;:27::i;:::-;9360:112;;:::o;9480:114::-;8964:6;;;;;;;;;;;8963:7;8955:16;;;;;;9558:28;9570:7;9579:6;9558:11;:28::i;:::-;9480:114;;:::o;6616:262::-;6718:1;6704:16;;:2;:16;;;;6696:25;;;;;;6752:26;6772:5;6752:9;:15;6762:4;6752:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;6734:9;:15;6744:4;6734:15;;;;;;;;;;;;;;;:44;;;;6805:24;6823:5;6805:9;:13;6815:2;6805:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;6789:9;:13;6799:2;6789:13;;;;;;;;;;;;;;;:40;;;;6860:2;6845:25;;6854:4;6845:25;;;6864:5;6845:25;;;;;;;;;;;;;;;;;;6616:262;;;:::o;6886:269::-;6980:1;6961:21;;:7;:21;;;;6953:30;;;;;;7011:23;7028:5;7011:12;;:16;;:23;;;;:::i;:::-;6996:12;:38;;;;7066:29;7089:5;7066:9;:18;7076:7;7066:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;7045:9;:18;7055:7;7045:18;;;;;;;;;;;;;;;:50;;;;7132:7;7111:36;;7128:1;7111:36;;;7141:5;7111:36;;;;;;;;;;;;;;;;;;6886:269;;:::o;7425:273::-;7520:1;7501:21;;:7;:21;;;;7493:30;;;;;;7557;7580:6;7557:9;:18;7567:7;7557:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7536:9;:18;7546:7;7536:18;;;;;;;;;;;;;;;:51;;;;7613:24;7630:6;7613:12;;:16;;:24;;;;:::i;:::-;7598:12;:39;;;;7679:1;7653:37;;7662:7;7653:37;;;7683:6;7653:37;;;;;;;;;;;;;;;;;;7425:273;;:::o;9926:3711::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://2006eb4e773cdecf2f1483966ae271703816b37feec38a9062cb0d30969c4ec4

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.