Contract 0x2cc26dd730f548dc4ac291ae7d84a0c96980d2cb

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xa483c4f65e84b6517dadbfff1d8b8c1a949b56e005609f4230ad08efea924fdd54299942021-03-06 1:30:5918 mins ago0x32847fc10cf6b0ef17c1fe83c7eb41c49d9d711d IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0x80bdcd94578ec66ba7034a7459de96bb8c96067555d34b7d31cf4bc576135ad454289722021-03-06 0:39:531 hr 9 mins ago0x96ac74adad18b64d6809f4f3a6ccb0ac805be054 IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0xb552cb3cbc55a76f7372037f5dda3eee525bb0befd3b56cd57f611ee7c53e7d854288922021-03-06 0:35:531 hr 13 mins ago0x2f58ab61ac9b87b68ee80e818778d1da6cb77172 IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0x1f120e9b9468d86e09eb6d097dffc6adc3e99d19c893b8ed9d48d8f323b19ece54281612021-03-05 23:59:201 hr 50 mins ago0xc545de3010529aeb4b48a55403f6876e1e4821bb IN  Pizza Finance: PIZZA Token0 BNB0.000488477
0x33e32aeed80cd5b7c0ad3b6297c93968bd8af4273727526c543b5bd0712ccfe654281272021-03-05 23:57:381 hr 52 mins ago0xc545de3010529aeb4b48a55403f6876e1e4821bb IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0xde3aa176a6ff90c112bb0e1915bd57c9a4f28ebcd645e66438216af8e3d14f8554278372021-03-05 23:43:082 hrs 6 mins ago0xdeef834c0575d342e41f5a65498f6c5341fa489f IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0xc09945be3e9e4849af98a3670050769451e0529baa7d1294e40bbb4f33dade9354267552021-03-05 22:49:023 hrs ago0x344d39271311d0fb7b49159d571299f46d9529a3 IN  Pizza Finance: PIZZA Token0 BNB0.0004751549
0xa4ae880c44c7b8a7733cc515cf79aef7048a42675056a85f31212d6217c8f3ec54266252021-03-05 22:42:323 hrs 7 mins ago0x63c45aabd052e259ab33efcfacd41361d0ef69bf IN  Pizza Finance: PIZZA Token0 BNB0.00021103
0xe0f264d6663c50d8825ba19b70d2889546cd90f21905b9048f4ebbf67559e58c54266082021-03-05 22:41:413 hrs 7 mins ago0x63c45aabd052e259ab33efcfacd41361d0ef69bf IN  Pizza Finance: PIZZA Token0 BNB0.00036115
0xa65b5558e2385c2a9ee396e1945e0060060752ca3c23bdf74f9cd8dc644f19b554265742021-03-05 22:39:593 hrs 9 mins ago0x6f198f157246a596acd5766814cc4d5a74234d19 IN  Pizza Finance: PIZZA Token0 BNB0.00021115
0xe2eabf3693589c0bc4e87ba8a1bfe558a597d852b8f69066cfc36e7e23daee6054265712021-03-05 22:39:503 hrs 9 mins ago0x9e00b6c34110ad2b9884b3bd6487de450d4fb49a IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0x34f9fca593b0cdbbfa92f9581d3b9e82155800334e999210f378a19da63e590e54265652021-03-05 22:39:323 hrs 10 mins ago0x6f198f157246a596acd5766814cc4d5a74234d19 IN  Pizza Finance: PIZZA Token0 BNB0.00036115
0x836762f505f10a56ee07dd3540473a98cc847b1ad13e689e4b46d1fd7447e13254265362021-03-05 22:38:053 hrs 11 mins ago0x0a2e8169a943a4d7aae95d32aa1c4825cbc9c157 IN  Pizza Finance: PIZZA Token0 BNB0.00021115
0x0c4ec44e56871502f2b757e79064ea0a0655b3d6210005a82197ab986acaae3354265212021-03-05 22:37:203 hrs 12 mins ago0x0a2e8169a943a4d7aae95d32aa1c4825cbc9c157 IN  Pizza Finance: PIZZA Token0 BNB0.00036115
0x73bcadb41cd1af2703fb5cf90eb3e4ec89797b4877e93deebc73d9ce5dad934b54260202021-03-05 22:12:163 hrs 37 mins ago0x084d5df574691f6c9d16c8657051c28e0618fc54 IN  Pizza Finance: PIZZA Token0 BNB0.0004751549
0x9a7bdb15fb5880a98f4acd0f0e1a6165e6b8618e2cbf13832dd6b110c4599d8554259192021-03-05 22:07:133 hrs 42 mins ago0xa6cbad6e11a36714c863ffc543c7d6893ec05764 IN  Pizza Finance: PIZZA Token0 BNB0.00021067
0xe8dc98ab837d829c91e37ccbbf9ba3866089246e0d7a13ddfb14f82fe3be7be454255972021-03-05 21:51:073 hrs 58 mins ago0xcbaa497e13f952cb13a53671e17080b9051c6588 IN  Pizza Finance: PIZZA Token0 BNB0.0004751549
0x025fb0804ed11dd1efb4f3e5e1e4bea59e02bdc91cf55dae35add003afe4a66954255312021-03-05 21:47:494 hrs 1 min ago0xc58b775068b8b55e64bbd0936a16a85c1f2d2d47 IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0xd0b5142f1513b52a3d97256993513150f968827d04ea82dcb3a158ba1928f8f654253862021-03-05 21:40:344 hrs 9 mins ago0x5ff479eecf0f74bce4e3363f156538a162162cf3 IN  Pizza Finance: PIZZA Token0 BNB0.0004751549
0x5af21a372bbe4a11b7912c11a1f4c683dce34087ec30e1952215fc12ccfabe1a54247132021-03-05 21:06:554 hrs 42 mins ago0x3bd9675780051a7315a327edd1fecd86b165700d IN  Pizza Finance: PIZZA Token0 BNB0.00014512
0x51a6a2ac5287171ac9004c3c7e1cd492d4ba0fd4881834fd79a226108d98fbf054246742021-03-05 21:04:584 hrs 44 mins ago0x7a6b69b9afe36c44585cb49effa83bc2a3873fcb IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0xc912dcc69f370766eaf150f4f43ccba6439f0e65d7734230bb4f437aae16613b54245272021-03-05 20:57:374 hrs 52 mins ago0x818494f0474cca711241051697e703e4c34727ac IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0xb4a09b64b1eee059862d050c873703d96f036c1370b8945cc2f99bfd4f15a26054243802021-03-05 20:50:164 hrs 59 mins ago0xf2336b15117c62cc431dc6be5e7accb46e5a01e1 IN  Pizza Finance: PIZZA Token0 BNB0.00021115
0x73136fea59d58a3bd12a3eb3661a6116dcb5986b4c4f5a1573375913eb645e0754243042021-03-05 20:46:285 hrs 3 mins agoCheeseSwap: Team Wallet IN  Pizza Finance: PIZZA Token0 BNB0.00044407
0x85b2a425e56e26b08a02976ffa98bd6994941b6c0f3b8f7a26fe1cafe865d3e354242892021-03-05 20:45:435 hrs 3 mins ago0xd1bbb8dc0427965bb17ba9e0f30782f2f4f31fa8 IN  Pizza Finance: PIZZA Token0 BNB0.00036115
[ Download CSV Export 

OVERVIEW

Pizza finance is a yield farming project partnered with cheeseswap and keep3rb.network.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe0d7fd9ad34bb0a67664f211b9425fced1bb83d1f1005e5f5eccdd295676daac54303522021-03-06 1:48:5345 secs ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
0xe0d7fd9ad34bb0a67664f211b9425fced1bb83d1f1005e5f5eccdd295676daac54303522021-03-06 1:48:5345 secs ago Pizza Finance: PASTA Token Pizza Finance: PIZZA Token0 BNB
0xe0d7fd9ad34bb0a67664f211b9425fced1bb83d1f1005e5f5eccdd295676daac54303522021-03-06 1:48:5345 secs ago Pizza Finance: PASTA Token Pizza Finance: PIZZA Token0 BNB
0xe0d7fd9ad34bb0a67664f211b9425fced1bb83d1f1005e5f5eccdd295676daac54303522021-03-06 1:48:5345 secs ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
0xe0d7fd9ad34bb0a67664f211b9425fced1bb83d1f1005e5f5eccdd295676daac54303522021-03-06 1:48:5345 secs ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
0xe0d7fd9ad34bb0a67664f211b9425fced1bb83d1f1005e5f5eccdd295676daac54303522021-03-06 1:48:5345 secs ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
0xd2bd49d43a84a1284d2de03ad3d367abf6d4804d0b7337a5a166725f136c5d7e54303052021-03-06 1:46:323 mins ago CheeseSwap: PIZZA-BUSD Pizza Finance: PIZZA Token0 BNB
0xd2bd49d43a84a1284d2de03ad3d367abf6d4804d0b7337a5a166725f136c5d7e54303052021-03-06 1:46:323 mins ago CheeseSwap: Router Pizza Finance: PIZZA Token0 BNB
0x56bea412db775ec97fdc9b5d4c35384ed685a07fb7a043c78d71014a179e924554303042021-03-06 1:46:293 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 Pizza Finance: PIZZA Token0 BNB
0x56bea412db775ec97fdc9b5d4c35384ed685a07fb7a043c78d71014a179e924554303042021-03-06 1:46:293 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 Pizza Finance: PIZZA Token0 BNB
0x35aeb0ce54113f57e81ed219d1ae8d05d1870e84e72b4bb7b770f8903f59f72a54301672021-03-06 1:39:3810 mins ago CheeseSwap: PIZZA-WBNB Pizza Finance: PIZZA Token0 BNB
0x35aeb0ce54113f57e81ed219d1ae8d05d1870e84e72b4bb7b770f8903f59f72a54301672021-03-06 1:39:3810 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 Pizza Finance: PIZZA Token0 BNB
0x35aeb0ce54113f57e81ed219d1ae8d05d1870e84e72b4bb7b770f8903f59f72a54301672021-03-06 1:39:3810 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 Pizza Finance: PIZZA Token0 BNB
0x431437bc39ba05b8dcad20878605676217f03a1665487588f44ed0768ca0086c54300592021-03-06 1:34:1415 mins ago 0xc78f0ad92591ce4902653c5089c7358ced058721 Pizza Finance: PIZZA Token0 BNB
0xdcb2a8839b2e282db825cc6ce1149ca04e77c485928420e0defcded266a19af554300542021-03-06 1:33:5915 mins ago 0x547d63927cfe91b24ec89d5d175430c6858bce31 Pizza Finance: PIZZA Token0 BNB
0xcfa5cd539fa29506f2a3f739d784f95b3897d450dd5130393c014ebbab9b139154300252021-03-06 1:32:3217 mins ago CheeseSwap: PIZZA-BUSD Pizza Finance: PIZZA Token0 BNB
0xcfa5cd539fa29506f2a3f739d784f95b3897d450dd5130393c014ebbab9b139154300252021-03-06 1:32:3217 mins ago CheeseSwap: Router Pizza Finance: PIZZA Token0 BNB
0xa43cb1eb99ebcc7abb9bed4785d22937eaf51d50adbe9d1fab71c6654cd4071654300152021-03-06 1:32:0217 mins ago Pizza Finance: PASTA Token Pizza Finance: PIZZA Token0 BNB
0xa43cb1eb99ebcc7abb9bed4785d22937eaf51d50adbe9d1fab71c6654cd4071654300152021-03-06 1:32:0217 mins ago Pizza Finance: PASTA Token Pizza Finance: PIZZA Token0 BNB
0xa43cb1eb99ebcc7abb9bed4785d22937eaf51d50adbe9d1fab71c6654cd4071654300152021-03-06 1:32:0217 mins ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
0xa43cb1eb99ebcc7abb9bed4785d22937eaf51d50adbe9d1fab71c6654cd4071654300152021-03-06 1:32:0217 mins ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
0xfa801c1d2f1a48f3213063c55b56d9528ed37d71142bf441fbb1c4b0be317e4754300112021-03-06 1:31:5017 mins ago 0x7e9189c9f263e788c8d5df80c1ca1acbc8059c75 Pizza Finance: PIZZA Token0 BNB
0x1ac9f8ac541b0fd395d4d939ea7cd57962041ea9c30c48ea21b0f4f45ca0a45354300042021-03-06 1:31:2918 mins ago Pizza Finance: PASTA Token Pizza Finance: PIZZA Token0 BNB
0x1ac9f8ac541b0fd395d4d939ea7cd57962041ea9c30c48ea21b0f4f45ca0a45354300042021-03-06 1:31:2918 mins ago Pizza Finance: PASTA Token Pizza Finance: PIZZA Token0 BNB
0x1ac9f8ac541b0fd395d4d939ea7cd57962041ea9c30c48ea21b0f4f45ca0a45354300042021-03-06 1:31:2918 mins ago Pizza Finance: MasterChef Pizza Finance: PIZZA Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PizzaToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-01-27
*/

// SPDX-License-Identifier: GPL-v3.0


pragma solidity 0.6.12;


contract Context {

    constructor() internal {}

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

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


contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


interface IBEP20 {
 
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address _owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);


    event Transfer(address indexed from, address indexed to, uint256 value);

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

library SafeMath {

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

        return c;
    }

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


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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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


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

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

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

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


library Address {

    function isContract(address account) internal view returns (bool) {

        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, 'Address: insufficient balance');

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}('');
        require(success, 'Address: unable to send value, recipient may have reverted');
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, 'Address: low-level call failed');
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, 'Address: insufficient balance for call');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


