Contract 0x9154c2684aef8d106babcb19aa81d4fabf7581ec 2

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x4584cdc834e59b269548ac4c2626093c164325636ad23892d6980e1e010fbb11Deposit144005802022-01-15 23:51:1710 hrs 57 mins ago0x8cf8e18eae51ed1a16324512bf0d3509f80f3e25 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00051304
0x11e3c3bb7d07a55be4a762c90ca22c39c700cc31f4f5f9277303ba194b2a4b5dWithdraw143887472022-01-15 13:55:3420 hrs 53 mins ago0x4afee5130da1804721c0fb430d44139a026170d8 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00031458
0x8eae9a340d59bfc1471d1dfbbe19f9c940ea0640d5861e7e2d461f830ada2522Deposit143569602022-01-14 11:24:071 day 23 hrs ago0x58e238ad77698119892a2d2b5ea65713133aad96 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00043804
0x83ac7c828e5a02261cd4cecd8d1454ff5a2d6dbc5c7bf2dc542e72d1a45fb9b5Deposit142719572022-01-11 12:25:414 days 22 hrs ago0xe9b0c6671c88c9017f371e969f11fa27a66ef45a IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.0005131
0x171d45d60e1f8e504699e5f3373176f82ce9e253422cb9edbd2221d1b7e8ccd0Withdraw142671652022-01-11 8:24:225 days 2 hrs ago0xff99012a107ab88b19a08b3d83a6fa2fb561e6d8 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.000287496
0xe85724f12222722086bf5350803d8b05fff91f93040628c770012eb0b4886fb0Deposit142463572022-01-10 14:59:365 days 19 hrs ago0x87a4fe2ff63a3e99727a3b1c3c6e91013b90e357 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.0002881
0x3bdac2cecb25f112c0df31855c75cce363e8cc47813fa345f54435e5758c69c3Deposit142463402022-01-10 14:58:445 days 19 hrs ago0x87a4fe2ff63a3e99727a3b1c3c6e91013b90e357 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00051298
0x40623b590b758346cfdb0bcc7a7534f34e40bf5f6ec84f5c64d31360d76368d1Deposit140862462022-01-05 1:20:4111 days 9 hrs ago0x4afee5130da1804721c0fb430d44139a026170d8 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.0004381
0xebed9c89dd2af099d7838897907eda7b26d058e737c34fbcc67f108f4eb78661Withdraw139006752021-12-29 14:28:0817 days 20 hrs ago0x98bb1908bee940dea12370bc128cd02e7292b135 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00023952
0xdb4092a6d566875a7fba513054a14d2b045e560b5fb90860e2f77e174a03ed90Withdraw138735952021-12-28 15:53:1318 days 18 hrs ago0xfdd5eee43479bee8e61295789b5fcbe77b46b9f5 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00038952
0x7bf49f6b3b13db10837ef0d8b23580e7e3210df8fd9e9170a04e5e995e08ce23Withdraw138059522021-12-26 7:24:0221 days 3 hrs ago0x346600f6e6a8dc857c33c5c9a569f01f2546d694 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00031446
0xa181512fc6788b6c8b2a38fd8e9339bff21d22aa065b20c58195342e0c268923Withdraw137500952021-12-24 8:48:4323 days 2 hrs ago0x12c0d8770a22206670765e1c412c61b4956181da IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00023952
0xb2f642eaa403a09a726110ae16b274f95a34d7c05ead975d3587b254ed8c3e5aDeposit136993672021-12-22 14:29:1224 days 20 hrs ago0x4726b481f14a611d148a0ce6842054dc46502055 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.0004381
0xe8a56f495676ebf63f349e82d442b5a8c233a66fd7ce4479d84e7205ef116018Withdraw136993112021-12-22 14:26:2424 days 20 hrs ago0x54018028c5a68860d40a06dbbafe5f82ae0fddaf IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00031458
0xf1fc5aed9da5d02f73786124982eca77ae32ba8268106fab00f225b41dba197eDeposit136457492021-12-20 17:09:4426 days 17 hrs ago0x548cfec1e79e41a30bb10d437a2b9705317450c7 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00043804
0x269522b447a484852ec19cd451a3d0adadae72eaca5f38aafdc5814580d08a1dDeposit135485192021-12-17 7:59:1330 days 2 hrs ago0xf6e5509f8b842f3559e590e328a254a5cfd30599 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00051298
0xb54a560b90687798a21a04cc9825923231546b006760b40105cf120f6d836a82Withdraw134838812021-12-15 1:57:2732 days 8 hrs ago0x8cdf0886afab4815392974bb037ca88bddca18c7 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00031446
0x2f1aca740d71ae89e9efc99cf87769d7df9b6177d722659af279dfaf8f0775f7Deposit134386672021-12-13 12:01:0433 days 22 hrs ago0xe9950bd20757705bb3d11f4a34a353d27b35bd22 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00051304
0x6b7459e97b11e1fbf7bfb73e967513c7635cadbff9f0209041c6cf5bd78dfad9Withdraw133867452021-12-11 16:34:4135 days 18 hrs ago0x6912c468bc767e5887d911b9f13ed1f69f57ab09 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00023958
0xe53aa9648ab5883860b5aebb835dd70ef51e4d6bf6ce5453eb0bed28a524c657Withdraw133858632021-12-11 15:50:3535 days 18 hrs ago0x7eb4e04814314aa19923ad7e5537b8d96ce75cdf IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00023958
0xf31e918a1a4c7c8b484b505ceb4a9f5247d87f4d5bbee6f420928a930466d960Withdraw133567552021-12-10 15:33:4836 days 19 hrs ago0x21cf5649ee1a9362202ebff266ef7bbc8c26a917 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00023958
0x30e72313d8baa2ca4a0dd0ff75e0459b88d31534ca94c2f677b4432d7e092438Deposit132863362021-12-08 1:49:1139 days 8 hrs ago0x2ce3c4aa76f5154304077bb6578a8559e4dd9513 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.00043804
0x47379ea0c7b490c5eedd2e7dd75bbaf708df099cae8afaf084298d3cc4abeffaDeposit132775342021-12-07 18:08:1639 days 16 hrs ago0x54018028c5a68860d40a06dbbafe5f82ae0fddaf IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.0004381
0x61fe1b9ae0664cbad092fed01054927a98a2c80f9921cff9f39df67a45730d46Deposit132583312021-12-07 0:58:5440 days 9 hrs ago0xe6b4e41e20aea2abb6bc87a22af049d5b5c42ecb IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.000525648
0x68fd01b2085ad26f1d1812fbe04298040120f9492a7e5bef10e6dcf2cf10dd13Withdraw131943772021-12-04 18:27:0542 days 16 hrs ago0x4f191fcc15ade85a725c27573287184408bcc6d6 IN  0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB0.000287424
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:51314 days 22 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:51314 days 22 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:42314 days 22 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:42314 days 22 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42314 days 22 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42314 days 22 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42314 days 22 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:42314 days 22 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xba9833a4c10083a06954f5040df4066e6fb8fa48c0c466ad3001a76b040bfa4054710342021-03-07 11:44:39314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xba9833a4c10083a06954f5040df4066e6fb8fa48c0c466ad3001a76b040bfa4054710342021-03-07 11:44:39314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xba9833a4c10083a06954f5040df4066e6fb8fa48c0c466ad3001a76b040bfa4054710342021-03-07 11:44:39314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xba9833a4c10083a06954f5040df4066e6fb8fa48c0c466ad3001a76b040bfa4054710342021-03-07 11:44:39314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xd52edfd1dbafb22f83f454c601989614eb645197c8970812dbf49ac0bb42bc2054710332021-03-07 11:44:36314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xd52edfd1dbafb22f83f454c601989614eb645197c8970812dbf49ac0bb42bc2054710332021-03-07 11:44:36314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xd52edfd1dbafb22f83f454c601989614eb645197c8970812dbf49ac0bb42bc2054710332021-03-07 11:44:36314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xd52edfd1dbafb22f83f454c601989614eb645197c8970812dbf49ac0bb42bc2054710332021-03-07 11:44:36314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x827adafaf4a1d325b0bfd740d59a63449dd5f44f4a798e3d2ca5989f5260d1f054710132021-03-07 11:43:36314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0x827adafaf4a1d325b0bfd740d59a63449dd5f44f4a798e3d2ca5989f5260d1f054710132021-03-07 11:43:36314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xb49d97e8903c8505cd7017cecd8aa613825a2ebcd94272dd241b42a3759bf5e054709592021-03-07 11:40:54314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xb49d97e8903c8505cd7017cecd8aa613825a2ebcd94272dd241b42a3759bf5e054709592021-03-07 11:40:54314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x3a2026c5a48f1378a87b0dc02bbcd80f0d19c38451a80e2db97b16c39525931854709222021-03-07 11:39:03314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0x3a2026c5a48f1378a87b0dc02bbcd80f0d19c38451a80e2db97b16c39525931854709222021-03-07 11:39:03314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xb478a36754b45c856d914646cce28c5630e634625af03c15f13b33a40e906d5f54708842021-03-07 11:37:09314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
0xb478a36754b45c856d914646cce28c5630e634625af03c15f13b33a40e906d5f54708842021-03-07 11:37:09314 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xb478a36754b45c856d914646cce28c5630e634625af03c15f13b33a40e906d5f54708842021-03-07 11:37:09314 days 23 hrs ago 0x9154c2684aef8d106babcb19aa81d4fabf7581ec BurgerSwap: BURGER Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DemaxGovernance

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-10
*/

// Dependency file: contracts/modules/BaseToken.sol

// pragma solidity >=0.5.16;

contract BaseToken {
    address public baseToken;

    // called after deployment
    function initBaseToken(address _baseToken) internal {
        require(baseToken == address(0), 'INITIALIZED');
        require(_baseToken != address(0), 'ADDRESS_IS_ZERO');
        baseToken = _baseToken;  // it should be dgas token address
    }
}
// Dependency file: contracts/interfaces/IERC20.sol

// pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

// Dependency file: contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT

// pragma solidity ^0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
// Dependency file: contracts/modules/Ownable.sol

// pragma solidity >=0.5.16;

contract Ownable {
    address public owner;

    event OwnerChanged(address indexed _oldOwner, address indexed _newOwner);

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, 'Ownable: FORBIDDEN');
        _;
    }

    function changeOwner(address _newOwner) public onlyOwner {
        require(_newOwner != address(0), 'Ownable: INVALID_ADDRESS');
        emit OwnerChanged(owner, _newOwner);
        owner = _newOwner;
    }

}

// Dependency file: contracts/modules/DgasStaking.sol

// pragma solidity >=0.5.16;

// import '../libraries/TransferHelper.sol';
// import '../libraries/SafeMath.sol';
// import '../interfaces/IERC20.sol';
// import '../interfaces/IDemaxConfig.sol';
// import '../modules/BaseToken.sol';


contract DgasStaking is BaseToken {
    using SafeMath for uint;

    uint public lockTime;
    uint public totalSupply;
    uint public stakingSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => uint) public allowance;


    constructor (address _baseToken) public {
        initBaseToken(_baseToken);
    }

    function _add(address user, uint value) internal {
        require(value > 0, 'ZERO');
        balanceOf[user] = balanceOf[user].add(value);
        stakingSupply = stakingSupply.add(value);
        allowance[user] = block.number;
    }

    function _reduce(address user, uint value) internal {
        require(balanceOf[user] >= value && value > 0, 'DgasStaking: INSUFFICIENT_BALANCE');
        balanceOf[user] = balanceOf[user].sub(value);
        stakingSupply = stakingSupply.sub(value);
    }

    function deposit(uint _amount) external returns (bool) {
        TransferHelper.safeTransferFrom(baseToken, msg.sender, address(this), _amount);
        _add(msg.sender, _amount);
        totalSupply = IERC20(baseToken).balanceOf(address(this));
        return true;
    }

    function withdraw(uint _amount) external returns (bool) {
        require(block.number > allowance[msg.sender] + lockTime, 'DgasStaking: NOT_DUE');
        TransferHelper.safeTransfer(baseToken, msg.sender, _amount);
        _reduce(msg.sender, _amount);
        totalSupply = IERC20(baseToken).balanceOf(address(this));
        return true;
    }

}
// Dependency file: contracts/libraries/TransferHelper.sol

// SPDX-License-Identifier: GPL-3.0-or-later

// pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

// Dependency file: contracts/libraries/ConfigNames.sol

// pragma solidity >=0.5.16;

library ConfigNames {
    bytes32 public constant PRODUCE_DGAS_RATE = bytes32('PRODUCE_DGAS_RATE');
    bytes32 public constant SWAP_FEE_PERCENT = bytes32('SWAP_FEE_PERCENT');
    bytes32 public constant LIST_DGAS_AMOUNT = bytes32('LIST_DGAS_AMOUNT');
    bytes32 public constant UNSTAKE_DURATION = bytes32('UNSTAKE_DURATION');
    bytes32 public constant REMOVE_LIQUIDITY_DURATION = bytes32('REMOVE_LIQUIDITY_DURATION');
    bytes32 public constant TOKEN_TO_DGAS_PAIR_MIN_PERCENT = bytes32('TOKEN_TO_DGAS_PAIR_MIN_PERCENT');
    bytes32 public constant LIST_TOKEN_FAILURE_BURN_PRECENT = bytes32('LIST_TOKEN_FAILURE_BURN_PRECENT');
    bytes32 public constant LIST_TOKEN_SUCCESS_BURN_PRECENT = bytes32('LIST_TOKEN_SUCCESS_BURN_PRECENT');
    bytes32 public constant PROPOSAL_DGAS_AMOUNT = bytes32('PROPOSAL_DGAS_AMOUNT');
    bytes32 public constant VOTE_DURATION = bytes32('VOTE_DURATION');
    bytes32 public constant VOTE_REWARD_PERCENT = bytes32('VOTE_REWARD_PERCENT');
    bytes32 public constant TOKEN_PENGDING_SWITCH = bytes32('TOKEN_PENGDING_SWITCH');
    bytes32 public constant TOKEN_PENGDING_TIME = bytes32('TOKEN_PENGDING_TIME');
    bytes32 public constant LIST_TOKEN_SWITCH = bytes32('LIST_TOKEN_SWITCH');
    bytes32 public constant DEV_PRECENT = bytes32('DEV_PRECENT');
}
// Dependency file: contracts/interfaces/ITokenRegistry.sol

