Contract 0x56a0efefc9f1fbb54fbd25629ac2aa764f1b56f7 1

 
Token migration announcement. AurusDeFi token contract has migrated to a new address.

Contract Overview

AurusDeFi: Old AWX Token
Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x0f8576e7bba0f23afb98075e948be9efe042976fd4ad38ae4ac96e91104412a9Approve404364882023-03-17 3:44:336 days 3 hrs ago0xc005bc17b77a9276f29948456a4f3dfb11c0efac IN  AurusDeFi: Old AWX Token0 MATIC0.00593759772 125.668763123
0x042f6fc2c05c3524da83a4a71d908acc17ec9ae45b071065050919da62033c5fApprove401252142023-03-08 23:50:4314 days 7 hrs ago0x97101ee27a494bf3332fd13ffd8d4bc69d451f49 IN  AurusDeFi: Old AWX Token0 MATIC0.0056470638119.55
0xab8ed6948a124f2629413a02e78cb583264409dc0d4a188ab4c7bbddbceef592Transfer401251722023-03-08 23:49:1514 days 7 hrs ago0x97101ee27a494bf3332fd13ffd8d4bc69d451f49 IN  AurusDeFi: Old AWX Token0 MATIC0.003772989816 151.161450971
0xeee86050d83eea0cdc038a04253386ec9cdb68cb710ee2b9ffd83267f14b317aApprove391826072023-02-11 18:58:3139 days 12 hrs ago0xea3f7f0b17025c43a3da2fb702cc875f35a48f46 IN  AurusDeFi: Old AWX Token0 MATIC0.007617918954 161.232622643
0xf99114d3fec6d341ea6fb9c0e954820a4502fdc6b8da223fc3d81a280c0aff2aApprove391002862023-02-09 14:56:0741 days 16 hrs ago0x25595a9ff47242d515e618c0c55e649a649a1b11 IN  AurusDeFi: Old AWX Token0 MATIC0.026224744864 555.044549287
0x158a7131ad6b6c202aac8ef4da27276fd7b5567d1fb10e911ecaad2c7416856fApprove391002732023-02-09 14:55:1541 days 16 hrs ago0x25595a9ff47242d515e618c0c55e649a649a1b11 IN  AurusDeFi: Old AWX Token0 MATIC0.021100969145 446.600261286
0xf43d244e4ef8bad4436a687cc6e7bef391c4655aaa18856f724aa6454a0786e5Approve390321422023-02-07 21:21:0643 days 9 hrs ago0x86caca801061ac1f9bed503e3703b0f276b48808 IN  AurusDeFi: Old AWX Token0 MATIC0.005224287386 110.571609086
0x29d2e8d0e3f6a07d5111bc89bb7026baaabde89b4b158f68929431c5ef3d1f44Transfer388584902023-02-03 10:30:3447 days 20 hrs ago0x78bb4fbb9183a907c151c59ab51add651be38fc5 IN  AurusDeFi: Old AWX Token0 MATIC0.003763164428 150.695355944
0xc2b799b6aa8b9a6222673b4b58e2c9408e729095efdbf782abb6894f72949687Approve388583062023-02-03 10:23:3247 days 20 hrs ago0x78bb4fbb9183a907c151c59ab51add651be38fc5 IN  AurusDeFi: Old AWX Token0 MATIC0.006953818049 147.176982094
0x885a7d939d20435d70b9ec76c6de0c0cd6a1099daf646f950ab66ee76c8e374eApprove388582912023-02-03 10:23:0047 days 20 hrs ago0x78bb4fbb9183a907c151c59ab51add651be38fc5 IN  AurusDeFi: Old AWX Token0 MATIC0.007123070252 150.759190925
0xd0b3d36f85595c3238da77c99099e45f0701cd15d98b0303f311f046982ea994Approve385074792023-01-25 11:42:3856 days 19 hrs ago0xc005bc17b77a9276f29948456a4f3dfb11c0efac IN  AurusDeFi: Old AWX Token0 MATIC0.001690119774 62.458232618
0x5a56474440d94a4719e7f5028764f8b809f8fff44bab1f03d85f1cc85f6853a9Approve385073922023-01-25 11:39:3456 days 19 hrs ago0xc005bc17b77a9276f29948456a4f3dfb11c0efac IN  AurusDeFi: Old AWX Token0 MATIC0.002509661329 53.442532569
0x98dc7b9bbe607693914a5c10a2cf1c1f9e5ec83eda95e3d537df2cf7508ebba8Transfer384382472023-01-23 18:02:0358 days 13 hrs ago0x97101ee27a494bf3332fd13ffd8d4bc69d451f49 IN  AurusDeFi: Old AWX Token0 MATIC0.002110702142 84.482154283
0xb6c8d449716e730794e186ef86880d48f3ae9c6df13cb903ce7cdb374b5d63bdTransfer384376462023-01-23 17:40:4258 days 13 hrs ago0x97101ee27a494bf3332fd13ffd8d4bc69d451f49 IN  AurusDeFi: Old AWX Token0 MATIC0.001842589105 73.750764699
0x6a1c390aec17918349d19b160dffecbbda31af6d09190f2adb75137cefebecf6Approve384375442023-01-23 17:37:0658 days 13 hrs ago0x97101ee27a494bf3332fd13ffd8d4bc69d451f49 IN  AurusDeFi: Old AWX Token0 MATIC0.002550417229 53.979369053
0xece1dd709e202ae1676fcb6ad4d5671fee5388706274e0fa687d600b38188498Approve384142962023-01-23 3:48:1759 days 3 hrs ago0x7b0614920fc139a11dafa7da457c1f7e131bcb7f IN  AurusDeFi: Old AWX Token0 MATIC0.002483419794 52.561373917
0xbb1c40fdf01a2b66e2e336edb7bc2b900a74e0b7aa9d7ae90269a0d1f40ca4a6Approve382118892023-01-18 0:42:5164 days 6 hrs ago0x4ea6ed569a42f4b17c725e1cc190c2fd743959ad IN  AurusDeFi: Old AWX Token0 MATIC0.001604924304 64.289549131
0x107710ba3ea43202c1a63a909e7fb6ac2b17e85764f89fe5874980cf1e8366faApprove380002892023-01-12 21:36:1869 days 9 hrs ago0xf20da54ef9461ac25d9411aa4219b3696f818ab8 IN  AurusDeFi: Old AWX Token0 MATIC0.002014079349 42.627822323
0x6ffe51e110c2404805b76b4f79c37c05f07c2ab9b0a1988de454d3e3c9b8a093Transfer379169262023-01-10 21:16:4471 days 9 hrs ago0x35471580605dd349472e3098d24bb6cb04f22454 IN  AurusDeFi: Old AWX Token0 MATIC0.001124535139 45.031841259
0x4fceb2e0718de037a0ee5452a635878d0fde4e0ea6ee881e24f6e7e35611c944Transfer379169032023-01-10 21:15:5871 days 9 hrs ago0x35471580605dd349472e3098d24bb6cb04f22454 IN  AurusDeFi: Old AWX Token0 MATIC0.001169901984 46.848549752
0x13271dc3a08d57f5b2a777a1380f0fa1e21e76cd96166f265fc76603f99593a3Transfer379167942023-01-10 21:12:1271 days 10 hrs ago0x35471580605dd349472e3098d24bb6cb04f22454 IN  AurusDeFi: Old AWX Token0 MATIC0.001088554071 43.590984775
0x857c4e08a030a3bb1ba4d060991fcbaf400db1e67e38bc3c0570886ccd640724Transfer372497502022-12-25 7:12:3188 days 1 min ago0x9588154593646ca41a4c61c70f1748affa2ee0cc IN  AurusDeFi: Old AWX Token0 MATIC0.0008744435
0xaadf0c07502318255e261a028781a6ebfc9c844c26d6f25c535f4f36afc28006Approve369072722022-12-16 16:48:1096 days 14 hrs ago0x86caca801061ac1f9bed503e3703b0f276b48808 IN  AurusDeFi: Old AWX Token0 MATIC0.016093305064 340.613466493
0x881210cc13d8af17ae2d1ab514a1b361a3b86400afd7b39b0f895452c9d06c35Approve367987652022-12-13 23:28:2399 days 7 hrs ago0xde55b785eaed82e191edc1984ddd7ac3705cb560 IN  AurusDeFi: Old AWX Token0 MATIC0.001951292708 41.298948278
0x592f98fa34b4b96709de27cd9606e55828cd2a01cfb3f58f0cd0e7933782fa7eTransfer367505172022-12-12 18:33:15100 days 12 hrs ago nolossboss.dao  IN  AurusDeFi: Old AWX Token0 MATIC0.000751582284 30.111469716
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AWX

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-01-14
*/