contract BEP20 is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

    function getOwner() external override view returns (address) {
        return owner();
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, 'BEP20: transfer amount exceeds allowance')
        );
        return true;
    }

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

 
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, 'BEP20: decreased allowance below zero')
        );
        return true;
    }

 
    function mint(uint256 amount) public onlyOwner returns (bool) {
        _mint(_msgSender(), amount);
        return true;
    }


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

        _balances[sender] = _balances[sender].sub(amount, 'BEP20: transfer amount exceeds balance');
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }


    function _mint(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: mint to the zero address');

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


    function _burn(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: burn from the zero address');

        _balances[account] = _balances[account].sub(amount, 'BEP20: burn amount exceeds balance');
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        require(owner != address(0), 'BEP20: approve from the zero address');
        require(spender != address(0), 'BEP20: approve to the zero address');

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

    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(amount, 'BEP20: burn amount exceeds allowance')
        );
    }
}


contract PizzaToken is BEP20('PizzaSwap', 'PIZZA') {

    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    mapping (address => address) internal _delegates;

    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }

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

    mapping (address => uint32) public numCheckpoints;

    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    mapping (address => uint) public nonces;

    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    function delegates(address delegator)
        external
        view
        returns (address)
    {
        return _delegates[delegator];
    }

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

    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        external
    {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name())),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                DELEGATION_TYPEHASH,
                delegatee,
                nonce,
                expiry
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                domainSeparator,
                structHash
            )
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "PIZZA::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "PIZZA::delegateBySig: invalid nonce");
        require(now <= expiry, "PIZZA::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)
        external
        view
        returns (uint256)
    {
        require(blockNumber < block.number, "PIZZA::getPriorVotes: not yet determined");

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

        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; 
            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];
        uint256 delegatorBalance = balanceOf(delegator); 
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

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

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

    function _writeCheckpoint(
        address delegatee,
        uint32 nCheckpoints,
        uint256 oldVotes,
        uint256 newVotes
    )
        internal
    {
        uint32 blockNumber = safe32(block.number, "PIZZA::_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);
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uint8","name":"","type":"uint8"}],"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":"delegator","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":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405180604001604052806009815260200168050697a7a61537761760bc1b8152506040518060400160405280600581526020016450495a5a4160d81b815250600062000064620000ef60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000c3906004906020850190620000f3565b508051620000d9906005906020840190620000f3565b50506006805460ff19166012179055506200018f565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013657805160ff191683800117855562000166565b8280016001018555821562000166579182015b828111156200016657825182559160200191906001019062000149565b506200017492915062000178565b5090565b5b8082111562000174576000815560010162000179565b611b88806200019f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063782d6fe1116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e1461055c578063e7a324dc1461058a578063f1127ed814610592578063f2fde38b146105e4576101a9565b8063a9059cbb146104c3578063b4b5ea57146104ef578063c3cda52014610515576101a9565b80638da5cb5b116100d35780638da5cb5b1461046a57806395d89b4114610472578063a0712d681461047a578063a457c2d714610497576101a9565b8063782d6fe1146104105780637ecebe001461043c578063893d20e814610462576101a9565b806339509351116101665780635c19a95c116101405780635c19a95c1461037d5780636fcfff45146103a357806370a08231146103e2578063715018a614610408576101a9565b806339509351146102e157806340c10f191461030d578063587cde1e1461033b576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806320606b701461028557806323b872dd1461028d578063313ce567146102c3575b600080fd5b6101b661060a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356106a0565b604080519115158252519081900360200190f35b6102736106be565b60408051918252519081900360200190f35b6102736106c4565b610257600480360360608110156102a357600080fd5b506001600160a01b038135811691602081013590911690604001356106e8565b6102cb61076f565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102f757600080fd5b506001600160a01b038135169060200135610778565b6103396004803603604081101561032357600080fd5b506001600160a01b0381351690602001356107c6565b005b6103616004803603602081101561035157600080fd5b50356001600160a01b0316610851565b604080516001600160a01b039092168252519081900360200190f35b6103396004803603602081101561039357600080fd5b50356001600160a01b031661086f565b6103c9600480360360208110156103b957600080fd5b50356001600160a01b031661087c565b6040805163ffffffff9092168252519081900360200190f35b610273600480360360208110156103f857600080fd5b50356001600160a01b0316610894565b6103396108af565b6102736004803603604081101561042657600080fd5b506001600160a01b038135169060200135610951565b6102736004803603602081101561045257600080fd5b50356001600160a01b0316610b59565b610361610b6b565b610361610b7a565b6101b6610b89565b6102576004803603602081101561049057600080fd5b5035610bea565b610257600480360360408110156104ad57600080fd5b506001600160a01b038135169060200135610c5d565b610257600480360360408110156104d957600080fd5b506001600160a01b038135169060200135610cc5565b6102736004803603602081101561050557600080fd5b50356001600160a01b0316610cd9565b610339600480360360c081101561052b57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610d3d565b6102736004803603604081101561057257600080fd5b506001600160a01b0381358116916020013516610fb0565b610273610fdb565b6105c4600480360360408110156105a857600080fd5b5080356001600160a01b0316906020013563ffffffff16610fff565b6040805163ffffffff909316835260208301919091528051918290030190f35b610339600480360360208110156105fa57600080fd5b50356001600160a01b031661102c565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106965780601f1061066b57610100808354040283529160200191610696565b820191906000526020600020905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b60006106b46106ad61108d565b8484611091565b5060015b92915050565b60035490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b60006106f584848461117d565b6107658461070161108d565b610760856040518060600160405280602881526020016119ad602891396001600160a01b038a1660009081526002602052604081209061073f61108d565b6001600160a01b0316815260208101919091526040016000205491906112cf565b611091565b5060019392505050565b60065460ff1690565b60006106b461078561108d565b84610760856002600061079661108d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611366565b6107ce61108d565b6000546001600160a01b0390811691161461081e576040805162461bcd60e51b81526020600482018190526024820152600080516020611a4b833981519152604482015290519081900360640190fd5b61082882826113c0565b6001600160a01b0380831660009081526007602052604081205461084d9216836114a6565b5050565b6001600160a01b039081166000908152600760205260409020541690565b61087933826115e8565b50565b60096020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526001602052604090205490565b6108b761108d565b6000546001600160a01b03908116911614610907576040805162461bcd60e51b81526020600482018190526024820152600080516020611a4b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60004382106109915760405162461bcd60e51b81526004018080602001828103825260288152602001806119d56028913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205463ffffffff16806109bf5760009150506106b8565b6001600160a01b038416600090815260086020908152604080832063ffffffff600019860181168552925290912054168310610a2e576001600160a01b03841660009081526008602090815260408083206000199490940163ffffffff168352929052206001015490506106b8565b6001600160a01b038416600090815260086020908152604080832083805290915290205463ffffffff16831015610a695760009150506106b8565b600060001982015b8163ffffffff168163ffffffff161115610b2257600282820363ffffffff16048103610a9b611926565b506001600160a01b038716600090815260086020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610afd576020015194506106b89350505050565b805163ffffffff16871115610b1457819350610b1b565b6001820392505b5050610a71565b506001600160a01b038516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b600a6020526000908152604090205481565b6000610b75610b7a565b905090565b6000546001600160a01b031690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106965780601f1061066b57610100808354040283529160200191610696565b6000610bf461108d565b6000546001600160a01b03908116911614610c44576040805162461bcd60e51b81526020600482018190526024820152600080516020611a4b833981519152604482015290519081900360640190fd5b610c55610c4f61108d565b836113c0565b506001919050565b60006106b4610c6a61108d565b8461076085604051806060016040528060258152602001611ab46025913960026000610c9461108d565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906112cf565b60006106b4610cd261108d565b848461117d565b6001600160a01b03811660009081526009602052604081205463ffffffff1680610d04576000610d36565b6001600160a01b038316600090815260086020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610d6861060a565b80519060200120610d7761167d565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa158015610eaa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610efc5760405162461bcd60e51b81526004018080602001828103825260278152602001806119fd6027913960400191505060405180910390fd5b6001600160a01b0381166000908152600a602052604090208054600181019091558914610f5a5760405162461bcd60e51b8152600401808060200182810382526023815260200180611b0e6023913960400191505060405180910390fd5b87421115610f995760405162461bcd60e51b8152600401808060200182810382526027815260200180611a246027913960400191505060405180910390fd5b610fa3818b6115e8565b505050505b505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b61103461108d565b6000546001600160a01b03908116911614611084576040805162461bcd60e51b81526020600482018190526024820152600080516020611a4b833981519152604482015290519081900360640190fd5b61087981611681565b3390565b6001600160a01b0383166110d65760405162461bcd60e51b81526004018080602001828103825260248152602001806119636024913960400191505060405180910390fd5b6001600160a01b03821661111b5760405162461bcd60e51b8152600401808060200182810382526022815260200180611b316022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166111c25760405162461bcd60e51b815260040180806020018281038252602581526020018061193e6025913960400191505060405180910390fd5b6001600160a01b0382166112075760405162461bcd60e51b8152600401808060200182810382526023815260200180611a916023913960400191505060405180910390fd5b61124481604051806060016040528060268152602001611a6b602691396001600160a01b03861660009081526001602052604090205491906112cf565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546112739082611366565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561135e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561132357818101518382015260200161130b565b50505050905090810190601f1680156113505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821661141b576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546114289082611366565b6003556001600160a01b03821660009081526001602052604090205461144e9082611366565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b816001600160a01b0316836001600160a01b0316141580156114c85750600081115b156115e3576001600160a01b0383161561155a576001600160a01b03831660009081526009602052604081205463ffffffff16908161150857600061153a565b6001600160a01b038516600090815260086020908152604080832063ffffffff60001987011684529091529020600101545b905060006115488285611721565b905061155686848484611763565b5050505b6001600160a01b038216156115e3576001600160a01b03821660009081526009602052604081205463ffffffff1690816115955760006115c7565b6001600160a01b038416600090815260086020908152604080832063ffffffff60001987011684529091529020600101545b905060006115d58285611366565b9050610fa885848484611763565b505050565b6001600160a01b038083166000908152600760205260408120549091169061160f84610894565b6001600160a01b0385811660008181526007602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46116778284836114a6565b50505050565b4690565b6001600160a01b0381166116c65760405162461bcd60e51b81526004018080602001828103825260268152602001806119876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112cf565b600061178743604051806060016040528060358152602001611ad9603591396118c8565b905060008463ffffffff161180156117d057506001600160a01b038516600090815260086020908152604080832063ffffffff6000198901811685529252909120548282169116145b1561180d576001600160a01b038516600090815260086020908152604080832063ffffffff6000198901168452909152902060010182905561187e565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600884528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260099092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600081640100000000841061191e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561132357818101518382015260200161130b565b509192915050565b60408051808201909152600080825260208201529056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636550495a5a413a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656450495a5a413a3a64656c656761746542795369673a20696e76616c6964207369676e617475726550495a5a413a3a64656c656761746542795369673a207369676e617475726520657870697265644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657242455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f50495a5a413a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747350495a5a413a3a64656c656761746542795369673a20696e76616c6964206e6f6e636542455032303a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220940a305a6c75fbb97b3bd5150e70ec9f30a0549a6e158da46cfa900362a3dd2664736f6c634300060c0033

Deployed ByteCode Sourcemap

11753:6196:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7771:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8636:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8636:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8075:100;;;:::i;:::-;;;;;;;;;;;;;;;;12262:122;;;:::i;8805:397::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8805:397:0;;;;;;;;;;;;;;;;;:::i;7871:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9210:210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9210:210:0;;;;;;;;:::i;11813:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11813:162:0;;;;;;;;:::i;:::-;;12782:149;;;;;;;;;;;;;;;;-1:-1:-1;12782:149:0;-1:-1:-1;;;;;12782:149:0;;:::i;:::-;;;;-1:-1:-1;;;;;12782:149:0;;;;;;;;;;;;;;12939:104;;;;;;;;;;;;;;;;-1:-1:-1;12939:104:0;-1:-1:-1;;;;;12939:104:0;;:::i;12204:49::-;;;;;;;;;;;;;;;;-1:-1:-1;12204:49:0;-1:-1:-1;;;;;12204:49:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;8183:119;;;;;;;;;;;;;;;;-1:-1:-1;8183:119:0;-1:-1:-1;;;;;8183:119:0;;:::i;894:140::-;;;:::i;14503:1139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14503:1139:0;;;;;;;;:::i;12519:39::-;;;;;;;;;;;;;;;;-1:-1:-1;12519:39:0;-1:-1:-1;;;;;12519:39:0;;:::i;7669:94::-;;;:::i;680:79::-;;;:::i;7971:96::-;;;:::i;9753:130::-;;;;;;;;;;;;;;;;-1:-1:-1;9753:130:0;;:::i;9431:311::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9431:311:0;;;;;;;;:::i;8310:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8310:167:0;;;;;;;;:::i;14240:255::-;;;;;;;;;;;;;;;;-1:-1:-1;14240:255:0;-1:-1:-1;;;;;14240:255:0;;:::i;13051:1181::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13051:1181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8485:143::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8485:143:0;;;;;;;;;;:::i;12393:117::-;;;:::i;12125:70::-;;;;;;;;;;;;;;;;-1:-1:-1;12125:70:0;;-1:-1:-1;;;;;12125:70:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1042:109;;;;;;;;;;;;;;;;-1:-1:-1;1042:109:0;-1:-1:-1;;;;;1042:109:0;;:::i;7771:92::-;7850:5;7843:12;;;;;;;;-1:-1:-1;;7843:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7817:13;;7843:12;;7850:5;;7843:12;;7850:5;7843:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7771:92;:::o;8636:161::-;8711:4;8728:39;8737:12;:10;:12::i;:::-;8751:7;8760:6;8728:8;:39::i;:::-;-1:-1:-1;8785:4:0;8636:161;;;;;:::o;8075:100::-;8155:12;;8075:100;:::o;12262:122::-;12304:80;12262:122;:::o;8805:397::-;8937:4;8954:36;8964:6;8972:9;8983:6;8954:9;:36::i;:::-;9001:171;9024:6;9045:12;:10;:12::i;:::-;9072:89;9110:6;9072:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9072:19:0;;;;;;:11;:19;;;;;;9092:12;:10;:12::i;:::-;-1:-1:-1;;;;;9072:33:0;;;;;;;;;;;;-1:-1:-1;9072:33:0;;;:89;:37;:89::i;:::-;9001:8;:171::i;:::-;-1:-1:-1;9190:4:0;8805:397;;;;;:::o;7871:92::-;7946:9;;;;7871:92;:::o;9210:210::-;9290:4;9307:83;9316:12;:10;:12::i;:::-;9330:7;9339:50;9378:10;9339:11;:25;9351:12;:10;:12::i;:::-;-1:-1:-1;;;;;9339:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9339:25:0;;;:34;;;;;;;;;;;:38;:50::i;11813:162::-;817:12;:10;:12::i;:::-;807:6;;-1:-1:-1;;;;;807:6:0;;;:22;;;799:67;;;;;-1:-1:-1;;;799:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;799:67:0;;;;;;;;;;;;;;;11885:19:::1;11891:3;11896:7;11885:5;:19::i;:::-;-1:-1:-1::0;;;;;11942:15:0;;::::1;11938:1;11942:15:::0;;;:10:::1;:15;::::0;;;;;11915:52:::1;::::0;11942:15:::1;11959:7:::0;11915:14:::1;:52::i;:::-;11813:162:::0;;:::o;12782:149::-;-1:-1:-1;;;;;12902:21:0;;;12870:7;12902:21;;;:10;:21;;;;;;;;12782:149::o;12939:104::-;13003:32;13013:10;13025:9;13003;:32::i;:::-;12939:104;:::o;12204:49::-;;;;;;;;;;;;;;;:::o;8183:119::-;-1:-1:-1;;;;;8276:18:0;8249:7;8276:18;;;:9;:18;;;;;;;8183:119::o;894:140::-;817:12;:10;:12::i;:::-;807:6;;-1:-1:-1;;;;;807:6:0;;;:22;;;799:67;;;;;-1:-1:-1;;;799:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;799:67:0;;;;;;;;;;;;;;;993:1:::1;977:6:::0;;956:40:::1;::::0;-1:-1:-1;;;;;977:6:0;;::::1;::::0;956:40:::1;::::0;993:1;;956:40:::1;1024:1;1007:19:::0;;-1:-1:-1;;;;;;1007:19:0::1;::::0;;894:140::o;14503:1139::-;14611:7;14658:12;14644:11;:26;14636:79;;;;-1:-1:-1;;;14636:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14750:23:0;;14728:19;14750:23;;;:14;:23;;;;;;;;14788:17;14784:58;;14829:1;14822:8;;;;;14784:58;-1:-1:-1;;;;;14858:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;14879:16:0;;14858:38;;;;;;;;;:48;;:63;-1:-1:-1;14854:147:0;;-1:-1:-1;;;;;14945:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;14966:16:0;;;;14945:38;;;;;;;;14981:1;14945:44;;;-1:-1:-1;14938:51:0;;14854:147;-1:-1:-1;;;;;15017:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;15013:88:0;;;15088:1;15081:8;;;;;15013:88;15113:12;-1:-1:-1;;15155:16:0;;15182:402;15197:5;15189:13;;:5;:13;;;15182:402;;;15261:1;15244:13;;;15243:19;;;15235:27;;15278:20;;:::i;:::-;-1:-1:-1;;;;;;15301:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;15278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15348:27;;15344:229;;;15403:8;;;;-1:-1:-1;15396:15:0;;-1:-1:-1;;;;15396:15:0;15344:229;15437:12;;:26;;;-1:-1:-1;15433:140:0;;;15492:6;15484:14;;15433:140;;;15556:1;15547:6;:10;15539:18;;15433:140;15182:402;;;;;-1:-1:-1;;;;;;15601:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;14503:1139:0;;;;:::o;12519:39::-;;;;;;;;;;;;;:::o;7669:94::-;7721:7;7748;:5;:7::i;:::-;7741:14;;7669:94;:::o;680:79::-;718:7;745:6;-1:-1:-1;;;;;745:6:0;680:79;:::o;7971:96::-;8052:7;8045:14;;;;;;;;-1:-1:-1;;8045:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8019:13;;8045:14;;8052:7;;8045:14;;8052:7;8045:14;;;;;;;;;;;;;;;;;;;;;;;;9753:130;9809:4;817:12;:10;:12::i;:::-;807:6;;-1:-1:-1;;;;;807:6:0;;;:22;;;799:67;;;;;-1:-1:-1;;;799:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;799:67:0;;;;;;;;;;;;;;;9826:27:::1;9832:12;:10;:12::i;:::-;9846:6;9826:5;:27::i;:::-;-1:-1:-1::0;9871:4:0::1;9753:130:::0;;;:::o;9431:311::-;9516:4;9533:179;9556:12;:10;:12::i;:::-;9583:7;9605:96;9644:15;9605:96;;;;;;;;;;;;;;;;;:11;:25;9617:12;:10;:12::i;:::-;-1:-1:-1;;;;;9605:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9605:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;8310:167::-;8388:4;8405:42;8415:12;:10;:12::i;:::-;8429:9;8440:6;8405:9;:42::i;14240:255::-;-1:-1:-1;;;;;14379:23:0;;14332:7;14379:23;;;:14;:23;;;;;;;;14420:16;:67;;14486:1;14420:67;;;-1:-1:-1;;;;;14439:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;14460:16:0;;14439:38;;;;;;;;14475:1;14439:44;;14420:67;14413:74;14240:255;-1:-1:-1;;;14240:255:0:o;13051:1181::-;13244:23;12304:80;13373:6;:4;:6::i;:::-;13357:24;;;;;;13400:12;:10;:12::i;:::-;13294:165;;;;;;;;;;;;;;;;;;;;;;;;;13439:4;13294:165;;;;;;;;;;;;;;;;;;;;;;;13270:200;;;;;;12439:71;13528:140;;;;-1:-1:-1;;;;;13528:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13504:175;;;;;;-1:-1:-1;;;13733:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13709:158;;;;;;;;;-1:-1:-1;13900:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13270:200;;-1:-1:-1;13504:175:0;;13709:158;;-1:-1:-1;;13900:26:0;;;;;;;-1:-1:-1;;13900:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13900:26:0;;-1:-1:-1;;13900:26:0;;;-1:-1:-1;;;;;;;13945:23:0;;13937:75;;;;-1:-1:-1;;;13937:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14040:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;14031:28;;14023:76;;;;-1:-1:-1;;;14023:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14125:6;14118:3;:13;;14110:65;;;;-1:-1:-1;;;14110:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14193:31;14203:9;14214;14193;:31::i;:::-;14186:38;;;;13051:1181;;;;;;;:::o;8485:143::-;-1:-1:-1;;;;;8593:18:0;;;8566:7;8593:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8485:143::o;12393:117::-;12439:71;12393:117;:::o;12125:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1042:109::-;817:12;:10;:12::i;:::-;807:6;;-1:-1:-1;;;;;807:6:0;;;:22;;;799:67;;;;;-1:-1:-1;;;799:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;799:67:0;;;;;;;;;;;;;;;1115:28:::1;1134:8;1115:18;:28::i;130:98::-:0;210:10;130:98;:::o;11082:372::-;-1:-1:-1;;;;;11210:19:0;;11202:68;;;;-1:-1:-1;;;11202:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11289:21:0;;11281:68;;;;-1:-1:-1;;;11281:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11362:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11414:32;;;;;;;;;;;;;;;;;11082:372;;;:::o;9893:505::-;-1:-1:-1;;;;;10025:20:0;;10017:70;;;;-1:-1:-1;;;10017:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10106:23:0;;10098:71;;;;-1:-1:-1;;;10098:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10202;10224:6;10202:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10202:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;10182:17:0;;;;;;;:9;:17;;;;;;:91;;;;10307:20;;;;;;;:32;;10332:6;10307:24;:32::i;:::-;-1:-1:-1;;;;;10284:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;10355:35;;;;;;;10284:20;;10355:35;;;;;;;;;;;;;9893:505;;;:::o;2733:226::-;2853:7;2889:12;2881:6;;;;2873:29;;;;-1:-1:-1;;;2873:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2925:5:0;;;2733:226::o;2398:181::-;2456:7;2488:5;;;2512:6;;;;2504:46;;;;;-1:-1:-1;;;2504:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10408:308;-1:-1:-1;;;;;10484:21:0;;10476:65;;;;;-1:-1:-1;;;10476:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10569:12;;:24;;10586:6;10569:16;:24::i;:::-;10554:12;:39;-1:-1:-1;;;;;10625:18:0;;;;;;:9;:18;;;;;;:30;;10648:6;10625:22;:30::i;:::-;-1:-1:-1;;;;;10604:18:0;;;;;;:9;:18;;;;;;;;:51;;;;10671:37;;;;;;;10604:18;;;;10671:37;;;;;;;;;;10408:308;;:::o;16052:851::-;16158:6;-1:-1:-1;;;;;16148:16:0;:6;-1:-1:-1;;;;;16148:16:0;;;:30;;;;;16177:1;16168:6;:10;16148:30;16144:752;;;-1:-1:-1;;;;;16199:20:0;;;16195:337;;-1:-1:-1;;;;;16259:22:0;;16240:16;16259:22;;;:14;:22;;;;;;;;;16320:13;:60;;16379:1;16320:60;;;-1:-1:-1;;;;;16336:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;16356:13:0;;16336:34;;;;;;;;16368:1;16336:40;;16320:60;16300:80;-1:-1:-1;16399:17:0;16419:21;16300:80;16433:6;16419:13;:21::i;:::-;16399:41;;16459:57;16476:6;16484:9;16495;16506;16459:16;:57::i;:::-;16195:337;;;;-1:-1:-1;;;;;16552:20:0;;;16548:337;;-1:-1:-1;;;;;16612:22:0;;16593:16;16612:22;;;:14;:22;;;;;;;;;16673:13;:60;;16732:1;16673:60;;;-1:-1:-1;;;;;16689:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;16709:13:0;;16689:34;;;;;;;;16721:1;16689:40;;16673:60;16653:80;-1:-1:-1;16752:17:0;16772:21;16653:80;16786:6;16772:13;:21::i;:::-;16752:41;;16812:57;16829:6;16837:9;16848;16859;16812:16;:57::i;16548:337::-;16052:851;;;:::o;15650:394::-;-1:-1:-1;;;;;15767:21:0;;;15741:23;15767:21;;;:10;:21;;;;;;;;;;15826:20;15778:9;15826;:20::i;:::-;-1:-1:-1;;;;;15858:21:0;;;;;;;:10;:21;;;;;;:33;;-1:-1:-1;;;;;;15858:33:0;;;;;;;;;;15909:54;;15799:47;;-1:-1:-1;15858:33:0;15909:54;;;;;;15858:21;15909:54;15976:60;15991:15;16008:9;16019:16;15976:14;:60::i;:::-;15650:394;;;;:::o;17793:153::-;17903:9;17793:153;:::o;1159:229::-;-1:-1:-1;;;;;1233:22:0;;1225:73;;;;-1:-1:-1;;;1225:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1335:6;;;1314:38;;-1:-1:-1;;;;;1314:38:0;;;;1335:6;;;1314:38;;;1363:6;:17;;-1:-1:-1;;;;;;1363:17:0;-1:-1:-1;;;;;1363:17:0;;;;;;;;;;1159:229::o;2587:136::-;2645:7;2672:43;2676:1;2679;2672:43;;;;;;;;;;;;;;;;;:3;:43::i;16911:705::-;17090:18;17111:77;17118:12;17111:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;17090:98;;17220:1;17205:12;:16;;;:85;;;;-1:-1:-1;;;;;;17225:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;17248:16:0;;17225:40;;;;;;;;;:50;:65;;;:50;;:65;17205:85;17201:339;;;-1:-1:-1;;;;;17307:22:0;;;;;;:11;:22;;;;;;;;:40;-1:-1:-1;;17330:16:0;;17307:40;;;;;;;;17345:1;17307:46;:57;;;17201:339;;;17436:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17397:22:0;;-1:-1:-1;17397:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;-1:-1:-1;;17397:72:0;;;;;;;;;;;;;17484:25;;;:14;:25;;;;;;:44;;17512:16;;;17484:44;;;;;;;;;;17201:339;17557:51;;;;;;;;;;;;;;-1:-1:-1;;;;;17557:51:0;;;;;;;;;;;16911:705;;;;;:::o;17624:161::-;17699:6;17737:12;17730:5;17726:9;;17718:32;;;;-1:-1:-1;;;17718:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17775:1:0;;17624:161;-1:-1:-1;;17624:161:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://940a305a6c75fbb97b3bd5150e70ec9f30a0549a6e158da46cfa900362a3dd26
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.