// pragma solidity >=0.5.16;

interface ITokenRegistry {
    function tokenStatus(address _token) external view returns(uint);
    function pairStatus(address tokenA, address tokenB) external view returns (uint);
    function NONE() external view returns(uint);
    function REGISTERED() external view returns(uint);
    function PENDING() external view returns(uint);
    function OPENED() external view returns(uint);
    function CLOSED() external view returns(uint);
    function registryToken(address _token) external returns (bool);
    function publishToken(address _token) external returns (bool);
    function updateToken(address _token, uint _status) external returns (bool);
    function updatePair(address tokenA, address tokenB, uint _status) external returns (bool);
    function tokenCount() external view returns(uint);
    function validTokens() external view returns(address[] memory);
    function iterateValidTokens(uint32 _start, uint32 _end) external view returns (address[] memory);
}
// Dependency file: contracts/interfaces/IDgas.sol

// pragma solidity >=0.5.0;

interface IDgas {
    function amountPerBlock() external view returns (uint);
    function changeInterestRatePerBlock(uint value) external returns (bool);
    function getProductivity(address user) external view returns (uint, uint);
    function increaseProductivity(address user, uint value) external returns (bool);
    function decreaseProductivity(address user, uint value) external returns (bool);
    function take() external view returns (uint);
    function takeWithBlock() external view returns (uint, uint);
    function mint() external returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function upgradeImpl(address _newImpl) external;
    function upgradeGovernance(address _newGovernor) external;
}
// Dependency file: contracts/interfaces/IDemaxBallot.sol

// pragma solidity >=0.5.0;

interface IDemaxBallot {
    function proposer() external view returns(address);
    function endBlockNumber() external view returns(uint);
    function value() external view returns(uint);
    function result() external view returns(bool);
    function end() external returns (bool);
    function total() external view returns(uint);
    function weight(address user) external view returns (uint);
}

// Dependency file: contracts/interfaces/IDemaxBallotFactory.sol

// pragma solidity >=0.5.0;

interface IDemaxBallotFactory {
    function create(
        address _proposer,
        uint _value,
        uint _endBlockNumber,
        string calldata _subject,
        string calldata _content
    ) external returns (address);
}

// Dependency file: contracts/interfaces/IDemaxConfig.sol

// pragma solidity >=0.5.0;

interface IDemaxConfig {
    function governor() external view returns (address);
    function dev() external view returns (address);
    function PERCENT_DENOMINATOR() external view returns (uint);
    function getConfig(bytes32 _name) external view returns (uint minValue, uint maxValue, uint maxSpan, uint value, uint enable);
    function getConfigValue(bytes32 _name) external view returns (uint);
    function changeConfigValue(bytes32 _name, uint _value) external returns (bool);
    function checkToken(address _token) external view returns(bool);
    function checkPair(address tokenA, address tokenB) external view returns (bool);
    function listToken(address _token) external returns (bool);
    function getDefaultListTokens() external returns (address[] memory);
    function platform() external view returns  (address);
    function addToken(address _token) external returns (bool);
}
pragma solidity >=0.6.6;

// import './interfaces/IDemaxConfig.sol';
// import './interfaces/IDemaxBallotFactory.sol';
// import './interfaces/IDemaxBallot.sol';
// import './interfaces/IDgas.sol';
// import './interfaces/ITokenRegistry.sol';
// import './libraries/ConfigNames.sol';
// import './libraries/TransferHelper.sol';
// import './modules/DgasStaking.sol';
// import './modules/Ownable.sol';

