ETH Price: $3,113.87 (+0.51%)
Gas: 5 Gwei

Token

PNPCoin (PNPC)
 

Overview

Max Total Supply

100,000,000 PNPC

Holders

2,813 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
50,000 PNPC

Value
$0.00
0xc2bf53639861a84c186c5440c0579d2bad435d81
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

PNP Coins for PNP holders, found during an unexpected metaverse trip in January 2023. It will be a utility token to unite the PiXiu Club community.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PNPC

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-01-17
*/

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * This test is non-exhaustive, and there may be false-negatives: during the
     * execution of a contract's constructor, its address will be reported as
     * not containing a contract.
     *
     * > It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

interface TokenRecipient {
  // must return ture
  function tokensReceived(
      address from,
      uint amount,
      bytes calldata exData
  ) external returns (bool);
}

contract PNPC {
  using Address for address;

  uint256                                           internal  _totalSupply;
  mapping (address => uint256)                      internal  _balanceOf;
  mapping (address => mapping (address => uint256)) internal  _allowance;
  string                                            public  constant symbol = "PNPC";
  uint256                                           public  constant decimals = 18;
  string                                            public  constant name = "PNPCoin"; 


  mapping (address => uint256) public nonces;

  bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");
  bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
  bytes32 public immutable DOMAIN_SEPARATOR;

  // delegates
  mapping (address => address) public delegates;
  
  struct Checkpoint {
    uint32 fromBlock;
    uint votes;
  }

  mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
  mapping (address => uint32) public numCheckpoints;

  event Approval(address indexed owner, address indexed spender, uint wad);
  event Transfer(address indexed src, address indexed dst, uint wad);

  event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
  event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

  constructor() {
      uint256 chainId = block.chainid;

      DOMAIN_SEPARATOR = keccak256(
          abi.encode(
              keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
              keccak256(bytes(name)),
              keccak256(bytes("1")),
              chainId,
              address(this)
          )
      );

      _mint(msg.sender, 100000000e18);
  }


  function burn(uint amount) external {
    _burn(msg.sender, amount);
  }

  function burnFrom(address account, uint amount) external {
    _burnFrom(account, amount);
  }

  function send(address recipient, uint amount, bytes calldata exData) external returns (bool) {
    _transfer(msg.sender, recipient, amount);

    if (recipient.isContract()) {
      bool rv = TokenRecipient(recipient).tokensReceived(msg.sender, amount, exData);
      require(rv, "No TokenRecipient");
    }

    return true;
  }


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

    function balanceOf(address guy) public view returns (uint256) {
        return _balanceOf[guy];
    }

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

    function approve(address spender, uint wad) public returns (bool) {
        return _approve(msg.sender, spender, wad);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public  returns (bool) {
        uint256 currentAllowance = _allowance[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "PNPC: decreased allowance below zero");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address dst, uint wad) public  returns (bool) {
        return _transfer(msg.sender, dst, wad);
    }

    function transferFrom(address src, address dst, uint wad) public  returns (bool) {
        uint256 allowed = _allowance[src][msg.sender];

        if (src != msg.sender && allowed != type(uint).max) {
            require(allowed >= wad, "PNPC: Insufficient approval");
            _approve(src, msg.sender, allowed - wad);
        }

        return _transfer(src, dst, wad);
    }

    function _transfer(address src, address dst, uint wad) internal returns (bool) {
        require(dst != address(0), "PNPC:cannot transfer to the zero address");
        require(_balanceOf[src] >= wad, "PNPC: Insufficient balance");
        _balanceOf[src] = _balanceOf[src] - wad;
        _balanceOf[dst] = _balanceOf[dst] + wad;

        emit Transfer(src, dst, wad);
        _moveDelegates(delegates[src], delegates[dst], wad);
        return true;
    }

    function _approve(address owner, address spender, uint wad) internal returns (bool) {
        _allowance[owner][spender] = wad;
        emit Approval(owner, spender, wad);
        return true;
    }


    function _mint(address dst, uint wad) internal {
        require(dst != address(0), "PNPC: mint to the zero address");
        _balanceOf[dst] = _balanceOf[dst] + wad;
        _totalSupply = _totalSupply + wad;
        emit Transfer(address(0), dst, wad);
        _moveDelegates(address(0), delegates[dst], wad);
    }

    function _burn(address src, uint wad) internal {
        require(_balanceOf[src] >= wad, "PNPC: Insufficient balance");
        _balanceOf[src] = _balanceOf[src] - wad;
        _totalSupply = _totalSupply - wad;
        emit Transfer(src, address(0), wad);

        _moveDelegates(delegates[src], address(0), wad);
    }

    function _burnFrom(address src, uint wad) internal {
      uint256 allowed = _allowance[src][msg.sender];
      if (src != msg.sender && allowed != type(uint).max) {
          require(allowed >= wad, "PNPC: Insufficient approval");
          _approve(src, msg.sender, allowed - wad);
      }

      _burn(src, wad);
    }

    function permit(address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
        require(deadline >= block.timestamp, "ERC20Permit: expired deadline");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                owner,
                spender,
                amount,
                nonces[owner]++,
                deadline
            )
        );

        bytes32 hash = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                hashStruct
            )
        );

        address signer = ecrecover(hash, v, r, s);
        require(
            signer != address(0) && signer == owner,
            "ERC20Permit: invalid signature"
        );

        _approve(owner, spender, amount);
    }

  function delegate(address delegatee) public {
    return _delegate(msg.sender, delegatee);
  }

  function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
    bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
    
    bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, structHash));
    address signatory = ecrecover(digest, v, r, s);
    require(signatory != address(0), "delegateBySig: invalid signature");
    require(nonce == nonces[signatory]++, "delegateBySig: invalid nonce");
    require(block.timestamp <= expiry, "delegateBySig: signature expired");
    return _delegate(signatory, delegatee);
  }

  function getCurrentVotes(address account) external view returns (uint256) {
    uint32 nCheckpoints = numCheckpoints[account];
    return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
  }

  function getPriorVotes(address account, uint blockNumber) public view returns (uint256) {
    require(blockNumber < block.number, "getPriorVotes: not yet determined");

    uint32 nCheckpoints = numCheckpoints[account];
    if (nCheckpoints == 0) {
        return 0;
    }

    // First check most recent balance
    if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
        return checkpoints[account][nCheckpoints - 1].votes;
    }

    // Next check implicit zero balance
    if (checkpoints[account][0].fromBlock > blockNumber) {
        return 0;
    }

    uint32 lower = 0;
    uint32 upper = nCheckpoints - 1;
    while (upper > lower) {
        uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
        Checkpoint memory cp = checkpoints[account][center];
        if (cp.fromBlock == blockNumber) {
            return cp.votes;
        } else if (cp.fromBlock < blockNumber) {
            lower = center;
        } else {
            upper = center - 1;
        }
    }
    return checkpoints[account][lower].votes;
  }

  function _delegate(address delegator, address delegatee) internal {
    address currentDelegate = delegates[delegator];
    uint delegatorBalance = balanceOf(delegator);
    delegates[delegator] = delegatee;

    emit DelegateChanged(delegator, currentDelegate, delegatee);
    _moveDelegates(currentDelegate, delegatee, delegatorBalance);
  }

  function _moveDelegates(address srcRep, address dstRep, uint amount) internal {
    if (srcRep != dstRep && amount > 0) {
      if (srcRep != address(0)) {
          uint32 srcRepNum = numCheckpoints[srcRep];
          uint srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
          uint srcRepNew = srcRepOld - amount;
          _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
      }

      if (dstRep != address(0)) {
          uint32 dstRepNum = numCheckpoints[dstRep];
          uint dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
          uint dstRepNew = dstRepOld + amount;
          _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
      }
    }
  }

  function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint oldVotes, uint newVotes) internal {
    uint32 blockNumber = safe32(block.number, "_writeCheckpoint: block number exceeds 32 bits");

    if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
        checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
    } else {
        checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
        numCheckpoints[delegatee] = nCheckpoints + 1;
    }

    emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
  }

  function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
    require(n < 2**32, errorMessage);
    return uint32(n);
  }

}

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":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"exData","type":"bytes"}],"name":"send","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600781526020017f504e50436f696e00000000000000000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001620000ca95949392919062000975565b604051602081830303815290604052805190602001206080818152505062000104336a52b7d2dcc80cd2e40000006200010b60201b60201c565b5062000c89565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200017e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017590620009f6565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620001cb919062000a7e565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000546200021e919062000a7e565b6000819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000284919062000a18565b60405180910390a3620002ff6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836200030360201b60201c565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620003405750600081115b15620005bf57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000482576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611620003e757600062000456565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018462000437919062000b57565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000838262000468919062000b1c565b90506200047e86848484620005c460201b60201c565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620005be576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116200052357600062000592565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018462000573919062000b57565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060008382620005a4919062000a7e565b9050620005ba85848484620005c460201b60201c565b5050505b5b505050565b6000620005f1436040518060600160405280602e815260200162004164602e91396200088160201b60201c565b905060008463ffffffff161180156200069257508063ffffffff16600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876200065c919062000b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15620007105781600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187620006e9919062000b57565b63ffffffff1663ffffffff1681526020019081526020016000206001018190555062000828565b60405180604001604052808263ffffffff16815260200183815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160010155905050600184620007ca919062000adb565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516200087292919062000a35565b60405180910390a25050505050565b600064010000000083108290620008d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c79190620009d2565b60405180910390fd5b5082905092915050565b620008e58162000b92565b82525050565b620008f68162000ba6565b82525050565b6000620009098262000a62565b62000915818562000a6d565b93506200092781856020860162000bea565b620009328162000c4f565b840191505092915050565b60006200094c601e8362000a6d565b9150620009598262000c60565b602082019050919050565b6200096f8162000bd0565b82525050565b600060a0820190506200098c6000830188620008eb565b6200099b6020830187620008eb565b620009aa6040830186620008eb565b620009b9606083018562000964565b620009c86080830184620008da565b9695505050505050565b60006020820190508181036000830152620009ee8184620008fc565b905092915050565b6000602082019050818103600083015262000a11816200093d565b9050919050565b600060208201905062000a2f600083018462000964565b92915050565b600060408201905062000a4c600083018562000964565b62000a5b602083018462000964565b9392505050565b600081519050919050565b600082825260208201905092915050565b600062000a8b8262000bd0565b915062000a988362000bd0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ad05762000acf62000c20565b5b828201905092915050565b600062000ae88262000bda565b915062000af58362000bda565b92508263ffffffff0382111562000b115762000b1062000c20565b5b828201905092915050565b600062000b298262000bd0565b915062000b368362000bd0565b92508282101562000b4c5762000b4b62000c20565b5b828203905092915050565b600062000b648262000bda565b915062000b718362000bda565b92508282101562000b875762000b8662000c20565b5b828203905092915050565b600062000b9f8262000bb0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b60005b8381101562000c0a57808201518184015260208101905062000bed565b8381111562000c1a576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b7f504e50433a206d696e7420746f20746865207a65726f20616464726573730000600082015250565b6080516134b162000cb3600039600081816107670152818161105c015261134401526134b16000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063a9059cbb11610097578063d505accf11610071578063d505accf146104f7578063dd62ed3e14610513578063e7a324dc14610543578063f1127ed8146105615761018e565b8063a9059cbb1461047b578063b4b5ea57146104ab578063c3cda520146104db5761018e565b8063782d6fe11461038157806379cc6790146103b15780637ecebe00146103cd57806395d89b41146103fd5780639bd9bbc61461041b578063a457c2d71461044b5761018e565b80633644e5151161014b578063587cde1e11610125578063587cde1e146102d55780635c19a95c146103055780636fcfff451461032157806370a08231146103515761018e565b80633644e5151461026b578063395093511461028957806342966c68146102b95761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff57806330adf81f1461022f578063313ce5671461024d575b600080fd5b61019b610592565b6040516101a89190612c6e565b60405180910390f35b6101cb60048036038101906101c69190612665565b6105cb565b6040516101d89190612b4d565b60405180910390f35b6101e96105e0565b6040516101f69190612df0565b60405180910390f35b61021960048036038101906102149190612570565b6105e9565b6040516102269190612b4d565b60405180910390f35b61023761073c565b6040516102449190612b68565b60405180910390f35b610255610760565b6040516102629190612df0565b60405180910390f35b610273610765565b6040516102809190612b68565b60405180910390f35b6102a3600480360381019061029e9190612665565b610789565b6040516102b09190612b4d565b60405180910390f35b6102d360048036038101906102ce9190612813565b610828565b005b6102ef60048036038101906102ea9190612503565b610835565b6040516102fc9190612af2565b60405180910390f35b61031f600480360381019061031a9190612503565b610868565b005b61033b60048036038101906103369190612503565b610875565b6040516103489190612e34565b60405180910390f35b61036b60048036038101906103669190612503565b610898565b6040516103789190612df0565b60405180910390f35b61039b60048036038101906103969190612665565b6108e1565b6040516103a89190612df0565b60405180910390f35b6103cb60048036038101906103c69190612665565b610cb8565b005b6103e760048036038101906103e29190612503565b610cc6565b6040516103f49190612df0565b60405180910390f35b610405610cde565b6040516104129190612c6e565b60405180910390f35b610435600480360381019061043091906126a5565b610d17565b6040516104429190612b4d565b60405180910390f35b61046560048036038101906104609190612665565b610e2c565b6040516104729190612b4d565b60405180910390f35b61049560048036038101906104909190612665565b610f13565b6040516104a29190612b4d565b60405180910390f35b6104c560048036038101906104c09190612503565b610f28565b6040516104d29190612df0565b60405180910390f35b6104f560048036038101906104f09190612719565b611007565b005b610511600480360381019061050c91906125c3565b611255565b005b61052d60048036038101906105289190612530565b61149f565b60405161053a9190612df0565b60405180910390f35b61054b611526565b6040516105589190612b68565b60405180910390f35b61057b600480360381019061057691906127a6565b61154a565b604051610589929190612e4f565b60405180910390f35b6040518060400160405280600781526020017f504e50436f696e0000000000000000000000000000000000000000000000000081525081565b60006105d833848461158b565b905092915050565b60008054905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156106c757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15610727578281101561070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612cf0565b60405180910390fd5b610725853385846107209190612f71565b61158b565b505b61073285858561167e565b9150509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061081d338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108189190612eb0565b61158b565b506001905092915050565b61083233826119c6565b50565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108723382611bbf565b50565b60066020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000438210610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90612c90565b60405180910390fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610992576000915050610cb2565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846109e19190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610a8e57600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610a689190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610cb2565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610b0f576000915050610cb2565b600080600183610b1f9190612fa5565b90505b8163ffffffff168163ffffffff161115610c4c57600060028383610b469190612fa5565b610b509190612f40565b82610b5b9190612fa5565b90506000600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415610c1b57806020015195505050505050610cb2565b86816000015163ffffffff161015610c3557819350610c45565b600182610c429190612fa5565b92505b5050610b22565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b610cc28282611d30565b5050565b60036020528060005260406000206000915090505481565b6040518060400160405280600481526020017f504e50430000000000000000000000000000000000000000000000000000000081525081565b6000610d2433868661167e565b50610d448573ffffffffffffffffffffffffffffffffffffffff16611e7c565b15610e205760008573ffffffffffffffffffffffffffffffffffffffff1663d0314263338787876040518563ffffffff1660e01b8152600401610d8a9493929190612b0d565b602060405180830381600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906127e6565b905080610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590612cb0565b60405180910390fd5b505b60019050949350505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890612d30565b60405180910390fd5b610f0733858584610f029190612f71565b61158b565b50600191505092915050565b6000610f2033848461167e565b905092915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610f92576000610fff565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610fe09190612fa5565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b60007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8787876040516020016110409493929190612be4565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000008260405160200161108d929190612abb565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516110ca9493929190612c29565b6020604051602081039080840390855afa1580156110ec573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90612d10565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906111b89061308a565b9190505588146111fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f490612dd0565b60405180910390fd5b86421115611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790612d70565b60405180910390fd5b61124a818a611bbf565b505050505050505050565b42841015611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90612d50565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061130e9061308a565b919050558960405160200161132896959493929190612b83565b60405160208183030381529060405280519060200120905060007f000000000000000000000000000000000000000000000000000000000000000082604051602001611375929190612abb565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516113b29493929190612c29565b6020604051602081039080840390855afa1580156113d4573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561144857508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90612db0565b60405180910390fd5b6114928a8a8a61158b565b5050505050505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161166b9190612df0565b60405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690612d90565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890612cd0565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117bc9190612f71565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461184a9190612eb0565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118ea9190612df0565b60405180910390a36119bb600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e8f565b600190509392505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90612cd0565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a939190612f71565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600054611ae49190612f71565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b489190612df0565b60405180910390a3611bbb600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083611e8f565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611c2e84610898565b905082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611d2a828483611e8f565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e0d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15611e6d5781811015611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c90612cf0565b60405180910390fd5b611e6b83338484611e669190612f71565b61158b565b505b611e7783836119c6565b505050565b600080823b905060008111915050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecb5750600081115b1561212b57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ffd576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f6e576000611fdb565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611fbc9190612fa5565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060008382611feb9190612f71565b9050611ff986848484612130565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461212a576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161209b576000612108565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846120e99190612fa5565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600083826121189190612eb0565b905061212685848484612130565b5050505b5b505050565b6000612154436040518060600160405280602e815260200161344e602e91396123d9565b905060008463ffffffff161180156121f257508063ffffffff16600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876121bc9190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561226c5781600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876122469190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060010181905550612382565b60405180604001604052808263ffffffff16815260200183815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050506001846123249190612f06565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516123ca929190612e0b565b60405180910390a25050505050565b600064010000000083108290612425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241c9190612c6e565b60405180910390fd5b5082905092915050565b60008135905061243e816133c3565b92915050565b600081519050612453816133da565b92915050565b600081359050612468816133f1565b92915050565b60008083601f84011261248457612483613140565b5b8235905067ffffffffffffffff8111156124a1576124a061313b565b5b6020830191508360018202830111156124bd576124bc613145565b5b9250929050565b6000813590506124d381613408565b92915050565b6000813590506124e88161341f565b92915050565b6000813590506124fd81613436565b92915050565b6000602082840312156125195761251861314f565b5b60006125278482850161242f565b91505092915050565b600080604083850312156125475761254661314f565b5b60006125558582860161242f565b92505060206125668582860161242f565b9150509250929050565b6000806000606084860312156125895761258861314f565b5b60006125978682870161242f565b93505060206125a88682870161242f565b92505060406125b9868287016124c4565b9150509250925092565b600080600080600080600060e0888a0312156125e2576125e161314f565b5b60006125f08a828b0161242f565b97505060206126018a828b0161242f565b96505060406126128a828b016124c4565b95505060606126238a828b016124c4565b94505060806126348a828b016124ee565b93505060a06126458a828b01612459565b92505060c06126568a828b01612459565b91505092959891949750929550565b6000806040838503121561267c5761267b61314f565b5b600061268a8582860161242f565b925050602061269b858286016124c4565b9150509250929050565b600080600080606085870312156126bf576126be61314f565b5b60006126cd8782880161242f565b94505060206126de878288016124c4565b935050604085013567ffffffffffffffff8111156126ff576126fe61314a565b5b61270b8782880161246e565b925092505092959194509250565b60008060008060008060c087890312156127365761273561314f565b5b600061274489828a0161242f565b965050602061275589828a016124c4565b955050604061276689828a016124c4565b945050606061277789828a016124ee565b935050608061278889828a01612459565b92505060a061279989828a01612459565b9150509295509295509295565b600080604083850312156127bd576127bc61314f565b5b60006127cb8582860161242f565b92505060206127dc858286016124d9565b9150509250929050565b6000602082840312156127fc576127fb61314f565b5b600061280a84828501612444565b91505092915050565b6000602082840312156128295761282861314f565b5b6000612837848285016124c4565b91505092915050565b61284981612fd9565b82525050565b61285881612feb565b82525050565b61286781612ff7565b82525050565b61287e61287982612ff7565b6130d3565b82525050565b60006128908385612e83565b935061289d838584613048565b6128a683613154565b840190509392505050565b60006128bc82612e78565b6128c68185612e94565b93506128d6818560208601613057565b6128df81613154565b840191505092915050565b60006128f7602183612e94565b915061290282613165565b604082019050919050565b600061291a601183612e94565b9150612925826131b4565b602082019050919050565b600061293d601a83612e94565b9150612948826131dd565b602082019050919050565b6000612960601b83612e94565b915061296b82613206565b602082019050919050565b6000612983600283612ea5565b915061298e8261322f565b600282019050919050565b60006129a6602083612e94565b91506129b182613258565b602082019050919050565b60006129c9602483612e94565b91506129d482613281565b604082019050919050565b60006129ec601d83612e94565b91506129f7826132d0565b602082019050919050565b6000612a0f602083612e94565b9150612a1a826132f9565b602082019050919050565b6000612a32602883612e94565b9150612a3d82613322565b604082019050919050565b6000612a55601e83612e94565b9150612a6082613371565b602082019050919050565b6000612a78601c83612e94565b9150612a838261339a565b602082019050919050565b612a9781613021565b82525050565b612aa68161302b565b82525050565b612ab58161303b565b82525050565b6000612ac682612976565b9150612ad2828561286d565b602082019150612ae2828461286d565b6020820191508190509392505050565b6000602082019050612b076000830184612840565b92915050565b6000606082019050612b226000830187612840565b612b2f6020830186612a8e565b8181036040830152612b42818486612884565b905095945050505050565b6000602082019050612b62600083018461284f565b92915050565b6000602082019050612b7d600083018461285e565b92915050565b600060c082019050612b98600083018961285e565b612ba56020830188612840565b612bb26040830187612840565b612bbf6060830186612a8e565b612bcc6080830185612a8e565b612bd960a0830184612a8e565b979650505050505050565b6000608082019050612bf9600083018761285e565b612c066020830186612840565b612c136040830185612a8e565b612c206060830184612a8e565b95945050505050565b6000608082019050612c3e600083018761285e565b612c4b6020830186612aac565b612c58604083018561285e565b612c65606083018461285e565b95945050505050565b60006020820190508181036000830152612c8881846128b1565b905092915050565b60006020820190508181036000830152612ca9816128ea565b9050919050565b60006020820190508181036000830152612cc98161290d565b9050919050565b60006020820190508181036000830152612ce981612930565b9050919050565b60006020820190508181036000830152612d0981612953565b9050919050565b60006020820190508181036000830152612d2981612999565b9050919050565b60006020820190508181036000830152612d49816129bc565b9050919050565b60006020820190508181036000830152612d69816129df565b9050919050565b60006020820190508181036000830152612d8981612a02565b9050919050565b60006020820190508181036000830152612da981612a25565b9050919050565b60006020820190508181036000830152612dc981612a48565b9050919050565b60006020820190508181036000830152612de981612a6b565b9050919050565b6000602082019050612e056000830184612a8e565b92915050565b6000604082019050612e206000830185612a8e565b612e2d6020830184612a8e565b9392505050565b6000602082019050612e496000830184612a9d565b92915050565b6000604082019050612e646000830185612a9d565b612e716020830184612a8e565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612ebb82613021565b9150612ec683613021565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612efb57612efa6130dd565b5b828201905092915050565b6000612f118261302b565b9150612f1c8361302b565b92508263ffffffff03821115612f3557612f346130dd565b5b828201905092915050565b6000612f4b8261302b565b9150612f568361302b565b925082612f6657612f6561310c565b5b828204905092915050565b6000612f7c82613021565b9150612f8783613021565b925082821015612f9a57612f996130dd565b5b828203905092915050565b6000612fb08261302b565b9150612fbb8361302b565b925082821015612fce57612fcd6130dd565b5b828203905092915050565b6000612fe482613001565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561307557808201518184015260208101905061305a565b83811115613084576000848401525b50505050565b600061309582613021565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c8576130c76130dd565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6765745072696f72566f7465733a206e6f74207965742064657465726d696e6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f20546f6b656e526563697069656e74000000000000000000000000000000600082015250565b7f504e50433a20496e73756666696369656e742062616c616e6365000000000000600082015250565b7f504e50433a20496e73756666696369656e7420617070726f76616c0000000000600082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f64656c656761746542795369673a20696e76616c6964207369676e6174757265600082015250565b7f504e50433a2064656372656173656420616c6c6f77616e63652062656c6f772060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b7f64656c656761746542795369673a207369676e61747572652065787069726564600082015250565b7f504e50433a63616e6e6f74207472616e7366657220746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b7f64656c656761746542795369673a20696e76616c6964206e6f6e636500000000600082015250565b6133cc81612fd9565b81146133d757600080fd5b50565b6133e381612feb565b81146133ee57600080fd5b50565b6133fa81612ff7565b811461340557600080fd5b50565b61341181613021565b811461341c57600080fd5b50565b6134288161302b565b811461343357600080fd5b50565b61343f8161303b565b811461344a57600080fd5b5056fe5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212204f44a3d7c88ca7565ea5b3315fffbb3e1f6f6ad3362f24705fe9426a6b760c4764736f6c634300080700335f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063a9059cbb11610097578063d505accf11610071578063d505accf146104f7578063dd62ed3e14610513578063e7a324dc14610543578063f1127ed8146105615761018e565b8063a9059cbb1461047b578063b4b5ea57146104ab578063c3cda520146104db5761018e565b8063782d6fe11461038157806379cc6790146103b15780637ecebe00146103cd57806395d89b41146103fd5780639bd9bbc61461041b578063a457c2d71461044b5761018e565b80633644e5151161014b578063587cde1e11610125578063587cde1e146102d55780635c19a95c146103055780636fcfff451461032157806370a08231146103515761018e565b80633644e5151461026b578063395093511461028957806342966c68146102b95761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff57806330adf81f1461022f578063313ce5671461024d575b600080fd5b61019b610592565b6040516101a89190612c6e565b60405180910390f35b6101cb60048036038101906101c69190612665565b6105cb565b6040516101d89190612b4d565b60405180910390f35b6101e96105e0565b6040516101f69190612df0565b60405180910390f35b61021960048036038101906102149190612570565b6105e9565b6040516102269190612b4d565b60405180910390f35b61023761073c565b6040516102449190612b68565b60405180910390f35b610255610760565b6040516102629190612df0565b60405180910390f35b610273610765565b6040516102809190612b68565b60405180910390f35b6102a3600480360381019061029e9190612665565b610789565b6040516102b09190612b4d565b60405180910390f35b6102d360048036038101906102ce9190612813565b610828565b005b6102ef60048036038101906102ea9190612503565b610835565b6040516102fc9190612af2565b60405180910390f35b61031f600480360381019061031a9190612503565b610868565b005b61033b60048036038101906103369190612503565b610875565b6040516103489190612e34565b60405180910390f35b61036b60048036038101906103669190612503565b610898565b6040516103789190612df0565b60405180910390f35b61039b60048036038101906103969190612665565b6108e1565b6040516103a89190612df0565b60405180910390f35b6103cb60048036038101906103c69190612665565b610cb8565b005b6103e760048036038101906103e29190612503565b610cc6565b6040516103f49190612df0565b60405180910390f35b610405610cde565b6040516104129190612c6e565b60405180910390f35b610435600480360381019061043091906126a5565b610d17565b6040516104429190612b4d565b60405180910390f35b61046560048036038101906104609190612665565b610e2c565b6040516104729190612b4d565b60405180910390f35b61049560048036038101906104909190612665565b610f13565b6040516104a29190612b4d565b60405180910390f35b6104c560048036038101906104c09190612503565b610f28565b6040516104d29190612df0565b60405180910390f35b6104f560048036038101906104f09190612719565b611007565b005b610511600480360381019061050c91906125c3565b611255565b005b61052d60048036038101906105289190612530565b61149f565b60405161053a9190612df0565b60405180910390f35b61054b611526565b6040516105589190612b68565b60405180910390f35b61057b600480360381019061057691906127a6565b61154a565b604051610589929190612e4f565b60405180910390f35b6040518060400160405280600781526020017f504e50436f696e0000000000000000000000000000000000000000000000000081525081565b60006105d833848461158b565b905092915050565b60008054905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156106c757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15610727578281101561070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612cf0565b60405180910390fd5b610725853385846107209190612f71565b61158b565b505b61073285858561167e565b9150509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b7f08c56b03c4b7abb20a36461ac380ed630bee6aa939c02ec0fae4b65221602e4e81565b600061081d338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108189190612eb0565b61158b565b506001905092915050565b61083233826119c6565b50565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108723382611bbf565b50565b60066020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000438210610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90612c90565b60405180910390fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610992576000915050610cb2565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846109e19190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610a8e57600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610a689190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610cb2565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610b0f576000915050610cb2565b600080600183610b1f9190612fa5565b90505b8163ffffffff168163ffffffff161115610c4c57600060028383610b469190612fa5565b610b509190612f40565b82610b5b9190612fa5565b90506000600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415610c1b57806020015195505050505050610cb2565b86816000015163ffffffff161015610c3557819350610c45565b600182610c429190612fa5565b92505b5050610b22565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b610cc28282611d30565b5050565b60036020528060005260406000206000915090505481565b6040518060400160405280600481526020017f504e50430000000000000000000000000000000000000000000000000000000081525081565b6000610d2433868661167e565b50610d448573ffffffffffffffffffffffffffffffffffffffff16611e7c565b15610e205760008573ffffffffffffffffffffffffffffffffffffffff1663d0314263338787876040518563ffffffff1660e01b8152600401610d8a9493929190612b0d565b602060405180830381600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906127e6565b905080610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590612cb0565b60405180910390fd5b505b60019050949350505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890612d30565b60405180910390fd5b610f0733858584610f029190612f71565b61158b565b50600191505092915050565b6000610f2033848461167e565b905092915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610f92576000610fff565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610fe09190612fa5565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b60007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8787876040516020016110409493929190612be4565b60405160208183030381529060405280519060200120905060007f08c56b03c4b7abb20a36461ac380ed630bee6aa939c02ec0fae4b65221602e4e8260405160200161108d929190612abb565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516110ca9493929190612c29565b6020604051602081039080840390855afa1580156110ec573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90612d10565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906111b89061308a565b9190505588146111fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f490612dd0565b60405180910390fd5b86421115611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790612d70565b60405180910390fd5b61124a818a611bbf565b505050505050505050565b42841015611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90612d50565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061130e9061308a565b919050558960405160200161132896959493929190612b83565b60405160208183030381529060405280519060200120905060007f08c56b03c4b7abb20a36461ac380ed630bee6aa939c02ec0fae4b65221602e4e82604051602001611375929190612abb565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516113b29493929190612c29565b6020604051602081039080840390855afa1580156113d4573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561144857508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90612db0565b60405180910390fd5b6114928a8a8a61158b565b5050505050505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161166b9190612df0565b60405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690612d90565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890612cd0565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117bc9190612f71565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461184a9190612eb0565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118ea9190612df0565b60405180910390a36119bb600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e8f565b600190509392505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f90612cd0565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a939190612f71565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600054611ae49190612f71565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b489190612df0565b60405180910390a3611bbb600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083611e8f565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000611c2e84610898565b905082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611d2a828483611e8f565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e0d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15611e6d5781811015611e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4c90612cf0565b60405180910390fd5b611e6b83338484611e669190612f71565b61158b565b505b611e7783836119c6565b505050565b600080823b905060008111915050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecb5750600081115b1561212b57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ffd576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611f6e576000611fdb565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184611fbc9190612fa5565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060008382611feb9190612f71565b9050611ff986848484612130565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461212a576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161209b576000612108565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846120e99190612fa5565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600083826121189190612eb0565b905061212685848484612130565b5050505b5b505050565b6000612154436040518060600160405280602e815260200161344e602e91396123d9565b905060008463ffffffff161180156121f257508063ffffffff16600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876121bc9190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561226c5781600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876122469190612fa5565b63ffffffff1663ffffffff16815260200190815260200160002060010181905550612382565b60405180604001604052808263ffffffff16815260200183815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050506001846123249190612f06565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516123ca929190612e0b565b60405180910390a25050505050565b600064010000000083108290612425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241c9190612c6e565b60405180910390fd5b5082905092915050565b60008135905061243e816133c3565b92915050565b600081519050612453816133da565b92915050565b600081359050612468816133f1565b92915050565b60008083601f84011261248457612483613140565b5b8235905067ffffffffffffffff8111156124a1576124a061313b565b5b6020830191508360018202830111156124bd576124bc613145565b5b9250929050565b6000813590506124d381613408565b92915050565b6000813590506124e88161341f565b92915050565b6000813590506124fd81613436565b92915050565b6000602082840312156125195761251861314f565b5b60006125278482850161242f565b91505092915050565b600080604083850312156125475761254661314f565b5b60006125558582860161242f565b92505060206125668582860161242f565b9150509250929050565b6000806000606084860312156125895761258861314f565b5b60006125978682870161242f565b93505060206125a88682870161242f565b92505060406125b9868287016124c4565b9150509250925092565b600080600080600080600060e0888a0312156125e2576125e161314f565b5b60006125f08a828b0161242f565b97505060206126018a828b0161242f565b96505060406126128a828b016124c4565b95505060606126238a828b016124c4565b94505060806126348a828b016124ee565b93505060a06126458a828b01612459565b92505060c06126568a828b01612459565b91505092959891949750929550565b6000806040838503121561267c5761267b61314f565b5b600061268a8582860161242f565b925050602061269b858286016124c4565b9150509250929050565b600080600080606085870312156126bf576126be61314f565b5b60006126cd8782880161242f565b94505060206126de878288016124c4565b935050604085013567ffffffffffffffff8111156126ff576126fe61314a565b5b61270b8782880161246e565b925092505092959194509250565b60008060008060008060c087890312156127365761273561314f565b5b600061274489828a0161242f565b965050602061275589828a016124c4565b955050604061276689828a016124c4565b945050606061277789828a016124ee565b935050608061278889828a01612459565b92505060a061279989828a01612459565b9150509295509295509295565b600080604083850312156127bd576127bc61314f565b5b60006127cb8582860161242f565b92505060206127dc858286016124d9565b9150509250929050565b6000602082840312156127fc576127fb61314f565b5b600061280a84828501612444565b91505092915050565b6000602082840312156128295761282861314f565b5b6000612837848285016124c4565b91505092915050565b61284981612fd9565b82525050565b61285881612feb565b82525050565b61286781612ff7565b82525050565b61287e61287982612ff7565b6130d3565b82525050565b60006128908385612e83565b935061289d838584613048565b6128a683613154565b840190509392505050565b60006128bc82612e78565b6128c68185612e94565b93506128d6818560208601613057565b6128df81613154565b840191505092915050565b60006128f7602183612e94565b915061290282613165565b604082019050919050565b600061291a601183612e94565b9150612925826131b4565b602082019050919050565b600061293d601a83612e94565b9150612948826131dd565b602082019050919050565b6000612960601b83612e94565b915061296b82613206565b602082019050919050565b6000612983600283612ea5565b915061298e8261322f565b600282019050919050565b60006129a6602083612e94565b91506129b182613258565b602082019050919050565b60006129c9602483612e94565b91506129d482613281565b604082019050919050565b60006129ec601d83612e94565b91506129f7826132d0565b602082019050919050565b6000612a0f602083612e94565b9150612a1a826132f9565b602082019050919050565b6000612a32602883612e94565b9150612a3d82613322565b604082019050919050565b6000612a55601e83612e94565b9150612a6082613371565b602082019050919050565b6000612a78601c83612e94565b9150612a838261339a565b602082019050919050565b612a9781613021565b82525050565b612aa68161302b565b82525050565b612ab58161303b565b82525050565b6000612ac682612976565b9150612ad2828561286d565b602082019150612ae2828461286d565b6020820191508190509392505050565b6000602082019050612b076000830184612840565b92915050565b6000606082019050612b226000830187612840565b612b2f6020830186612a8e565b8181036040830152612b42818486612884565b905095945050505050565b6000602082019050612b62600083018461284f565b92915050565b6000602082019050612b7d600083018461285e565b92915050565b600060c082019050612b98600083018961285e565b612ba56020830188612840565b612bb26040830187612840565b612bbf6060830186612a8e565b612bcc6080830185612a8e565b612bd960a0830184612a8e565b979650505050505050565b6000608082019050612bf9600083018761285e565b612c066020830186612840565b612c136040830185612a8e565b612c206060830184612a8e565b95945050505050565b6000608082019050612c3e600083018761285e565b612c4b6020830186612aac565b612c58604083018561285e565b612c65606083018461285e565b95945050505050565b60006020820190508181036000830152612c8881846128b1565b905092915050565b60006020820190508181036000830152612ca9816128ea565b9050919050565b60006020820190508181036000830152612cc98161290d565b9050919050565b60006020820190508181036000830152612ce981612930565b9050919050565b60006020820190508181036000830152612d0981612953565b9050919050565b60006020820190508181036000830152612d2981612999565b9050919050565b60006020820190508181036000830152612d49816129bc565b9050919050565b60006020820190508181036000830152612d69816129df565b9050919050565b60006020820190508181036000830152612d8981612a02565b9050919050565b60006020820190508181036000830152612da981612a25565b9050919050565b60006020820190508181036000830152612dc981612a48565b9050919050565b60006020820190508181036000830152612de981612a6b565b9050919050565b6000602082019050612e056000830184612a8e565b92915050565b6000604082019050612e206000830185612a8e565b612e2d6020830184612a8e565b9392505050565b6000602082019050612e496000830184612a9d565b92915050565b6000604082019050612e646000830185612a9d565b612e716020830184612a8e565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612ebb82613021565b9150612ec683613021565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612efb57612efa6130dd565b5b828201905092915050565b6000612f118261302b565b9150612f1c8361302b565b92508263ffffffff03821115612f3557612f346130dd565b5b828201905092915050565b6000612f4b8261302b565b9150612f568361302b565b925082612f6657612f6561310c565b5b828204905092915050565b6000612f7c82613021565b9150612f8783613021565b925082821015612f9a57612f996130dd565b5b828203905092915050565b6000612fb08261302b565b9150612fbb8361302b565b925082821015612fce57612fcd6130dd565b5b828203905092915050565b6000612fe482613001565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561307557808201518184015260208101905061305a565b83811115613084576000848401525b50505050565b600061309582613021565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c8576130c76130dd565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f6765745072696f72566f7465733a206e6f74207965742064657465726d696e6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f20546f6b656e526563697069656e74000000000000000000000000000000600082015250565b7f504e50433a20496e73756666696369656e742062616c616e6365000000000000600082015250565b7f504e50433a20496e73756666696369656e7420617070726f76616c0000000000600082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f64656c656761746542795369673a20696e76616c6964207369676e6174757265600082015250565b7f504e50433a2064656372656173656420616c6c6f77616e63652062656c6f772060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b7f64656c656761746542795369673a207369676e61747572652065787069726564600082015250565b7f504e50433a63616e6e6f74207472616e7366657220746f20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b7f64656c656761746542795369673a20696e76616c6964206e6f6e636500000000600082015250565b6133cc81612fd9565b81146133d757600080fd5b50565b6133e381612feb565b81146133ee57600080fd5b50565b6133fa81612ff7565b811461340557600080fd5b50565b61341181613021565b811461341c57600080fd5b50565b6134288161302b565b811461343357600080fd5b50565b61343f8161303b565b811461344a57600080fd5b5056fe5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212204f44a3d7c88ca7565ea5b3315fffbb3e1f6f6ad3362f24705fe9426a6b760c4764736f6c63430008070033