pragma solidity 0.8.10;

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

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

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

// File: openzeppelin-solidity/contracts/access/roles/PauserRole.sol
contract PauserRole {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor ()  {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender), "PauserRole: caller does not have the Pauser role");
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

// File: openzeppelin-solidity/contracts/lifecycle/Pausable.sol
/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
contract Pausable is PauserRole {
    /**
     * @dev Emitted when the pause is triggered by a pauser (`account`).
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by a pauser (`account`).
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state. Assigns the Pauser role
     * to the deployer.
     */
    constructor ()  {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    /**
     * @dev Called by a pauser to pause, triggers stopped state.
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev Called by a pauser to unpause, returns to normal state.
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`, both locked and unlocked
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`, and unlocked
     */
    function internalBalance(address account) external view returns (uint256);    

    /**
     * @dev Returns the amount of tokens owned by `account`, and locked
     */
    function internalLocked(address account) external view returns (uint256);        

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through `transferFrom`. This is
     * zero by default.
     *
     * This value changes when `approve` or `transferFrom` are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * > Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an `Approval` event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);       

    /**
     * @dev Emitted when `owner` unlocks tokens for a wallet
     */
    event Unlock(address indexed target, uint256 amount);

    /**
     * @dev Emitted when a wallet receives locked tokens.
     */
    event Lock(address indexed target, uint256 amount);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to `approve`. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Emitted when the `owner` initiates a force transfer
     *
     * Note that `value` may be zero.
     * Note that `details` may be zero.
     */
    event ForceTransfer(address indexed from, address indexed to, uint256 value, bytes32 details);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol
/**
 * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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-solidity/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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol
/**
 * @dev Implementation of the `IERC20` interface.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20, Pausable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => uint256) private _locked;

    /**
     * @dev List of whitelisted accounts.
     * 0 = default (initial value for all accounts)
     * 1 = blacklisted account (cannot send or receive tokens)
     */
    mapping (address => uint8) public whitelist;

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

    uint256 private _totalSupply;

    bool private _migrationOpen = true;

    address public childChainManagerProxy = 0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa;

    // being proxified smart contract, most probably childChainManagerProxy contract's address
    // is not going to change ever, but still, lets keep it 
    function _updateChildChainManager(address newChildChainManagerProxy) internal {
        require(newChildChainManagerProxy != address(0), "Bad ChildChainManagerProxy address");
        childChainManagerProxy = newChildChainManagerProxy;
    }

    function _deposit(address user, bytes calldata depositData) internal whenNotPaused {
        require(msg.sender == childChainManagerProxy, "You're not allowed to deposit");

        uint256 amount = abi.decode(depositData, (uint256));

        // `amount` token getting minted here & equal amount got locked in RootChainManager
        _totalSupply = _totalSupply.add(amount);
        _balances[user] = _balances[user].add(amount);
        
        emit Transfer(address(0), user, amount);
    }

    function _withdraw(uint256 amount) internal whenNotPaused {
        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        _totalSupply = _totalSupply.sub(amount);
        
        emit Transfer(msg.sender, address(0), amount);
    }

    /**
     * @dev Forced transfer from one account to another. Will contain details about AML procedure.
     */
    function _forceTransfer(address sender, address recipient, uint256 amount, bytes32 details) internal {
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        emit ForceTransfer(sender, recipient, amount, details);
    }

    /**
     * Mint tokens to migrate balances
     */
    function _mintTokens(address recipient, uint256 amount) internal {
        require(_migrationOpen == true, "Migration is stopped");
        _balances[recipient] = _balances[recipient].add(amount);
        _totalSupply = _totalSupply.add(amount);
        emit Transfer(address(0),recipient,amount);
    }

    /**
     * Burn tokens to migrate balances
     */
    function _burnTokens(address recipient, uint256 amount) internal {
        require(_migrationOpen == true, "Migration is stopped");
        _balances[recipient] = _balances[recipient].sub(amount);
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(recipient,address(0),amount);
    }    


    /**
     * Stop migration stops minting and burning of tokens
     */
    function _stopMigration() internal {
        _migrationOpen = false;
    }

    /**
     * @dev See `IERC20.totalSupply`.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See `IERC20.balanceOf`.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account].add(_locked[account]);
    }

    function internalBalance(address account) public view returns (uint256) {
        return _balances[account];
    }
    
    function internalLocked(address account) public view returns (uint256) {
        return _locked[account];
    }

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) override virtual public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) override virtual public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) override virtual public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) virtual public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) virtual public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");


        require(whitelist[sender] != 1, "Sender is blacklisted");
        require(whitelist[recipient] != 1, "Recipient is blacklisted");


        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);

        emit Transfer(sender, recipient, amount);
    }

    

    /**
     * @dev Transfer tokens from balance to locked balance of another wallet.
     */
    function _transferToLocked(address sender, address recipient, uint256 amount) internal {
        _balances[sender] = _balances[sender].sub(amount);
        _locked[recipient] = _locked[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        emit Lock(recipient, amount);
    }    

    /**
     * @dev Owner can unlock wallet balance
     */
    function _unlockBalance(address target, uint256 amount) internal {
        _balances[target] = _balances[target].add(amount);
        _locked[target] = _locked[target].sub(amount);
        emit Unlock(target, amount);
    }

    /**
     * @dev Owner can lock wallet balance
     */
    function _lockBalance(address target, uint256 amount) internal {
        _balances[target] = _balances[target].sub(amount);
        _locked[target] = _locked[target].add(amount);
        emit Lock(target, amount);
    }      

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor ()  {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * > Note: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/token/AWX.sol
/**
 * @title AWX Token
 * @notice ERC20 token implementation.
 * @dev Implements pausable token interfaces.
 */
contract AWX is ERC20, Ownable {

    /**
     * @notice ERC20 convention.
     */
    uint8 public constant decimals = 18;

    /**
     * @notice ERC20 convention.
     */
    string public name = "AurusDeFi";
    
    /**
     * @notice ERC20 convention.
     */
    string public symbol = "AWX";


    /**
     * Update the childChainManagerProxy
     */
    function updateChildChainManager(address newChildChainManagerProxy) external onlyOwner {
        _updateChildChainManager(newChildChainManagerProxy);
    }

    function deposit(address user, bytes calldata depositData) external {
        _deposit(user, depositData);
    }

    function withdraw(uint256 amount) external {
        _withdraw(amount);
    }

    /**
     * @dev Force a transfer between 2 accounts. AML logs on https://aurus.io/aml
     */
    function forceTransfer(address sender, address recipient, uint256 amount, bytes32 details) external onlyOwner {
        _forceTransfer(sender,recipient,amount,details);
    }

    function mintTokens(address recipient, uint256 amount) external onlyOwner {
        _mintTokens(recipient,amount);
    }

    function burnTokens(address recipient, uint256 amount) external onlyOwner {
        _burnTokens(recipient,amount);
    }    

    function stopMigration() external onlyOwner {
        _stopMigration();
    }    

    /**
     * @dev Change the name and symbol of the token
     */
    function setTokenDetails(string memory _name, string memory _symbol) external onlyOwner {
        name = _name;
        symbol = _symbol;
    }    

    /**
     * @dev Transfer to locked balance
     */
    function transferToLocked(address recipient, uint256 amount) external onlyOwner {
        _transferToLocked(msg.sender,recipient,amount);
    }

    /**
     * @dev Unlock balance
     */
    function unlockBalance(address target, uint256 amount) external onlyOwner {
        _unlockBalance(target, amount);
    }

    /**
     * @dev Lock balance
     */
    function LockBalance(address target, uint256 amount) external onlyOwner {
        _lockBalance(target, amount);
    }        

    /**
     * @dev Set the whitelisting level for an account.
     */
    function whitelistAddress(address account, uint8 level) external onlyOwner {
        require(level<=1, "Level: Please use level 0 to 1.");
        whitelist[account] = level;
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"details","type":"bytes32"}],"name":"ForceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"childChainManagerProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"details","type":"bytes32"}],"name":"forceTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"internalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"internalLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"setTokenDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferToLocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newChildChainManagerProxy","type":"address"}],"name":"updateChildChainManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"whitelistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600760006101000a81548160ff02191690831515021790555073a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600981526020017f417572757344654669000000000000000000000000000000000000000000000081525060099080519060200190620000c1929190620003ed565b506040518060400160405280600381526020017f4157580000000000000000000000000000000000000000000000000000000000815250600a90805190602001906200010f929190620003ed565b503480156200011d57600080fd5b506200012f336200020e60201b60201c565b6000600160006101000a81548160ff02191690831515021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200061d565b620002298160006200026f60201b620014831790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6200028182826200032260201b60201c565b15620002c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002bb90620004fe565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000396576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038d9062000596565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054620003fb90620005e7565b90600052602060002090601f0160209004810192826200041f57600085556200046b565b82601f106200043a57805160ff19168380011785556200046b565b828001600101855582156200046b579182015b828111156200046a5782518255916020019190600101906200044d565b5b5090506200047a91906200047e565b5090565b5b80821115620004995760008160009055506001016200047f565b5090565b600082825260208201905092915050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b6000620004e6601f836200049d565b9150620004f382620004ae565b602082019050919050565b600060208201905081810360008301526200051981620004d7565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200057e6022836200049d565b91506200058b8262000520565b604082019050919050565b60006020820190508181036000830152620005b1816200056f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060057607f821691505b60208210811415620006175762000616620005b8565b5b50919050565b613f57806200062d6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a457c2d7116100b8578063e19a7bc81161007c578063e19a7bc81461063c578063e5e009a114610646578063f0dda65c14610662578063f2fde38b1461067e578063f69dbf551461069a57610227565b8063a457c2d714610574578063a9059cbb146105a4578063cf2c52cb146105d4578063dd62ed3e146105f0578063de94e0f61461062057610227565b806388f259b0116100ff57806388f259b0146104ce5780638da5cb5b146104ea5780638f32d59b1461050857806395d89b41146105265780639b19251a1461054457610227565b806370a082311461046e578063715018a61461049e57806382dc1ec4146104a85780638456cb59146104c457610227565b8063313ce567116101b357806346fbf68e1161018257806346fbf68e146103dc5780635c975abb1461040c57806362f629e71461042a5780636b9a5c6c146104485780636ef8d66d1461046457610227565b8063313ce5671461036857806339509351146103865780633f4ba83a146103b6578063445a6797146103c057610227565b80630d1118ce116101fa5780630d1118ce146102b25780630e49cf44146102ce57806318160ddd146102fe57806323b872dd1461031c5780632e1a7d4d1461034c57610227565b8063016fb5221461022c5780630426dcef1461024857806306fdde0314610264578063095ea7b314610282575b600080fd5b61024660048036038101906102419190612dea565b6106ca565b005b610262600480360381019061025d9190612dea565b61071f565b005b61026c610774565b6040516102799190612ec3565b60405180910390f35b61029c60048036038101906102979190612dea565b610802565b6040516102a99190612f00565b60405180910390f35b6102cc60048036038101906102c79190612dea565b610819565b005b6102e860048036038101906102e39190612f1b565b61086e565b6040516102f59190612f57565b60405180910390f35b6103066108b7565b6040516103139190612f57565b60405180910390f35b61033660048036038101906103319190612f72565b6108c1565b6040516103439190612f00565b60405180910390f35b61036660048036038101906103619190612fc5565b610972565b005b61037061097e565b60405161037d919061300e565b60405180910390f35b6103a0600480360381019061039b9190612dea565b610983565b6040516103ad9190612f00565b60405180910390f35b6103be610a28565b005b6103da60048036038101906103d59190612f1b565b610b13565b005b6103f660048036038101906103f19190612f1b565b610b66565b6040516104039190612f00565b60405180910390f35b610414610b83565b6040516104219190612f00565b60405180910390f35b610432610b9a565b60405161043f9190613038565b60405180910390f35b610462600480360381019061045d919061307f565b610bc0565b005b61046c610caa565b005b61048860048036038101906104839190612f1b565b610cb5565b6040516104959190612f57565b60405180910390f35b6104a6610d4f565b005b6104c260048036038101906104bd9190612f1b565b610e57565b005b6104cc610eab565b005b6104e860048036038101906104e391906131f4565b610f96565b005b6104f261100f565b6040516104ff9190613038565b60405180910390f35b610510611039565b60405161051d9190612f00565b60405180910390f35b61052e611091565b60405161053b9190612ec3565b60405180910390f35b61055e60048036038101906105599190612f1b565b61111f565b60405161056b919061300e565b60405180910390f35b61058e60048036038101906105899190612dea565b61113f565b60405161059b9190612f00565b60405180910390f35b6105be60048036038101906105b99190612dea565b6111e4565b6040516105cb9190612f00565b60405180910390f35b6105ee60048036038101906105e991906132cc565b6111fb565b005b61060a6004803603810190610605919061332c565b61120b565b6040516106179190612f57565b60405180910390f35b61063a600480360381019061063591906133a2565b611292565b005b6106446112eb565b005b610660600480360381019061065b9190612dea565b61133c565b005b61067c60048036038101906106779190612dea565b611392565b005b61069860048036038101906106939190612f1b565b6113e7565b005b6106b460048036038101906106af9190612f1b565b61143a565b6040516106c19190612f57565b60405180910390f35b6106d2611039565b610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070890613455565b60405180910390fd5b61071b828261152b565b5050565b610727611039565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90613455565b60405180910390fd5b61077082826116a7565b5050565b60098054610781906134a4565b80601f01602080910402602001604051908101604052809291908181526020018280546107ad906134a4565b80156107fa5780601f106107cf576101008083540402835291602001916107fa565b820191906000526020600020905b8154815290600101906020018083116107dd57829003601f168201915b505050505081565b600061080f338484611823565b6001905092915050565b610821611039565b610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790613455565b60405180910390fd5b61086a82826119ee565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600654905090565b60006108ce848484611b5e565b610967843361096285600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b611823565b600190509392505050565b61097b81611f57565b50565b601281565b6000610a1e3384610a1985600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b611823565b6001905092915050565b610a3133610b66565b610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790613548565b60405180910390fd5b600160009054906101000a900460ff16610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab6906135b4565b60405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051610b099190613038565b60405180910390a1565b610b1b611039565b610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190613455565b60405180910390fd5b610b638161211e565b50565b6000610b7c8260006121d290919063ffffffff16565b9050919050565b6000600160009054906101000a900460ff16905090565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bc8611039565b610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90613455565b60405180910390fd5b60018160ff161115610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4590613620565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b610cb33361229a565b565b6000610d48600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b9050919050565b610d57611039565b610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d90613455565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e6033610b66565b610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690613548565b60405180910390fd5b610ea8816122f4565b50565b610eb433610b66565b610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea90613548565b60405180910390fd5b600160009054906101000a900460ff1615610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a9061368c565b60405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051610f8c9190613038565b60405180910390a1565b610f9e611039565b610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd490613455565b60405180910390fd5b8160099080519060200190610ff3929190612c9f565b5080600a908051906020019061100a929190612c9f565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600a805461109e906134a4565b80601f01602080910402602001604051908101604052809291908181526020018280546110ca906134a4565b80156111175780601f106110ec57610100808354040283529160200191611117565b820191906000526020600020905b8154815290600101906020018083116110fa57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900460ff1681565b60006111da33846111d585600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b611823565b6001905092915050565b60006111f1338484611b5e565b6001905092915050565b61120683838361234e565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61129a611039565b6112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090613455565b60405180910390fd5b6112e58484848461255d565b50505050565b6112f3611039565b611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990613455565b60405180910390fd5b61133a612759565b565b611344611039565b611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90613455565b60405180910390fd5b61138e338383612776565b5050565b61139a611039565b6113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090613455565b60405180910390fd5b6113e38282612958565b5050565b6113ef611039565b61142e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142590613455565b60405180910390fd5b61143781612ac8565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61148d82826121d2565b156114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906136f8565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61157d81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061161281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4278260405161169b9190612f57565b60405180910390a25050565b6116f981600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061178e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826040516118179190612f57565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a9061378a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061381c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119e19190612f57565b60405180910390a3505050565b60011515600760009054906101000a900460ff16151514611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90613888565b60405180910390fd5b611a9681600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611aee81600654611ef890919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b529190612f57565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc59061391a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c35906139ac565b60405180910390fd5b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890613a18565b60405180910390fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b90613a84565b60405180910390fd5b611db681600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eeb9190612f57565b60405180910390a3505050565b600082821115611f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3490613af0565b60405180910390fd5b60008284611f4b9190613b3f565b90508091505092915050565b600160009054906101000a900460ff1615611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e9061368c565b60405180910390fd5b611ff981600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205181600654611ef890919063ffffffff16565b600681905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b59190612f57565b60405180910390a350565b60008082846120cf9190613b73565b905083811015612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b90613c15565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590613ca7565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a90613d39565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6122ae816000612bf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b61230881600061148390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600160009054906101000a900460ff161561239e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123959061368c565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590613da5565b60405180910390fd5b6000828281019061243f9190612fc5565b9050612456816006546120c090919063ffffffff16565b6006819055506124ae81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254f9190612f57565b60405180910390a350505050565b6125af82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e49190612f57565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f91f8b835be584629107fbfe5be695e33c56ebe55697d7c8a30d309a2b8dce937848460405161274b929190613dd4565b60405180910390a350505050565b6000600760006101000a81548160ff021916908315150217905550565b6127c881600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285d81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128fd9190612f57565b60405180910390a38173ffffffffffffffffffffffffffffffffffffffff167f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4278260405161294b9190612f57565b60405180910390a2505050565b60011515600760009054906101000a900460ff161515146129ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a590613888565b60405180910390fd5b612a0081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c090919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a58816006546120c090919063ffffffff16565b6006819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612abc9190612f57565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2f90613e6f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c0282826121d2565b612c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3890613f01565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054612cab906134a4565b90600052602060002090601f016020900481019282612ccd5760008555612d14565b82601f10612ce657805160ff1916838001178555612d14565b82800160010185558215612d14579182015b82811115612d13578251825591602001919060010190612cf8565b5b509050612d219190612d25565b5090565b5b80821115612d3e576000816000905550600101612d26565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d8182612d56565b9050919050565b612d9181612d76565b8114612d9c57600080fd5b50565b600081359050612dae81612d88565b92915050565b6000819050919050565b612dc781612db4565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b60008060408385031215612e0157612e00612d4c565b5b6000612e0f85828601612d9f565b9250506020612e2085828601612dd5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e64578082015181840152602081019050612e49565b83811115612e73576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e9582612e2a565b612e9f8185612e35565b9350612eaf818560208601612e46565b612eb881612e79565b840191505092915050565b60006020820190508181036000830152612edd8184612e8a565b905092915050565b60008115159050919050565b612efa81612ee5565b82525050565b6000602082019050612f156000830184612ef1565b92915050565b600060208284031215612f3157612f30612d4c565b5b6000612f3f84828501612d9f565b91505092915050565b612f5181612db4565b82525050565b6000602082019050612f6c6000830184612f48565b92915050565b600080600060608486031215612f8b57612f8a612d4c565b5b6000612f9986828701612d9f565b9350506020612faa86828701612d9f565b9250506040612fbb86828701612dd5565b9150509250925092565b600060208284031215612fdb57612fda612d4c565b5b6000612fe984828501612dd5565b91505092915050565b600060ff82169050919050565b61300881612ff2565b82525050565b60006020820190506130236000830184612fff565b92915050565b61303281612d76565b82525050565b600060208201905061304d6000830184613029565b92915050565b61305c81612ff2565b811461306757600080fd5b50565b60008135905061307981613053565b92915050565b6000806040838503121561309657613095612d4c565b5b60006130a485828601612d9f565b92505060206130b58582860161306a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61310182612e79565b810181811067ffffffffffffffff821117156131205761311f6130c9565b5b80604052505050565b6000613133612d42565b905061313f82826130f8565b919050565b600067ffffffffffffffff82111561315f5761315e6130c9565b5b61316882612e79565b9050602081019050919050565b82818337600083830152505050565b600061319761319284613144565b613129565b9050828152602081018484840111156131b3576131b26130c4565b5b6131be848285613175565b509392505050565b600082601f8301126131db576131da6130bf565b5b81356131eb848260208601613184565b91505092915050565b6000806040838503121561320b5761320a612d4c565b5b600083013567ffffffffffffffff81111561322957613228612d51565b5b613235858286016131c6565b925050602083013567ffffffffffffffff81111561325657613255612d51565b5b613262858286016131c6565b9150509250929050565b600080fd5b600080fd5b60008083601f84011261328c5761328b6130bf565b5b8235905067ffffffffffffffff8111156132a9576132a861326c565b5b6020830191508360018202830111156132c5576132c4613271565b5b9250929050565b6000806000604084860312156132e5576132e4612d4c565b5b60006132f386828701612d9f565b935050602084013567ffffffffffffffff81111561331457613313612d51565b5b61332086828701613276565b92509250509250925092565b6000806040838503121561334357613342612d4c565b5b600061335185828601612d9f565b925050602061336285828601612d9f565b9150509250929050565b6000819050919050565b61337f8161336c565b811461338a57600080fd5b50565b60008135905061339c81613376565b92915050565b600080600080608085870312156133bc576133bb612d4c565b5b60006133ca87828801612d9f565b94505060206133db87828801612d9f565b93505060406133ec87828801612dd5565b92505060606133fd8782880161338d565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061343f602083612e35565b915061344a82613409565b602082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134bc57607f821691505b602082108114156134d0576134cf613475565b5b50919050565b7f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766560008201527f207468652050617573657220726f6c6500000000000000000000000000000000602082015250565b6000613532603083612e35565b915061353d826134d6565b604082019050919050565b6000602082019050818103600083015261356181613525565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061359e601483612e35565b91506135a982613568565b602082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f4c6576656c3a20506c6561736520757365206c6576656c203020746f20312e00600082015250565b600061360a601f83612e35565b9150613615826135d4565b602082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613676601083612e35565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006136e2601f83612e35565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613774602483612e35565b915061377f82613718565b604082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602283612e35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b7f4d6967726174696f6e2069732073746f70706564000000000000000000000000600082015250565b6000613872601483612e35565b915061387d8261383c565b602082019050919050565b600060208201905081810360008301526138a181613865565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613904602583612e35565b915061390f826138a8565b604082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613996602383612e35565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f53656e64657220697320626c61636b6c69737465640000000000000000000000600082015250565b6000613a02601583612e35565b9150613a0d826139cc565b602082019050919050565b60006020820190508181036000830152613a31816139f5565b9050919050565b7f526563697069656e7420697320626c61636b6c69737465640000000000000000600082015250565b6000613a6e601883612e35565b9150613a7982613a38565b602082019050919050565b60006020820190508181036000830152613a9d81613a61565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000613ada601e83612e35565b9150613ae582613aa4565b602082019050919050565b60006020820190508181036000830152613b0981613acd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b4a82612db4565b9150613b5583612db4565b925082821015613b6857613b67613b10565b5b828203905092915050565b6000613b7e82612db4565b9150613b8983612db4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613bbe57613bbd613b10565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613bff601b83612e35565b9150613c0a82613bc9565b602082019050919050565b60006020820190508181036000830152613c2e81613bf2565b9050919050565b7f426164204368696c64436861696e4d616e6167657250726f787920616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c91602283612e35565b9150613c9c82613c35565b604082019050919050565b60006020820190508181036000830152613cc081613c84565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d23602283612e35565b9150613d2e82613cc7565b604082019050919050565b60006020820190508181036000830152613d5281613d16565b9050919050565b7f596f75277265206e6f7420616c6c6f77656420746f206465706f736974000000600082015250565b6000613d8f601d83612e35565b9150613d9a82613d59565b602082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b613dce8161336c565b82525050565b6000604082019050613de96000830185612f48565b613df66020830184613dc5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e59602683612e35565b9150613e6482613dfd565b604082019050919050565b60006020820190508181036000830152613e8881613e4c565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613eeb602183612e35565b9150613ef682613e8f565b604082019050919050565b60006020820190508181036000830152613f1a81613ede565b905091905056fea2646970667358221220c60633ef24171d021a50ef38e8cfe1cfed4a381f5aaaa8bbcc8a8d787a2d7ad664736f6c634300080a0033

Deployed ByteCode Sourcemap

24850:2454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26909:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26734:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25038:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17143:165;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26023:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16300:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15878:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17779:273;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25521:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24942:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18461:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3972:118;;;:::i;:::-;;25234:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1497:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3181:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13157:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27118:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1714:77;;;:::i;:::-;;16032:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23952:140;;;:::i;:::-;;1614:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3761:116;;;:::i;:::-;;26319:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23141:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23507:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25135:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12947:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19178:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16626:173;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25399:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16862:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25709:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26157:79;;;:::i;:::-;;26535:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25893:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24247:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16172:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26909:119;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26992:28:::1;27005:6;27013;26992:12;:28::i;:::-;26909:119:::0;;:::o;26734:123::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26819:30:::1;26834:6;26842;26819:14;:30::i;:::-;26734:123:::0;;:::o;25038:32::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17143:165::-;17225:4;17242:36;17251:10;17263:7;17272:5;17242:8;:36::i;:::-;17296:4;17289:11;;17143:165;;;;:::o;26023:122::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26108:29:::1;26120:9;26130:6;26108:11;:29::i;:::-;26023:122:::0;;:::o;16300:113::-;16362:7;16389;:16;16397:7;16389:16;;;;;;;;;;;;;;;;16382:23;;16300:113;;;:::o;15878:91::-;15922:7;15949:12;;15942:19;;15878:91;:::o;17779:273::-;17885:4;17902:36;17912:6;17920:9;17931:6;17902:9;:36::i;:::-;17949:73;17958:6;17966:10;17978:43;18014:6;17978:11;:19;17990:6;17978:19;;;;;;;;;;;;;;;:31;17998:10;17978:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;17949:8;:73::i;:::-;18040:4;18033:11;;17779:273;;;;;:::o;25521:79::-;25575:17;25585:6;25575:9;:17::i;:::-;25521:79;:::o;24942:35::-;24975:2;24942:35;:::o;18461:214::-;18549:4;18566:79;18575:10;18587:7;18596:48;18633:10;18596:11;:23;18608:10;18596:23;;;;;;;;;;;;;;;:32;18620:7;18596:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;18566:8;:79::i;:::-;18663:4;18656:11;;18461:214;;;;:::o;3972:118::-;1396:20;1405:10;1396:8;:20::i;:::-;1388:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;3617:7:::1;;;;;;;;;;;3609:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;4041:5:::2;4031:7;;:15;;;;;;;;;;;;;;;;;;4062:20;4071:10;4062:20;;;;;;:::i;:::-;;;;;;;;3972:118::o:0;25234:157::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25332:51:::1;25357:25;25332:24;:51::i;:::-;25234:157:::0;:::o;1497:109::-;1553:4;1577:21;1590:7;1577:8;:12;;:21;;;;:::i;:::-;1570:28;;1497:109;;;:::o;3181:78::-;3220:4;3244:7;;;;;;;;;;;3237:14;;3181:78;:::o;13157:82::-;;;;;;;;;;;;;:::o;27118:183::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;27219:1:::1;27212:5;:8;;;;27204:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;27288:5;27267:9;:18;27277:7;27267:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;27118:183:::0;;:::o;1714:77::-;1758:25;1772:10;1758:13;:25::i;:::-;1714:77::o;16032:132::-;16089:7;16116:40;16139:7;:16;16147:7;16139:16;;;;;;;;;;;;;;;;16116:9;:18;16126:7;16116:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;16109:47;;16032:132;;;:::o;23952:140::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24051:1:::1;24014:40;;24035:6;;;;;;;;;;;24014:40;;;;;;;;;;;;24082:1;24065:6;;:19;;;;;;;;;;;;;;;;;;23952:140::o:0;1614:92::-;1396:20;1405:10;1396:8;:20::i;:::-;1388:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;1679:19:::1;1690:7;1679:10;:19::i;:::-;1614:92:::0;:::o;3761:116::-;1396:20;1405:10;1396:8;:20::i;:::-;1388:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;3418:7:::1;;;;;;;;;;;3417:8;3409:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;3831:4:::2;3821:7:::0;::::2;:14;;;;;;;;;;;;;;;;;;3851:18;3858:10;3851:18;;;;;;:::i;:::-;;;;;;;;3761:116::o:0;26319:146::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26425:5:::1;26418:4;:12;;;;;;;;;;;;:::i;:::-;;26450:7;26441:6;:16;;;;;;;;;;;;:::i;:::-;;26319:146:::0;;:::o;23141:79::-;23179:7;23206:6;;;;;;;;;;;23199:13;;23141:79;:::o;23507:92::-;23547:4;23585:6;;;;;;;;;;;23571:20;;:10;:20;;;23564:27;;23507:92;:::o;25135:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12947:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;19178:224::-;19271:4;19288:84;19297:10;19309:7;19318:53;19355:15;19318:11;:23;19330:10;19318:23;;;;;;;;;;;;;;;:32;19342:7;19318:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;19288:8;:84::i;:::-;19390:4;19383:11;;19178:224;;;;:::o;16626:173::-;16712:4;16729:40;16739:10;16751:9;16762:6;16729:9;:40::i;:::-;16787:4;16780:11;;16626:173;;;;:::o;25399:114::-;25478:27;25487:4;25493:11;;25478:8;:27::i;:::-;25399:114;;;:::o;16862:134::-;16934:7;16961:11;:18;16973:5;16961:18;;;;;;;;;;;;;;;:27;16980:7;16961:27;;;;;;;;;;;;;;;;16954:34;;16862:134;;;;:::o;25709:176::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25830:47:::1;25845:6;25852:9;25862:6;25869:7;25830:14;:47::i;:::-;25709:176:::0;;;;:::o;26157:79::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26212:16:::1;:14;:16::i;:::-;26157:79::o:0;26535:145::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26626:46:::1;26644:10;26655:9;26665:6;26626:17;:46::i;:::-;26535:145:::0;;:::o;25893:122::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25978:29:::1;25990:9;26000:6;25978:11;:29::i;:::-;25893:122:::0;;:::o;24247:109::-;23353:9;:7;:9::i;:::-;23345:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24320:28:::1;24339:8;24320:18;:28::i;:::-;24247:109:::0;:::o;16172:116::-;16235:7;16262:9;:18;16272:7;16262:18;;;;;;;;;;;;;;;;16255:25;;16172:116;;;:::o;274:178::-;352:18;356:4;362:7;352:3;:18::i;:::-;351:19;343:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;440:4;417;:11;;:20;429:7;417:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;274:178;;:::o;21260:223::-;21354:29;21376:6;21354:9;:17;21364:6;21354:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21334:9;:17;21344:6;21334:17;;;;;;;;;;;;;;;:49;;;;21412:27;21432:6;21412:7;:15;21420:6;21412:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;21394:7;:15;21402:6;21394:15;;;;;;;;;;;;;;;:45;;;;21460:6;21455:20;;;21468:6;21455:20;;;;;;:::i;:::-;;;;;;;;21260:223;;:::o;20964:227::-;21060:29;21082:6;21060:9;:17;21070:6;21060:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21040:9;:17;21050:6;21040:17;;;;;;;;;;;;;;;:49;;;;21118:27;21138:6;21118:7;:15;21126:6;21118:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;21100:7;:15;21108:6;21100:15;;;;;;;;;;;;;;;:45;;;;21168:6;21161:22;;;21176:6;21161:22;;;;;;:::i;:::-;;;;;;;;20964:227;;:::o;21929:335::-;22039:1;22022:19;;:5;:19;;;;22014:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22120:1;22101:21;;:7;:21;;;;22093:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22204:5;22174:11;:18;22186:5;22174:18;;;;;;;;;;;;;;;:27;22193:7;22174:27;;;;;;;;;;;;;;;:35;;;;22241:7;22225:31;;22234:5;22225:31;;;22250:5;22225:31;;;;;;:::i;:::-;;;;;;;;21929:335;;;:::o;15338:308::-;15440:4;15422:22;;:14;;;;;;;;;;;:22;;;15414:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15503:32;15528:6;15503:9;:20;15513:9;15503:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15480:9;:20;15490:9;15480:20;;;;;;;;;;;;;;;:55;;;;15561:24;15578:6;15561:12;;:16;;:24;;;;:::i;:::-;15546:12;:39;;;;15628:1;15601:37;;15610:9;15601:37;;;15631:6;15601:37;;;;;;:::i;:::-;;;;;;;;15338:308;;:::o;19892:577::-;20008:1;19990:20;;:6;:20;;;;19982:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20092:1;20071:23;;:9;:23;;;;20063:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:1;20157:9;:17;20167:6;20157:17;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;20149:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20248:1;20224:9;:20;20234:9;20224:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;20216:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20313:29;20335:6;20313:9;:17;20323:6;20313:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20293:9;:17;20303:6;20293:17;;;;;;;;;;;;;;;:49;;;;20376:32;20401:6;20376:9;:20;20386:9;20376:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20353:9;:20;20363:9;20353:20;;;;;;;;;;;;;;;:55;;;;20443:9;20426:35;;20435:6;20426:35;;;20454:6;20426:35;;;;;;:::i;:::-;;;;;;;;19892:577;;;:::o;9238:184::-;9296:7;9329:1;9324;:6;;9316:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9376:9;9392:1;9388;:5;;;;:::i;:::-;9376:17;;9413:1;9406:8;;;9238:184;;;;:::o;14171:250::-;3418:7;;;;;;;;;;;3417:8;3409:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14264:33:::1;14290:6;14264:9;:21;14274:10;14264:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;14240:9;:21;14250:10;14240:21;;;;;;;;;;;;;;;:57;;;;14323:24;14340:6;14323:12;;:16;;:24;;;;:::i;:::-;14308:12;:39;;;;14402:1;14373:40;;14382:10;14373:40;;;14406:6;14373:40;;;;;;:::i;:::-;;;;;;;;14171:250:::0;:::o;8782:181::-;8840:7;8860:9;8876:1;8872;:5;;;;:::i;:::-;8860:17;;8901:1;8896;:6;;8888:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8954:1;8947:8;;;8782:181;;;;:::o;13406:244::-;13540:1;13503:39;;:25;:39;;;;13495:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13617:25;13592:22;;:50;;;;;;;;;;;;;;;;;;13406:244;:::o;810:203::-;882:4;926:1;907:21;;:7;:21;;;;899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;985:4;:11;;:20;997:7;985:20;;;;;;;;;;;;;;;;;;;;;;;;;978:27;;810:203;;;;:::o;1929:130::-;1989:24;2005:7;1989:8;:15;;:24;;;;:::i;:::-;2043:7;2029:22;;;;;;;;;;;;1929:130;:::o;1799:122::-;1856:21;1869:7;1856:8;:12;;:21;;;;:::i;:::-;1905:7;1893:20;;;;;;;;;;;;1799:122;:::o;13658:505::-;3418:7;;;;;;;;;;;3417:8;3409:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:22:::1;;;;;;;;;;;13760:36;;:10;:36;;;13752:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13843:14;13871:11;;13860:34;;;;;;;:::i;:::-;13843:51;;14015:24;14032:6;14015:12;;:16;;:24;;;;:::i;:::-;14000:12;:39;;;;14068:27;14088:6;14068:9;:15;14078:4;14068:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14050:9;:15;14060:4;14050:15;;;;;;;;;;;;;;;:45;;;;14142:4;14121:34;;14138:1;14121:34;;;14148:6;14121:34;;;;;;:::i;:::-;;;;;;;;13741:422;13658:505:::0;;;:::o;14547:351::-;14679:29;14701:6;14679:9;:17;14689:6;14679:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14659:9;:17;14669:6;14659:17;;;;;;;;;;;;;;;:49;;;;14742:32;14767:6;14742:9;:20;14752:9;14742:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14719:9;:20;14729:9;14719:20;;;;;;;;;;;;;;;:55;;;;14807:9;14790:35;;14799:6;14790:35;;;14818:6;14790:35;;;;;;:::i;:::-;;;;;;;;14863:9;14841:49;;14855:6;14841:49;;;14874:6;14882:7;14841:49;;;;;;;:::i;:::-;;;;;;;;14547:351;;;;:::o;15737:76::-;15800:5;15783:14;;:22;;;;;;;;;;;;;;;;;;15737:76::o;20582:307::-;20700:29;20722:6;20700:9;:17;20710:6;20700:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;20680:9;:17;20690:6;20680:17;;;;;;;;;;;;;;;:49;;;;20761:30;20784:6;20761:7;:18;20769:9;20761:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;20740:7;:18;20748:9;20740:18;;;;;;;;;;;;;;;:51;;;;20824:9;20807:35;;20816:6;20807:35;;;20835:6;20807:35;;;;;;:::i;:::-;;;;;;;;20863:9;20858:23;;;20874:6;20858:23;;;;;;:::i;:::-;;;;;;;;20582:307;;;:::o;14964:308::-;15066:4;15048:22;;:14;;;;;;;;;;;:22;;;15040:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;15129:32;15154:6;15129:9;:20;15139:9;15129:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15106:9;:20;15116:9;15106:20;;;;;;;;;;;;;;;:55;;;;15187:24;15204:6;15187:12;;:16;;:24;;;;:::i;:::-;15172:12;:39;;;;15247:9;15227:37;;15244:1;15227:37;;;15257:6;15227:37;;;;;;:::i;:::-;;;;;;;;14964:308;;:::o;24462:229::-;24556:1;24536:22;;:8;:22;;;;24528:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24646:8;24617:38;;24638:6;;;;;;;;;;;24617:38;;;;;;;;;;;;24675:8;24666:6;;:17;;;;;;;;;;;;;;;;;;24462:229;:::o;532:183::-;612:18;616:4;622:7;612:3;:18::i;:::-;604:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;702:5;679:4;:11;;:20;691:7;679:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;532:183;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:99::-;1729:6;1763:5;1757:12;1747:22;;1677:99;;;:::o;1782:169::-;1866:11;1900:6;1895:3;1888:19;1940:4;1935:3;1931:14;1916:29;;1782:169;;;;:::o;1957:307::-;2025:1;2035:113;2049:6;2046:1;2043:13;2035:113;;;2134:1;2129:3;2125:11;2119:18;2115:1;2110:3;2106:11;2099:39;2071:2;2068:1;2064:10;2059:15;;2035:113;;;2166:6;2163:1;2160:13;2157:101;;;2246:1;2237:6;2232:3;2228:16;2221:27;2157:101;2006:258;1957:307;;;:::o;2270:102::-;2311:6;2362:2;2358:7;2353:2;2346:5;2342:14;2338:28;2328:38;;2270:102;;;:::o;2378:364::-;2466:3;2494:39;2527:5;2494:39;:::i;:::-;2549:71;2613:6;2608:3;2549:71;:::i;:::-;2542:78;;2629:52;2674:6;2669:3;2662:4;2655:5;2651:16;2629:52;:::i;:::-;2706:29;2728:6;2706:29;:::i;:::-;2701:3;2697:39;2690:46;;2470:272;2378:364;;;;:::o;2748:313::-;2861:4;2899:2;2888:9;2884:18;2876:26;;2948:9;2942:4;2938:20;2934:1;2923:9;2919:17;2912:47;2976:78;3049:4;3040:6;2976:78;:::i;:::-;2968:86;;2748:313;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:329::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:118::-;5994:22;6010:5;5994:22;:::i;:::-;5987:5;5984:33;5974:61;;6031:1;6028;6021:12;5974:61;5923:118;:::o;6047:135::-;6091:5;6129:6;6116:20;6107:29;;6145:31;6170:5;6145:31;:::i;:::-;6047:135;;;;:::o;6188:470::-;6254:6;6262;6311:2;6299:9;6290:7;6286:23;6282:32;6279:119;;;6317:79;;:::i;:::-;6279:119;6437:1;6462:53;6507:7;6498:6;6487:9;6483:22;6462:53;:::i;:::-;6452:63;;6408:117;6564:2;6590:51;6633:7;6624:6;6613:9;6609:22;6590:51;:::i;:::-;6580:61;;6535:116;6188:470;;;;;:::o;6664:117::-;6773:1;6770;6763:12;6787:117;6896:1;6893;6886:12;6910:180;6958:77;6955:1;6948:88;7055:4;7052:1;7045:15;7079:4;7076:1;7069:15;7096:281;7179:27;7201:4;7179:27;:::i;:::-;7171:6;7167:40;7309:6;7297:10;7294:22;7273:18;7261:10;7258:34;7255:62;7252:88;;;7320:18;;:::i;:::-;7252:88;7360:10;7356:2;7349:22;7139:238;7096:281;;:::o;7383:129::-;7417:6;7444:20;;:::i;:::-;7434:30;;7473:33;7501:4;7493:6;7473:33;:::i;:::-;7383:129;;;:::o;7518:308::-;7580:4;7670:18;7662:6;7659:30;7656:56;;;7692:18;;:::i;:::-;7656:56;7730:29;7752:6;7730:29;:::i;:::-;7722:37;;7814:4;7808;7804:15;7796:23;;7518:308;;;:::o;7832:154::-;7916:6;7911:3;7906;7893:30;7978:1;7969:6;7964:3;7960:16;7953:27;7832:154;;;:::o;7992:412::-;8070:5;8095:66;8111:49;8153:6;8111:49;:::i;:::-;8095:66;:::i;:::-;8086:75;;8184:6;8177:5;8170:21;8222:4;8215:5;8211:16;8260:3;8251:6;8246:3;8242:16;8239:25;8236:112;;;8267:79;;:::i;:::-;8236:112;8357:41;8391:6;8386:3;8381;8357:41;:::i;:::-;8076:328;7992:412;;;;;:::o;8424:340::-;8480:5;8529:3;8522:4;8514:6;8510:17;8506:27;8496:122;;8537:79;;:::i;:::-;8496:122;8654:6;8641:20;8679:79;8754:3;8746:6;8739:4;8731:6;8727:17;8679:79;:::i;:::-;8670:88;;8486:278;8424:340;;;;:::o;8770:834::-;8858:6;8866;8915:2;8903:9;8894:7;8890:23;8886:32;8883:119;;;8921:79;;:::i;:::-;8883:119;9069:1;9058:9;9054:17;9041:31;9099:18;9091:6;9088:30;9085:117;;;9121:79;;:::i;:::-;9085:117;9226:63;9281:7;9272:6;9261:9;9257:22;9226:63;:::i;:::-;9216:73;;9012:287;9366:2;9355:9;9351:18;9338:32;9397:18;9389:6;9386:30;9383:117;;;9419:79;;:::i;:::-;9383:117;9524:63;9579:7;9570:6;9559:9;9555:22;9524:63;:::i;:::-;9514:73;;9309:288;8770:834;;;;;:::o;9610:117::-;9719:1;9716;9709:12;9733:117;9842:1;9839;9832:12;9869:552;9926:8;9936:6;9986:3;9979:4;9971:6;9967:17;9963:27;9953:122;;9994:79;;:::i;:::-;9953:122;10107:6;10094:20;10084:30;;10137:18;10129:6;10126:30;10123:117;;;10159:79;;:::i;:::-;10123:117;10273:4;10265:6;10261:17;10249:29;;10327:3;10319:4;10311:6;10307:17;10297:8;10293:32;10290:41;10287:128;;;10334:79;;:::i;:::-;10287:128;9869:552;;;;;:::o;10427:672::-;10506:6;10514;10522;10571:2;10559:9;10550:7;10546:23;10542:32;10539:119;;;10577:79;;:::i;:::-;10539:119;10697:1;10722:53;10767:7;10758:6;10747:9;10743:22;10722:53;:::i;:::-;10712:63;;10668:117;10852:2;10841:9;10837:18;10824:32;10883:18;10875:6;10872:30;10869:117;;;10905:79;;:::i;:::-;10869:117;11018:64;11074:7;11065:6;11054:9;11050:22;11018:64;:::i;:::-;11000:82;;;;10795:297;10427:672;;;;;:::o;11105:474::-;11173:6;11181;11230:2;11218:9;11209:7;11205:23;11201:32;11198:119;;;11236:79;;:::i;:::-;11198:119;11356:1;11381:53;11426:7;11417:6;11406:9;11402:22;11381:53;:::i;:::-;11371:63;;11327:117;11483:2;11509:53;11554:7;11545:6;11534:9;11530:22;11509:53;:::i;:::-;11499:63;;11454:118;11105:474;;;;;:::o;11585:77::-;11622:7;11651:5;11640:16;;11585:77;;;:::o;11668:122::-;11741:24;11759:5;11741:24;:::i;:::-;11734:5;11731:35;11721:63;;11780:1;11777;11770:12;11721:63;11668:122;:::o;11796:139::-;11842:5;11880:6;11867:20;11858:29;;11896:33;11923:5;11896:33;:::i;:::-;11796:139;;;;:::o;11941:765::-;12027:6;12035;12043;12051;12100:3;12088:9;12079:7;12075:23;12071:33;12068:120;;;12107:79;;:::i;:::-;12068:120;12227:1;12252:53;12297:7;12288:6;12277:9;12273:22;12252:53;:::i;:::-;12242:63;;12198:117;12354:2;12380:53;12425:7;12416:6;12405:9;12401:22;12380:53;:::i;:::-;12370:63;;12325:118;12482:2;12508:53;12553:7;12544:6;12533:9;12529:22;12508:53;:::i;:::-;12498:63;;12453:118;12610:2;12636:53;12681:7;12672:6;12661:9;12657:22;12636:53;:::i;:::-;12626:63;;12581:118;11941:765;;;;;;;:::o;12712:182::-;12852:34;12848:1;12840:6;12836:14;12829:58;12712:182;:::o;12900:366::-;13042:3;13063:67;13127:2;13122:3;13063:67;:::i;:::-;13056:74;;13139:93;13228:3;13139:93;:::i;:::-;13257:2;13252:3;13248:12;13241:19;;12900:366;;;:::o;13272:419::-;13438:4;13476:2;13465:9;13461:18;13453:26;;13525:9;13519:4;13515:20;13511:1;13500:9;13496:17;13489:47;13553:131;13679:4;13553:131;:::i;:::-;13545:139;;13272:419;;;:::o;13697:180::-;13745:77;13742:1;13735:88;13842:4;13839:1;13832:15;13866:4;13863:1;13856:15;13883:320;13927:6;13964:1;13958:4;13954:12;13944:22;;14011:1;14005:4;14001:12;14032:18;14022:81;;14088:4;14080:6;14076:17;14066:27;;14022:81;14150:2;14142:6;14139:14;14119:18;14116:38;14113:84;;;14169:18;;:::i;:::-;14113:84;13934:269;13883:320;;;:::o;14209:235::-;14349:34;14345:1;14337:6;14333:14;14326:58;14418:18;14413:2;14405:6;14401:15;14394:43;14209:235;:::o;14450:366::-;14592:3;14613:67;14677:2;14672:3;14613:67;:::i;:::-;14606:74;;14689:93;14778:3;14689:93;:::i;:::-;14807:2;14802:3;14798:12;14791:19;;14450:366;;;:::o;14822:419::-;14988:4;15026:2;15015:9;15011:18;15003:26;;15075:9;15069:4;15065:20;15061:1;15050:9;15046:17;15039:47;15103:131;15229:4;15103:131;:::i;:::-;15095:139;;14822:419;;;:::o;15247:170::-;15387:22;15383:1;15375:6;15371:14;15364:46;15247:170;:::o;15423:366::-;15565:3;15586:67;15650:2;15645:3;15586:67;:::i;:::-;15579:74;;15662:93;15751:3;15662:93;:::i;:::-;15780:2;15775:3;15771:12;15764:19;;15423:366;;;:::o;15795:419::-;15961:4;15999:2;15988:9;15984:18;15976:26;;16048:9;16042:4;16038:20;16034:1;16023:9;16019:17;16012:47;16076:131;16202:4;16076:131;:::i;:::-;16068:139;;15795:419;;;:::o;16220:181::-;16360:33;16356:1;16348:6;16344:14;16337:57;16220:181;:::o;16407:366::-;16549:3;16570:67;16634:2;16629:3;16570:67;:::i;:::-;16563:74;;16646:93;16735:3;16646:93;:::i;:::-;16764:2;16759:3;16755:12;16748:19;;16407:366;;;:::o;16779:419::-;16945:4;16983:2;16972:9;16968:18;16960:26;;17032:9;17026:4;17022:20;17018:1;17007:9;17003:17;16996:47;17060:131;17186:4;17060:131;:::i;:::-;17052:139;;16779:419;;;:::o;17204:166::-;17344:18;17340:1;17332:6;17328:14;17321:42;17204:166;:::o;17376:366::-;17518:3;17539:67;17603:2;17598:3;17539:67;:::i;:::-;17532:74;;17615:93;17704:3;17615:93;:::i;:::-;17733:2;17728:3;17724:12;17717:19;;17376:366;;;:::o;17748:419::-;17914:4;17952:2;17941:9;17937:18;17929:26;;18001:9;17995:4;17991:20;17987:1;17976:9;17972:17;17965:47;18029:131;18155:4;18029:131;:::i;:::-;18021:139;;17748:419;;;:::o;18173:181::-;18313:33;18309:1;18301:6;18297:14;18290:57;18173:181;:::o;18360:366::-;18502:3;18523:67;18587:2;18582:3;18523:67;:::i;:::-;18516:74;;18599:93;18688:3;18599:93;:::i;:::-;18717:2;18712:3;18708:12;18701:19;;18360:366;;;:::o;18732:419::-;18898:4;18936:2;18925:9;18921:18;18913:26;;18985:9;18979:4;18975:20;18971:1;18960:9;18956:17;18949:47;19013:131;19139:4;19013:131;:::i;:::-;19005:139;;18732:419;;;:::o;19157:223::-;19297:34;19293:1;19285:6;19281:14;19274:58;19366:6;19361:2;19353:6;19349:15;19342:31;19157:223;:::o;19386:366::-;19528:3;19549:67;19613:2;19608:3;19549:67;:::i;:::-;19542:74;;19625:93;19714:3;19625:93;:::i;:::-;19743:2;19738:3;19734:12;19727:19;;19386:366;;;:::o;19758:419::-;19924:4;19962:2;19951:9;19947:18;19939:26;;20011:9;20005:4;20001:20;19997:1;19986:9;19982:17;19975:47;20039:131;20165:4;20039:131;:::i;:::-;20031:139;;19758:419;;;:::o;20183:221::-;20323:34;20319:1;20311:6;20307:14;20300:58;20392:4;20387:2;20379:6;20375:15;20368:29;20183:221;:::o;20410:366::-;20552:3;20573:67;20637:2;20632:3;20573:67;:::i;:::-;20566:74;;20649:93;20738:3;20649:93;:::i;:::-;20767:2;20762:3;20758:12;20751:19;;20410:366;;;:::o;20782:419::-;20948:4;20986:2;20975:9;20971:18;20963:26;;21035:9;21029:4;21025:20;21021:1;21010:9;21006:17;20999:47;21063:131;21189:4;21063:131;:::i;:::-;21055:139;;20782:419;;;:::o;21207:170::-;21347:22;21343:1;21335:6;21331:14;21324:46;21207:170;:::o;21383:366::-;21525:3;21546:67;21610:2;21605:3;21546:67;:::i;:::-;21539:74;;21622:93;21711:3;21622:93;:::i;:::-;21740:2;21735:3;21731:12;21724:19;;21383:366;;;:::o;21755:419::-;21921:4;21959:2;21948:9;21944:18;21936:26;;22008:9;22002:4;21998:20;21994:1;21983:9;21979:17;21972:47;22036:131;22162:4;22036:131;:::i;:::-;22028:139;;21755:419;;;:::o;22180:224::-;22320:34;22316:1;22308:6;22304:14;22297:58;22389:7;22384:2;22376:6;22372:15;22365:32;22180:224;:::o;22410:366::-;22552:3;22573:67;22637:2;22632:3;22573:67;:::i;:::-;22566:74;;22649:93;22738:3;22649:93;:::i;:::-;22767:2;22762:3;22758:12;22751:19;;22410:366;;;:::o;22782:419::-;22948:4;22986:2;22975:9;22971:18;22963:26;;23035:9;23029:4;23025:20;23021:1;23010:9;23006:17;22999:47;23063:131;23189:4;23063:131;:::i;:::-;23055:139;;22782:419;;;:::o;23207:222::-;23347:34;23343:1;23335:6;23331:14;23324:58;23416:5;23411:2;23403:6;23399:15;23392:30;23207:222;:::o;23435:366::-;23577:3;23598:67;23662:2;23657:3;23598:67;:::i;:::-;23591:74;;23674:93;23763:3;23674:93;:::i;:::-;23792:2;23787:3;23783:12;23776:19;;23435:366;;;:::o;23807:419::-;23973:4;24011:2;24000:9;23996:18;23988:26;;24060:9;24054:4;24050:20;24046:1;24035:9;24031:17;24024:47;24088:131;24214:4;24088:131;:::i;:::-;24080:139;;23807:419;;;:::o;24232:171::-;24372:23;24368:1;24360:6;24356:14;24349:47;24232:171;:::o;24409:366::-;24551:3;24572:67;24636:2;24631:3;24572:67;:::i;:::-;24565:74;;24648:93;24737:3;24648:93;:::i;:::-;24766:2;24761:3;24757:12;24750:19;;24409:366;;;:::o;24781:419::-;24947:4;24985:2;24974:9;24970:18;24962:26;;25034:9;25028:4;25024:20;25020:1;25009:9;25005:17;24998:47;25062:131;25188:4;25062:131;:::i;:::-;25054:139;;24781:419;;;:::o;25206:174::-;25346:26;25342:1;25334:6;25330:14;25323:50;25206:174;:::o;25386:366::-;25528:3;25549:67;25613:2;25608:3;25549:67;:::i;:::-;25542:74;;25625:93;25714:3;25625:93;:::i;:::-;25743:2;25738:3;25734:12;25727:19;;25386:366;;;:::o;25758:419::-;25924:4;25962:2;25951:9;25947:18;25939:26;;26011:9;26005:4;26001:20;25997:1;25986:9;25982:17;25975:47;26039:131;26165:4;26039:131;:::i;:::-;26031:139;;25758:419;;;:::o;26183:180::-;26323:32;26319:1;26311:6;26307:14;26300:56;26183:180;:::o;26369:366::-;26511:3;26532:67;26596:2;26591:3;26532:67;:::i;:::-;26525:74;;26608:93;26697:3;26608:93;:::i;:::-;26726:2;26721:3;26717:12;26710:19;;26369:366;;;:::o;26741:419::-;26907:4;26945:2;26934:9;26930:18;26922:26;;26994:9;26988:4;26984:20;26980:1;26969:9;26965:17;26958:47;27022:131;27148:4;27022:131;:::i;:::-;27014:139;;26741:419;;;:::o;27166:180::-;27214:77;27211:1;27204:88;27311:4;27308:1;27301:15;27335:4;27332:1;27325:15;27352:191;27392:4;27412:20;27430:1;27412:20;:::i;:::-;27407:25;;27446:20;27464:1;27446:20;:::i;:::-;27441:25;;27485:1;27482;27479:8;27476:34;;;27490:18;;:::i;:::-;27476:34;27535:1;27532;27528:9;27520:17;;27352:191;;;;:::o;27549:305::-;27589:3;27608:20;27626:1;27608:20;:::i;:::-;27603:25;;27642:20;27660:1;27642:20;:::i;:::-;27637:25;;27796:1;27728:66;27724:74;27721:1;27718:81;27715:107;;;27802:18;;:::i;:::-;27715:107;27846:1;27843;27839:9;27832:16;;27549:305;;;;:::o;27860:177::-;28000:29;27996:1;27988:6;27984:14;27977:53;27860:177;:::o;28043:366::-;28185:3;28206:67;28270:2;28265:3;28206:67;:::i;:::-;28199:74;;28282:93;28371:3;28282:93;:::i;:::-;28400:2;28395:3;28391:12;28384:19;;28043:366;;;:::o;28415:419::-;28581:4;28619:2;28608:9;28604:18;28596:26;;28668:9;28662:4;28658:20;28654:1;28643:9;28639:17;28632:47;28696:131;28822:4;28696:131;:::i;:::-;28688:139;;28415:419;;;:::o;28840:221::-;28980:34;28976:1;28968:6;28964:14;28957:58;29049:4;29044:2;29036:6;29032:15;29025:29;28840:221;:::o;29067:366::-;29209:3;29230:67;29294:2;29289:3;29230:67;:::i;:::-;29223:74;;29306:93;29395:3;29306:93;:::i;:::-;29424:2;29419:3;29415:12;29408:19;;29067:366;;;:::o;29439:419::-;29605:4;29643:2;29632:9;29628:18;29620:26;;29692:9;29686:4;29682:20;29678:1;29667:9;29663:17;29656:47;29720:131;29846:4;29720:131;:::i;:::-;29712:139;;29439:419;;;:::o;29864:221::-;30004:34;30000:1;29992:6;29988:14;29981:58;30073:4;30068:2;30060:6;30056:15;30049:29;29864:221;:::o;30091:366::-;30233:3;30254:67;30318:2;30313:3;30254:67;:::i;:::-;30247:74;;30330:93;30419:3;30330:93;:::i;:::-;30448:2;30443:3;30439:12;30432:19;;30091:366;;;:::o;30463:419::-;30629:4;30667:2;30656:9;30652:18;30644:26;;30716:9;30710:4;30706:20;30702:1;30691:9;30687:17;30680:47;30744:131;30870:4;30744:131;:::i;:::-;30736:139;;30463:419;;;:::o;30888:179::-;31028:31;31024:1;31016:6;31012:14;31005:55;30888:179;:::o;31073:366::-;31215:3;31236:67;31300:2;31295:3;31236:67;:::i;:::-;31229:74;;31312:93;31401:3;31312:93;:::i;:::-;31430:2;31425:3;31421:12;31414:19;;31073:366;;;:::o;31445:419::-;31611:4;31649:2;31638:9;31634:18;31626:26;;31698:9;31692:4;31688:20;31684:1;31673:9;31669:17;31662:47;31726:131;31852:4;31726:131;:::i;:::-;31718:139;;31445:419;;;:::o;31870:118::-;31957:24;31975:5;31957:24;:::i;:::-;31952:3;31945:37;31870:118;;:::o;31994:332::-;32115:4;32153:2;32142:9;32138:18;32130:26;;32166:71;32234:1;32223:9;32219:17;32210:6;32166:71;:::i;:::-;32247:72;32315:2;32304:9;32300:18;32291:6;32247:72;:::i;:::-;31994:332;;;;;:::o;32332:225::-;32472:34;32468:1;32460:6;32456:14;32449:58;32541:8;32536:2;32528:6;32524:15;32517:33;32332:225;:::o;32563:366::-;32705:3;32726:67;32790:2;32785:3;32726:67;:::i;:::-;32719:74;;32802:93;32891:3;32802:93;:::i;:::-;32920:2;32915:3;32911:12;32904:19;;32563:366;;;:::o;32935:419::-;33101:4;33139:2;33128:9;33124:18;33116:26;;33188:9;33182:4;33178:20;33174:1;33163:9;33159:17;33152:47;33216:131;33342:4;33216:131;:::i;:::-;33208:139;;32935:419;;;:::o;33360:220::-;33500:34;33496:1;33488:6;33484:14;33477:58;33569:3;33564:2;33556:6;33552:15;33545:28;33360:220;:::o;33586:366::-;33728:3;33749:67;33813:2;33808:3;33749:67;:::i;:::-;33742:74;;33825:93;33914:3;33825:93;:::i;:::-;33943:2;33938:3;33934:12;33927:19;;33586:366;;;:::o;33958:419::-;34124:4;34162:2;34151:9;34147:18;34139:26;;34211:9;34205:4;34201:20;34197:1;34186:9;34182:17;34175:47;34239:131;34365:4;34239:131;:::i;:::-;34231:139;;33958:419;;;:::o

Swarm Source

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