contract DemaxGovernance is DgasStaking, Ownable {
    uint public version = 1;
    address public configAddr;
    address public ballotFactoryAddr;
    address public rewardAddr;

    uint public T_CONFIG = 1;
    uint public T_LIST_TOKEN = 2;
    uint public T_TOKEN = 3;
    mapping(address => uint) public ballotTypes;
    mapping(address => bytes32) public configBallots;
    mapping(address => address) public tokenBallots;
    mapping(address => uint) public rewardOf;
    mapping(address => uint) public ballotOf;
    mapping(address => mapping(address => uint)) public applyTokenOf;
    mapping(address => mapping(address => bool)) public collectUsers;
    mapping(address => address) public tokenUsers;

    address[] public ballots;

    event ConfigAudited(bytes32 name, address indexed ballot, uint proposal);
    event ConfigBallotCreated(address indexed proposer, bytes32 name, uint value, address indexed ballotAddr, uint reward);
    event TokenBallotCreated(address indexed proposer, address indexed token, uint value, address indexed ballotAddr, uint reward);
    event ProposalerRewardRateUpdated(uint oldVaue, uint newValue);
    event RewardTransfered(address indexed from, address indexed to, uint value);
    event TokenListed(address user, address token, uint amount);
    event ListTokenAudited(address user, address token, uint status, uint burn, uint reward, uint refund);
    event TokenAudited(address user, address token, uint status, bool result);
    event RewardCollected(address indexed user, address indexed ballot, uint value);
    event RewardReceived(address indexed user, uint value);

    modifier onlyRewarder() {
        require(msg.sender == rewardAddr, 'DemaxGovernance: ONLY_REWARDER');
        _;
    }

    constructor (address _dgas) DgasStaking(_dgas) public {
    }

    // called after deployment
    function initialize(address _rewardAddr, address _configContractAddr, address _ballotFactoryAddr) external onlyOwner {
        require(_rewardAddr != address(0) && _configContractAddr != address(0) && _ballotFactoryAddr != address(0), 'DemaxGovernance: INPUT_ADDRESS_IS_ZERO');

        rewardAddr = _rewardAddr;
        configAddr = _configContractAddr;
        ballotFactoryAddr = _ballotFactoryAddr;
        lockTime = getConfigValue(ConfigNames.UNSTAKE_DURATION);
    }

    function audit(address _ballot) external returns (bool) {
        if(ballotTypes[_ballot] == T_CONFIG) {
            return auditConfig(_ballot);
        } else if (ballotTypes[_ballot] == T_LIST_TOKEN) {
            return auditListToken(_ballot);
        } else if (ballotTypes[_ballot] == T_TOKEN) {
            return auditToken(_ballot);
        } else {
            revert('DemaxGovernance: UNKNOWN_TYPE');
        }
    }

    function auditConfig(address _ballot) public returns (bool) {
        bool result = IDemaxBallot(_ballot).end();
        require(result, 'DemaxGovernance: NO_PASS');
        uint value = IDemaxBallot(_ballot).value();
        bytes32 name = configBallots[_ballot];
        result = IDemaxConfig(configAddr).changeConfigValue(name, value);
        if (name == ConfigNames.UNSTAKE_DURATION) {
            lockTime = value;
        } else if (name == ConfigNames.PRODUCE_DGAS_RATE) {
            _changeAmountPerBlock(value);
        }
        emit ConfigAudited(name, _ballot, value);
        return result;
    }

    function auditListToken(address _ballot) public returns (bool) {
        bool result = IDemaxBallot(_ballot).end();
        address token = tokenBallots[_ballot];
        address user = tokenUsers[token];
        require(ITokenRegistry(configAddr).tokenStatus(token) == ITokenRegistry(configAddr).REGISTERED(), 'DemaxGovernance: AUDITED');
        uint status = result ? ITokenRegistry(configAddr).PENDING() : ITokenRegistry(configAddr).CLOSED();
	    uint amount = applyTokenOf[user][token];
        (uint burnAmount, uint rewardAmount, uint refundAmount) = (0, 0, 0);
        if (result) {
            burnAmount = amount * getConfigValue(ConfigNames.LIST_TOKEN_SUCCESS_BURN_PRECENT) / IDemaxConfig(configAddr).PERCENT_DENOMINATOR();
            rewardAmount = amount - burnAmount;
            if (burnAmount > 0) {
                TransferHelper.safeTransfer(baseToken, address(0), burnAmount);
                totalSupply = totalSupply.sub(burnAmount);
            }
            if (rewardAmount > 0) {
                rewardOf[rewardAddr] = rewardOf[rewardAddr].add(rewardAmount);
                ballotOf[_ballot] = ballotOf[_ballot].add(rewardAmount);
                _rewardTransfer(rewardAddr, _ballot, rewardAmount);
            }
            ITokenRegistry(configAddr).publishToken(token);
        } else {
            burnAmount = amount * getConfigValue(ConfigNames.LIST_TOKEN_FAILURE_BURN_PRECENT) / IDemaxConfig(configAddr).PERCENT_DENOMINATOR();
            refundAmount = amount - burnAmount;
            if (burnAmount > 0) TransferHelper.safeTransfer(baseToken, address(0), burnAmount);
            if (refundAmount > 0) TransferHelper.safeTransfer(baseToken, user, refundAmount);
            totalSupply = totalSupply.sub(amount);
            ITokenRegistry(configAddr).updateToken(token, status);
        }
	    emit ListTokenAudited(user, token, status, burnAmount, rewardAmount, refundAmount);
        return result;
    }

    function auditToken(address _ballot) public returns (bool) {
        bool result = IDemaxBallot(_ballot).end();
        uint status = IDemaxBallot(_ballot).value();
        address token = tokenBallots[_ballot];
        address user = tokenUsers[token];
        require(ITokenRegistry(configAddr).tokenStatus(token) != status, 'DemaxGovernance: TOKEN_STATUS_NO_CHANGE');
        if (result) {
            ITokenRegistry(configAddr).updateToken(token, status);
        } else {
            status = ITokenRegistry(configAddr).tokenStatus(token);
        }
	    emit TokenAudited(user, token, status, result);
        return result;
    }

    function getConfigValue(bytes32 _name) public view returns (uint) {
        return IDemaxConfig(configAddr).getConfigValue(_name);
    }

    function createConfigBallot(bytes32 _name, uint _value, uint _amount, bool _wallet, string calldata _subject, string calldata _content) external returns (address) {
        require(_value >= 0, 'DemaxGovernance: INVALID_PARAMTERS');
        { // avoids stack too deep errors
        (uint minValue, uint maxValue, uint maxSpan, uint value, uint enable) = IDemaxConfig(configAddr).getConfig(_name);
        require(enable == 1, "DemaxGovernance: CONFIG_DISABLE");
        require(_value >= minValue && _value <= maxValue, "DemaxGovernance: OUTSIDE");
        uint span = _value >= value? (_value - value) : (value - _value);
        require(maxSpan >= span, "DemaxGovernance: OVERSTEP");
        }
        require(_amount >= getConfigValue(ConfigNames.PROPOSAL_DGAS_AMOUNT), "DemaxGovernance: NOT_ENOUGH_AMOUNT_TO_PROPOSAL");
        if(_amount > 0) {
            _amount = _transferForBallot(_amount, _wallet);
            rewardOf[rewardAddr] = rewardOf[rewardAddr].add(_amount);
        }
        uint endBlockNumber = block.number + getConfigValue(ConfigNames.VOTE_DURATION);
        address ballotAddr = IDemaxBallotFactory(ballotFactoryAddr).create(msg.sender, _value, endBlockNumber, _subject, _content);
        configBallots[ballotAddr] = _name;
        uint reward = _createdBallot(ballotAddr, T_CONFIG);
        emit ConfigBallotCreated(msg.sender, _name, _value, ballotAddr, reward);
        return ballotAddr;
    }

    function createTokenBallot(address _token, uint _value, uint _amount, bool _wallet, string calldata _subject, string calldata _content) external returns (address) {
        require(!_isDefaultToken(_token), 'DemaxGovernance: DEFAULT_LIST_TOKENS_PROPOSAL_DENY');
        uint status = ITokenRegistry(configAddr).tokenStatus(_token);
        require(status == ITokenRegistry(configAddr).PENDING(), 'DemaxGovernance: ONLY_ALLOW_PENDING');
        require(_value == ITokenRegistry(configAddr).OPENED() || _value == ITokenRegistry(configAddr).CLOSED(), 'DemaxGovernance: INVALID_STATUS');
        require(status != _value, 'DemaxGovernance: STATUS_NO_CHANGE');
        require(_amount >= getConfigValue(ConfigNames.PROPOSAL_DGAS_AMOUNT), "DemaxGovernance: NOT_ENOUGH_AMOUNT_TO_PROPOSAL");
        if(_amount > 0) {
            _amount = _transferForBallot(_amount, _wallet);
            rewardOf[rewardAddr] = rewardOf[rewardAddr].add(_amount);
        }
        address ballotAddr = _createTokenBallot(T_TOKEN, _token, _value, _subject, _content);
        return ballotAddr;
    }

	function listToken(address _token, uint _amount, bool _wallet, string calldata _subject, string calldata _content) external returns (address) {
        uint status = ITokenRegistry(configAddr).tokenStatus(_token);
        require(status == ITokenRegistry(configAddr).NONE() || status == ITokenRegistry(configAddr).CLOSED(), 'DemaxGovernance: LISTED');
	    require(_amount >= getConfigValue(ConfigNames.LIST_DGAS_AMOUNT), "DemaxGovernance: NOT_ENOUGH_AMOUNT_TO_LIST");
	    tokenUsers[_token] = msg.sender;
        if(_amount > 0) {
            applyTokenOf[msg.sender][_token] = _transferForBallot(_amount, _wallet);
        }
	    ITokenRegistry(configAddr).registryToken(_token);
        address ballotAddr = _createTokenBallot(T_LIST_TOKEN, _token, ITokenRegistry(configAddr).PENDING(), _subject, _content);
	    emit TokenListed(msg.sender, _token, _amount);
        return ballotAddr;
	}

    function _createTokenBallot(uint _type, address _token, uint _value, string memory _subject, string memory _content) private returns (address) {
        uint endBlockNumber = block.number + getConfigValue(ConfigNames.VOTE_DURATION);
        address ballotAddr = IDemaxBallotFactory(ballotFactoryAddr).create(msg.sender, _value, endBlockNumber, _subject, _content);
        uint reward = _createdBallot(ballotAddr, _type);
        ballotOf[ballotAddr] = reward;
        tokenBallots[ballotAddr] = _token;
        emit TokenBallotCreated(msg.sender, _token, _value, ballotAddr, reward);
        return ballotAddr;
    }

    function collectReward(address _ballot) external returns (uint) {
        require(block.number >= IDemaxBallot(_ballot).endBlockNumber(), "DemaxGovernance: NOT_YET_ENDED");
        require(!collectUsers[_ballot][msg.sender], 'DemaxGovernance: REWARD_COLLECTED');
        uint amount = getReward(_ballot);
        _rewardTransfer(_ballot, msg.sender, amount);
        balanceOf[msg.sender] = balanceOf[msg.sender].add(amount);
        stakingSupply = stakingSupply.add(amount);
        rewardOf[msg.sender] = rewardOf[msg.sender].sub(amount);
        collectUsers[_ballot][msg.sender] = true;
        emit RewardCollected(msg.sender, _ballot, amount);
    }

    function getReward(address _ballot) public view returns (uint) {
        if (block.number < IDemaxBallot(_ballot).endBlockNumber() || collectUsers[_ballot][msg.sender]) {
            return 0;
        }
        uint amount;
        uint shares = ballotOf[_ballot];
        if (IDemaxBallot(_ballot).result()) {
            uint extra;
            uint rewardRate = getConfigValue(ConfigNames.VOTE_REWARD_PERCENT);
            if ( rewardRate > 0) {
               extra = shares * rewardRate / IDemaxConfig(configAddr).PERCENT_DENOMINATOR();
               shares -= extra;
            }
            if (msg.sender == IDemaxBallot(_ballot).proposer()) {
                amount = extra;
            }
        }

        if (IDemaxBallot(_ballot).total() > 0) {
            amount += shares * IDemaxBallot(_ballot).weight(msg.sender) / IDemaxBallot(_ballot).total();
        }
        return amount;
    }

    function addReward(uint _value) external onlyRewarder returns (bool) {
        require(_value > 0, 'DemaxGovernance: ADD_REWARD_VALUE_IS_ZERO');
        uint total = IERC20(baseToken).balanceOf(address(this));
        uint diff = total.sub(totalSupply);
        require(_value <= diff, 'DemaxGovernance: ADD_REWARD_EXCEED');
        rewardOf[rewardAddr] = rewardOf[rewardAddr].add(_value);
        totalSupply = total;
        emit RewardReceived(rewardAddr, _value);
    }

    function _rewardTransfer(address _from, address _to, uint _value) private returns (bool) {
        require(_value >= 0 && rewardOf[_from] >= _value, 'DemaxGovernance: INSUFFICIENT_BALANCE');
        rewardOf[_from] = rewardOf[_from].sub(_value);
        rewardOf[_to] = rewardOf[_to].add(_value);
        emit RewardTransfered(_from, _to, _value);
    }

    function _isDefaultToken(address _token) internal returns (bool) {
        address[] memory tokens = IDemaxConfig(configAddr).getDefaultListTokens();
        for(uint i = 0 ; i < tokens.length; i++){
            if (tokens[i] == _token) {
                return true;
            }
        }
        return false;
    }

    function _transferForBallot(uint _amount, bool _wallet) internal returns (uint) {
        if (_wallet) {
            TransferHelper.safeTransferFrom(baseToken, msg.sender, address(this), _amount);
            totalSupply += _amount;
        } else {
            _reduce(msg.sender, _amount);
        }
        return _amount;
    }

    function _createdBallot(address _ballot, uint _type) internal returns (uint) {
        uint reward = rewardOf[rewardAddr];
        ballotOf[_ballot] = reward;
        _rewardTransfer(rewardAddr, _ballot, reward);
        ballots.push(_ballot);
        ballotTypes[_ballot] = _type;
        return reward;
    }

    function ballotCount() external view returns (uint) {
        return ballots.length;
    }

    function _changeAmountPerBlock(uint _value) internal returns (bool) {
        return IDgas(baseToken).changeInterestRatePerBlock(_value);
    }

    function updateDgasGovernor(address _new) external onlyOwner {
        IDgas(baseToken).upgradeGovernance(_new);
    }

    function upgradeApproveReward() external returns (uint) {
        require(rewardOf[rewardAddr] > 0, 'DemaxGovernance: UPGRADE_NO_REWARD');
        require(IDemaxConfig(configAddr).governor() != address(this), 'DemaxGovernance: UPGRADE_NO_CHANGE');
        TransferHelper.safeApprove(baseToken, IDemaxConfig(configAddr).governor(), rewardOf[rewardAddr]);
        return rewardOf[rewardAddr]; 
    }

    function receiveReward(address _from, uint _value) external returns (bool) {
        require(_value > 0, 'DemaxGovernance: RECEIVE_REWARD_VALUE_IS_ZERO');
        TransferHelper.safeTransferFrom(baseToken, _from, address(this), _value);
        rewardOf[rewardAddr] += _value;
        totalSupply += _value;
        emit RewardReceived(_from, _value);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dgas","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":true,"internalType":"address","name":"ballot","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposal","type":"uint256"}],"name":"ConfigAudited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"ballotAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"ConfigBallotCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"status","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"refund","type":"uint256"}],"name":"ListTokenAudited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"_newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVaue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"ProposalerRewardRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"ballot","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RewardCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RewardReceived","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":"RewardTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"status","type":"uint256"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"TokenAudited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"ballotAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"TokenBallotCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenListed","type":"event"},{"inputs":[],"name":"T_CONFIG","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"T_LIST_TOKEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"T_TOKEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"addReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"applyTokenOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ballot","type":"address"}],"name":"audit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ballot","type":"address"}],"name":"auditConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ballot","type":"address"}],"name":"auditListToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ballot","type":"address"}],"name":"auditToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ballotCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ballotFactoryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ballotOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ballotTypes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ballots","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ballot","type":"address"}],"name":"collectReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"collectUsers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"configAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"configBallots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_wallet","type":"bool"},{"internalType":"string","name":"_subject","type":"string"},{"internalType":"string","name":"_content","type":"string"}],"name":"createConfigBallot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_wallet","type":"bool"},{"internalType":"string","name":"_subject","type":"string"},{"internalType":"string","name":"_content","type":"string"}],"name":"createTokenBallot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"}],"name":"getConfigValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ballot","type":"address"}],"name":"getReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardAddr","type":"address"},{"internalType":"address","name":"_configContractAddr","type":"address"},{"internalType":"address","name":"_ballotFactoryAddr","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_wallet","type":"bool"},{"internalType":"string","name":"_subject","type":"string"},{"internalType":"string","name":"_content","type":"string"}],"name":"listToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"receiveReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenBallots","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"updateDgasGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeApproveReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405260016007556001600b556002600c556003600d553480156200002557600080fd5b506040516200447c3803806200447c833981810160405260208110156200004b57600080fd5b50518062000062816001600160e01b036200007c16565b5050600680546001600160a01b0319163317905562000139565b6000546001600160a01b031615620000c9576040805162461bcd60e51b815260206004820152600b60248201526a125392551250531256915160aa1b604482015290519081900360640190fd5b6001600160a01b03811662000117576040805162461bcd60e51b815260206004820152600f60248201526e414444524553535f49535f5a45524f60881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61433380620001496000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806374c3e71311610146578063c0030032116100c3578063dc01262611610087578063dc012626146107fa578063dc39202314610820578063e97b63fe14610846578063ee15a07d14610927578063eec5f1dc1461092f578063f377e7cf146109555761025e565b8063c00300321461076f578063c0c53b8b14610777578063c199de32146107af578063c25d0bab146107cc578063c55dae63146107f25761025e565b8063a6f9dae11161010a578063a6f9dae1146106d8578063ad3385f6146106fe578063aee4dd5a14610706578063b6b55f251461072c578063c00007b0146107495761025e565b806374c3e7131461065757806374de4ec41461068557806382c97b8d146106a25780638975211c146106c85780638da5cb5b146106d05761025e565b80633e05d1d2116101df5780635a8e1ca9116101a35780635a8e1ca9146105b85780635c632b38146105de5780635c820c96146105fb5780637015e95e1461060357806370a082311461060b578063739a8827146106315761025e565b80633e05d1d2146104805780633e5beab91461048857806343a6b1c8146104ae578063537f97641461058a57806354fd4d50146105b05761025e565b806321d948af1161022657806321d948af146102f357806322d59bc61461031b5780632d65f4891461040f5780632e1a7d4d1461043d5780633a9300551461045a5761025e565b8063053ff9ee1461026357806306466620146102a35780630d668087146102bd57806318160ddd146102c55780631d62ebd9146102cd575b600080fd5b61028f6004803603604081101561027957600080fd5b506001600160a01b03813516906020013561095d565b604080519115158252519081900360200190f35b6102ab610a21565b60408051918252519081900360200190f35b6102ab610a27565b6102ab610a2d565b6102ab600480360360208110156102e357600080fd5b50356001600160a01b0316610a33565b6103196004803603602081101561030957600080fd5b50356001600160a01b0316610a45565b005b6103f3600480360360c081101561033157600080fd5b813591602081013591604082013591606081013515159181019060a081016080820135600160201b81111561036557600080fd5b82018360208201111561037757600080fd5b803590602001918460018302840111600160201b8311171561039857600080fd5b919390929091602081019035600160201b8111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111600160201b831117156103e857600080fd5b509092509050610aff565b604080516001600160a01b039092168252519081900360200190f35b61028f6004803603604081101561042557600080fd5b506001600160a01b0381358116916020013516610f48565b61028f6004803603602081101561045357600080fd5b5035610f68565b6103f36004803603602081101561047057600080fd5b50356001600160a01b031661106c565b6102ab611087565b6102ab6004803603602081101561049e57600080fd5b50356001600160a01b031661124b565b6103f3600480360360a08110156104c457600080fd5b6001600160a01b0382351691602081013591604082013515159190810190608081016060820135600160201b8111156104fc57600080fd5b82018360208201111561050e57600080fd5b803590602001918460018302840111600160201b8311171561052f57600080fd5b919390929091602081019035600160201b81111561054c57600080fd5b82018360208201111561055e57600080fd5b803590602001918460018302840111600160201b8311171561057f57600080fd5b50909250905061125d565b61028f600480360360208110156105a057600080fd5b50356001600160a01b031661169a565b6102ab6119b6565b6102ab600480360360208110156105ce57600080fd5b50356001600160a01b03166119bc565b6103f3600480360360208110156105f457600080fd5b50356119ce565b6103f36119f5565b6103f3611a04565b6102ab6004803603602081101561062157600080fd5b50356001600160a01b0316611a13565b6102ab6004803603602081101561064757600080fd5b50356001600160a01b0316611a25565b6102ab6004803603604081101561066d57600080fd5b506001600160a01b0381358116916020013516611a37565b61028f6004803603602081101561069b57600080fd5b5035611a54565b6102ab600480360360208110156106b857600080fd5b50356001600160a01b0316611c58565b6103f3611e6d565b6103f3611e7c565b610319600480360360208110156106ee57600080fd5b50356001600160a01b0316611e8b565b6102ab611f96565b61028f6004803603602081101561071c57600080fd5b50356001600160a01b0316611f9c565b61028f6004803603602081101561074257600080fd5b503561269e565b6102ab6004803603602081101561075f57600080fd5b50356001600160a01b03166126c1565b6102ab612a74565b6103196004803603606081101561078d57600080fd5b506001600160a01b038135811691602081013582169160409091013516612a7a565b6102ab600480360360208110156107c557600080fd5b5035612b9e565b6103f3600480360360208110156107e257600080fd5b50356001600160a01b0316612c1c565b6103f3612c37565b6102ab6004803603602081101561081057600080fd5b50356001600160a01b0316612c46565b61028f6004803603602081101561083657600080fd5b50356001600160a01b0316612c58565b6103f3600480360360c081101561085c57600080fd5b6001600160a01b0382351691602081013591604082013591606081013515159181019060a081016080820135600160201b81111561089957600080fd5b8201836020820111156108ab57600080fd5b803590602001918460018302840111600160201b831117156108cc57600080fd5b919390929091602081019035600160201b8111156108e957600080fd5b8201836020820111156108fb57600080fd5b803590602001918460018302840111600160201b8311171561091c57600080fd5b509092509050612eaa565b6102ab6132ef565b61028f6004803603602081101561094557600080fd5b50356001600160a01b03166132f5565b6102ab6133cc565b600080821161099d5760405162461bcd60e51b815260040180806020018281038252602d815260200180614126602d913960400191505060405180910390fd5b6000546109b5906001600160a01b03168430856133d2565b600a546001600160a01b03908116600090815260116020908152604091829020805486019055600280548601905581518581529151928616927f9ac954606f877c9c9e6deec30e9265abff5a57c7123a34777ca9321eb6c26d8e9281900390910190a250600192915050565b600b5481565b60015481565b60025481565b60116020526000908152604090205481565b6006546001600160a01b03163314610a99576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6000805460408051631fedded560e01b81526001600160a01b03858116600483015291519190921692631fedded5926024808201939182900301818387803b158015610ae457600080fd5b505af1158015610af8573d6000803e3d6000fd5b5050505050565b600080806000806000600860009054906101000a90046001600160a01b03166001600160a01b0316636dd5b69d8f6040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610b6157600080fd5b505afa158015610b75573d6000803e3d6000fd5b505050506040513d60a0811015610b8b57600080fd5b5080516020820151604083015160608401516080909401519298509096509450909250905060018114610c05576040805162461bcd60e51b815260206004820152601f60248201527f44656d6178476f7665726e616e63653a20434f4e4649475f44495341424c4500604482015290519081900360640190fd5b848d10158015610c155750838d11155b610c66576040805162461bcd60e51b815260206004820152601860248201527f44656d6178476f7665726e616e63653a204f5554534944450000000000000000604482015290519081900360640190fd5b6000828e1015610c78578d8303610c7c565b828e035b905080841015610cd3576040805162461bcd60e51b815260206004820152601960248201527f44656d6178476f7665726e616e63653a204f5645525354455000000000000000604482015290519081900360640190fd5b505050505050610cf973141493d413d4d05317d111d054d7d05353d5539560621b612b9e565b871015610d375760405162461bcd60e51b815260040180806020018281038252602e81526020018061419e602e913960400191505060405180910390fd5b8615610d9157610d47878761352f565b600a546001600160a01b0316600090815260116020526040902054909750610d75908863ffffffff61356d16565b600a546001600160a01b03166000908152601160205260409020555b6000610dac6c2b27aa22afa22aa920aa24a7a760991b612b9e565b430190506000600960009054906101000a90046001600160a01b03166001600160a01b03166325c8b428338c858b8b8b8b6040518863ffffffff1660e01b815260040180886001600160a01b03166001600160a01b0316815260200187815260200186815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509950505050505050505050602060405180830381600087803b158015610e8f57600080fd5b505af1158015610ea3573d6000803e3d6000fd5b505050506040513d6020811015610eb957600080fd5b50516001600160a01b0381166000908152600f602052604081208d9055600b5491925090610ee89083906135ce565b604080518e8152602081018e905280820183905290519192506001600160a01b0384169133917f324ff77aed889bbe0650aaa1156c76e87e08dc58a8372f556003a299296fbe27919081900360600190a3509a9950505050505050505050565b601460209081526000928352604080842090915290825290205460ff1681565b600154336000908152600560205260408120549091014311610fc8576040805162461bcd60e51b8152602060048201526014602482015273446761735374616b696e673a204e4f545f44554560601b604482015290519081900360640190fd5b600054610fdf906001600160a01b03163384613671565b610fe933836137d4565b600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561103457600080fd5b505afa158015611048573d6000803e3d6000fd5b505050506040513d602081101561105e57600080fd5b50516002555060015b919050565b6015602052600090815260409020546001600160a01b031681565b600a546001600160a01b03166000908152601160205260408120546110dd5760405162461bcd60e51b81526004018080602001828103825260228152602001806140bd6022913960400191505060405180910390fd5b6008546040805163030d028960e21b8152905130926001600160a01b031691630c340a24916004808301926020929190829003018186803b15801561112157600080fd5b505afa158015611135573d6000803e3d6000fd5b505050506040513d602081101561114b57600080fd5b50516001600160a01b031614156111935760405162461bcd60e51b815260040180806020018281038252602281526020018061417c6022913960400191505060405180910390fd5b6000546008546040805163030d028960e21b8152905161122c936001600160a01b03908116931691630c340a24916004808301926020929190829003018186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d602081101561120a57600080fd5b5051600a546001600160a01b0316600090815260116020526040902054613893565b50600a546001600160a01b031660009081526011602052604090205490565b60056020526000908152604090205481565b6008546040805163056564a160e11b81526001600160a01b038a81166004830152915160009384931691630acac942916024808301926020929190829003018186803b1580156112ac57600080fd5b505afa1580156112c0573d6000803e3d6000fd5b505050506040513d60208110156112d657600080fd5b5051600854604080516320d494e560e21b815290519293506001600160a01b0390911691638352539491600480820192602092909190829003018186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d602081101561134a57600080fd5b50518114806113d15750600860009054906101000a90046001600160a01b03166001600160a01b0316630e2636a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a257600080fd5b505afa1580156113b6573d6000803e3d6000fd5b505050506040513d60208110156113cc57600080fd5b505181145b611422576040805162461bcd60e51b815260206004820152601760248201527f44656d6178476f7665726e616e63653a204c4953544544000000000000000000604482015290519081900360640190fd5b61143e6f131254d517d111d054d7d05353d5539560821b612b9e565b88101561147c5760405162461bcd60e51b815260040180806020018281038252602a81526020018061426d602a913960400191505060405180910390fd5b6001600160a01b038916600090815260156020526040902080546001600160a01b0319163317905587156114d9576114b4888861352f565b3360009081526013602090815260408083206001600160a01b038e1684529091529020555b6008546040805163111cf59d60e11b81526001600160a01b038c8116600483015291519190921691632239eb3a9160248083019260209291908290030181600087803b15801561152857600080fd5b505af115801561153c573d6000803e3d6000fd5b505050506040513d602081101561155257600080fd5b5050600c5460085460408051630982797d60e21b815290516000936116419390928e926001600160a01b0390921691632609e5f491600480820192602092909190829003018186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d60208110156115d157600080fd5b5051604080516020601f8d018190048102820181019092528b8152908c908c908190840183828082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152506139f692505050565b604080513381526001600160a01b038d1660208201528082018c905290519192507f48a4867ae1de558174634fbaacefa7e5f70d61c782ceaeba4770449f19ab62c1919081900360600190a19998505050505050505050565b600080826001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156116d857600080fd5b505af11580156116ec573d6000803e3d6000fd5b505050506040513d602081101561170257600080fd5b505160408051633fa4f24560e01b815290519192506000916001600160a01b03861691633fa4f245916004808301926020929190829003018186803b15801561174a57600080fd5b505afa15801561175e573d6000803e3d6000fd5b505050506040513d602081101561177457600080fd5b50516001600160a01b038086166000908152601060209081526040808320548416808452601583529281902054600854825163056564a160e11b815260048101869052925196975093959085169487941692630acac9429260248082019391829003018186803b1580156117e757600080fd5b505afa1580156117fb573d6000803e3d6000fd5b505050506040513d602081101561181157600080fd5b505114156118505760405162461bcd60e51b81526004018080602001828103825260278152602001806141cc6027913960400191505060405180910390fd5b83156118de5760085460408051632bce9e7b60e01b81526001600160a01b0385811660048301526024820187905291519190921691632bce9e7b9160448083019260209291908290030181600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d60208110156118d657600080fd5b5061195a9050565b6008546040805163056564a160e11b81526001600160a01b03858116600483015291519190921691630acac942916024808301926020929190829003018186803b15801561192b57600080fd5b505afa15801561193f573d6000803e3d6000fd5b505050506040513d602081101561195557600080fd5b505192505b604080516001600160a01b03808416825284166020820152808201859052851515606082015290517fb9fca8100d801faf854377cb46530c8e9fcb90562c8e746e8f16edec66ac053e9181900360800190a15091949350505050565b60075481565b600e6020526000908152604090205481565b601681815481106119db57fe5b6000918252602090912001546001600160a01b0316905081565b6008546001600160a01b031681565b600a546001600160a01b031681565b60046020526000908152604090205481565b600f6020526000908152604090205481565b601360209081526000928352604080842090915290825290205481565b600a546000906001600160a01b03163314611ab6576040805162461bcd60e51b815260206004820152601e60248201527f44656d6178476f7665726e616e63653a204f4e4c595f52455741524445520000604482015290519081900360640190fd5b60008211611af55760405162461bcd60e51b81526004018080602001828103825260298152602001806141536029913960400191505060405180910390fd5b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611b4157600080fd5b505afa158015611b55573d6000803e3d6000fd5b505050506040513d6020811015611b6b57600080fd5b5051600254909150600090611b8790839063ffffffff613c2416565b905080841115611bc85760405162461bcd60e51b81526004018080602001828103825260228152602001806142976022913960400191505060405180910390fd5b600a546001600160a01b0316600090815260116020526040902054611bf3908563ffffffff61356d16565b600a80546001600160a01b039081166000908152601160209081526040918290209490945560028690559154825188815292519116927f9ac954606f877c9c9e6deec30e9265abff5a57c7123a34777ca9321eb6c26d8e928290030190a25050919050565b6000816001600160a01b031663b4999e856040518163ffffffff1660e01b815260040160206040518083038186803b158015611c9357600080fd5b505afa158015611ca7573d6000803e3d6000fd5b505050506040513d6020811015611cbd57600080fd5b5051431015611d13576040805162461bcd60e51b815260206004820152601e60248201527f44656d6178476f7665726e616e63653a204e4f545f5945545f454e4445440000604482015290519081900360640190fd5b6001600160a01b038216600090815260146020908152604080832033845290915290205460ff1615611d765760405162461bcd60e51b81526004018080602001828103825260218152602001806141056021913960400191505060405180910390fd5b6000611d81836126c1565b9050611d8e833383613c66565b5033600090815260046020526040902054611daf908263ffffffff61356d16565b33600090815260046020526040902055600354611dd2908263ffffffff61356d16565b60035533600090815260116020526040902054611df5908263ffffffff613c2416565b336000818152601160209081526040808320949094556001600160a01b03871680835260148252848320848452825291849020805460ff191660011790558351858152935191937fba54b13b72478bb0dfb7f4fefd826a0fce43df924cfddf6cb402702d6ce4d45b929081900390910190a350919050565b6009546001600160a01b031681565b6006546001600160a01b031681565b6006546001600160a01b03163314611edf576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b038116611f3a576040805162461bcd60e51b815260206004820152601860248201527f4f776e61626c653a20494e56414c49445f414444524553530000000000000000604482015290519081900360640190fd5b6006546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b600080826001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611fda57600080fd5b505af1158015611fee573d6000803e3d6000fd5b505050506040513d602081101561200457600080fd5b50516001600160a01b03808516600090815260106020908152604080832054841680845260158352928190205460085482516305855bbb60e11b815292519697509395908516949390931692630b0ab77692600480840193919291829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b50516008546040805163056564a160e11b81526001600160a01b03868116600483015291519190921691630acac942916024808301926020929190829003018186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d602081101561211657600080fd5b50511461216a576040805162461bcd60e51b815260206004820152601860248201527f44656d6178476f7665726e616e63653a20415544495445440000000000000000604482015290519081900360640190fd5b6000836121f057600860009054906101000a90046001600160a01b03166001600160a01b0316630e2636a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d60208110156121e957600080fd5b505161226b565b600860009054906101000a90046001600160a01b03166001600160a01b0316632609e5f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561223e57600080fd5b505afa158015612252573d6000803e3d6000fd5b505050506040513d602081101561226857600080fd5b50515b6001600160a01b038084166000908152601360209081526040808320938816835292905290812054919250808087156124a857600860009054906101000a90046001600160a01b03166001600160a01b0316639e6c29596040518163ffffffff1660e01b815260040160206040518083038186803b1580156122ec57600080fd5b505afa158015612300573d6000803e3d6000fd5b505050506040513d602081101561231657600080fd5b50516123417f4c4953545f544f4b454e5f535543434553535f4255524e5f50524543454e5400612b9e565b85028161234a57fe5b049250828403915082156123895760008054612372916001600160a01b039091169085613671565b600254612385908463ffffffff613c2416565b6002555b811561242757600a546001600160a01b03166000908152601160205260409020546123ba908363ffffffff61356d16565b600a546001600160a01b03908116600090815260116020908152604080832094909455918d168152601290915220546123f9908363ffffffff61356d16565b6001600160a01b03808c16600090815260126020526040902091909155600a5461242591168b84613c66565b505b600854604080516337309f4160e21b81526001600160a01b038a811660048301529151919092169163dcc27d049160248083019260209291908290030181600087803b15801561247657600080fd5b505af115801561248a573d6000803e3d6000fd5b505050506040513d60208110156124a057600080fd5b506126319050565b600860009054906101000a90046001600160a01b03166001600160a01b0316639e6c29596040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f657600080fd5b505afa15801561250a573d6000803e3d6000fd5b505050506040513d602081101561252057600080fd5b505161254b7f4c4953545f544f4b454e5f4641494c5552455f4255524e5f50524543454e5400612b9e565b85028161255457fe5b04925050818303821561257b576000805461257b916001600160a01b039091169085613671565b801561259857600054612598906001600160a01b03168783613671565b6002546125ab908563ffffffff613c2416565b60025560085460408051632bce9e7b60e01b81526001600160a01b038a811660048301526024820189905291519190921691632bce9e7b9160448083019260209291908290030181600087803b15801561260457600080fd5b505af1158015612618573d6000803e3d6000fd5b505050506040513d602081101561262e57600080fd5b50505b604080516001600160a01b03808916825289166020820152808201879052606081018590526080810184905260a0810183905290517f1a3a32e14a4314895ddf948c94dc9b7c31ec2bd6553420c18d8089d10b53f1309181900360c00190a1509598975050505050505050565b600080546126b7906001600160a01b03163330856133d2565b610fe93383613d79565b6000816001600160a01b031663b4999e856040518163ffffffff1660e01b815260040160206040518083038186803b1580156126fc57600080fd5b505afa158015612710573d6000803e3d6000fd5b505050506040513d602081101561272657600080fd5b505143108061275857506001600160a01b038216600090815260146020908152604080832033845290915290205460ff165b1561276557506000611067565b6001600160a01b0382166000818152601260209081526040808320548151636537214760e01b8152915193949093909263653721479260048082019391829003018186803b1580156127b657600080fd5b505afa1580156127ca573d6000803e3d6000fd5b505050506040513d60208110156127e057600080fd5b50511561291a57600080612809721593d51157d49155d0549117d4115490d15395606a1b612b9e565b9050801561289e57600860009054906101000a90046001600160a01b03166001600160a01b0316639e6c29596040518163ffffffff1660e01b815260040160206040518083038186803b15801561285f57600080fd5b505afa158015612873573d6000803e3d6000fd5b505050506040513d602081101561288957600080fd5b50518382028161289557fe5b04915081830392505b856001600160a01b031663a8e4fb906040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d757600080fd5b505afa1580156128eb573d6000803e3d6000fd5b505050506040513d602081101561290157600080fd5b50516001600160a01b0316331415612917578193505b50505b6000846001600160a01b0316632ddbd13a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561295557600080fd5b505afa158015612969573d6000803e3d6000fd5b505050506040513d602081101561297f57600080fd5b50511115612a6d57836001600160a01b0316632ddbd13a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129c057600080fd5b505afa1580156129d4573d6000803e3d6000fd5b505050506040513d60208110156129ea57600080fd5b505160408051637a1cb71560e11b815233600482015290516001600160a01b0387169163f4396e2a916024808301926020929190829003018186803b158015612a3257600080fd5b505afa158015612a46573d6000803e3d6000fd5b505050506040513d6020811015612a5c57600080fd5b5051820281612a6757fe5b04820191505b5092915050565b60165490565b6006546001600160a01b03163314612ace576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b03831615801590612aee57506001600160a01b03821615155b8015612b0257506001600160a01b03811615155b612b3d5760405162461bcd60e51b81526004018080602001828103825260268152602001806140df6026913960400191505060405180910390fd5b600a80546001600160a01b038086166001600160a01b031992831617909255600880548584169083161790556009805492841692909116919091179055612b966f2aa729aa20a5a2afa22aa920aa24a7a760811b612b9e565b600155505050565b600854604080516360ccef1960e11b81526004810184905290516000926001600160a01b03169163c199de32916024808301926020929190829003018186803b158015612bea57600080fd5b505afa158015612bfe573d6000803e3d6000fd5b505050506040513d6020811015612c1457600080fd5b505192915050565b6010602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b60126020526000908152604090205481565b600080826001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612c9657600080fd5b505af1158015612caa573d6000803e3d6000fd5b505050506040513d6020811015612cc057600080fd5b5051905080612d16576040805162461bcd60e51b815260206004820152601860248201527f44656d6178476f7665726e616e63653a204e4f5f504153530000000000000000604482015290519081900360640190fd5b6000836001600160a01b0316633fa4f2456040518163ffffffff1660e01b815260040160206040518083038186803b158015612d5157600080fd5b505afa158015612d65573d6000803e3d6000fd5b505050506040513d6020811015612d7b57600080fd5b50516001600160a01b038086166000908152600f60209081526040808320546008548251630484ac5d60e31b815260048101839052602481018890529251969750909594169363242562e893604480840194938390030190829087803b158015612de457600080fd5b505af1158015612df8573d6000803e3d6000fd5b505050506040513d6020811015612e0e57600080fd5b505192506f2aa729aa20a5a2afa22aa920aa24a7a760811b811415612e37576001829055612e5e565b7050524f445543455f444741535f5241544560781b811415612e5e57612e5c82613e2c565b505b604080518281526020810184905281516001600160a01b038816927f6ad8f80cc263288264e5e06e0c41aa75bb224b02b362a4724a881dfa2da5d420928290030190a250909392505050565b6000612eb589613e8e565b15612ef15760405162461bcd60e51b815260040180806020018281038252603281526020018061423b6032913960400191505060405180910390fd5b6008546040805163056564a160e11b81526001600160a01b038c8116600483015291516000939290921691630acac94291602480820192602092909190829003018186803b158015612f4257600080fd5b505afa158015612f56573d6000803e3d6000fd5b505050506040513d6020811015612f6c57600080fd5b505160085460408051630982797d60e21b815290519293506001600160a01b0390911691632609e5f491600480820192602092909190829003018186803b158015612fb657600080fd5b505afa158015612fca573d6000803e3d6000fd5b505050506040513d6020811015612fe057600080fd5b5051811461301f5760405162461bcd60e51b81526004018080602001828103825260238152602001806141f36023913960400191505060405180910390fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663aa23a8f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561306d57600080fd5b505afa158015613081573d6000803e3d6000fd5b505050506040513d602081101561309757600080fd5b505189148061311e5750600860009054906101000a90046001600160a01b03166001600160a01b0316630e2636a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156130ef57600080fd5b505afa158015613103573d6000803e3d6000fd5b505050506040513d602081101561311957600080fd5b505189145b61316f576040805162461bcd60e51b815260206004820152601f60248201527f44656d6178476f7665726e616e63653a20494e56414c49445f53544154555300604482015290519081900360640190fd5b888114156131ae5760405162461bcd60e51b81526004018080602001828103825260218152602001806142dd6021913960400191505060405180910390fd5b6131ce73141493d413d4d05317d111d054d7d05353d5539560621b612b9e565b88101561320c5760405162461bcd60e51b815260040180806020018281038252602e81526020018061419e602e913960400191505060405180910390fd5b87156132665761321c888861352f565b600a546001600160a01b031660009081526011602052604090205490985061324a908963ffffffff61356d16565b600a546001600160a01b03166000908152601160205260409020555b60006132e0600d548c8c8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152506139f692505050565b9b9a5050505050505050505050565b600d5481565b600b546001600160a01b0382166000908152600e6020526040812054909114156133295761332282612c58565b9050611067565b600c546001600160a01b0383166000908152600e602052604090205414156133545761332282611f9c565b600d546001600160a01b0383166000908152600e6020526040902054141561337f576133228261169a565b6040805162461bcd60e51b815260206004820152601d60248201527f44656d6178476f7665726e616e63653a20554e4b4e4f574e5f54595045000000604482015290519081900360640190fd5b60035481565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106134575780518252601f199092019160209182019101613438565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146134b9576040519150601f19603f3d011682016040523d82523d6000602084013e6134be565b606091505b50915091508180156134ec5750805115806134ec57508080602001905160208110156134e957600080fd5b50515b6135275760405162461bcd60e51b81526004018080602001828103825260248152602001806142b96024913960400191505060405180910390fd5b505050505050565b6000811561355c5760005461354f906001600160a01b03163330866133d2565b6002805484019055613566565b61356633846137d4565b5090919050565b6000828201838110156135c7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600a80546001600160a01b03908116600090815260116020908152604080832054878516845260129092528220819055925490929161360f91168583613c66565b5060168054600181019091557fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319166001600160a01b039590951694851790556000938452600e6020526040909320919091555090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106136ee5780518252601f1990920191602091820191016136cf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613750576040519150601f19603f3d011682016040523d82523d6000602084013e613755565b606091505b5091509150818015613783575080511580613783575080806020019051602081101561378057600080fd5b50515b610af8576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b6001600160a01b03821660009081526004602052604090205481118015906137fc5750600081115b6138375760405162461bcd60e51b815260040180806020018281038252602181526020018061409c6021913960400191505060405180910390fd5b6001600160a01b038216600090815260046020526040902054613860908263ffffffff613c2416565b6001600160a01b03831660009081526004602052604090205560035461388c908263ffffffff613c2416565b6003555050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106139105780518252601f1990920191602091820191016138f1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613972576040519150601f19603f3d011682016040523d82523d6000602084013e613977565b606091505b50915091508180156139a55750805115806139a557508080602001905160208110156139a257600080fd5b50515b610af8576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b600080613a126c2b27aa22afa22aa920aa24a7a760991b612b9e565b430190506000600960009054906101000a90046001600160a01b03166001600160a01b03166325c8b42833888589896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b031681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613ab5578181015183820152602001613a9d565b50505050905090810190601f168015613ae25780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015613b15578181015183820152602001613afd565b50505050905090810190601f168015613b425780820380516001836020036101000a031916815260200191505b50975050505050505050602060405180830381600087803b158015613b6657600080fd5b505af1158015613b7a573d6000803e3d6000fd5b505050506040513d6020811015613b9057600080fd5b505190506000613ba0828a6135ce565b6001600160a01b038381166000818152601260209081526040808320869055601082529182902080546001600160a01b031916948e16948517905581518c81529081018590528151949550919333927fbecc1c59284d3a0002610e2053ae509b936a7cc48b89c8e4ae512d88439482c692908290030190a450979650505050505050565b60006135c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614004565b6001600160a01b038316600090815260116020526040812054821115613cbd5760405162461bcd60e51b81526004018080602001828103825260258152602001806142166025913960400191505060405180910390fd5b6001600160a01b038416600090815260116020526040902054613ce6908363ffffffff613c2416565b6001600160a01b038086166000908152601160205260408082209390935590851681522054613d1b908363ffffffff61356d16565b6001600160a01b0380851660008181526011602090815260409182902094909455805186815290519193928816927f9a1235bd046c2240be8591059e10f06d41c18eda175b31373d512ad82fafa35a92918290030190a39392505050565b60008111613db7576040805162461bcd60e51b815260206004808301919091526024820152635a45524f60e01b604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054613de0908263ffffffff61356d16565b6001600160a01b038316600090815260046020526040902055600354613e0c908263ffffffff61356d16565b600355506001600160a01b03166000908152600560205260409020439055565b6000805460408051637b381b3560e01b81526004810185905290516001600160a01b0390921691637b381b359160248082019260209290919082900301818787803b158015613e7a57600080fd5b505af1158015612bfe573d6000803e3d6000fd5b60006060600860009054906101000a90046001600160a01b03166001600160a01b031663c7099b8a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ee257600080fd5b505af1158015613ef6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613f1f57600080fd5b8101908080516040519392919084600160201b821115613f3e57600080fd5b908301906020820185811115613f5357600080fd5b82518660208202830111600160201b82111715613f6f57600080fd5b82525081516020918201928201910280838360005b83811015613f9c578181015183820152602001613f84565b50505050905001604052505050905060008090505b8151811015613ffa57836001600160a01b0316828281518110613fd057fe5b60200260200101516001600160a01b03161415613ff257600192505050611067565b600101613fb1565b5060009392505050565b600081848411156140935760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614058578181015183820152602001614040565b50505050905090810190601f1680156140855780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe446761735374616b696e673a20494e53554646494349454e545f42414c414e434544656d6178476f7665726e616e63653a20555047524144455f4e4f5f52455741524444656d6178476f7665726e616e63653a20494e5055545f414444524553535f49535f5a45524f44656d6178476f7665726e616e63653a205245574152445f434f4c4c454354454444656d6178476f7665726e616e63653a20524543454956455f5245574152445f56414c55455f49535f5a45524f44656d6178476f7665726e616e63653a204144445f5245574152445f56414c55455f49535f5a45524f44656d6178476f7665726e616e63653a20555047524144455f4e4f5f4348414e474544656d6178476f7665726e616e63653a204e4f545f454e4f5547485f414d4f554e545f544f5f50524f504f53414c44656d6178476f7665726e616e63653a20544f4b454e5f5354415455535f4e4f5f4348414e474544656d6178476f7665726e616e63653a204f4e4c595f414c4c4f575f50454e44494e4744656d6178476f7665726e616e63653a20494e53554646494349454e545f42414c414e434544656d6178476f7665726e616e63653a2044454641554c545f4c4953545f544f4b454e535f50524f504f53414c5f44454e5944656d6178476f7665726e616e63653a204e4f545f454e4f5547485f414d4f554e545f544f5f4c49535444656d6178476f7665726e616e63653a204144445f5245574152445f4558434545445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454444656d6178476f7665726e616e63653a205354415455535f4e4f5f4348414e4745a2646970667358221220e1489db896bf6f78a500b244eb0d5d522292325e53e126363ca420322339079b64736f6c63430006060033000000000000000000000000ae9269f27437f0fcbc232d39ec814844a51d6b8f

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ae9269f27437f0fcbc232d39ec814844a51d6b8f