Deployed Bytecode Sourcemap

1131:10619:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1581:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3983:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3632:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4829:389;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1845:137;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1496:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1987:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4117:203;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3102:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2051:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7809:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2250:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3731:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8768:1103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3182:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1674:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1409:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3284:338;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4328:364;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4700:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8549:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7911:632;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6915:888;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3842:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1723:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2175:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1581:83;;;;;;;;;;;;;;;;;;;:::o;3983:126::-;4043:4;4067:34;4076:10;4088:7;4097:3;4067:8;:34::i;:::-;4060:41;;3983:126;;;;:::o;3632:91::-;3676:7;3703:12;;3696:19;;3632:91;:::o;4829:389::-;4904:4;4921:15;4939:10;:15;4950:3;4939:15;;;;;;;;;;;;;;;:27;4955:10;4939:27;;;;;;;;;;;;;;;;4921:45;;4990:10;4983:17;;:3;:17;;;;:46;;;;;5015:14;5004:7;:25;;4983:46;4979:188;;;5065:3;5054:7;:14;;5046:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5115:40;5124:3;5129:10;5151:3;5141:7;:13;;;;:::i;:::-;5115:8;:40::i;:::-;;4979:188;5186:24;5196:3;5201;5206;5186:9;:24::i;:::-;5179:31;;;4829:389;;;;;:::o;1845:137::-;1887:95;1845:137;:::o;1496:80::-;1574:2;1496:80;:::o;1987:41::-;;;:::o;4117:203::-;4198:4;4215:75;4224:10;4236:7;4279:10;4245;:22;4256:10;4245:22;;;;;;;;;;;;;;;:31;4268:7;4245:31;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;4215:8;:75::i;:::-;;4308:4;4301:11;;4117:203;;;;:::o;3102:74::-;3145:25;3151:10;3163:6;3145:5;:25::i;:::-;3102:74;:::o;2051:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;7809:96::-;7867:32;7877:10;7889:9;7867;:32::i;:::-;7809:96;:::o;2250:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;3731:103::-;3784:7;3811:10;:15;3822:3;3811:15;;;;;;;;;;;;;;;;3804:22;;3731:103;;;:::o;8768:1103::-;8847:7;8885:12;8871:11;:26;8863:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8944:19;8966:14;:23;8981:7;8966:23;;;;;;;;;;;;;;;;;;;;;;;;;8944:45;;9016:1;9000:12;:17;;;8996:50;;;9037:1;9030:8;;;;;8996:50;9150:11;9098;:20;9110:7;9098:20;;;;;;;;;;;;;;;:38;9134:1;9119:12;:16;;;;:::i;:::-;9098:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;9094:139;;9181:11;:20;9193:7;9181:20;;;;;;;;;;;;;;;:38;9217:1;9202:12;:16;;;;:::i;:::-;9181:38;;;;;;;;;;;;;;;:44;;;9174:51;;;;;9094:139;9322:11;9286;:20;9298:7;9286:20;;;;;;;;;;;;;;;:23;9307:1;9286:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;9282:80;;;9353:1;9346:8;;;;;9282:80;9370:12;9393;9423:1;9408:12;:16;;;;:::i;:::-;9393:31;;9431:388;9446:5;9438:13;;:5;:13;;;9431:388;;;9464:13;9506:1;9497:5;9489;:13;;;;:::i;:::-;9488:19;;;;:::i;:::-;9480:5;:27;;;;:::i;:::-;9464:43;;9545:20;9568:11;:20;9580:7;9568:20;;;;;;;;;;;;;;;:28;9589:6;9568:28;;;;;;;;;;;;;;;9545:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9627:11;9611:2;:12;;;:27;;;9607:205;;;9662:2;:8;;;9655:15;;;;;;;;;9607:205;9707:11;9692:2;:12;;;:26;;;9688:124;;;9743:6;9735:14;;9688:124;;;9799:1;9790:6;:10;;;;:::i;:::-;9782:18;;9688:124;9453:366;;9431:388;;;9832:11;:20;9844:7;9832:20;;;;;;;;;;;;;;;:27;9853:5;9832:27;;;;;;;;;;;;;;;:33;;;9825:40;;;;;8768:1103;;;;;:::o;3182:96::-;3246:26;3256:7;3265:6;3246:9;:26::i;:::-;3182:96;;:::o;1674:42::-;;;;;;;;;;;;;;;;;:::o;1409:82::-;;;;;;;;;;;;;;;;;;;:::o;3284:338::-;3371:4;3384:40;3394:10;3406:9;3417:6;3384:9;:40::i;:::-;;3437:22;:9;:20;;;:22::i;:::-;3433:164;;;3470:7;3495:9;3480:40;;;3521:10;3533:6;3541;;3480:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3470:78;;3565:2;3557:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;3461:136;3433:164;3612:4;3605:11;;3284:338;;;;;;:::o;4328:364::-;4414:4;4431:24;4458:10;:22;4469:10;4458:22;;;;;;;;;;;;;;;:31;4481:7;4458:31;;;;;;;;;;;;;;;;4431:58;;4528:15;4508:16;:35;;4500:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;4595:65;4604:10;4616:7;4644:15;4625:16;:34;;;;:::i;:::-;4595:8;:65::i;:::-;;4680:4;4673:11;;;4328:364;;;;:::o;4700:121::-;4758:4;4782:31;4792:10;4804:3;4809;4782:9;:31::i;:::-;4775:38;;4700:121;;;;:::o;8549:213::-;8614:7;8630:19;8652:14;:23;8667:7;8652:23;;;;;;;;;;;;;;;;;;;;;;;;;8630:45;;8704:1;8689:12;:16;;;:67;;8755:1;8689:67;;;8708:11;:20;8720:7;8708:20;;;;;;;;;;;;;;;:38;8744:1;8729:12;:16;;;;:::i;:::-;8708:38;;;;;;;;;;;;;;;:44;;;8689:67;8682:74;;;8549:213;;;:::o;7911:632::-;8023:18;1769:71;8086:9;8097:5;8104:6;8054:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8044:68;;;;;;8023:89;;8125:14;8181:16;8199:10;8152:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8142:69;;;;;;8125:86;;8218:17;8238:26;8248:6;8256:1;8259;8262;8238:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8218:46;;8300:1;8279:23;;:9;:23;;;;8271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8363:6;:17;8370:9;8363:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;8354:5;:28;8346:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8449:6;8430:15;:25;;8422:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8506:31;8516:9;8527;8506;:31::i;:::-;8499:38;;;7911:632;;;;;;:::o;6915:888::-;7066:15;7054:8;:27;;7046:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7128:18;1887:95;7236:5;7260:7;7286:6;7311;:13;7318:5;7311:13;;;;;;;;;;;;;;;;:15;;;;;;;;;:::i;:::-;;;;;7345:8;7173:195;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7149:230;;;;;;7128:251;;7392:12;7495:16;7530:10;7431:124;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7407:159;;;;;;7392:174;;7579:14;7596:24;7606:4;7612:1;7615;7618;7596:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7579:41;;7671:1;7653:20;;:6;:20;;;;:39;;;;;7687:5;7677:15;;:6;:15;;;7653:39;7631:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;7763:32;7772:5;7779:7;7788:6;7763:8;:32::i;:::-;;7035:768;;;6915:888;;;;;;;:::o;3842:133::-;3914:7;3941:10;:17;3952:5;3941:17;;;;;;;;;;;;;;;:26;3959:7;3941:26;;;;;;;;;;;;;;;;3934:33;;3842:133;;;;:::o;1723:117::-;1769:71;1723:117;:::o;2175:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5699:202::-;5777:4;5823:3;5794:10;:17;5805:5;5794:17;;;;;;;;;;;;;;;:26;5812:7;5794:26;;;;;;;;;;;;;;;:32;;;;5858:7;5842:29;;5851:5;5842:29;;;5867:3;5842:29;;;;;;:::i;:::-;;;;;;;;5889:4;5882:11;;5699:202;;;;;:::o;5226:465::-;5299:4;5339:1;5324:17;;:3;:17;;;;5316:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5424:3;5405:10;:15;5416:3;5405:15;;;;;;;;;;;;;;;;:22;;5397:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;5505:3;5487:10;:15;5498:3;5487:15;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;5469:10;:15;5480:3;5469:15;;;;;;;;;;;;;;;:39;;;;5555:3;5537:10;:15;5548:3;5537:15;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;5519:10;:15;5530:3;5519:15;;;;;;;;;;;;;;;:39;;;;5590:3;5576:23;;5585:3;5576:23;;;5595:3;5576:23;;;;;;:::i;:::-;;;;;;;;5610:51;5625:9;:14;5635:3;5625:14;;;;;;;;;;;;;;;;;;;;;;;;;5641:9;:14;5651:3;5641:14;;;;;;;;;;;;;;;;;;;;;;;;;5657:3;5610:14;:51::i;:::-;5679:4;5672:11;;5226:465;;;;;:::o;6243:327::-;6328:3;6309:10;:15;6320:3;6309:15;;;;;;;;;;;;;;;;:22;;6301:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6409:3;6391:10;:15;6402:3;6391:15;;;;;;;;;;;;;;;;:21;;;;:::i;:::-;6373:10;:15;6384:3;6373:15;;;;;;;;;;;;;;;:39;;;;6453:3;6438:12;;:18;;;;:::i;:::-;6423:12;:33;;;;6494:1;6472:30;;6481:3;6472:30;;;6498:3;6472:30;;;;;;:::i;:::-;;;;;;;;6515:47;6530:9;:14;6540:3;6530:14;;;;;;;;;;;;;;;;;;;;;;;;;6554:1;6558:3;6515:14;:47::i;:::-;6243:327;;:::o;9877:350::-;9950:23;9976:9;:20;9986:9;9976:20;;;;;;;;;;;;;;;;;;;;;;;;;9950:46;;10003:21;10027:20;10037:9;10027;:20::i;:::-;10003:44;;10077:9;10054;:20;10064:9;10054:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10144:9;10100:54;;10127:15;10100:54;;10116:9;10100:54;;;;;;;;;;;;10161:60;10176:15;10193:9;10204:16;10161:14;:60::i;:::-;9943:284;;9877:350;;:::o;6578:329::-;6638:15;6656:10;:15;6667:3;6656:15;;;;;;;;;;;;;;;:27;6672:10;6656:27;;;;;;;;;;;;;;;;6638:45;;6703:10;6696:17;;:3;:17;;;;:46;;;;;6728:14;6717:7;:25;;6696:46;6692:182;;;6776:3;6765:7;:14;;6757:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6824:40;6833:3;6838:10;6860:3;6850:7;:13;;;;:::i;:::-;6824:8;:40::i;:::-;;6692:182;6884:15;6890:3;6895;6884:5;:15::i;:::-;6629:278;6578:329;;:::o;518:422::-;578:4;786:12;897:7;885:20;877:28;;931:1;924:4;:8;917:15;;;518:422;;;:::o;10233:748::-;10332:6;10322:16;;:6;:16;;;;:30;;;;;10351:1;10342:6;:10;10322:30;10318:658;;;10385:1;10367:20;;:6;:20;;;10363:298;;10402:16;10421:14;:22;10436:6;10421:22;;;;;;;;;;;;;;;;;;;;;;;;;10402:41;;10456:14;10485:1;10473:9;:13;;;:60;;10532:1;10473:60;;;10489:11;:19;10501:6;10489:19;;;;;;;;;;;;;;;:34;10521:1;10509:9;:13;;;;:::i;:::-;10489:34;;;;;;;;;;;;;;;:40;;;10473:60;10456:77;;10546:14;10575:6;10563:9;:18;;;;:::i;:::-;10546:35;;10594:57;10611:6;10619:9;10630;10641;10594:16;:57::i;:::-;10389:272;;;10363:298;10693:1;10675:20;;:6;:20;;;10671:298;;10710:16;10729:14;:22;10744:6;10729:22;;;;;;;;;;;;;;;;;;;;;;;;;10710:41;;10764:14;10793:1;10781:9;:13;;;:60;;10840:1;10781:60;;;10797:11;:19;10809:6;10797:19;;;;;;;;;;;;;;;:34;10829:1;10817:9;:13;;;;:::i;:::-;10797:34;;;;;;;;;;;;;;;:40;;;10781:60;10764:77;;10854:14;10883:6;10871:9;:18;;;;:::i;:::-;10854:35;;10902:57;10919:6;10927:9;10938;10949;10902:16;:57::i;:::-;10697:272;;;10671:298;10318:658;10233:748;;;:::o;10987:601::-;11099:18;11120:70;11127:12;11120:70;;;;;;;;;;;;;;;;;:6;:70::i;:::-;11099:91;;11218:1;11203:12;:16;;;:85;;;;;11277:11;11223:65;;:11;:22;11235:9;11223:22;;;;;;;;;;;;;;;:40;11261:1;11246:12;:16;;;;:::i;:::-;11223:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;11203:85;11199:319;;;11350:8;11301:11;:22;11313:9;11301:22;;;;;;;;;;;;;;;:40;11339:1;11324:12;:16;;;;:::i;:::-;11301:40;;;;;;;;;;;;;;;:46;;:57;;;;11199:319;;;11422:33;;;;;;;;11433:11;11422:33;;;;;;11446:8;11422:33;;;11383:11;:22;11395:9;11383:22;;;;;;;;;;;;;;;:36;11406:12;11383:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11509:1;11494:12;:16;;;;:::i;:::-;11466:14;:25;11481:9;11466:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;11199:319;11552:9;11531:51;;;11563:8;11573;11531:51;;;;;;;:::i;:::-;;;;;;;;11092:496;10987:601;;;;:::o;11594:151::-;11669:6;11696:5;11692:1;:9;11703:12;11684:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11737:1;11723:16;;11594:151;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;152:137;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;295:139;;;;:::o;453:552::-;510:8;520:6;570:3;563:4;555:6;551:17;547:27;537:122;;578:79;;:::i;:::-;537:122;691:6;678:20;668:30;;721:18;713:6;710:30;707:117;;;743:79;;:::i;:::-;707:117;857:4;849:6;845:17;833:29;;911:3;903:4;895:6;891:17;881:8;877:32;874:41;871:128;;;918:79;;:::i;:::-;871:128;453:552;;;;;:::o;1011:139::-;1057:5;1095:6;1082:20;1073:29;;1111:33;1138:5;1111:33;:::i;:::-;1011:139;;;;:::o;1156:137::-;1201:5;1239:6;1226:20;1217:29;;1255:32;1281:5;1255:32;:::i;:::-;1156:137;;;;:::o;1299:135::-;1343:5;1381:6;1368:20;1359:29;;1397:31;1422:5;1397:31;:::i;:::-;1299:135;;;;:::o;1440:329::-;1499:6;1548:2;1536:9;1527:7;1523:23;1519:32;1516:119;;;1554:79;;:::i;:::-;1516:119;1674:1;1699:53;1744:7;1735:6;1724:9;1720:22;1699:53;:::i;:::-;1689:63;;1645:117;1440:329;;;;:::o;1775:474::-;1843:6;1851;1900:2;1888:9;1879:7;1875:23;1871:32;1868:119;;;1906:79;;:::i;:::-;1868:119;2026:1;2051:53;2096:7;2087:6;2076:9;2072:22;2051:53;:::i;:::-;2041:63;;1997:117;2153:2;2179:53;2224:7;2215:6;2204:9;2200:22;2179:53;:::i;:::-;2169:63;;2124:118;1775:474;;;;;:::o;2255:619::-;2332:6;2340;2348;2397:2;2385:9;2376:7;2372:23;2368:32;2365:119;;;2403:79;;:::i;:::-;2365:119;2523:1;2548:53;2593:7;2584:6;2573:9;2569:22;2548:53;:::i;:::-;2538:63;;2494:117;2650:2;2676:53;2721:7;2712:6;2701:9;2697:22;2676:53;:::i;:::-;2666:63;;2621:118;2778:2;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2749:118;2255:619;;;;;:::o;2880:1199::-;2991:6;2999;3007;3015;3023;3031;3039;3088:3;3076:9;3067:7;3063:23;3059:33;3056:120;;;3095:79;;:::i;:::-;3056:120;3215:1;3240:53;3285:7;3276:6;3265:9;3261:22;3240:53;:::i;:::-;3230:63;;3186:117;3342:2;3368:53;3413:7;3404:6;3393:9;3389:22;3368:53;:::i;:::-;3358:63;;3313:118;3470:2;3496:53;3541:7;3532:6;3521:9;3517:22;3496:53;:::i;:::-;3486:63;;3441:118;3598:2;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3569:118;3726:3;3753:51;3796:7;3787:6;3776:9;3772:22;3753:51;:::i;:::-;3743:61;;3697:117;3853:3;3880:53;3925:7;3916:6;3905:9;3901:22;3880:53;:::i;:::-;3870:63;;3824:119;3982:3;4009:53;4054:7;4045:6;4034:9;4030:22;4009:53;:::i;:::-;3999:63;;3953:119;2880:1199;;;;;;;;;;:::o;4085:474::-;4153:6;4161;4210:2;4198:9;4189:7;4185:23;4181:32;4178:119;;;4216:79;;:::i;:::-;4178:119;4336:1;4361:53;4406:7;4397:6;4386:9;4382:22;4361:53;:::i;:::-;4351:63;;4307:117;4463:2;4489:53;4534:7;4525:6;4514:9;4510:22;4489:53;:::i;:::-;4479:63;;4434:118;4085:474;;;;;:::o;4565:817::-;4653:6;4661;4669;4677;4726:2;4714:9;4705:7;4701:23;4697:32;4694:119;;;4732:79;;:::i;:::-;4694:119;4852:1;4877:53;4922:7;4913:6;4902:9;4898:22;4877:53;:::i;:::-;4867:63;;4823:117;4979:2;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4950:118;5135:2;5124:9;5120:18;5107:32;5166:18;5158:6;5155:30;5152:117;;;5188:79;;:::i;:::-;5152:117;5301:64;5357:7;5348:6;5337:9;5333:22;5301:64;:::i;:::-;5283:82;;;;5078:297;4565:817;;;;;;;:::o;5388:1053::-;5490:6;5498;5506;5514;5522;5530;5579:3;5567:9;5558:7;5554:23;5550:33;5547:120;;;5586:79;;:::i;:::-;5547:120;5706:1;5731:53;5776:7;5767:6;5756:9;5752:22;5731:53;:::i;:::-;5721:63;;5677:117;5833:2;5859:53;5904:7;5895:6;5884:9;5880:22;5859:53;:::i;:::-;5849:63;;5804:118;5961:2;5987:53;6032:7;6023:6;6012:9;6008:22;5987:53;:::i;:::-;5977:63;;5932:118;6089:2;6115:51;6158:7;6149:6;6138:9;6134:22;6115:51;:::i;:::-;6105:61;;6060:116;6215:3;6242:53;6287:7;6278:6;6267:9;6263:22;6242:53;:::i;:::-;6232:63;;6186:119;6344:3;6371:53;6416:7;6407:6;6396:9;6392:22;6371:53;:::i;:::-;6361:63;;6315:119;5388:1053;;;;;;;;:::o;6447:472::-;6514:6;6522;6571:2;6559:9;6550:7;6546:23;6542:32;6539:119;;;6577:79;;:::i;:::-;6539:119;6697:1;6722:53;6767:7;6758:6;6747:9;6743:22;6722:53;:::i;:::-;6712:63;;6668:117;6824:2;6850:52;6894:7;6885:6;6874:9;6870:22;6850:52;:::i;:::-;6840:62;;6795:117;6447:472;;;;;:::o;6925:345::-;6992:6;7041:2;7029:9;7020:7;7016:23;7012:32;7009:119;;;7047:79;;:::i;:::-;7009:119;7167:1;7192:61;7245:7;7236:6;7225:9;7221:22;7192:61;:::i;:::-;7182:71;;7138:125;6925:345;;;;:::o;7276:329::-;7335:6;7384:2;7372:9;7363:7;7359:23;7355:32;7352:119;;;7390:79;;:::i;:::-;7352:119;7510:1;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7481:117;7276:329;;;;:::o;7611:118::-;7698:24;7716:5;7698:24;:::i;:::-;7693:3;7686:37;7611:118;;:::o;7735:109::-;7816:21;7831:5;7816:21;:::i;:::-;7811:3;7804:34;7735:109;;:::o;7850:118::-;7937:24;7955:5;7937:24;:::i;:::-;7932:3;7925:37;7850:118;;:::o;7974:157::-;8079:45;8099:24;8117:5;8099:24;:::i;:::-;8079:45;:::i;:::-;8074:3;8067:58;7974:157;;:::o;8159:301::-;8255:3;8276:70;8339:6;8334:3;8276:70;:::i;:::-;8269:77;;8356:43;8392:6;8387:3;8380:5;8356:43;:::i;:::-;8424:29;8446:6;8424:29;:::i;:::-;8419:3;8415:39;8408:46;;8159:301;;;;;:::o;8466:364::-;8554:3;8582:39;8615:5;8582:39;:::i;:::-;8637:71;8701:6;8696:3;8637:71;:::i;:::-;8630:78;;8717:52;8762:6;8757:3;8750:4;8743:5;8739:16;8717:52;:::i;:::-;8794:29;8816:6;8794:29;:::i;:::-;8789:3;8785:39;8778:46;;8558:272;8466:364;;;;:::o;8836:366::-;8978:3;8999:67;9063:2;9058:3;8999:67;:::i;:::-;8992:74;;9075:93;9164:3;9075:93;:::i;:::-;9193:2;9188:3;9184:12;9177:19;;8836:366;;;:::o;9208:::-;9350:3;9371:67;9435:2;9430:3;9371:67;:::i;:::-;9364:74;;9447:93;9536:3;9447:93;:::i;:::-;9565:2;9560:3;9556:12;9549:19;;9208:366;;;:::o;9580:::-;9722:3;9743:67;9807:2;9802:3;9743:67;:::i;:::-;9736:74;;9819:93;9908:3;9819:93;:::i;:::-;9937:2;9932:3;9928:12;9921:19;;9580:366;;;:::o;9952:::-;10094:3;10115:67;10179:2;10174:3;10115:67;:::i;:::-;10108:74;;10191:93;10280:3;10191:93;:::i;:::-;10309:2;10304:3;10300:12;10293:19;;9952:366;;;:::o;10324:400::-;10484:3;10505:84;10587:1;10582:3;10505:84;:::i;:::-;10498:91;;10598:93;10687:3;10598:93;:::i;:::-;10716:1;10711:3;10707:11;10700:18;;10324:400;;;:::o;10730:366::-;10872:3;10893:67;10957:2;10952:3;10893:67;:::i;:::-;10886:74;;10969:93;11058:3;10969:93;:::i;:::-;11087:2;11082:3;11078:12;11071:19;;10730:366;;;:::o;11102:::-;11244:3;11265:67;11329:2;11324:3;11265:67;:::i;:::-;11258:74;;11341:93;11430:3;11341:93;:::i;:::-;11459:2;11454:3;11450:12;11443:19;;11102:366;;;:::o;11474:::-;11616:3;11637:67;11701:2;11696:3;11637:67;:::i;:::-;11630:74;;11713:93;11802:3;11713:93;:::i;:::-;11831:2;11826:3;11822:12;11815:19;;11474:366;;;:::o;11846:::-;11988:3;12009:67;12073:2;12068:3;12009:67;:::i;:::-;12002:74;;12085:93;12174:3;12085:93;:::i;:::-;12203:2;12198:3;12194:12;12187:19;;11846:366;;;:::o;12218:::-;12360:3;12381:67;12445:2;12440:3;12381:67;:::i;:::-;12374:74;;12457:93;12546:3;12457:93;:::i;:::-;12575:2;12570:3;12566:12;12559:19;;12218:366;;;:::o;12590:::-;12732:3;12753:67;12817:2;12812:3;12753:67;:::i;:::-;12746:74;;12829:93;12918:3;12829:93;:::i;:::-;12947:2;12942:3;12938:12;12931:19;;12590:366;;;:::o;12962:::-;13104:3;13125:67;13189:2;13184:3;13125:67;:::i;:::-;13118:74;;13201:93;13290:3;13201:93;:::i;:::-;13319:2;13314:3;13310:12;13303:19;;12962:366;;;:::o;13334:118::-;13421:24;13439:5;13421:24;:::i;:::-;13416:3;13409:37;13334:118;;:::o;13458:115::-;13543:23;13560:5;13543:23;:::i;:::-;13538:3;13531:36;13458:115;;:::o;13579:112::-;13662:22;13678:5;13662:22;:::i;:::-;13657:3;13650:35;13579:112;;:::o;13697:663::-;13938:3;13960:148;14104:3;13960:148;:::i;:::-;13953:155;;14118:75;14189:3;14180:6;14118:75;:::i;:::-;14218:2;14213:3;14209:12;14202:19;;14231:75;14302:3;14293:6;14231:75;:::i;:::-;14331:2;14326:3;14322:12;14315:19;;14351:3;14344:10;;13697:663;;;;;:::o;14366:222::-;14459:4;14497:2;14486:9;14482:18;14474:26;;14510:71;14578:1;14567:9;14563:17;14554:6;14510:71;:::i;:::-;14366:222;;;;:::o;14594:549::-;14771:4;14809:2;14798:9;14794:18;14786:26;;14822:71;14890:1;14879:9;14875:17;14866:6;14822:71;:::i;:::-;14903:72;14971:2;14960:9;14956:18;14947:6;14903:72;:::i;:::-;15022:9;15016:4;15012:20;15007:2;14996:9;14992:18;14985:48;15050:86;15131:4;15122:6;15114;15050:86;:::i;:::-;15042:94;;14594:549;;;;;;;:::o;15149:210::-;15236:4;15274:2;15263:9;15259:18;15251:26;;15287:65;15349:1;15338:9;15334:17;15325:6;15287:65;:::i;:::-;15149:210;;;;:::o;15365:222::-;15458:4;15496:2;15485:9;15481:18;15473:26;;15509:71;15577:1;15566:9;15562:17;15553:6;15509:71;:::i;:::-;15365:222;;;;:::o;15593:775::-;15826:4;15864:3;15853:9;15849:19;15841:27;;15878:71;15946:1;15935:9;15931:17;15922:6;15878:71;:::i;:::-;15959:72;16027:2;16016:9;16012:18;16003:6;15959:72;:::i;:::-;16041;16109:2;16098:9;16094:18;16085:6;16041:72;:::i;:::-;16123;16191:2;16180:9;16176:18;16167:6;16123:72;:::i;:::-;16205:73;16273:3;16262:9;16258:19;16249:6;16205:73;:::i;:::-;16288;16356:3;16345:9;16341:19;16332:6;16288:73;:::i;:::-;15593:775;;;;;;;;;:::o;16374:553::-;16551:4;16589:3;16578:9;16574:19;16566:27;;16603:71;16671:1;16660:9;16656:17;16647:6;16603:71;:::i;:::-;16684:72;16752:2;16741:9;16737:18;16728:6;16684:72;:::i;:::-;16766;16834:2;16823:9;16819:18;16810:6;16766:72;:::i;:::-;16848;16916:2;16905:9;16901:18;16892:6;16848:72;:::i;:::-;16374:553;;;;;;;:::o;16933:545::-;17106:4;17144:3;17133:9;17129:19;17121:27;;17158:71;17226:1;17215:9;17211:17;17202:6;17158:71;:::i;:::-;17239:68;17303:2;17292:9;17288:18;17279:6;17239:68;:::i;:::-;17317:72;17385:2;17374:9;17370:18;17361:6;17317:72;:::i;:::-;17399;17467:2;17456:9;17452:18;17443:6;17399:72;:::i;:::-;16933:545;;;;;;;:::o;17484:313::-;17597:4;17635:2;17624:9;17620:18;17612:26;;17684:9;17678:4;17674:20;17670:1;17659:9;17655:17;17648:47;17712:78;17785:4;17776:6;17712:78;:::i;:::-;17704:86;;17484:313;;;;:::o;17803:419::-;17969:4;18007:2;17996:9;17992:18;17984:26;;18056:9;18050:4;18046:20;18042:1;18031:9;18027:17;18020:47;18084:131;18210:4;18084:131;:::i;:::-;18076:139;;17803:419;;;:::o;18228:::-;18394:4;18432:2;18421:9;18417:18;18409:26;;18481:9;18475:4;18471:20;18467:1;18456:9;18452:17;18445:47;18509:131;18635:4;18509:131;:::i;:::-;18501:139;;18228:419;;;:::o;18653:::-;18819:4;18857:2;18846:9;18842:18;18834:26;;18906:9;18900:4;18896:20;18892:1;18881:9;18877:17;18870:47;18934:131;19060:4;18934:131;:::i;:::-;18926:139;;18653:419;;;:::o;19078:::-;19244:4;19282:2;19271:9;19267:18;19259:26;;19331:9;19325:4;19321:20;19317:1;19306:9;19302:17;19295:47;19359:131;19485:4;19359:131;:::i;:::-;19351:139;;19078:419;;;:::o;19503:::-;19669:4;19707:2;19696:9;19692:18;19684:26;;19756:9;19750:4;19746:20;19742:1;19731:9;19727:17;19720:47;19784:131;19910:4;19784:131;:::i;:::-;19776:139;;19503:419;;;:::o;19928:::-;20094:4;20132:2;20121:9;20117:18;20109:26;;20181:9;20175:4;20171:20;20167:1;20156:9;20152:17;20145:47;20209:131;20335:4;20209:131;:::i;:::-;20201:139;;19928:419;;;:::o;20353:::-;20519:4;20557:2;20546:9;20542:18;20534:26;;20606:9;20600:4;20596:20;20592:1;20581:9;20577:17;20570:47;20634:131;20760:4;20634:131;:::i;:::-;20626:139;;20353:419;;;:::o;20778:::-;20944:4;20982:2;20971:9;20967:18;20959:26;;21031:9;21025:4;21021:20;21017:1;21006:9;21002:17;20995:47;21059:131;21185:4;21059:131;:::i;:::-;21051:139;;20778:419;;;:::o;21203:::-;21369:4;21407:2;21396:9;21392:18;21384:26;;21456:9;21450:4;21446:20;21442:1;21431:9;21427:17;21420:47;21484:131;21610:4;21484:131;:::i;:::-;21476:139;;21203:419;;;:::o;21628:::-;21794:4;21832:2;21821:9;21817:18;21809:26;;21881:9;21875:4;21871:20;21867:1;21856:9;21852:17;21845:47;21909:131;22035:4;21909:131;:::i;:::-;21901:139;;21628:419;;;:::o;22053:::-;22219:4;22257:2;22246:9;22242:18;22234:26;;22306:9;22300:4;22296:20;22292:1;22281:9;22277:17;22270:47;22334:131;22460:4;22334:131;:::i;:::-;22326:139;;22053:419;;;:::o;22478:222::-;22571:4;22609:2;22598:9;22594:18;22586:26;;22622:71;22690:1;22679:9;22675:17;22666:6;22622:71;:::i;:::-;22478:222;;;;:::o;22706:332::-;22827:4;22865:2;22854:9;22850:18;22842:26;;22878:71;22946:1;22935:9;22931:17;22922:6;22878:71;:::i;:::-;22959:72;23027:2;23016:9;23012:18;23003:6;22959:72;:::i;:::-;22706:332;;;;;:::o;23044:218::-;23135:4;23173:2;23162:9;23158:18;23150:26;;23186:69;23252:1;23241:9;23237:17;23228:6;23186:69;:::i;:::-;23044:218;;;;:::o;23268:328::-;23387:4;23425:2;23414:9;23410:18;23402:26;;23438:69;23504:1;23493:9;23489:17;23480:6;23438:69;:::i;:::-;23517:72;23585:2;23574:9;23570:18;23561:6;23517:72;:::i;:::-;23268:328;;;;;:::o;23683:99::-;23735:6;23769:5;23763:12;23753:22;;23683:99;;;:::o;23788:168::-;23871:11;23905:6;23900:3;23893:19;23945:4;23940:3;23936:14;23921:29;;23788:168;;;;:::o;23962:169::-;24046:11;24080:6;24075:3;24068:19;24120:4;24115:3;24111:14;24096:29;;23962:169;;;;:::o;24137:148::-;24239:11;24276:3;24261:18;;24137:148;;;;:::o;24291:305::-;24331:3;24350:20;24368:1;24350:20;:::i;:::-;24345:25;;24384:20;24402:1;24384:20;:::i;:::-;24379:25;;24538:1;24470:66;24466:74;24463:1;24460:81;24457:107;;;24544:18;;:::i;:::-;24457:107;24588:1;24585;24581:9;24574:16;;24291:305;;;;:::o;24602:246::-;24641:3;24660:19;24677:1;24660:19;:::i;:::-;24655:24;;24693:19;24710:1;24693:19;:::i;:::-;24688:24;;24790:1;24778:10;24774:18;24771:1;24768:25;24765:51;;;24796:18;;:::i;:::-;24765:51;24840:1;24837;24833:9;24826:16;;24602:246;;;;:::o;24854:182::-;24893:1;24910:19;24927:1;24910:19;:::i;:::-;24905:24;;24943:19;24960:1;24943:19;:::i;:::-;24938:24;;24981:1;24971:35;;24986:18;;:::i;:::-;24971:35;25028:1;25025;25021:9;25016:14;;24854:182;;;;:::o;25042:191::-;25082:4;25102:20;25120:1;25102:20;:::i;:::-;25097:25;;25136:20;25154:1;25136:20;:::i;:::-;25131:25;;25175:1;25172;25169:8;25166:34;;;25180:18;;:::i;:::-;25166:34;25225:1;25222;25218:9;25210:17;;25042:191;;;;:::o;25239:188::-;25278:4;25298:19;25315:1;25298:19;:::i;:::-;25293:24;;25331:19;25348:1;25331:19;:::i;:::-;25326:24;;25369:1;25366;25363:8;25360:34;;;25374:18;;:::i;:::-;25360:34;25419:1;25416;25412:9;25404:17;;25239:188;;;;:::o;25433:96::-;25470:7;25499:24;25517:5;25499:24;:::i;:::-;25488:35;;25433:96;;;:::o;25535:90::-;25569:7;25612:5;25605:13;25598:21;25587:32;;25535:90;;;:::o;25631:77::-;25668:7;25697:5;25686:16;;25631:77;;;:::o;25714:126::-;25751:7;25791:42;25784:5;25780:54;25769:65;;25714:126;;;:::o;25846:77::-;25883:7;25912:5;25901:16;;25846:77;;;:::o;25929:93::-;25965:7;26005:10;25998:5;25994:22;25983:33;;25929:93;;;:::o;26028:86::-;26063:7;26103:4;26096:5;26092:16;26081:27;;26028:86;;;:::o;26120:154::-;26204:6;26199:3;26194;26181:30;26266:1;26257:6;26252:3;26248:16;26241:27;26120:154;;;:::o;26280:307::-;26348:1;26358:113;26372:6;26369:1;26366:13;26358:113;;;26457:1;26452:3;26448:11;26442:18;26438:1;26433:3;26429:11;26422:39;26394:2;26391:1;26387:10;26382:15;;26358:113;;;26489:6;26486:1;26483:13;26480:101;;;26569:1;26560:6;26555:3;26551:16;26544:27;26480:101;26329:258;26280:307;;;:::o;26593:233::-;26632:3;26655:24;26673:5;26655:24;:::i;:::-;26646:33;;26701:66;26694:5;26691:77;26688:103;;;26771:18;;:::i;:::-;26688:103;26818:1;26811:5;26807:13;26800:20;;26593:233;;;:::o;26832:79::-;26871:7;26900:5;26889:16;;26832:79;;;:::o;26917:180::-;26965:77;26962:1;26955:88;27062:4;27059:1;27052:15;27086:4;27083:1;27076:15;27103:180;27151:77;27148:1;27141:88;27248:4;27245:1;27238:15;27272:4;27269:1;27262:15;27289:117;27398:1;27395;27388:12;27412:117;27521:1;27518;27511:12;27535:117;27644:1;27641;27634:12;27658:117;27767:1;27764;27757:12;27781:117;27890:1;27887;27880:12;27904:102;27945:6;27996:2;27992:7;27987:2;27980:5;27976:14;27972:28;27962:38;;27904:102;;;:::o;28012:220::-;28152:34;28148:1;28140:6;28136:14;28129:58;28221:3;28216:2;28208:6;28204:15;28197:28;28012:220;:::o;28238:167::-;28378:19;28374:1;28366:6;28362:14;28355:43;28238:167;:::o;28411:176::-;28551:28;28547:1;28539:6;28535:14;28528:52;28411:176;:::o;28593:177::-;28733:29;28729:1;28721:6;28717:14;28710:53;28593:177;:::o;28776:214::-;28916:66;28912:1;28904:6;28900:14;28893:90;28776:214;:::o;28996:182::-;29136:34;29132:1;29124:6;29120:14;29113:58;28996:182;:::o;29184:223::-;29324:34;29320:1;29312:6;29308:14;29301:58;29393:6;29388:2;29380:6;29376:15;29369:31;29184:223;:::o;29413:179::-;29553:31;29549:1;29541:6;29537:14;29530:55;29413:179;:::o;29598:182::-;29738:34;29734:1;29726:6;29722:14;29715:58;29598:182;:::o;29786:227::-;29926:34;29922:1;29914:6;29910:14;29903:58;29995:10;29990:2;29982:6;29978:15;29971:35;29786:227;:::o;30019:180::-;30159:32;30155:1;30147:6;30143:14;30136:56;30019:180;:::o;30205:178::-;30345:30;30341:1;30333:6;30329:14;30322:54;30205:178;:::o;30389:122::-;30462:24;30480:5;30462:24;:::i;:::-;30455:5;30452:35;30442:63;;30501:1;30498;30491:12;30442:63;30389:122;:::o;30517:116::-;30587:21;30602:5;30587:21;:::i;:::-;30580:5;30577:32;30567:60;;30623:1;30620;30613:12;30567:60;30517:116;:::o;30639:122::-;30712:24;30730:5;30712:24;:::i;:::-;30705:5;30702:35;30692:63;;30751:1;30748;30741:12;30692:63;30639:122;:::o;30767:::-;30840:24;30858:5;30840:24;:::i;:::-;30833:5;30830:35;30820:63;;30879:1;30876;30869:12;30820:63;30767:122;:::o;30895:120::-;30967:23;30984:5;30967:23;:::i;:::-;30960:5;30957:34;30947:62;;31005:1;31002;30995:12;30947:62;30895:120;:::o;31021:118::-;31092:22;31108:5;31092:22;:::i;:::-;31085:5;31082:33;31072:61;;31129:1;31126;31119:12;31072:61;31021:118;:::o

Swarm Source

ipfs://4f44a3d7c88ca7565ea5b3315fffbb3e1f6f6ad3362f24705fe9426a6b760c47
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.