-----Decoded View---------------
Arg [0] : _dgas (address): 0xae9269f27437f0fcbc232d39ec814844a51d6b8f

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae9269f27437f0fcbc232d39ec814844a51d6b8f


Deployed ByteCode Sourcemap

16417:14991:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16417:14991:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;31018:385:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;31018:385:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16608:24;;;:::i;:::-;;;;;;;;;;;;;;;;7741:20;;;:::i;7768:23::-;;;:::i;16863:40::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16863:40:0;-1:-1:-1;;;;;16863:40:0;;:::i;30480:120::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30480:120:0;-1:-1:-1;;;;;30480:120:0;;:::i;:::-;;22663:1447;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;22663:1447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;22663:1447:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;22663:1447:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22663:1447:0;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;22663:1447:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;22663:1447:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;22663:1447:0;;-1:-1:-1;22663:1447:0;-1:-1:-1;22663:1447:0;:::i;:::-;;;;-1:-1:-1;;;;;22663:1447:0;;;;;;;;;;;;;;17028:64;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;17028:64:0;;;;;;;;;;:::i;8824:353::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8824:353:0;;:::i;17099:45::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17099:45:0;-1:-1:-1;;;;;17099:45:0;;:::i;30608:402::-;;;:::i;7878:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7878:41:0;-1:-1:-1;;;;;7878:41:0;;:::i;25212:905::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;25212:905:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;25212:905:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25212:905:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;25212:905:0;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;25212:905:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25212:905:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;25212:905:0;;-1:-1:-1;25212:905:0;-1:-1:-1;25212:905:0;:::i;21860:649::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21860:649:0;-1:-1:-1;;;;;21860:649:0;;:::i;16473:23::-;;;:::i;16704:43::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16704:43:0;-1:-1:-1;;;;;16704:43:0;;:::i;17153:24::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17153:24:0;;:::i;16503:25::-;;;:::i;16574:::-;;;:::i;7830:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7830:41:0;-1:-1:-1;;;;;7830:41:0;;:::i;16754:48::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16754:48:0;-1:-1:-1;;;;;16754:48:0;;:::i;16957:64::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;16957:64:0;;;;;;;;;;:::i;28365:481::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28365:481:0;;:::i;26758:666::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26758:666:0;-1:-1:-1;;;;;26758:666:0;;:::i;16535:32::-;;;:::i;6861:20::-;;;:::i;7147:210::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7147:210:0;-1:-1:-1;;;;;7147:210:0;;:::i;16639:28::-;;;:::i;19876:1976::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19876:1976:0;-1:-1:-1;;;;;19876:1976:0;;:::i;8539:277::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8539:277:0;;:::i;27432:925::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27432:925:0;-1:-1:-1;;;;;27432:925:0;;:::i;30227:92::-;;;:::i;18310:480::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18310:480:0;;;;;;;;;;;;;;;;;;;:::i;22517:138::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22517:138:0;;:::i;16809:47::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16809:47:0;-1:-1:-1;;;;;16809:47:0;;:::i;113:24::-;;;:::i;16910:40::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16910:40:0;-1:-1:-1;;;;;16910:40:0;;:::i;19244:624::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19244:624:0;-1:-1:-1;;;;;19244:624:0;;:::i;24118:1089::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;24118:1089:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;24118:1089:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;24118:1089:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;24118:1089:0;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;24118:1089:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;24118:1089:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;24118:1089:0;;-1:-1:-1;24118:1089:0;-1:-1:-1;24118:1089:0;:::i;16674:23::-;;;:::i;18798:438::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18798:438:0;-1:-1:-1;;;;;18798:438:0;;:::i;7798:25::-;;;:::i;31018:385::-;31087:4;31121:1;31112:6;:10;31104:68;;;;-1:-1:-1;;;31104:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31215:9;;31183:72;;-1:-1:-1;;;;;31215:9:0;31226:5;31241:4;31248:6;31183:31;:72::i;:::-;31275:10;;-1:-1:-1;;;;;31275:10:0;;;31266:20;;;;:8;:20;;;;;;;;;:30;;;;;;31307:11;:21;;;;;;31344:29;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31391:4:0;31018:385;;;;:::o;16608:24::-;;;;:::o;7741:20::-;;;;:::o;7768:23::-;;;;:::o;16863:40::-;;;;;;;;;;;;;:::o;30480:120::-;7091:5;;-1:-1:-1;;;;;7091:5:0;7077:10;:19;7069:50;;;;;-1:-1:-1;;;7069:50:0;;;;;;;;;;;;-1:-1:-1;;;7069:50:0;;;;;;;;;;;;;;;30558:9:::1;::::0;;30552:40:::1;::::0;;-1:-1:-1;;;30552:40:0;;-1:-1:-1;;;;;30552:40:0;;::::1;;::::0;::::1;::::0;;;30558:9;;;::::1;::::0;30552:34:::1;::::0;:40;;;;;;;;;;;30558:9;;30552:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;30552:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;30552:40:0;;;;30480:120:::0;:::o;22663:1447::-;22817:7;22950:13;22965;22980:12;22994:10;23006:11;23034:10;;;;;;;;;-1:-1:-1;;;;;23034:10:0;-1:-1:-1;;;;;23021:34:0;;23056:5;23021:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23021:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23021:41:0;;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;23021:41:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23021:41:0;;-1:-1:-1;23021:41:0;-1:-1:-1;23021:41:0;;-1:-1:-1;23021:41:0;-1:-1:-1;23091:1:0;23081:11;;23073:55;;;;;-1:-1:-1;;;23073:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23157:8;23147:6;:18;;:40;;;;;23179:8;23169:6;:18;;23147:40;23139:77;;;;;-1:-1:-1;;;23139:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23227:9;23249:5;23239:6;:15;;:52;;23284:6;23276:5;:14;23239:52;;;23266:5;23257:6;:14;23239:52;23227:64;;23321:4;23310:7;:15;;23302:53;;;;;-1:-1:-1;;;23302:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22663:1447;;;;;;23396:48;-1:-1:-1;;;23396:14:0;:48::i;:::-;23385:7;:59;;23377:118;;;;-1:-1:-1;;;23377:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23509:11;;23506:160;;23547:36;23566:7;23575;23547:18;:36::i;:::-;23630:10;;-1:-1:-1;;;;;23630:10:0;23621:20;;;;:8;:20;;;;;;23537:46;;-1:-1:-1;23621:33:0;;23537:46;23621:33;:24;:33;:::i;:::-;23607:10;;-1:-1:-1;;;;;23607:10:0;23598:20;;;;:8;:20;;;;;:56;23506:160;23676:19;23713:41;-1:-1:-1;;;23713:14:0;:41::i;:::-;23698:12;:56;23676:78;;23765:18;23806:17;;;;;;;;;-1:-1:-1;;;;;23806:17:0;-1:-1:-1;;;;;23786:45:0;;23832:10;23844:6;23852:14;23868:8;;23878;;23786:101;;;;;;;;;;;;;-1:-1:-1;;;;;23786:101:0;-1:-1:-1;;;;;23786:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;23786:101:0;;;;;;;;;;;-1:-1:-1;23786:101:0;;;;;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23786:101:0;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23786:101:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23786:101:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23786:101:0;-1:-1:-1;;;;;23898:25:0;;;;;;:13;23786:101;23898:25;;;;:33;;;23983:8;;23786:101;;-1:-1:-1;23898:25:0;23956:36;;23786:101;;23956:14;:36::i;:::-;24008:66;;;;;;;;;;;;;;;;;;;;23942:50;;-1:-1:-1;;;;;;24008:66:0;;;24028:10;;24008:66;;;;;;;;;;-1:-1:-1;24092:10:0;22663:1447;-1:-1:-1;;;;;;;;;;22663:1447:0:o;17028:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8824:353::-;8938:8;;8924:10;8874:4;8914:21;;;:9;:21;;;;;;8874:4;;8914:32;8899:12;:47;8891:80;;;;;-1:-1:-1;;;8891:80:0;;;;;;;;;;;;-1:-1:-1;;;8891:80:0;;;;;;;;;;;;;;;9010:9;;8982:59;;-1:-1:-1;;;;;9010:9:0;9021:10;9033:7;8982:27;:59::i;:::-;9052:28;9060:10;9072:7;9052;:28::i;:::-;9112:9;;9105:42;;;-1:-1:-1;;;9105:42:0;;9141:4;9105:42;;;;;;-1:-1:-1;;;;;9112:9:0;;;;9105:27;;:42;;;;;;;;;;;;;;;9112:9;9105:42;;;2:2:-1;;;;27:1;24;17:12;2:2;9105:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9105:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9105:42:0;9091:11;:56;-1:-1:-1;9165:4:0;8824:353;;;;:::o;17099:45::-;;;;;;;;;;;;-1:-1:-1;;;;;17099:45:0;;:::o;30608:402::-;30692:10;;-1:-1:-1;;;;;30692:10:0;30658:4;30683:20;;;:8;:20;;;;;;30675:71;;;;-1:-1:-1;;;30675:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30778:10;;30765:35;;;-1:-1:-1;;;30765:35:0;;;;30812:4;;-1:-1:-1;;;;;30778:10:0;;30765:33;;:35;;;;;;;;;;;;;;30778:10;30765:35;;;2:2:-1;;;;27:1;24;17:12;2:2;30765:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30765:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30765:35:0;-1:-1:-1;;;;;30765:52:0;;;30757:99;;;;-1:-1:-1;;;30757:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30894:9;;30918:10;;30905:35;;;-1:-1:-1;;;30905:35:0;;;;30867:96;;-1:-1:-1;;;;;30894:9:0;;;;30918:10;;30905:33;;:35;;;;;;;;;;;;;;30918:10;30905:35;;;2:2:-1;;;;27:1;24;17:12;2:2;30905:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30905:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30905:35:0;30951:10;;-1:-1:-1;;;;;30951:10:0;30942:20;;;;:8;30905:35;30942:20;;;;;30867:26;:96::i;:::-;-1:-1:-1;30990:10:0;;-1:-1:-1;;;;;30990:10:0;30981:20;;;;:8;:20;;;;;;30608:402;:::o;7878:41::-;;;;;;;;;;;;;:::o;25212:905::-;25394:10;;25379:46;;;-1:-1:-1;;;25379:46:0;;-1:-1:-1;;;;;25379:46:0;;;;;;;;;25345:7;;;;25394:10;;25379:38;;:46;;;;;;;;;;;;;;25394:10;25379:46;;;2:2:-1;;;;27:1;24;17:12;2:2;25379:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25379:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25379:46:0;25469:10;;25454:33;;;-1:-1:-1;;;25454:33:0;;;;25379:46;;-1:-1:-1;;;;;;25469:10:0;;;;25454:31;;:33;;;;;25379:46;;25454:33;;;;;;;;25469:10;25454:33;;;2:2:-1;;;;27:1;24;17:12;2:2;25454:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25454:33:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25454:33:0;25444:43;;;:92;;;25516:10;;;;;;;;;-1:-1:-1;;;;;25516:10:0;-1:-1:-1;;;;;25501:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25501:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25501:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25501:35:0;25491:45;;25444:92;25436:128;;;;;-1:-1:-1;;;25436:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25591:44;-1:-1:-1;;;25591:14:0;:44::i;:::-;25580:7;:55;;25572:110;;;;-1:-1:-1;;;25572:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25690:18:0;;;;;;:10;:18;;;;;:31;;-1:-1:-1;;;;;;25690:31:0;25711:10;25690:31;;;25735:11;;25732:114;;25798:36;25817:7;25826;25798:18;:36::i;:::-;25776:10;25763:24;;;;:12;:24;;;;;;;;-1:-1:-1;;;;;25763:32:0;;;;;;;;;:71;25732:114;25868:10;;25853:48;;;-1:-1:-1;;;25853:48:0;;-1:-1:-1;;;;;25853:48:0;;;;;;;;;25868:10;;;;;25853:40;;:48;;;;;;;;;;;;;;25868:10;;25853:48;;;2:2:-1;;;;27:1;24;17:12;2:2;25853:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25853:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;25952:12:0;;25989:10;;25974:36;;;-1:-1:-1;;;25974:36:0;;;;25912:18;;25933:98;;25952:12;;25966:6;;-1:-1:-1;;;;;25989:10:0;;;;25974:34;;:36;;;;;25853:48;;25974:36;;;;;;;;25989:10;25974:36;;;2:2:-1;;;;27:1;24;17:12;2:2;25974:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25974:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25974:36:0;25933:98;;;25974:36;25933:98;;;;;;;;;;;;;;;;;;;26012:8;;;;;;25933:98;;26012:8;;;;25933:98;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;25933:98:0;;;;137:4:-1;25933:98:0;;;;;;;;;;;;;;;;;;-1:-1:-1;26022:8:0;;-1:-1:-1;26022:8:0;;;;25933:98;;26022:8;;;;25933:98;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;25933:18:0;;-1:-1:-1;;;25933:98:0:i;:::-;26044:40;;;26056:10;26044:40;;-1:-1:-1;;;;;26044:40:0;;;;;;;;;;;;;;25912:119;;-1:-1:-1;26044:40:0;;;;;;;;;;26102:10;25212:905;-1:-1:-1;;;;;;;;;25212:905:0:o;21860:649::-;21913:4;21930:11;21957:7;-1:-1:-1;;;;;21944:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21944:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21944:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21944:27:0;21996:29;;;-1:-1:-1;;;21996:29:0;;;;21944:27;;-1:-1:-1;21982:11:0;;-1:-1:-1;;;;;21996:27:0;;;;;:29;;;;;21944:27;;21996:29;;;;;;;:27;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;21996:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21996:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21996:29:0;-1:-1:-1;;;;;22052:21:0;;;22036:13;22052:21;;;:12;21996:29;22052:21;;;;;;;;;;22099:17;;;:10;:17;;;;;;;22150:10;;22135:45;;-1:-1:-1;;;22135:45:0;;;;;;;;;;21996:29;;-1:-1:-1;22052:21:0;;22099:17;;;;21996:29;;22150:10;;22135:38;;:45;;;;;;;;;;;22150:10;22135:45;;;2:2:-1;;;;27:1;24;17:12;2:2;22135:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22135:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22135:45:0;:55;;22127:107;;;;-1:-1:-1;;;22127:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22249:6;22245:179;;;22287:10;;22272:53;;;-1:-1:-1;;;22272:53:0;;-1:-1:-1;;;;;22272:53:0;;;;;;;;;;;;;;;22287:10;;;;;22272:38;;:53;;;;;;;;;;;;;;22287:10;;22272:53;;;2:2:-1;;;;27:1;24;17:12;2:2;22272:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22272:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22245:179:0;;-1:-1:-1;22245:179:0;;22382:10;;22367:45;;;-1:-1:-1;;;22367:45:0;;-1:-1:-1;;;;;22367:45:0;;;;;;;;;22382:10;;;;;22367:38;;:45;;;;;;;;;;;;;;22382:10;22367:45;;;2:2:-1;;;;27:1;24;17:12;2:2;22367:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22367:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22367:45:0;;-1:-1:-1;22245:179:0;22436:41;;;-1:-1:-1;;;;;22436:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22495:6:0;;21860:649;-1:-1:-1;;;;21860:649:0:o;16473:23::-;;;;:::o;16704:43::-;;;;;;;;;;;;;:::o;17153:24::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17153:24:0;;-1:-1:-1;17153:24:0;:::o;16503:25::-;;;-1:-1:-1;;;;;16503:25:0;;:::o;16574:::-;;;-1:-1:-1;;;;;16574:25:0;;:::o;7830:41::-;;;;;;;;;;;;;:::o;16754:48::-;;;;;;;;;;;;;:::o;16957:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;28365:481::-;18135:10;;28428:4;;-1:-1:-1;;;;;18135:10:0;18121;:24;18113:67;;;;;-1:-1:-1;;;18113:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28462:1:::1;28453:6;:10;28445:64;;;;-1:-1:-1::0;;;28445:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28520:10;28540:9:::0;;28533:42:::1;::::0;;-1:-1:-1;;;28533:42:0;;28569:4:::1;28533:42;::::0;::::1;::::0;;;-1:-1:-1;;;;;28540:9:0;;::::1;::::0;28533:27:::1;::::0;:42;;;;;::::1;::::0;;;;;;;;;28540:9;28533:42;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;28533:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28533:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;28533:42:0;28608:11:::1;::::0;28533:42;;-1:-1:-1;28586:9:0::1;::::0;28598:22:::1;::::0;28533:42;;28598:22:::1;:9;:22;:::i;:::-;28586:34;;28649:4;28639:6;:14;;28631:61;;;;-1:-1:-1::0;;;28631:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28735:10;::::0;-1:-1:-1;;;;;28735:10:0::1;28726:20;::::0;;;:8:::1;:20;::::0;;;;;:32:::1;::::0;28751:6;28726:32:::1;:24;:32;:::i;:::-;28712:10;::::0;;-1:-1:-1;;;;;28712:10:0;;::::1;28703:20;::::0;;;:8:::1;:20;::::0;;;;;;;;:55;;;;28769:11:::1;:19:::0;;;28819:10;;28804:34;;;;;;;28819:10;::::1;::::0;28804:34:::1;::::0;;;;;;::::1;18191:1;;28365:481:::0;;;:::o;26758:666::-;26816:4;26870:7;-1:-1:-1;;;;;26857:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26857:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26857:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26857:38:0;26841:12;:54;;26833:97;;;;;-1:-1:-1;;;26833:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26950:21:0;;;;;;:12;:21;;;;;;;;26972:10;26950:33;;;;;;;;;;26949:34;26941:80;;;;-1:-1:-1;;;26941:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27032:11;27046:18;27056:7;27046:9;:18::i;:::-;27032:32;;27075:44;27091:7;27100:10;27112:6;27075:15;:44::i;:::-;-1:-1:-1;27164:10:0;27154:21;;;;:9;:21;;;;;;:33;;27180:6;27154:33;:25;:33;:::i;:::-;27140:10;27130:21;;;;:9;:21;;;;;:57;27214:13;;:25;;27232:6;27214:25;:17;:25;:::i;:::-;27198:13;:41;27282:10;27273:20;;;;:8;:20;;;;;;:32;;27298:6;27273:32;:24;:32;:::i;:::-;27259:10;27250:20;;;;:8;:20;;;;;;;;:55;;;;-1:-1:-1;;;;;27316:21:0;;;;;:12;:21;;;;;:33;;;;;;;;;:40;;-1:-1:-1;;27316:40:0;27352:4;27316:40;;;27372:44;;;;;;;27316:21;;27372:44;;;;;;;;;;;26758:666;;;;:::o;16535:32::-;;;-1:-1:-1;;;;;16535:32:0;;:::o;6861:20::-;;;-1:-1:-1;;;;;6861:20:0;;:::o;7147:210::-;7091:5;;-1:-1:-1;;;;;7091:5:0;7077:10;:19;7069:50;;;;;-1:-1:-1;;;7069:50:0;;;;;;;;;;;;-1:-1:-1;;;7069:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7223:23:0;::::1;7215:60;;;::::0;;-1:-1:-1;;;7215:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7304:5;::::0;7291:30:::1;::::0;-1:-1:-1;;;;;7291:30:0;;::::1;::::0;7304:5:::1;::::0;7291:30:::1;::::0;7304:5:::1;::::0;7291:30:::1;7332:5;:17:::0;;-1:-1:-1;;;;;;7332:17:0::1;-1:-1:-1::0;;;;;7332:17:0;;;::::1;::::0;;;::::1;::::0;;7147:210::o;16639:28::-;;;;:::o;19876:1976::-;19933:4;19950:11;19977:7;-1:-1:-1;;;;;19964:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19964:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19964:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19964:27:0;-1:-1:-1;;;;;20018:21:0;;;20002:13;20018:21;;;:12;19964:27;20018:21;;;;;;;;;;20065:17;;;:10;:17;;;;;;;20165:10;;20150:39;;-1:-1:-1;;;20150:39:0;;;;19964:27;;-1:-1:-1;20018:21:0;;20065:17;;;;20165:10;;;;;20150:37;;:39;;;;;19964:27;;20150:39;;;;;;20165:10;20150:39;;;2:2:-1;;;;27:1;24;17:12;2:2;20150:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20150:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20150:39:0;20116:10;;20101:45;;;-1:-1:-1;;;20101:45:0;;-1:-1:-1;;;;;20101:45:0;;;;;;;;;20116:10;;;;;20101:38;;:45;;;;;20150:39;;20101:45;;;;;;;20116:10;20101:45;;;2:2:-1;;;;27:1;24;17:12;2:2;20101:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20101:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20101:45:0;:88;20093:125;;;;;-1:-1:-1;;;20093:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20229:11;20243:6;:83;;20306:10;;;;;;;;;-1:-1:-1;;;;;20306:10:0;-1:-1:-1;;;;;20291:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20291:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20291:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20291:35:0;20243:83;;;20267:10;;;;;;;;;-1:-1:-1;;;;;20267:10:0;-1:-1:-1;;;;;20252:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20252:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20252:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20252:36:0;20243:83;-1:-1:-1;;;;;20348:18:0;;;20334:11;20348:18;;;:12;:18;;;;;;;;:25;;;;;;;;;;;;20229:97;;-1:-1:-1;20334:11:0;;20462:1269;;;;20586:10;;;;;;;;;-1:-1:-1;;;;;20586:10:0;-1:-1:-1;;;;;20573:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20573:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20573:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20573:46:0;20511:59;11607:42;20511:14;:59::i;:::-;20502:6;:68;:117;;;;;;;-1:-1:-1;20649:19:0;;;;-1:-1:-1;20687:14:0;;20683:177;;20750:9;;;20722:62;;-1:-1:-1;;;;;20750:9:0;;;;20773:10;20722:27;:62::i;:::-;20817:11;;:27;;20833:10;20817:27;:15;:27;:::i;:::-;20803:11;:41;20683:177;20878:16;;20874:261;;20947:10;;-1:-1:-1;;;;;20947:10:0;20938:20;;;;:8;:20;;;;;;:38;;20963:12;20938:38;:24;:38;:::i;:::-;20924:10;;-1:-1:-1;;;;;20924:10:0;;;20915:20;;;;:8;:20;;;;;;;;:61;;;;21015:17;;;;;:8;:17;;;;;:35;;21037:12;21015:35;:21;:35;:::i;:::-;-1:-1:-1;;;;;20995:17:0;;;;;;;:8;:17;;;;;:55;;;;21085:10;;21069:50;;21085:10;21004:7;21106:12;21069:15;:50::i;:::-;;20874:261;21164:10;;21149:46;;;-1:-1:-1;;;21149:46:0;;-1:-1:-1;;;;;21149:46:0;;;;;;;;;21164:10;;;;;21149:39;;:46;;;;;;;;;;;;;;21164:10;;21149:46;;;2:2:-1;;;;27:1;24;17:12;2:2;21149:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21149:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20462:1269:0;;-1:-1:-1;20462:1269:0;;21325:10;;;;;;;;;-1:-1:-1;;;;;21325:10:0;-1:-1:-1;;;;;21312:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21312:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21312:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21312:46:0;21250:59;11500:42;21250:14;:59::i;:::-;21241:6;:68;:117;;;;;;;-1:-1:-1;;21388:19:0;;;21426:14;;21422:82;;21470:9;;;21442:62;;-1:-1:-1;;;;;21470:9:0;;;;21493:10;21442:27;:62::i;:::-;21523:16;;21519:80;;21569:9;;21541:58;;-1:-1:-1;;;;;21569:9:0;21580:4;21586:12;21541:27;:58::i;:::-;21628:11;;:23;;21644:6;21628:23;:15;:23;:::i;:::-;21614:11;:37;21681:10;;21666:53;;;-1:-1:-1;;;21666:53:0;;-1:-1:-1;;;;;21666:53:0;;;;;;;;;;;;;;;21681:10;;;;;21666:38;;:53;;;;;;;;;;;;;;21681:10;;21666:53;;;2:2:-1;;;;27:1;24;17:12;2:2;21666:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21666:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;20462:1269:0;21743:77;;;-1:-1:-1;;;;;21743:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21838:6:0;;19876:1976;-1:-1:-1;;;;;;;;19876:1976:0:o;8539:277::-;8588:4;8637:9;;8605:78;;-1:-1:-1;;;;;8637:9:0;8648:10;8668:4;8675:7;8605:31;:78::i;:::-;8694:25;8699:10;8711:7;8694:4;:25::i;27432:925::-;27489:4;27538:7;-1:-1:-1;;;;;27525:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27525:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27525:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27525:38:0;27510:12;:53;;:90;;-1:-1:-1;;;;;;27567:21:0;;;;;;:12;:21;;;;;;;;27589:10;27567:33;;;;;;;;;;27510:90;27506:131;;;-1:-1:-1;27624:1:0;27617:8;;27506:131;-1:-1:-1;;;;;27683:17:0;;27647:11;27683:17;;;:8;:17;;;;;;;;;27715:30;;-1:-1:-1;;;27715:30:0;;;;27647:11;;27683:17;;;;27715:28;;:30;;;;;;;;;;;27683:17;27715:30;;;2:2:-1;;;;27:1;24;17:12;2:2;27715:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27715:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27715:30:0;27711:446;;;27762:10;27787:15;27805:47;-1:-1:-1;;;27805:14:0;:47::i;:::-;27787:65;-1:-1:-1;27872:14:0;;27867:164;;27949:10;;;;;;;;;-1:-1:-1;;;;;27949:10:0;-1:-1:-1;;;;;27936:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27936:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27936:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27936:46:0;27914:19;;;27936:46;27914:68;;;;;27906:76;;28010:5;28000:15;;;;27867:164;28076:7;-1:-1:-1;;;;;28063:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28063:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28063:32:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28063:32:0;-1:-1:-1;;;;;28049:46:0;:10;:46;28045:101;;;28125:5;28116:14;;28045:101;27711:446;;;28205:1;28186:7;-1:-1:-1;;;;;28173:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28173:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28173:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28173:29:0;:33;28169:157;;;28298:7;-1:-1:-1;;;;;28285:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28285:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28285:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28285:29:0;28242:40;;;-1:-1:-1;;;28242:40:0;;28271:10;28242:40;;;;;;-1:-1:-1;;;;;28242:28:0;;;;;:40;;;;;28285:29;;28242:40;;;;;;;:28;:40;;;2:2:-1;;;;27:1;24;17:12;2:2;28242:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28242:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28242:40:0;28233:49;;:81;;;;;;28223:91;;;;28169:157;-1:-1:-1;28343:6:0;27432:925;-1:-1:-1;;27432:925:0:o;30227:92::-;30297:7;:14;30227:92;:::o;18310:480::-;7091:5;;-1:-1:-1;;;;;7091:5:0;7077:10;:19;7069:50;;;;;-1:-1:-1;;;7069:50:0;;;;;;;;;;;;-1:-1:-1;;;7069:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18446:25:0;::::1;::::0;;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;18475:33:0;::::1;::::0;::::1;18446:62;:98;;;;-1:-1:-1::0;;;;;;18512:32:0;::::1;::::0;::::1;18446:98;18438:149;;;;-1:-1:-1::0;;;18438:149:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18600:10;:24:::0;;-1:-1:-1;;;;;18600:24:0;;::::1;-1:-1:-1::0;;;;;;18600:24:0;;::::1;;::::0;;;18635:10:::1;:32:::0;;;;::::1;::::0;;::::1;;::::0;;18678:17:::1;:38:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18738:44:::1;-1:-1:-1::0;;;18738:14:0::1;:44::i;:::-;18727:8;:55:::0;-1:-1:-1;;;18310:480:0:o;22517:138::-;22614:10;;22601:46;;;-1:-1:-1;;;22601:46:0;;;;;;;;;;22577:4;;-1:-1:-1;;;;;22614:10:0;;22601:39;;:46;;;;;;;;;;;;;;22614:10;22601:46;;;2:2:-1;;;;27:1;24;17:12;2:2;22601:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22601:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22601:46:0;;22517:138;-1:-1:-1;;22517:138:0:o;16809:47::-;;;;;;;;;;;;-1:-1:-1;;;;;16809:47:0;;:::o;113:24::-;;;-1:-1:-1;;;;;113:24:0;;:::o;16910:40::-;;;;;;;;;;;;;:::o;19244:624::-;19298:4;19315:11;19342:7;-1:-1:-1;;;;;19329:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19329:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19329:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19329:27:0;;-1:-1:-1;19329:27:0;19367:43;;;;;-1:-1:-1;;;19367:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19421:10;19447:7;-1:-1:-1;;;;;19434:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19434:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19434:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19434:29:0;-1:-1:-1;;;;;19489:22:0;;;19474:12;19489:22;;;:13;19434:29;19489:22;;;;;;;;19544:10;;19531:55;;-1:-1:-1;;;19531:55:0;;;;;;;;;;;;;;;;19434:29;;-1:-1:-1;19489:22:0;;19544:10;;;19531:42;;:55;;;;;19434:29;19531:55;;;;;;;19544:10;19531:55;;;2:2:-1;;;;27:1;24;17:12;2:2;19531:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19531:55:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19531:55:0;;-1:-1:-1;;;;19601:36:0;;19597:189;;;19654:8;:16;;;19597:189;;;-1:-1:-1;;;19692:4:0;:37;19688:98;;;19746:28;19768:5;19746:21;:28::i;:::-;;19688:98;19801:35;;;;;;;;;;;;;;-1:-1:-1;;;;;19801:35:0;;;;;;;;;;;-1:-1:-1;19854:6:0;;19244:624;-1:-1:-1;;;19244:624:0:o;24118:1089::-;24272:7;24301:23;24317:6;24301:15;:23::i;:::-;24300:24;24292:87;;;;-1:-1:-1;;;24292:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24419:10;;24404:46;;;-1:-1:-1;;;24404:46:0;;-1:-1:-1;;;;;24404:46:0;;;;;;;;;24390:11;;24419:10;;;;;24404:38;;:46;;;;;;;;;;;;;;;24419:10;24404:46;;;2:2:-1;;;;27:1;24;17:12;2:2;24404:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24404:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24404:46:0;24494:10;;24479:36;;;-1:-1:-1;;;24479:36:0;;;;24404:46;;-1:-1:-1;;;;;;24494:10:0;;;;24479:34;;:36;;;;;24404:46;;24479:36;;;;;;;;24494:10;24479:36;;;2:2:-1;;;;27:1;24;17:12;2:2;24479:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24479:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24479:36:0;24469:46;;24461:94;;;;-1:-1:-1;;;24461:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24599:10;;;;;;;;;-1:-1:-1;;;;;24599:10:0;-1:-1:-1;;;;;24584:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24584:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24584:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24584:35:0;24574:45;;;:94;;;24648:10;;;;;;;;;-1:-1:-1;;;;;24648:10:0;-1:-1:-1;;;;;24633:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24633:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24633:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24633:35:0;24623:45;;24574:94;24566:138;;;;;-1:-1:-1;;;24566:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24733:6;24723;:16;;24715:62;;;;-1:-1:-1;;;24715:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24807:48;-1:-1:-1;;;24807:14:0;:48::i;:::-;24796:7;:59;;24788:118;;;;-1:-1:-1;;;24788:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24920:11;;24917:160;;24958:36;24977:7;24986;24958:18;:36::i;:::-;25041:10;;-1:-1:-1;;;;;25041:10:0;25032:20;;;;:8;:20;;;;;;24948:46;;-1:-1:-1;25032:33:0;;24948:46;25032:33;:24;:33;:::i;:::-;25018:10;;-1:-1:-1;;;;;25018:10:0;25009:20;;;;:8;:20;;;;;:56;24917:160;25087:18;25108:63;25127:7;;25136:6;25144;25152:8;;25108:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;25108:63:0;;;;137:4:-1;25108:63:0;;;;;;;;;;;;;;;;;;-1:-1:-1;25162:8:0;;-1:-1:-1;25162:8:0;;;;25108:63;;25162:8;;;;25108:63;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;25108:18:0;;-1:-1:-1;;;25108:63:0:i;:::-;25087:84;24118:1089;-1:-1:-1;;;;;;;;;;;24118:1089:0:o;16674:23::-;;;;:::o;18798:438::-;18892:8;;-1:-1:-1;;;;;18868:20:0;;18848:4;18868:20;;;:11;:20;;;;;;18848:4;;18868:32;18865:364;;;18924:20;18936:7;18924:11;:20::i;:::-;18917:27;;;;18865:364;18990:12;;-1:-1:-1;;;;;18966:20:0;;;;;;:11;:20;;;;;;:36;18962:267;;;19026:23;19041:7;19026:14;:23::i;18962:267::-;19095:7;;-1:-1:-1;;;;;19071:20:0;;;;;;:11;:20;;;;;;:31;19067:162;;;19126:19;19137:7;19126:10;:19::i;19067:162::-;19178:39;;;-1:-1:-1;;;19178:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7798:25;;;;:::o;10202:402::-;10427:51;;;-1:-1:-1;;;;;10427:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10427:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10416:63:0;;;;10381:12;;10395:17;;10416:10;;;;10427:51;10416:63;;;25:18:-1;10416:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10416:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;10380:99:0;;;;10498:7;:57;;;;-1:-1:-1;10510:11:0;;:16;;:44;;;10541:4;10530:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10530:24:0;10510:44;10490:106;;;;-1:-1:-1;;;10490:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10202:402;;;;;;:::o;29555:339::-;29629:4;29650:7;29646:216;;;29706:9;;29674:78;;-1:-1:-1;;;;;29706:9:0;29717:10;29737:4;29744:7;29674:31;:78::i;:::-;29767:11;:22;;;;;;29646:216;;;29822:28;29830:10;29842:7;29822;:28::i;:::-;-1:-1:-1;29879:7:0;;29555:339;-1:-1:-1;29555:339:0:o;2294:181::-;2352:7;2384:5;;;2408:6;;;;2400:46;;;;;-1:-1:-1;;;2400:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2466:1;2294:181;-1:-1:-1;;;2294:181:0:o;29902:317::-;30013:10;;;-1:-1:-1;;;;;30013:10:0;;;29973:4;30004:20;;;:8;:20;;;;;;;;;30035:17;;;;;:8;:17;;;;;:26;;;30088:10;;29973:4;;30004:20;30072:44;;30088:10;30044:7;30004:20;30072:15;:44::i;:::-;-1:-1:-1;30127:7:0;27:10:-1;;39:1;23:18;;45:23;;;30127:21:0;;;;-1:-1:-1;;;;;;30127:21:0;-1:-1:-1;;;;;30127:21:0;;;;;;;;;-1:-1:-1;30159:20:0;;;:11;30127:21;30159:20;;;;;:28;;;;-1:-1:-1;30205:6:0;29902:317::o;9833:361::-;10028:45;;;-1:-1:-1;;;;;10028:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10028:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10017:57:0;;;;9982:12;;9996:17;;10017:10;;;;10028:45;10017:57;;;25:18:-1;10017:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10017:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;9981:93:0;;;;10093:7;:57;;;;-1:-1:-1;10105:11:0;;:16;;:44;;;10136:4;10125:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10125:24:0;10105:44;10085:101;;;;;-1:-1:-1;;;10085:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8271:260;-1:-1:-1;;;;;8342:15:0;;;;;;:9;:15;;;;;;:24;-1:-1:-1;8342:24:0;;;:37;;;8378:1;8370:5;:9;8342:37;8334:83;;;;-1:-1:-1;;;8334:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8446:15:0;;;;;;:9;:15;;;;;;:26;;8466:5;8446:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8428:15:0;;;;;;:9;:15;;;;;:44;8499:13;;:24;;8517:5;8499:24;:17;:24;:::i;:::-;8483:13;:40;-1:-1:-1;;8271:260:0:o;9467:358::-;9660:45;;;-1:-1:-1;;;;;9660:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9660:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;9649:57:0;;;;9614:12;;9628:17;;9649:10;;;;9660:45;9649:57;;;25:18:-1;9649:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;9649:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;9613:93:0;;;;9725:7;:57;;;;-1:-1:-1;9737:11:0;;:16;;:44;;;9768:4;9757:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9757:24:0;9737:44;9717:100;;;;;-1:-1:-1;;;9717:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26125:625;26259:7;26279:19;26316:41;-1:-1:-1;;;26316:14:0;:41::i;:::-;26301:12;:56;26279:78;;26368:18;26409:17;;;;;;;;;-1:-1:-1;;;;;26409:17:0;-1:-1:-1;;;;;26389:45:0;;26435:10;26447:6;26455:14;26471:8;26481;26389:101;;;;;;;;;;;;;-1:-1:-1;;;;;26389:101:0;-1:-1:-1;;;;;26389:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26389:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26389:101:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26389:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26389:101:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26389:101:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26389:101:0;;-1:-1:-1;26501:11:0;26515:33;26389:101;26542:5;26515:14;:33::i;:::-;-1:-1:-1;;;;;26559:20:0;;;;;;;:8;:20;;;;;;;;:29;;;26599:12;:24;;;;;;:33;;-1:-1:-1;;;;;;26599:33:0;;;;;;;;;26648:66;;;;;;;;;;;;;26559:29;;-1:-1:-1;26559:20:0;;26667:10;;26648:66;;;;;;;;;-1:-1:-1;26732:10:0;26125:625;-1:-1:-1;;;;;;;26125:625:0:o;2758:136::-;2816:7;2843:43;2847:1;2850;2843:43;;;;;;;;;;;;;;;;;:3;:43::i;28854:358::-;-1:-1:-1;;;;;28977:15:0;;28937:4;28977:15;;;:8;:15;;;;;;-1:-1:-1;;28977:25:0;28954:90;;;;-1:-1:-1;;;28954:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29073:15:0;;;;;;:8;:15;;;;;;:27;;29093:6;29073:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;29055:15:0;;;;;;;:8;:15;;;;;;:45;;;;29127:13;;;;;;;:25;;29145:6;29127:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;29111:13:0;;;;;;;:8;:13;;;;;;;;;:41;;;;29168:36;;;;;;;29111:13;;29168:36;;;;;;;;;;;;;28854:358;;;;;:::o;8022:241::-;8098:1;8090:5;:9;8082:26;;;;;-1:-1:-1;;;8082:26:0;;;;;;;;;;;;;;;-1:-1:-1;;;8082:26:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;8137:15:0;;;;;;:9;:15;;;;;;:26;;8157:5;8137:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8119:15:0;;;;;;:9;:15;;;;;:44;8190:13;;:24;;8208:5;8190:24;:17;:24;:::i;:::-;8174:13;:40;-1:-1:-1;;;;;;8225:15:0;;;;;:9;:15;;;;;8243:12;8225:30;;8022:241::o;30327:145::-;30389:4;30419:9;;30413:51;;;-1:-1:-1;;;30413:51:0;;;;;;;;;;-1:-1:-1;;;;;30419:9:0;;;;30413:43;;:51;;;;;;;;;;;;;;;30389:4;30419:9;30413:51;;;2:2:-1;;;;27:1;24;17:12;2:2;30413:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;29220:327:0;29279:4;29296:23;29335:10;;;;;;;;;-1:-1:-1;;;;;29335:10:0;-1:-1:-1;;;;;29322:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29322:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29322:47:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29322:47:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;29322:47:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;29322:47:0;;421:4:-1;412:14;;;;29322:47:0;;;;;412:14:-1;29322:47:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29322:47:0;;;;;;;;;;;29296:73;;29384:6;29393:1;29384:10;;29380:137;29401:6;:13;29397:1;:17;29380:137;;;29452:6;-1:-1:-1;;;;;29439:19:0;:6;29446:1;29439:9;;;;;;;;;;;;;;-1:-1:-1;;;;;29439:19:0;;29435:71;;;29486:4;29479:11;;;;;;29435:71;29416:3;;29380:137;;;-1:-1:-1;29534:5:0;;29220:327;-1:-1:-1;;;29220:327:0:o;3197:192::-;3283:7;3319:12;3311:6;;;;3303:29;;;;-1:-1:-1;;;3303:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3303:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3355:5:0;;;3197:192::o

Swarm Source

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