Contract 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x09d744d5ec0be4945c5032f7f64af469ab6625d819af769360388533e9ba376bApprove128988532021-11-23 20:22:5913 days 21 mins ago0xcd493c8f9a10b5a32af719bd439ccb467e74cce4 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0x0837735e9e092387e05929b97c4ce68d7bbe4385baf681e35a5a5dcd39263f4fApprove127513532021-11-18 12:59:5918 days 7 hrs ago0x33e1857a7029ddacb7210684d202292d8e79edf9 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0x9d4bc2fbe2dc2b3a8cd69fb101671ef1e9f6b39a1a08208f4a14ffe2f209503bApprove126399522021-11-14 10:44:0822 days 10 hrs ago0x9e75c6d9c781208f4961182963804196b879ae23 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0xccff42030026d76ac3f1ee49e75ec3e9f4be0ceb70d4f7a1364d442942fe56e2Approve125611502021-11-11 15:07:3025 days 5 hrs ago0x05e0a290022dbdf1d713868186752c3d761d1c7b IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0x8a95a405e42aebacc99cdd1047b291686bf6b997d509b4e889ea7cbbc8bcd093Approve123777662021-11-05 3:42:4331 days 17 hrs ago0xd519b3f1492dc40b0d3264c20020718b5c1ffae0 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0xcaf8909a2522e4a54c233393d08bf39374845df34ec49e02bd40dd4a8b12c6f3Approve123773822021-11-05 3:22:4531 days 17 hrs ago0x3ddf3ef8413b5f147ddafc86271d831c8d384035 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0xe7e9f8ede92cfa4f579289ad1b9ecb2615648dc9562505086da11b1ecda4d636Approve123770352021-11-05 3:05:2331 days 17 hrs ago0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0x7158ca449b18a244a9702d217168a7829e88e6ad8eeb21785f1f3dff5f5c6f41Purge Contract B...123769632021-11-05 3:01:4731 days 17 hrs ago0x537a5bd34aa03a34ef3c59b9c65da1e4428cb32c IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000152455
0xfb6f398ce0ae4af8ab28cc1f4cd8bb77fbb66337ec3b2780c5fd08ffa9fd8a2eApprove123076672021-11-02 15:02:1034 days 5 hrs ago0x58c344a1745917dc321803201d5b73db99058566 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0x7cf31cf8eb7d23493b49b971852bef9f01f76630a54ec3e5767e3741880c1d26Approve122986982021-11-02 7:23:5334 days 13 hrs ago0xc265531ff24b99501d8c9d89217b4116e56ea228 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0x90aaa581976b875d6e492672d6fe76c979547f7472a73804a254cd32127fa8b6Approve122261542021-10-30 17:50:1237 days 2 hrs ago0xf198d8faef56fe2c8107aa4e0bab4701b3cfa943 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00012477
0x9cea8c3b60baf6e65eb318d4017fc56fdb125e03e377473f528a7eedbb387f0eApprove122260792021-10-30 17:46:2737 days 2 hrs ago0xf198d8faef56fe2c8107aa4e0bab4701b3cfa943 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0xecedf13ef318cf25f9ca7701fc681c12c40bcf11e974cdb55537be4db5597ec1Approve121300652021-10-27 7:55:5340 days 12 hrs ago0x649799ec70421fc37bb870441a7371615a6938c7 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0xb427099ff7191518487492765498c148293eea41e2b544ca40171d212d65a744Approve120735872021-10-25 8:31:5942 days 12 hrs ago0xa374db845912de1b3ecf4c5ebd5646d1e15430f6 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000267228
0xc61f9c7282b9b32f0ef8b544c14d0d2444a585d63a5160f32ea108b7ae44ccd9Approve120411692021-10-24 5:06:3543 days 15 hrs ago0x1bb26e5029b4ed0e560858dc7f7483e86bfb29d8 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00012477
0x019cbdc7f325846bdd9a7cbd1a06e69aa866ed7b16340dd89feb3f98e608537dApprove120411642021-10-24 5:06:2043 days 15 hrs ago0x1bb26e5029b4ed0e560858dc7f7483e86bfb29d8 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0x5f840d865e6291420977e4ad6cd71c2e6edf9bfa45f3fabb294e7a464d36e7c6Approve118811042021-10-18 13:41:3349 days 7 hrs ago0xa374db845912de1b3ecf4c5ebd5646d1e15430f6 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0xc824a24a9e7c3e597679ad7a47cd4b754d2541cb0a9f510d12112430887ce03dApprove118739412021-10-18 7:39:2649 days 13 hrs ago0x5c2ae04ca95a5453808413d324f2a910dbdd85ad IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0x8fb560cbdb24dd773d9c7433039f4cba3b3f486675870b3e8abe2e8e60a7927dApprove118654562021-10-18 0:34:1549 days 20 hrs ago0xb1b9b4bbe8a92d535f5df2368e7fd2ecfb3a1950 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00012519
0x0a5dd098f5af45c20900f310ac1185f6b67310c3d1969638fa8d2191657b2558Approve118654522021-10-18 0:34:0349 days 20 hrs ago0xb1b9b4bbe8a92d535f5df2368e7fd2ecfb3a1950 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022119
0xb74a53c9866e8183dbdeaf880ebdad892cbab5c191fbed9f983a3f0d18ddb356Approve118446302021-10-17 7:04:4850 days 13 hrs ago0xb2ff4b067ff33a869f5cee89cc2b404b93a4d3b9 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.000072885
0x18910817f62433890eecdf54b76c1854ab3beec3010f3dcfe27666b4826c2bf2Approve118174792021-10-16 8:20:0051 days 12 hrs ago0xdf2549d35af8fde5717396785527b6ec370125c4 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
0x5ca116264449c7bbbd7a738f3e2775766f70b0431763828b8ac478ba8915154bApprove117980292021-10-15 16:04:1752 days 4 hrs ago0x0445a4926df6419ac68e1e4a4403d08a9b727255 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.0000743427
0xf2395335cbd0eeda1db1c39f91ef6a022a033f4007be1241d87140a7003bb8b7Transfer117385312021-10-13 14:13:5254 days 6 hrs ago0x2c7fb74881199bb80a4de36d586fc4f6f13d7934 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.005338584
0xc5126fce1596df61b4e691009c1ef0da63298cb2a131b50cea53f5fb60069ae4Approve117375512021-10-13 13:24:0954 days 7 hrs ago0x4b04213c2774f77e60702880654206b116d00508 IN  0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90 BNB0.00022269
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x493feff438faebedead8a68b942c1d873cff680b185d3893849ab84648554a98124896062021-11-09 1:47:0827 days 18 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.000504950194559908 BNB
0x493feff438faebedead8a68b942c1d873cff680b185d3893849ab84648554a98124896062021-11-09 1:47:0827 days 18 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.000504950194559908 BNB
0x7158ca449b18a244a9702d217168a7829e88e6ad8eeb21785f1f3dff5f5c6f41123769632021-11-05 3:01:4731 days 17 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90xf8ae5393ab0805db10856bd67531c2b240613ed50.550501300407395065 BNB
0xc921fcf050997145fecb1de611c6ef3b7803b26c82bef913f0c9948e4cae78fc116956192021-10-12 2:01:0455 days 18 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.057779698476822954 BNB
0xc921fcf050997145fecb1de611c6ef3b7803b26c82bef913f0c9948e4cae78fc116956192021-10-12 2:01:0455 days 18 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.057779698476822954 BNB
0x5730053dff837a2166491c3f4c00778c017459d3c2dcb28df8011e3cd9227d3f115394082021-10-06 14:51:3161 days 5 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.025747713571564591 BNB
0x5730053dff837a2166491c3f4c00778c017459d3c2dcb28df8011e3cd9227d3f115394082021-10-06 14:51:3161 days 5 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.025747713571564591 BNB
0xc20026880cef46e541add320d5104ca17c1a93948491fd1857f5127cefba3882115393982021-10-06 14:51:0161 days 5 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.000033059645074859 BNB
0xc20026880cef46e541add320d5104ca17c1a93948491fd1857f5127cefba3882115393982021-10-06 14:51:0161 days 5 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.000033059645074859 BNB
0x04245429dbc8c5f5c0456a4b39517bb36719e4cb454e12da88cbaf7a3d7a1d1f115393932021-10-06 14:50:4661 days 5 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.000000000003305968 BNB
0x04245429dbc8c5f5c0456a4b39517bb36719e4cb454e12da88cbaf7a3d7a1d1f115393932021-10-06 14:50:4661 days 5 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.000000000003305968 BNB
0x27694b5d01592cca15772d3788e88e0797a69f62d0fc27bf9f597c82f340de0a115393822021-10-06 14:50:1361 days 5 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.000000000000003305 BNB
0x27694b5d01592cca15772d3788e88e0797a69f62d0fc27bf9f597c82f340de0a115393822021-10-06 14:50:1361 days 5 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.000000000000003305 BNB
0x301f1ea4e3e494c1927be337ba43fa6dd381b9e0ab89bca9ff2cdb1def2123b7115349942021-10-06 11:10:1061 days 9 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.070618558188609804 BNB
0x301f1ea4e3e494c1927be337ba43fa6dd381b9e0ab89bca9ff2cdb1def2123b7115349942021-10-06 11:10:1061 days 9 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.070618558188609804 BNB
0x697d62bebc7ebd41efa77445af753a23d7f0575ec193de026c6d5310d7b0dfd9115328862021-10-06 9:24:4661 days 11 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.083885929045340947 BNB
0x697d62bebc7ebd41efa77445af753a23d7f0575ec193de026c6d5310d7b0dfd9115328862021-10-06 9:24:4661 days 11 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.083885929045340947 BNB
0x913a64fd08089382d2a8fd201490c5e3c9b6f7ad71759ffeed62b5dec24d9df5115295632021-10-06 6:38:2161 days 14 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.000022547135745751 BNB
0x913a64fd08089382d2a8fd201490c5e3c9b6f7ad71759ffeed62b5dec24d9df5115295632021-10-06 6:38:2161 days 14 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.10291080531475192 BNB
0x913a64fd08089382d2a8fd201490c5e3c9b6f7ad71759ffeed62b5dec24d9df5115295632021-10-06 6:38:2161 days 14 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.10291080531475192 BNB
0xb4f3194a1f389ebd18b5a56fcd98549660e95e7675ee5bfae62d0c0b294c92eb115295042021-10-06 6:35:2461 days 14 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.10291080531475192 BNB
0xb4f3194a1f389ebd18b5a56fcd98549660e95e7675ee5bfae62d0c0b294c92eb115295042021-10-06 6:35:2461 days 14 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.10291080531475192 BNB
0x3d0474b946e1f723efa6b955b4cfbca091ef193dfce77df1d465a03016b68c24115288272021-10-06 6:01:3361 days 14 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.000121692647520213 BNB
0x3d0474b946e1f723efa6b955b4cfbca091ef193dfce77df1d465a03016b68c24115288272021-10-06 6:01:3361 days 14 hrs ago 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a9 PancakeSwap: Router v20.151008251361598792 BNB
0x3d0474b946e1f723efa6b955b4cfbca091ef193dfce77df1d465a03016b68c24115288272021-10-06 6:01:3361 days 14 hrs ago PancakeSwap: Router v2 0x5b65a6c0f20d8ae14f7e65719be04163fe3717a90.151008251361598792 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BabySuperWhale

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-10-06
*/

/**
 *Submitted for verification at BscScan.com on 2021-09-18
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.3;

interface IERC20 {
    
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    event TransferDetails(address indexed from, address indexed to, uint256 total_Amount, uint256 reflected_amount, uint256 total_TransferAmount, uint256 reflected_TransferAmount);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


library Address {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }


    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}



abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    
    function owner() public view virtual returns (address) {
        return _owner;
    }
    
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}




// Begin sauce.
contract BabySuperWhale is Context, IERC20, Ownable {
    using Address for address;

    mapping (address => uint256) public _balance_reflected;
    mapping (address => uint256) public _balance_total;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    
    // bye bye bots
    mapping (address => bool) public _isBlacklisted;

    // for presale and airdrop
    mapping (address => bool) public _isWhitelisted;
    
    // add liquidity and do airdrops
    bool public tradingOpen = false;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 60;
    mapping (address => uint) private cooldownTimer;
    
    address[] private _excluded;
    
    uint256 private constant MAX = ~uint256(0);

    uint8 private   _decimals           = 9;
    uint256 private _supply_total       = 1 * 10**9 * 10**_decimals;
    uint256 private _supply_reflected   = (MAX - (MAX % _supply_total));
    string private  _name               = "BabySuperWhale";
    string private  _symbol             = "BABYWAROO";

    // 0 to disable conversion
    // an integer to convert only fixed number of tokens
    uint256 public _fee_buyback_convert_limit = _supply_total * 1 / 10000;
    uint256 public _fee_marketing_convert_limit = _supply_total * 1 / 10000;

    // Minimum Balance to maintain
    uint256 public _fee_buyback_min_bal = 0;
    uint256 public _fee_marketing_min_bal = _supply_total * 1 / 100;
    
    //refection fee
    uint256 public _fee_reflection = 0;
    uint256 private _fee_reflection_old = _fee_reflection;
    uint256 private _contractReflectionStored = 0;
    
    // marketing
    uint256 public _fee_marketing = 0;
    uint256 private _fee_marketing_old = _fee_marketing;
    address payable public _wallet_marketing = payable(0xf8ae5393AB0805Db10856bd67531C2b240613ED5);

    // for burn
    uint256 public _fee_burn = 0;
    uint256 private _fee_burn_old = _fee_burn;
    address payable public _wallet_burn = payable(0x129e0B43e5cBd78cAD87C2bCCcd48bfed7057aea);

    // for buyback
    uint256 public _fee_buyback = 0;
    uint256 private _fee_buyback_old = _fee_buyback;
    address payable public _wallet_buyback = payable(0x89A6B21cFC7262b61Cc8Df6A08ff0ca33c8F156a);

    // Auto LP
    uint256 public _fee_liquidity = 0;
    uint256 private _fee_liquidity_old = _fee_liquidity;

    uint256 public _fee_denominator = 10000;

                                     
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxWalletToken = _supply_total;
    uint256 public _maxTxAmount = _supply_total;

    uint256 public _numTokensSellToAddToLiquidity =  ( _supply_total * 2 ) / 1000;

    uint256 public sellMultiplier = 100;


    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
        
    );

    address PCSRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    address deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _balance_reflected[owner()] = _supply_reflected;
        
        // Pancakeswap Router Initialization & Pair creation
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(PCSRouter);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[deadAddress] = true;
        _isExcludedFromFee[_wallet_marketing] = true;
        _isExcludedFromFee[_wallet_burn] = true;
        _isExcludedFromFee[_wallet_buyback] = true;
       
        emit Transfer(address(0), owner(), _supply_total);
    }


/*  CORE INTERFACE FUNCTION */

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _balance_total[account];
        return tokenFromReflection(_balance_reflected[account]);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);

        require (_allowances[sender][_msgSender()] >= amount,"ERC20: transfer amount exceeds allowance");
        
        _approve(sender, _msgSender(), (_allowances[sender][_msgSender()]-amount));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        require (_allowances[_msgSender()][spender] >= subtractedValue,"ERC20: decreased allowance below zero");

        _approve(_msgSender(), spender, (_allowances[_msgSender()][spender] - subtractedValue));
        return true;
    }

    function totalFees() public view returns (uint256) {
        return _contractReflectionStored;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    

    // Interface imported from GENx

        function ___tokenInfo () public view returns(
        uint8 Decimals,
        uint256 MaxTxAmount,
        uint256 MaxWalletToken,
        uint256 TotalSupply,
        uint256 Reflected_Supply,
        uint256 Reflection_Rate,
        bool TradingOpen,
        bool Cooldown_timer_enabled,
        uint8 Cooldown_timer_interval
        ) {
        return (_decimals, _maxTxAmount, _maxWalletToken, _supply_total, _supply_reflected, _getRate(), tradingOpen, buyCooldownEnabled, cooldownTimerInterval  );
    }

    function ___feesInfo () public view returns(
        
        uint256 NumTokensSellToAddToLiquidity,
        uint256 contractTokenBalance,
        uint256 Reflection_tokens_stored
        ) {
        return (_numTokensSellToAddToLiquidity, balanceOf(address(this)), _contractReflectionStored);
    }

    function ___wallets () public view returns(
        uint256 Reflection_Fees,
        uint256 Liquidity_Fee,
        uint256 Buyback_Fee,
        uint256 Buyback_Fee_Convert_Limit,
        uint256 Buyback_Fee_Minimum_Balance,
        uint256 Marketing_Fee,
        uint256 Marketing_Fee_Convert_Limit,
        uint256 Marketing_Fee_Minimum_Balance,
        uint256 Burn_Fee,
        address Buyback_Wallet_Address,
        address Burn_Wallet_Address,
        address Marketing_Wallet_Address
        ) {
        return ( _fee_reflection, _fee_liquidity,
            _fee_buyback,_fee_buyback_convert_limit,_fee_buyback_min_bal,
            _fee_marketing,_fee_marketing_convert_limit, _fee_marketing_min_bal,
            _fee_burn,
            _wallet_buyback, _wallet_burn, _wallet_marketing);
    }

/*  Wallet Management  */

    function Change_Wallet_Marketing (address newWallet) external onlyOwner() {
        _wallet_marketing = payable(newWallet);
    }

    function Change_Wallet_Buyback (address newWallet) external onlyOwner() {
        _wallet_buyback = payable(newWallet);
    }

    function Change_Wallet_Burn (address newWallet) external onlyOwner() {
        _wallet_burn = payable(newWallet);
    }



/* Interface Read & Write Functions --- Reflection Specific */

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,,,,) = _getValues(tAmount,false);
        _balance_reflected[sender] = _balance_reflected[sender] - rAmount;
        _supply_reflected = _supply_reflected - rAmount;
        _contractReflectionStored = _contractReflectionStored + tAmount;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _supply_total, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,,,) = _getValues(tAmount,false);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,,,) = _getValues(tAmount,false);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _supply_reflected, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return (rAmount / currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_balance_reflected[account] > 0) {
            _balance_total[account] = tokenFromReflection(_balance_reflected[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _balance_total[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }




/* Interface Read & Write Functions */




    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    
    //set the number of tokens required to activate auto-liquidity
    function setNumTokensSellToAddToLiquidityt(uint256 numTokensSellToAddToLiquidity) external onlyOwner() {
        _numTokensSellToAddToLiquidity = numTokensSellToAddToLiquidity;
    }
    
    //set the Max transaction amount (percent of total supply)
    function setMaxTxPercent_base1000(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = (_supply_total * maxTxPercent ) / 1000;
    }
    
    //set the Max transaction amount (in tokens)
     function setMaxTxTokens(uint256 maxTxTokens) external onlyOwner() {
        _maxTxAmount = maxTxTokens;
    }
    
    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent_base1000(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_supply_total * maxWallPercent ) / 1000;
    }
    
    //settting the maximum permitted wallet holding (in tokens)
     function setMaxWalletTokens(uint256 maxWallTokens) external onlyOwner() {
        _maxWalletToken = maxWallTokens;
    }
    
    
    
    //toggle on and off to activate auto liquidity 
    function setSwapAndLiquifyEnabled(bool _status) public onlyOwner {
        swapAndLiquifyEnabled = _status;
        emit SwapAndLiquifyEnabledUpdated(_status);
    }
    

/** All list management functions BEGIN*/

    function s_manageExcludeFromFee(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludedFromFee[addresses[i]] = status;
        }
    }

    function s_manageBlacklist(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = status;
        }
    }

    function s_manageWhitelist(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isWhitelisted[addresses[i]] = status;
        }
    }

    function s_excludeFromFee(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludedFromFee[addresses[i]] = status;
        }
    }
    

    /** All list management functions END*/




/* Airdrop Begins */

// NOTE: need to manually supply high gas incase this list is > 100 addresses
 function makeItRain(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    uint256 showerCapacity = 0;
    uint256 reflectRate = _getRate();
    require(addresses.length == tokens.length,"Mismatch between Address and token count");


    for(uint i=0; i < addresses.length; i++){
        showerCapacity = showerCapacity + tokens[i];
    }

    require(balanceOf(msg.sender) >= showerCapacity, "Not enough tokens to airdrop");

     // Update reflected Balance for sender
    _balance_reflected[from]    = _balance_reflected[from]  - showerCapacity * reflectRate ;

    // Only update actual balance of sender if he's excluded from rewards
    if (_isExcluded[from]){
        _balance_total[from]    = _balance_total[from]      - showerCapacity;
    }

    for(uint i=0; i < addresses.length; i++){
        
        // Only update actual balance of recipient if he's excluded from rewards
        if (_isExcluded[addresses[i]]){
            _balance_total[addresses[i]]      = _balance_total[addresses[i]]        + tokens[i]; 
        }

        // update reflected balance of receipient
        _balance_reflected[addresses[i]]      = _balance_reflected[addresses[i]]    + tokens[i] * reflectRate;

        emit Transfer(from,addresses[i],tokens[i]);

    }

}






// Liquidity and contract Balance functions

// convert all stored tokens for LP into LP Pairs
    function convertLiquidityBalance(uint256 tokensToConvert) public onlyOwner {

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount - 1;
        }

        if(tokensToConvert == 0 || tokensToConvert > contractTokenBalance){
            tokensToConvert = contractTokenBalance;
        }
        swapAndLiquify(tokensToConvert);
    }

// convert all stored tokens for LP into LP Pairs
    function purgeContractBalance() public {
        require(msg.sender == owner() || msg.sender == _wallet_marketing, "Not authorized to perform this");
         _wallet_marketing.transfer(address(this).balance);
    }







// Reflect Finance core code

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _supply_reflected;
        uint256 tSupply = _supply_total;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_balance_reflected[_excluded[i]] > rSupply || _balance_total[_excluded[i]] > tSupply) return (_supply_reflected, _supply_total);
            rSupply = rSupply - _balance_reflected[_excluded[i]];
            tSupply = tSupply - _balance_total[_excluded[i]];
        }
        if (rSupply < (_supply_reflected/_supply_total)) return (_supply_reflected, _supply_total);
        return (rSupply, tSupply);
    }


    function _getValues(uint256 tAmount, bool isSell) private view returns (
        uint256 rAmount, uint256 rTransferAmount, uint256 rReflection,
        uint256 tTransferAmount,uint256 tBurn, uint256 tMarketing, uint256 tLiquidity, uint256 tBuyback, uint256 tReflection) {

        uint256 multiplier = isSell ? sellMultiplier : 100;

        tBurn           = ( tAmount * _fee_burn )/ _fee_denominator;
        tMarketing       = ( tAmount * _fee_marketing ) * multiplier / (_fee_denominator * 100);
        tLiquidity      = ( tAmount * _fee_liquidity ) * multiplier / (_fee_denominator * 100);
        tBuyback           = ( tAmount * _fee_buyback ) * multiplier / (_fee_denominator * 100);
        tReflection     = ( tAmount * _fee_reflection ) * multiplier  / (_fee_denominator * 100);

        tTransferAmount = tAmount - (tBurn + tMarketing + tLiquidity + tBuyback + tReflection);

        rReflection     = tReflection * _getRate();

        rAmount         = tAmount * _getRate();

        rTransferAmount = tTransferAmount * _getRate();

    }



    function _fees_to_bnb_process( address payable wallet, uint256 tokensToConvert) private lockTheSwap {

        uint256 rTokensToConvert = tokensToConvert * _getRate();

        _balance_reflected[wallet]    = _balance_reflected[wallet]  - rTokensToConvert;
        if (_isExcluded[wallet]){
            _balance_total[wallet]    = _balance_total[wallet]      - tokensToConvert;
        }
        _balance_reflected[address(this)]      = _balance_reflected[address(this)]    + rTokensToConvert;

        emit Transfer(wallet, address(this), tokensToConvert);

        swapTokensForEthAndSend(tokensToConvert,wallet);

    }


// Fee & Wallet Related

    function fees_to_bnb_manual(uint256 tokensToConvert, address payable feeWallet, uint256 minBalanceToKeep) external onlyOwner {
        _fees_to_bnb(tokensToConvert,feeWallet,minBalanceToKeep);
    }


    function _fees_to_bnb(uint256 tokensToConvert, address payable feeWallet, uint256 minBalanceToKeep) private {
        // case 1: 0 tokens to convert, exit the function
        // case 2: tokens to convert are more than the max limit
        
        if(tokensToConvert == 0){
            return;
        } 

        if(tokensToConvert > _maxTxAmount){
            tokensToConvert = _maxTxAmount;
        }

        if((tokensToConvert+minBalanceToKeep)  <= balanceOf(feeWallet)){
            _fees_to_bnb_process(feeWallet,tokensToConvert);
        }
    }


    function _takeFee(uint256 feeAmount, address receiverWallet) private {
        uint256 reflectedReeAmount = feeAmount * _getRate();
        _balance_reflected[receiverWallet] = _balance_reflected[receiverWallet] + reflectedReeAmount;


        if(_isExcluded[receiverWallet]){
            _balance_total[receiverWallet] = _balance_total[receiverWallet] + feeAmount;
        }

        emit Transfer(msg.sender, receiverWallet, feeAmount);
    }


    function _takefees_Liquidity(uint256 amount) private {
        _takeFee(amount,address(this));
    }
    
    function _takefees_burn(uint256 amount) private {
        _takeFee(amount,_wallet_burn);
        
    }

    function _takefees_buyback(uint256 amount) private {
        _takeFee(amount,_wallet_buyback);

    }

    function _takefees_marketing(uint256 amount) private {
        _takeFee(amount,_wallet_marketing);
        
    }

    function _take_reflectionFee(uint256 rFee, uint256 tFee) private {
        _supply_reflected = _supply_reflected - rFee;
        _contractReflectionStored = _contractReflectionStored + tFee;
    }
    


// Fee management from GENx
// Made all parameters in alphabetical order
    function _setAllFees(uint256 burnFees, uint256 marketingFee, uint256 liquidityFees, uint256 buybackFee, uint256 reflectionFees) private {
        _fee_burn           = burnFees;
        _fee_marketing        = marketingFee;
        _fee_liquidity      = liquidityFees;
        _fee_buyback           = buybackFee;
        _fee_reflection     = reflectionFees;
        
    }

    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }

    function set_All_Fees_Triggers(uint256 marketing_fee_convert_limit, uint256 buyback_fee_convert_limit) external onlyOwner {
        _fee_marketing_convert_limit      = marketing_fee_convert_limit;
        _fee_buyback_convert_limit         = buyback_fee_convert_limit;   
    }

    function set_All_Fees_Minimum_Balance(uint256 marketing_fee_minimum_balance, uint256 buyback_fee_minimum_balance) external onlyOwner {
        _fee_buyback_min_bal       = buyback_fee_minimum_balance;
        _fee_marketing_min_bal    = marketing_fee_minimum_balance;
    }




    // set all fees in one go, we dont need 4 functions!
    function set_All_Fees(uint256 Buyback_Fee, uint256 Burn_Fees, uint256 Liquidity_Fees, uint256 Reflection_Fees, uint256 MarketingFee) external onlyOwner {
        uint256 total_fees = Burn_Fees + MarketingFee + Liquidity_Fees +  Buyback_Fee + Reflection_Fees;
        require(total_fees < 4000, "Cannot set fees this high, pancake swap will hate us!");
        _setAllFees( Burn_Fees, MarketingFee, Liquidity_Fees, Buyback_Fee, Reflection_Fees);
    }


    function removeAllFee() private {
        _fee_burn_old           = _fee_burn;
        _fee_marketing_old        = _fee_marketing;
        _fee_liquidity_old      = _fee_liquidity;
        _fee_buyback_old           = _fee_buyback;
        _fee_reflection_old     = _fee_reflection;

        _setAllFees(0,0,0,0,0);
    }
    
    function restoreAllFee() private {
        _setAllFees(_fee_burn_old, _fee_marketing_old, _fee_liquidity_old, _fee_buyback_old, _fee_reflection_old);
    }


    // this one reduces supply
    function burn_tokens_reduce_supply(address wallet, uint256 tokensToConvert) external {

        require(msg.sender == owner() || msg.sender == wallet, "Not authorized to burn");

        uint256 rTokensToConvert = tokensToConvert * _getRate();

        _balance_reflected[wallet]    = _balance_reflected[wallet]  - rTokensToConvert;
        if (_isExcluded[wallet]){
            _balance_total[wallet]    = _balance_total[wallet]      - tokensToConvert;
        }

        _supply_total = _supply_total - tokensToConvert;
        _supply_reflected = _supply_reflected - rTokensToConvert;

        emit Transfer(wallet, address(this), tokensToConvert);

    }

    // this one sends to dead address
    function burn_tokens_to_dead(address wallet, uint256 tokensToConvert) external {

        require(msg.sender == owner() || msg.sender == wallet, "Not authorized to burn");

        uint256 rTokensToConvert = tokensToConvert * _getRate();

        _balance_reflected[wallet]          = _balance_reflected[wallet]  - rTokensToConvert;
        if (_isExcluded[wallet]){
            _balance_total[wallet]          = _balance_total[wallet]      - tokensToConvert;
        }

        if (_isExcluded[deadAddress]){
            _balance_total[deadAddress]     = _balance_total[deadAddress]        + tokensToConvert;  
        }

        // update reflected balance of receipient
        _balance_reflected[deadAddress]     = _balance_reflected[deadAddress]    + rTokensToConvert;

        emit Transfer(wallet, deadAddress, tokensToConvert);

    }






// Liquidity functions

    function swapAndLiquify(uint256 tokensToSwap) private lockTheSwap {
        uint256 tokensHalf = tokensToSwap/2;

        uint256 contractBnbBalance = address(this).balance;

        swapTokensForEth(tokensHalf);
        
        uint256 bnbSwapped = address(this).balance - contractBnbBalance;

        addLiquidity(tokensHalf,bnbSwapped);

        emit SwapAndLiquify(tokensToSwap, tokensHalf, bnbSwapped);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapTokensForEthAndSend(uint256 tokenAmount, address payable receiverWallet) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            receiverWallet,
            block.timestamp
        );
    }


    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            0x1fA5D26B4BDf55bC99253b916f4FAdb864A2459E,
            block.timestamp
        );
    }







    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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




    // All transfer functions

    function _transfer(address from, address to, uint256 amount) private {

        require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        // require(amount > 0, "Transfer amount must be greater than zero");


        //max wallet
        if (to != owner() && to != address(this) && to != address(deadAddress) && to != uniswapV2Pair && to != _wallet_marketing && to != _wallet_buyback){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if(from != owner() && to != owner() && !_isWhitelisted[from] && !_isWhitelisted[to]){
            require(tradingOpen,"Trading not open yet");
        }


        // cooldown timer
        if (from == uniswapV2Pair &&
            buyCooldownEnabled &&
            !_isExcludedFromFee[to] &&
            to != address(this)  && 
            to != address(deadAddress)) {
            require(cooldownTimer[to] < block.timestamp,"Please wait for cooldown between buys");
            cooldownTimer[to] = block.timestamp + cooldownTimerInterval;
        }

        if(from != owner() && to != owner()  && !_isWhitelisted[from] && !_isWhitelisted[to]){
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        // extra bracket to supress stack too deep error
        {
            uint256 contractTokenBalance = balanceOf(address(this));
        
            if(contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount - 1;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numTokensSellToAddToLiquidity;
            if (overMinTokenBalance &&
                !inSwapAndLiquify &&
                from != uniswapV2Pair &&
                swapAndLiquifyEnabled
            ) {
                contractTokenBalance = _numTokensSellToAddToLiquidity;
                swapAndLiquify(contractTokenBalance);
            }

            // Convert fees to BNB
            if(!inSwapAndLiquify && from != uniswapV2Pair){
                _fees_to_bnb(_fee_buyback_convert_limit,_wallet_buyback, _fee_buyback_min_bal);
                _fees_to_bnb(_fee_marketing_convert_limit,_wallet_marketing, _fee_marketing_min_bal);
            }
            
        }
        // extra useless ugly brackets ends
        
        
        bool takeFee = true;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        if(!takeFee){
            removeAllFee();
        }
        
        // Get all tranfer values        
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 tBurn, uint256 tMarketing, uint256 tLiquidity, uint256 tBuyback,  uint256 tReflection) = _getValues(amount, (to == uniswapV2Pair));

        _transferStandard(from,to,amount,rAmount,tTransferAmount, rTransferAmount);
       
        // update reflections
        _take_reflectionFee(rReflection, tReflection);

        if(!takeFee){
            restoreAllFee();
        } else{
            // functions to take all fees
            // no point to call them if there's no fees to be taken
            _takefees_burn(tBurn);
            _takefees_marketing(tMarketing);
            _takefees_Liquidity(tLiquidity);
            _takefees_buyback(tBuyback);
        }

    }

    function _transferStandard(address from, address to, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
         // Update reflected Balance for sender
        _balance_reflected[from]    = _balance_reflected[from]  - rAmount;


        // Only update actual balance of sender if he's excluded from rewards
        if (_isExcluded[from]){
            _balance_total[from]    = _balance_total[from]      - tAmount;
        }

        // Only update actual balance of recipient if he's excluded from rewards
        if (_isExcluded[to]){
            _balance_total[to]      = _balance_total[to]        + tTransferAmount;  
        }

        // update reflected balance of receipient
        _balance_reflected[to]      = _balance_reflected[to]    + rTransferAmount;

        emit Transfer(from, to, tTransferAmount);
        emit TransferDetails(from, to, tAmount, rAmount, tTransferAmount, rTransferAmount);
    }

    //receive BNB from PancakeSwap Router
    receive() external payable {}

}

// ~ by monkey

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"total_Amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_TransferAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_TransferAmount","type":"uint256"}],"name":"TransferDetails","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"Change_Wallet_Burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"Change_Wallet_Buyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"Change_Wallet_Marketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"___feesInfo","outputs":[{"internalType":"uint256","name":"NumTokensSellToAddToLiquidity","type":"uint256"},{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"internalType":"uint256","name":"Reflection_tokens_stored","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___tokenInfo","outputs":[{"internalType":"uint8","name":"Decimals","type":"uint8"},{"internalType":"uint256","name":"MaxTxAmount","type":"uint256"},{"internalType":"uint256","name":"MaxWalletToken","type":"uint256"},{"internalType":"uint256","name":"TotalSupply","type":"uint256"},{"internalType":"uint256","name":"Reflected_Supply","type":"uint256"},{"internalType":"uint256","name":"Reflection_Rate","type":"uint256"},{"internalType":"bool","name":"TradingOpen","type":"bool"},{"internalType":"bool","name":"Cooldown_timer_enabled","type":"bool"},{"internalType":"uint8","name":"Cooldown_timer_interval","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___wallets","outputs":[{"internalType":"uint256","name":"Reflection_Fees","type":"uint256"},{"internalType":"uint256","name":"Liquidity_Fee","type":"uint256"},{"internalType":"uint256","name":"Buyback_Fee","type":"uint256"},{"internalType":"uint256","name":"Buyback_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Buyback_Fee_Minimum_Balance","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Minimum_Balance","type":"uint256"},{"internalType":"uint256","name":"Burn_Fee","type":"uint256"},{"internalType":"address","name":"Buyback_Wallet_Address","type":"address"},{"internalType":"address","name":"Burn_Wallet_Address","type":"address"},{"internalType":"address","name":"Marketing_Wallet_Address","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balance_reflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balance_total","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_buyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_buyback_convert_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_buyback_min_bal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_liquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_marketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_marketing_convert_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_marketing_min_bal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_reflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wallet_burn","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wallet_buyback","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wallet_marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"tokensToConvert","type":"uint256"}],"name":"burn_tokens_reduce_supply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"tokensToConvert","type":"uint256"}],"name":"burn_tokens_to_dead","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokensToConvert","type":"uint256"}],"name":"convertLiquidityBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokensToConvert","type":"uint256"},{"internalType":"address payable","name":"feeWallet","type":"address"},{"internalType":"uint256","name":"minBalanceToKeep","type":"uint256"}],"name":"fees_to_bnb_manual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"makeItRain","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":"purgeContractBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"s_excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"s_manageBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"s_manageExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"s_manageWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxTokens","type":"uint256"}],"name":"setMaxTxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallTokens","type":"uint256"}],"name":"setMaxWalletTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokensSellToAddToLiquidity","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidityt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buyback_Fee","type":"uint256"},{"internalType":"uint256","name":"Burn_Fees","type":"uint256"},{"internalType":"uint256","name":"Liquidity_Fees","type":"uint256"},{"internalType":"uint256","name":"Reflection_Fees","type":"uint256"},{"internalType":"uint256","name":"MarketingFee","type":"uint256"}],"name":"set_All_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing_fee_minimum_balance","type":"uint256"},{"internalType":"uint256","name":"buyback_fee_minimum_balance","type":"uint256"}],"name":"set_All_Fees_Minimum_Balance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing_fee_convert_limit","type":"uint256"},{"internalType":"uint256","name":"buyback_fee_convert_limit","type":"uint256"}],"name":"set_All_Fees_Triggers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526008805462ffffff1916623c0100179055600b8054600960ff1990911681179091556200003390600a620006be565b6200004390633b9aca006200077f565b600c8190556200005690600019620007f8565b6200006490600019620007a1565b600d5560408051808201909152600e8082526d4261627953757065725768616c6560901b60209092019182526200009c918162000586565b5060408051808201909152600980825268424142595741524f4f60b81b6020909201918252620000cf91600f9162000586565b50612710600c546001620000e491906200077f565b620000f091906200065e565b601055612710600c5460016200010791906200077f565b6200011391906200065e565b60115560006012556064600c5460016200012e91906200077f565b6200013a91906200065e565b601355600060148190556015819055601681905560178190556018819055601980546001600160a01b031990811673f8ae5393ab0805db10856bd67531c2b240613ed517909155601a829055601b829055601c8054821673129e0b43e5cbd78cad87c2bcccd48bfed7057aea179055601d829055601e829055601f80549091167389a6b21cfc7262b61cc8df6a08ff0ca33c8f156a17905560208190556021556127106022556023805461ff001916610100179055600c54602481905560258190556103e8906200020d9060026200077f565b6200021991906200065e565b6026556064602755602880546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e179091556029805490911661dead1790553480156200026457600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600d5460016000620002be6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355602854815163c45a015560e01b81529151931692839263c45a01559260048082019391829003018186803b1580156200031857600080fd5b505afa1580156200032d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035391906200062c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039c57600080fd5b505afa158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d791906200062c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200042057600080fd5b505af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b91906200062c565b6001600160601b0319606091821b811660a0529082901b166080526001600460006200048f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155602954821684528284208054861682179055601954821684528284208054861682179055601c54821684528284208054861682179055601f549091168352912080549092161790556200052f6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200057791815260200190565b60405180910390a3506200083b565b8280546200059490620007bb565b90600052602060002090601f016020900481019282620005b8576000855562000603565b82601f10620005d357805160ff191683800117855562000603565b8280016001018555821562000603579182015b8281111562000603578251825591602001919060010190620005e6565b506200061192915062000615565b5090565b5b8082111562000611576000815560010162000616565b6000602082840312156200063f57600080fd5b81516001600160a01b03811681146200065757600080fd5b9392505050565b60008262000670576200067062000825565b500490565b600181815b80851115620006b65781600019048211156200069a576200069a6200080f565b80851615620006a857918102915b93841c93908002906200067a565b509250929050565b60006200065760ff841683600082620006da5750600162000779565b81620006e95750600062000779565b81600181146200070257600281146200070d576200072d565b600191505062000779565b60ff8411156200072157620007216200080f565b50506001821b62000779565b5060208310610133831016604e8410600b841016171562000752575081810a62000779565b6200075e838362000675565b80600019048211156200077557620007756200080f565b0290505b92915050565b60008160001904831182151516156200079c576200079c6200080f565b500290565b600082821015620007b657620007b66200080f565b500390565b600181811c90821680620007d057607f821691505b60208210811415620007f257634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200080a576200080a62000825565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60805160601c60a05160601c614932620008c26000396000818161092501528181612fd7015281816131a50152818161343c015281816134a701526135890152600081816106d201528181613e5001528181613f1801528181613f5401528181613fc60152818161404e01528181614215015281816142dd015261431901526149326000f3fe60806040526004361061050b5760003560e01c806370a0823111610294578063b34b8ca31161015e578063dd62ed3e116100d6578063f2fde38b1161008a578063fd748c301161006f578063fd748c3014610f5a578063fed0d2a114610f70578063ffb54a9914610f8657600080fd5b8063f2fde38b14610f25578063fba206c314610f4557600080fd5b8063e38136ef116100bb578063e38136ef14610ec5578063ec72d65f14610ee5578063f00c332214610f0557600080fd5b8063dd62ed3e14610e69578063e20b5c0314610eaf57600080fd5b8063b8786eb11161012d578063c49b9a8011610112578063c49b9a8014610e09578063d5c9c9fb14610e29578063d61df08314610e4957600080fd5b8063b8786eb114610dd3578063bd9ab53714610de957600080fd5b8063b34b8ca314610d71578063b3f22ce314610d91578063b839257614610da7578063b85f117514610dbd57600080fd5b80638da5cb5b1161020c578063a5ac51b6116101c0578063a9059cbb116101a5578063a9059cbb14610d0e578063b1eb20e914610d2e578063b2e4d5a114610d5b57600080fd5b8063a5ac51b614610cd8578063a7eb8ee814610cee57600080fd5b806395d89b41116101f157806395d89b4114610c735780639cee214214610c88578063a457c2d714610cb857600080fd5b80638da5cb5b14610c3f578063910fb00814610c5d57600080fd5b80637d1db4a511610263578063811ab49c11610248578063811ab49c14610bc657806388f8202014610be65780638bb17a8614610c1f57600080fd5b80637d1db4a514610b905780638097e69714610ba657600080fd5b806370a0823114610b1a578063722b62ad14610b3a57806378109e5414610b5a5780637bcaae8a14610b7057600080fd5b80632d838119116103d55780634549b0391161034d5780635cfd7df411610301578063617fe0ed116102e6578063617fe0ed14610a42578063666a245d14610a6157806367dc9e9214610a8157600080fd5b80635cfd7df4146109bf578063617c62a1146109df57600080fd5b80634a74bb02116103325780634a74bb021461094757806352390c02146109665780635342acb41461098657600080fd5b80634549b039146108f357806349bd5a5e1461091357600080fd5b80633417ab1d116103a4578063395093511161038957806339509351146108935780633bd5d173146108b357806342479199146108d357600080fd5b80633417ab1d1461085d5780633685d4191461087357600080fd5b80632d838119146107d75780632db06cb3146107f7578063313ce5671461081757806333a06c941461083d57600080fd5b80630d295980116104835780631c3c4fec1161043757806323b872dd1161041c57806323b872dd1461078157806328e2eaab146107a15780632d594567146107b757600080fd5b80631c3c4fec146107215780631cdd3be31461075157600080fd5b806313114a9d1161046857806313114a9d146106ab5780631694505e146106c057806318160ddd1461070c57600080fd5b80630d2959801461066b5780630fec5dd01461068b57600080fd5b806306fdde03116104da578063095ea7b3116104bf578063095ea7b3146105fb5780630aaff32c1461062b5780630b8df8e31461064b57600080fd5b806306fdde03146105b957806309302dc6146105db57600080fd5b8063053cfa251461051757806306d94b0b1461055757806306e6ce751461057957806306f3a47b1461059957600080fd5b3661051257005b600080fd5b34801561052357600080fd5b506105446105323660046143ef565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561056357600080fd5b50610577610572366004614526565b610fa0565b005b34801561058557600080fd5b50610577610594366004614552565b611120565b3480156105a557600080fd5b506105776105b436600461465f565b6111dd565b3480156105c557600080fd5b506105ce61122d565b60405161054e919061472e565b3480156105e757600080fd5b506105776105f63660046145f3565b6112bf565b34801561060757600080fd5b5061061b610616366004614526565b611328565b604051901515815260200161054e565b34801561063757600080fd5b50610577610646366004614552565b61133f565b34801561065757600080fd5b506105776106663660046143ef565b6113f6565b34801561067757600080fd5b506105776106863660046145a6565b611460565b34801561069757600080fd5b506105776106a63660046145f3565b6114bb565b3480156106b757600080fd5b50601654610544565b3480156106cc57600080fd5b506106f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161054e565b34801561071857600080fd5b50600c54610544565b34801561072d57600080fd5b50610736611508565b6040805193845260208401929092529082015260600161054e565b34801561075d57600080fd5b5061061b61076c3660046143ef565b60066020526000908152604090205460ff1681565b34801561078d57600080fd5b5061061b61079c366004614462565b611527565b3480156107ad57600080fd5b5061054460135481565b3480156107c357600080fd5b506105776107d23660046145c1565b611612565b3480156107e357600080fd5b506105446107f23660046145f3565b61168b565b34801561080357600080fd5b5061057761081236600461460c565b611722565b34801561082357600080fd5b50600b5460ff165b60405160ff909116815260200161054e565b34801561084957600080fd5b50601f546106f4906001600160a01b031681565b34801561086957600080fd5b5061054460115481565b34801561087f57600080fd5b5061057761088e3660046143ef565b61177a565b34801561089f57600080fd5b5061061b6108ae366004614526565b61194f565b3480156108bf57600080fd5b506105776108ce3660046145f3565b611986565b3480156108df57600080fd5b506105776108ee3660046146af565b611a8a565b3480156108ff57600080fd5b5061054461090e366004614633565b611b9a565b34801561091f57600080fd5b506106f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561095357600080fd5b5060235461061b90610100900460ff1681565b34801561097257600080fd5b506105776109813660046143ef565b611c31565b34801561099257600080fd5b5061061b6109a13660046143ef565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156109cb57600080fd5b506105776109da3660046145f3565b611da2565b3480156109eb57600080fd5b506109f4611def565b6040805160ff9a8b16815260208101999099528801969096526060870194909452608086019290925260a0850152151560c0840152151560e08301529091166101008201526101200161054e565b348015610a4e57600080fd5b5060085461061b90610100900460ff1681565b348015610a6d57600080fd5b506019546106f4906001600160a01b031681565b348015610a8d57600080fd5b5060145460208054601d54601054601254601754601154601354601a54601f54601c54601954604080519d8e529b8d019a909a52998b019790975260608a0195909552608089019390935260a088019190915260c087015260e08601526101008501526001600160a01b03908116610120850152918216610140840152166101608201526101800161054e565b348015610b2657600080fd5b50610544610b353660046143ef565b611e53565b348015610b4657600080fd5b5060085461082b9062010000900460ff1681565b348015610b6657600080fd5b5061054460245481565b348015610b7c57600080fd5b50610577610b8b3660046143ef565b611eb2565b348015610b9c57600080fd5b5061054460255481565b348015610bb257600080fd5b50610577610bc13660046145f3565b611f1c565b348015610bd257600080fd5b50601c546106f4906001600160a01b031681565b348015610bf257600080fd5b5061061b610c013660046143ef565b6001600160a01b031660009081526005602052604090205460ff1690565b348015610c2b57600080fd5b50610577610c3a3660046144a3565b611f69565b348015610c4b57600080fd5b506000546001600160a01b03166106f4565b348015610c6957600080fd5b5061054460205481565b348015610c7f57600080fd5b506105ce6123da565b348015610c9457600080fd5b5061061b610ca33660046143ef565b60076020526000908152604090205460ff1681565b348015610cc457600080fd5b5061061b610cd3366004614526565b6123e9565b348015610ce457600080fd5b50610544601a5481565b348015610cfa57600080fd5b50610577610d0936600461465f565b6124b8565b348015610d1a57600080fd5b5061061b610d29366004614526565b61250b565b348015610d3a57600080fd5b50610544610d493660046143ef565b60016020526000908152604090205481565b348015610d6757600080fd5b5061054460105481565b348015610d7d57600080fd5b50610577610d8c3660046145f3565b612518565b348015610d9d57600080fd5b5061054460265481565b348015610db357600080fd5b5061054460175481565b348015610dc957600080fd5b5061054460145481565b348015610ddf57600080fd5b50610544601d5481565b348015610df557600080fd5b50610577610e043660046145f3565b6125a6565b348015610e1557600080fd5b50610577610e243660046145a6565b61260f565b348015610e3557600080fd5b50610577610e443660046143ef565b6126ab565b348015610e5557600080fd5b50610577610e64366004614526565b612715565b348015610e7557600080fd5b50610544610e84366004614429565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ebb57600080fd5b5061054460125481565b348015610ed157600080fd5b50610577610ee0366004614552565b61290f565b348015610ef157600080fd5b50610577610f003660046145f3565b6129c6565b348015610f1157600080fd5b50610577610f20366004614552565b612a13565b348015610f3157600080fd5b50610577610f403660046143ef565b612aca565b348015610f5157600080fd5b50610577612be9565b348015610f6657600080fd5b5061054460225481565b348015610f7c57600080fd5b5061054460275481565b348015610f9257600080fd5b5060085461061b9060ff1681565b6000546001600160a01b0316331480610fc15750336001600160a01b038316145b6110125760405162461bcd60e51b815260206004820152601660248201527f4e6f7420617574686f72697a656420746f206275726e0000000000000000000060448201526064015b60405180910390fd5b600061101c612c94565b61102690836147f9565b6001600160a01b03841660009081526001602052604090205490915061104d908290614818565b6001600160a01b03841660009081526001602090815260408083209390935560059052205460ff16156110b8576001600160a01b03831660009081526002602052604090205461109e908390614818565b6001600160a01b0384166000908152600260205260409020555b81600c546110c69190614818565b600c55600d546110d7908290614818565b600d5560405182815230906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b6000546001600160a01b031633146111685760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b60005b828110156111d757816004600086868581811061118a5761118a6148b1565b905060200201602081019061119f91906143ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111d08161486a565b905061116b565b50505050565b6000546001600160a01b031633146112255760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b601255601355565b6060600e805461123c9061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546112689061482f565b80156112b55780601f1061128a576101008083540402835291602001916112b5565b820191906000526020600020905b81548152906001019060200180831161129857829003601f168201915b5050505050905090565b6000546001600160a01b031633146113075760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6103e881600c5461131891906147f9565b61132291906147d7565b60245550565b6000611335338484612cb7565b5060015b92915050565b6000546001600160a01b031633146113875760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b60005b828110156111d75781600760008686858181106113a9576113a96148b1565b90506020020160208101906113be91906143ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556113ef8161486a565b905061138a565b6000546001600160a01b0316331461143e5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114a85760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146115035760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b602455565b600080600060265461151930611e53565b601654925092509250909192565b6000611534848484612e07565b6001600160a01b03841660009081526003602090815260408083203384529091529020548211156115cd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401611009565b6001600160a01b038416600090815260036020908152604080832033808552925290912054611608918691611603908690614818565b612cb7565b5060019392505050565b6000546001600160a01b0316331461165a5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6008805462ffff0019166101009315159390930262ff00001916929092176201000060ff9290921691909102179055565b6000600d548211156117055760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401611009565b600061170f612c94565b905061171b81846147d7565b9392505050565b6000546001600160a01b0316331461176a5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b611775838383613630565b505050565b6000546001600160a01b031633146117c25760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6001600160a01b03811660009081526005602052604090205460ff1661182a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401611009565b60005b600a5481101561194b57816001600160a01b0316600a8281548110611854576118546148b1565b6000918252602090912001546001600160a01b0316141561193957600a805461187f90600190614818565b8154811061188f5761188f6148b1565b600091825260209091200154600a80546001600160a01b0390921691839081106118bb576118bb6148b1565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600a8054806119135761191361489b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806119438161486a565b91505061182d565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916113359185906116039086906147bf565b3360008181526005602052604090205460ff1615611a0c5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e00000000000000000000000000000000000000006064820152608401611009565b6000611a1983600061366c565b5050506001600160a01b038816600090815260016020526040902054959650611a4a95879550935061481892505050565b6001600160a01b038316600090815260016020526040902055600d54611a71908290614818565b600d55601654611a829084906147bf565b601655505050565b6000546001600160a01b03163314611ad25760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6000828685611ae185896147bf565b611aeb91906147bf565b611af591906147bf565b611aff91906147bf565b9050610fa08110611b785760405162461bcd60e51b815260206004820152603560248201527f43616e6e6f74207365742066656573207468697320686967682c2070616e636160448201527f6b6520737761702077696c6c20686174652075732100000000000000000000006064820152608401611009565b601a85905560178290556020849055601d86905560148390555b505050505050565b6000600c54831115611bee5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401611009565b81611c12576000611c0084600061366c565b50969850611339975050505050505050565b6000611c1f84600061366c565b50959850611339975050505050505050565b6000546001600160a01b03163314611c795760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6001600160a01b03811660009081526005602052604090205460ff1615611ce25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401611009565b6001600160a01b03811660009081526001602052604090205415611d3c576001600160a01b038116600090815260016020526040902054611d229061168b565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000546001600160a01b03163314611dea5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b602555565b6000806000806000806000806000600b60009054906101000a900460ff16602554602454600c54600d54611e21612c94565b600854959f949e50929c50909a509850965060ff80831696506101008304811695506201000090920490911692509050565b6001600160a01b03811660009081526005602052604081205460ff1615611e9057506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546113399061168b565b6000546001600160a01b03163314611efa5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611f645760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b602655565b6000546001600160a01b03163314611fb15760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b600080611fbc612c94565b90508483146120335760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60448201527f656e20636f756e740000000000000000000000000000000000000000000000006064820152608401611009565b60005b8581101561207657848482818110612050576120506148b1565b905060200201358361206291906147bf565b92508061206e8161486a565b915050612036565b508161208133611e53565b10156120cf5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f70000000006044820152606401611009565b6120d981836147f9565b6001600160a01b0388166000908152600160205260409020546120fc9190614818565b6001600160a01b03881660009081526001602090815260408083209390935560059052205460ff1615612167576001600160a01b03871660009081526002602052604090205461214d908390614818565b6001600160a01b0388166000908152600260205260409020555b60005b858110156123d05760056000888884818110612188576121886148b1565b905060200201602081019061219d91906143ef565b6001600160a01b0316815260208101919091526040016000205460ff1615612274578484828181106121d1576121d16148b1565b90506020020135600260008989858181106121ee576121ee6148b1565b905060200201602081019061220391906143ef565b6001600160a01b03166001600160a01b031681526020019081526020016000205461222e91906147bf565b60026000898985818110612244576122446148b1565b905060200201602081019061225991906143ef565b6001600160a01b031681526020810191909152604001600020555b81858583818110612287576122876148b1565b9050602002013561229891906147f9565b600160008989858181106122ae576122ae6148b1565b90506020020160208101906122c391906143ef565b6001600160a01b03166001600160a01b03168152602001908152602001600020546122ee91906147bf565b60016000898985818110612304576123046148b1565b905060200201602081019061231991906143ef565b6001600160a01b03168152602081019190915260400160002055868682818110612345576123456148b1565b905060200201602081019061235a91906143ef565b6001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8787858181106123a0576123a06148b1565b905060200201356040516123b691815260200190565b60405180910390a3806123c88161486a565b91505061216a565b5050505050505050565b6060600f805461123c9061482f565b3360009081526003602090815260408083206001600160a01b03861684529091528120548211156124825760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401611009565b3360008181526003602090815260408083206001600160a01b038816845290915290205461133591908590611603908690614818565b6000546001600160a01b031633146125005760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b601191909155601055565b6000611335338484612e07565b6000546001600160a01b031633146125605760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b600061256b30611e53565b905060255481106125885760016025546125859190614818565b90505b81158061259457508082115b1561259d578091505b61194b826137fb565b6000546001600160a01b031633146125ee5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6103e881600c546125ff91906147f9565b61260991906147d7565b60255550565b6000546001600160a01b031633146126575760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b602380548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906126a090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146126f35760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314806127365750336001600160a01b038316145b6127825760405162461bcd60e51b815260206004820152601660248201527f4e6f7420617574686f72697a656420746f206275726e000000000000000000006044820152606401611009565b600061278c612c94565b61279690836147f9565b6001600160a01b0384166000908152600160205260409020549091506127bd908290614818565b6001600160a01b03841660009081526001602090815260408083209390935560059052205460ff1615612828576001600160a01b03831660009081526002602052604090205461280e908390614818565b6001600160a01b0384166000908152600260205260409020555b6029546001600160a01b031660009081526005602052604090205460ff161561288d576029546001600160a01b03166000908152600260205260409020546128719083906147bf565b6029546001600160a01b03166000908152600260205260409020555b6029546001600160a01b03166000908152600160205260409020546128b39082906147bf565b602980546001600160a01b03908116600090815260016020908152604091829020949094559154915185815291811692908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611113565b6000546001600160a01b031633146129575760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b60005b828110156111d7578160066000868685818110612979576129796148b1565b905060200201602081019061298e91906143ef565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556129bf8161486a565b905061295a565b6000546001600160a01b03163314612a0e5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b602755565b6000546001600160a01b03163314612a5b5760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b60005b828110156111d7578160046000868685818110612a7d57612a7d6148b1565b9050602002016020810190612a9291906143ef565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055612ac38161486a565b9050612a5e565b6000546001600160a01b03163314612b125760405162461bcd60e51b815260206004820181905260248201526000805160206148dd8339815191526044820152606401611009565b6001600160a01b038116612b8e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611009565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331480612c0c57506019546001600160a01b031633145b612c585760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420617574686f72697a656420746f20706572666f726d207468697300006044820152606401611009565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612c91573d6000803e3d6000fd5b50565b6000806000612ca161388a565b9092509050612cb081836147d7565b9250505090565b6001600160a01b038316612d325760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611009565b6001600160a01b038216612dae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611009565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611113565b6001600160a01b03831660009081526006602052604090205460ff16158015612e4957506001600160a01b03821660009081526006602052604090205460ff16155b612e955760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401611009565b6001600160a01b038316612f115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401611009565b6001600160a01b038216612f8d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401611009565b6000546001600160a01b03838116911614801590612fb457506001600160a01b0382163014155b8015612fce57506029546001600160a01b03838116911614155b801561300c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561302657506019546001600160a01b03838116911614155b80156130405750601f546001600160a01b03838116911614155b156130d657600061305083611e53565b60245490915061306083836147bf565b11156130d45760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401611009565b505b6000546001600160a01b0384811691161480159061310257506000546001600160a01b03838116911614155b801561312757506001600160a01b03831660009081526007602052604090205460ff16155b801561314c57506001600160a01b03821660009081526007602052604090205460ff16155b156131a35760085460ff166131a35760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401611009565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156131eb5750600854610100900460ff165b801561321057506001600160a01b03821660009081526004602052604090205460ff16155b801561322557506001600160a01b0382163014155b801561323f57506029546001600160a01b03838116911614155b15613301576001600160a01b03821660009081526009602052604090205442116132d15760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220636f6f6c646f776e206265747765656e60448201527f20627579730000000000000000000000000000000000000000000000000000006064820152608401611009565b6008546132e79062010000900460ff16426147bf565b6001600160a01b0383166000908152600960205260409020555b6000546001600160a01b0384811691161480159061332d57506000546001600160a01b03838116911614155b801561335257506001600160a01b03831660009081526007602052604090205460ff16155b801561337757506001600160a01b03821660009081526007602052604090205460ff16155b156133f4576025548111156133f45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401611009565b60006133ff30611e53565b9050602554811061341c5760016025546134199190614818565b90505b60265481108015908190613433575060235460ff16155b801561347157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156134845750602354610100900460ff165b15613497576026549150613497826137fb565b60235460ff161580156134dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561351b57601054601f546012546134fe92916001600160a01b031690613630565b60115460195460135461351b92916001600160a01b031690613630565b50506001600160a01b03831660009081526004602052604090205460019060ff168061355f57506001600160a01b03831660009081526004602052604090205460ff165b15613568575060005b8061357557613575613a0d565b60008060008060008060008060006135c18b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168e6001600160a01b03161461366c565b9850985098509850985098509850985098506135e18d8d8d8c8a8d613a4d565b6135eb8782613c1b565b896135fd576135f8613c41565b613621565b61360685613c6a565b61360f84613c81565b61361883613c98565b61362182613ca2565b50505050505050505050505050565b8261363a57505050565b60255483111561364a5760255492505b61365382611e53565b61365d82856147bf565b11611775576117758284613cb9565b6000806000806000806000806000808a61368757606461368b565b6027545b9050602254601a548d61369e91906147f9565b6136a891906147d7565b955060225460646136b991906147f9565b816017548e6136c891906147f9565b6136d291906147f9565b6136dc91906147d7565b945060225460646136ed91906147f9565b816020548e6136fc91906147f9565b61370691906147f9565b61371091906147d7565b9350602254606461372191906147f9565b81601d548e61373091906147f9565b61373a91906147f9565b61374491906147d7565b9250602254606461375591906147f9565b816014548e61376491906147f9565b61376e91906147f9565b61377891906147d7565b9150818385613787888a6147bf565b61379191906147bf565b61379b91906147bf565b6137a591906147bf565b6137af908d614818565b96506137b9612c94565b6137c390836147f9565b97506137cd612c94565b6137d7908d6147f9565b99506137e1612c94565b6137eb90886147f9565b9850509295985092959850929598565b6023805460ff1916600117905560006138156002836147d7565b90504761382182613df9565b600061382d8247614818565b90506138398382613fc0565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506023805460ff191690555050565b600d54600c546000918291825b600a548110156139dc578260016000600a84815481106138b9576138b96148b1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061392457508160026000600a84815481106138fd576138fd6148b1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561393a57600d54600c54945094505050509091565b60016000600a8381548110613951576139516148b1565b60009182526020808320909101546001600160a01b031683528201929092526040019020546139809084614818565b925060026000600a8381548110613999576139996148b1565b60009182526020808320909101546001600160a01b031683528201929092526040019020546139c89083614818565b9150806139d48161486a565b915050613897565b50600c54600d546139ed91906147d7565b821015613a0457600d54600c549350935050509091565b90939092509050565b601a54601b55601754601855602054602155601d54601e55601454601555613a4b600080808080601a94909455601792909255602055601d55601455565b565b6001600160a01b038616600090815260016020526040902054613a71908490614818565b6001600160a01b03871660009081526001602090815260408083209390935560059052205460ff1615613adc576001600160a01b038616600090815260026020526040902054613ac2908590614818565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615613b3b576001600160a01b038516600090815260026020526040902054613b219083906147bf565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b038516600090815260016020526040902054613b5f9082906147bf565b6001600160a01b0380871660008181526001602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613bb39086815260200190565b60405180910390a36040805185815260208101859052908101839052606081018290526001600160a01b0380871691908816907fa44e2ebd30e6f04fbf0ee4935cc0558c3b926d578067dc2940e6880750cb84789060800160405180910390a3505050505050565b81600d54613c299190614818565b600d55601654613c3a9082906147bf565b6016555050565b613a4b601b54601854602154601e54601554601a94909455601792909255602055601d55601455565b601c54612c919082906001600160a01b03166140db565b601954612c919082906001600160a01b03166140db565b612c9181306140db565b601f54612c919082906001600160a01b03166140db565b6023805460ff191660011790556000613cd0612c94565b613cda90836147f9565b6001600160a01b038416600090815260016020526040902054909150613d01908290614818565b6001600160a01b03841660009081526001602090815260408083209390935560059052205460ff1615613d6c576001600160a01b038316600090815260026020526040902054613d52908390614818565b6001600160a01b0384166000908152600260205260409020555b30600090815260016020526040902054613d879082906147bf565b30600081815260016020526040908190209290925590516001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613dd89086815260200190565b60405180910390a3613dea82846141be565b50506023805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e2e57613e2e6148b1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ea757600080fd5b505afa158015613ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613edf919061440c565b81600181518110613ef257613ef26148b1565b60200260200101906001600160a01b031690816001600160a01b031681525050613f3d307f000000000000000000000000000000000000000000000000000000000000000084612cb7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790613f92908590600090869030904290600401614783565b600060405180830381600087803b158015613fac57600080fd5b505af1158015611b92573d6000803e3d6000fd5b613feb307f000000000000000000000000000000000000000000000000000000000000000084612cb7565b6040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018390526000604482018190526064820152731fa5d26b4bdf55bc99253b916f4fadb864a2459e60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b15801561409b57600080fd5b505af11580156140af573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140d49190614681565b5050505050565b60006140e5612c94565b6140ef90846147f9565b6001600160a01b0383166000908152600160205260409020549091506141169082906147bf565b6001600160a01b03831660009081526001602090815260408083209390935560059052205460ff1615614181576001600160a01b0382166000908152600260205260409020546141679084906147bf565b6001600160a01b0383166000908152600260205260409020555b6040518381526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611113565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106141f3576141f36148b1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561426c57600080fd5b505afa158015614280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a4919061440c565b816001815181106142b7576142b76148b1565b60200260200101906001600160a01b031690816001600160a01b031681525050614302307f000000000000000000000000000000000000000000000000000000000000000085612cb7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790614357908690600090869088904290600401614783565b600060405180830381600087803b15801561437157600080fd5b505af1158015614385573d6000803e3d6000fd5b50505050505050565b60008083601f8401126143a057600080fd5b50813567ffffffffffffffff8111156143b857600080fd5b6020830191508360208260051b85010111156143d357600080fd5b9250929050565b803580151581146143ea57600080fd5b919050565b60006020828403121561440157600080fd5b813561171b816148c7565b60006020828403121561441e57600080fd5b815161171b816148c7565b6000806040838503121561443c57600080fd5b8235614447816148c7565b91506020830135614457816148c7565b809150509250929050565b60008060006060848603121561447757600080fd5b8335614482816148c7565b92506020840135614492816148c7565b929592945050506040919091013590565b6000806000806000606086880312156144bb57600080fd5b85356144c6816148c7565b9450602086013567ffffffffffffffff808211156144e357600080fd5b6144ef89838a0161438e565b9096509450604088013591508082111561450857600080fd5b506145158882890161438e565b969995985093965092949392505050565b6000806040838503121561453957600080fd5b8235614544816148c7565b946020939093013593505050565b60008060006040848603121561456757600080fd5b833567ffffffffffffffff81111561457e57600080fd5b61458a8682870161438e565b909450925061459d9050602085016143da565b90509250925092565b6000602082840312156145b857600080fd5b61171b826143da565b600080604083850312156145d457600080fd5b6145dd836143da565b9150602083013560ff8116811461445757600080fd5b60006020828403121561460557600080fd5b5035919050565b60008060006060848603121561462157600080fd5b833592506020840135614492816148c7565b6000806040838503121561464657600080fd5b82359150614656602084016143da565b90509250929050565b6000806040838503121561467257600080fd5b50508035926020909101359150565b60008060006060848603121561469657600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a086880312156146c757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b838110156147235781516001600160a01b0316875295820195908201906001016146fe565b509495945050505050565b600060208083528351808285015260005b8181101561475b5785810183015185820160400152820161473f565b8181111561476d576000604083870101525b50601f01601f1916929092016040019392505050565b85815284602082015260a0604082015260006147a260a08301866146ea565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156147d2576147d2614885565b500190565b6000826147f457634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561481357614813614885565b500290565b60008282101561482a5761482a614885565b500390565b600181811c9082168061484357607f821691505b6020821081141561486457634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561487e5761487e614885565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612c9157600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220fa9837dbebf1b4e4a24db24a5a8a6ce938226f9e70a80902810370f3c1ff767664736f6c63430008050033

Deployed ByteCode Sourcemap

13460:31758:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13614:50;;;;;;;;;;-1:-1:-1;13614:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17786:25:1;;;17774:2;17759:18;13614:50:0;;;;;;;;36577:674;;;;;;;;;;-1:-1:-1;36577:674:0;;;;;:::i;:::-;;:::i;:::-;;27201:217;;;;;;;;;;-1:-1:-1;27201:217:0;;;;;:::i;:::-;;:::i;35225:276::-;;;;;;;;;;-1:-1:-1;35225:276:0;;;;;:::i;:::-;;:::i;17887:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25862:160::-;;;;;;;;;;-1:-1:-1;25862:160:0;;;;;:::i;:::-;;:::i;18823:161::-;;;;;;;;;;-1:-1:-1;18823:161:0;;;;;:::i;:::-;;:::i;:::-;;;7807:14:1;;7800:22;7782:41;;7770:2;7755:18;18823:161:0;7737:92:1;26979:214:0;;;;;;;;;;-1:-1:-1;26979:214:0;;;;;:::i;:::-;;:::i;21949:131::-;;;;;;;;;;-1:-1:-1;21949:131:0;;;;;:::i;:::-;;:::i;24800:94::-;;;;;;;;;;-1:-1:-1;24800:94:0;;;;;:::i;:::-;;:::i;26100:122::-;;;;;;;;;;-1:-1:-1;26100:122:0;;;;;:::i;:::-;;:::i;19961:102::-;;;;;;;;;;-1:-1:-1;20030:25:0;;19961:102;;16117:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6693:55:1;;;6675:74;;6663:2;6648:18;16117:51:0;6630:125:1;18164:101:0;;;;;;;;;;-1:-1:-1;18244:13:0;;18164:101;;20779:306;;;;;;;;;;;;;:::i;:::-;;;;19252:25:1;;;19308:2;19293:18;;19286:34;;;;19336:18;;;19329:34;19240:2;19225:18;20779:306:0;19207:162:1;13885:47:0;;;;;;;;;;-1:-1:-1;13885:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18992:385;;;;;;;;;;-1:-1:-1;18992:385:0;;;;;:::i;:::-;;:::i;15028:63::-;;;;;;;;;;;;;;;;24941:164;;;;;;;;;;-1:-1:-1;24941:164:0;;;;;:::i;:::-;;:::i;23347:262::-;;;;;;;;;;-1:-1:-1;23347:262:0;;;;;:::i;:::-;;:::i;32410:200::-;;;;;;;;;;-1:-1:-1;32410:200:0;;;;;:::i;:::-;;:::i;18073:83::-;;;;;;;;;;-1:-1:-1;18139:9:0;;;;18073:83;;;21006:4:1;20994:17;;;20976:36;;20964:2;20949:18;18073:83:0;20931:87:1;15813:92:0;;;;;;;;;;-1:-1:-1;15813:92:0;;;;-1:-1:-1;;;;;15813:92:0;;;14866:71;;;;;;;;;;;;;;;;24101:486;;;;;;;;;;-1:-1:-1;24101:486:0;;;;;:::i;:::-;;:::i;19385:217::-;;;;;;;;;;-1:-1:-1;19385:217:0;;;;;:::i;:::-;;:::i;22422:449::-;;;;;;;;;;-1:-1:-1;22422:449:0;;;;;:::i;:::-;;:::i;35573:454::-;;;;;;;;;;-1:-1:-1;35573:454:0;;;;;:::i;:::-;;:::i;22879:460::-;;;;;;;;;;-1:-1:-1;22879:460:0;;;;;:::i;:::-;;:::i;16175:38::-;;;;;;;;;;;;;;;16248:40;;;;;;;;;;-1:-1:-1;16248:40:0;;;;;;;;;;;23617:476;;;;;;;;;;-1:-1:-1;23617:476:0;;;;;:::i;:::-;;:::i;20071:123::-;;;;;;;;;;-1:-1:-1;20071:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;20159:27:0;20135:4;20159:27;;;:18;:27;;;;;;;;;20071:123;25659:111;;;;;;;;;;-1:-1:-1;25659:111:0;;;;;:::i;:::-;;:::i;20251:520::-;;;;;;;;;;;;;:::i;:::-;;;;21404:4:1;21392:17;;;21374:36;;21441:2;21426:18;;21419:34;;;;21469:18;;21462:34;;;;21527:2;21512:18;;21505:34;;;;21570:3;21555:19;;21548:35;;;;21614:3;21599:19;;21592:35;21671:14;21664:22;21658:3;21643:19;;21636:51;21731:14;21724:22;21718:3;21703:19;;21696:51;21784:17;;;21778:3;21763:19;;21756:46;21361:3;21346:19;20251:520:0;21328:480:1;14150:37:0;;;;;;;;;;-1:-1:-1;14150:37:0;;;;;;;;;;;15400:94;;;;;;;;;;-1:-1:-1;15400:94:0;;;;-1:-1:-1;;;;;15400:94:0;;;21093:819;;;;;;;;;;-1:-1:-1;21628:15:0;;21645:14;;;21674:12;;21687:26;;21714:20;;21749:14;;21764:28;;21794:22;;21831:9;;21855:15;;21872:12;;21886:17;;21093:819;;;20227:25:1;;;20268:18;;;20261:34;;;;20311:18;;;20304:34;;;;20369:2;20354:18;;20347:34;;;;20412:3;20397:19;;20390:35;;;;20456:3;20441:19;;20434:35;;;;20500:3;20485:19;;20478:35;20544:3;20529:19;;20522:35;20588:3;20573:19;;20566:35;-1:-1:-1;;;;;21855:15:0;;;20693:3:1;20678:19;;20671:44;21872:12:0;;;20746:3:1;20731:19;;20724:45;21886:17:0;20800:3:1;20785:19;;20778:45;20214:3;20199:19;21093:819:0;20181:648:1;18273:216:0;;;;;;;;;;-1:-1:-1;18273:216:0;;;;;:::i;:::-;;:::i;14194:39::-;;;;;;;;;;-1:-1:-1;14194:39:0;;;;;;;;;;;16297:46;;;;;;;;;;;;;;;;22088:127;;;;;;;;;;-1:-1:-1;22088:127:0;;;;;:::i;:::-;;:::i;16350:43::-;;;;;;;;;;;;;;;;25187:184;;;;;;;;;;-1:-1:-1;25187:184:0;;;;;:::i;:::-;;:::i;15603:89::-;;;;;;;;;;-1:-1:-1;15603:89:0;;;;-1:-1:-1;;;;;15603:89:0;;;24595:120;;;;;;;;;;-1:-1:-1;24595:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;24687:20:0;24663:4;24687:20;;;:11;:20;;;;;;;;;24595:120;27585:1337;;;;;;;;;;-1:-1:-1;27585:1337:0;;;;;:::i;:::-;;:::i;5022:87::-;;;;;;;;;;-1:-1:-1;5068:7:0;5095:6;-1:-1:-1;;;;;5095:6:0;5022:87;;15930:33;;;;;;;;;;;;;;;;17978:87;;;;;;;;;;;;;:::i;13973:47::-;;;;;;;;;;-1:-1:-1;13973:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19610:343;;;;;;;;;;-1:-1:-1;19610:343:0;;;;;:::i;:::-;;:::i;15520:28::-;;;;;;;;;;;;;;;;34937:280;;;;;;;;;;-1:-1:-1;34937:280:0;;;;;:::i;:::-;;:::i;18497:167::-;;;;;;;;;;-1:-1:-1;18497:167:0;;;;;:::i;:::-;;:::i;13553:54::-;;;;;;;;;;-1:-1:-1;13553:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;14790:69;;;;;;;;;;;;;;;;29038:455;;;;;;;;;;-1:-1:-1;29038:455:0;;;;;:::i;:::-;;:::i;16402:77::-;;;;;;;;;;;;;;;;15302:33;;;;;;;;;;;;;;;;15125:34;;;;;;;;;;;;;;;;15721:31;;;;;;;;;;;;;;;;25447:149;;;;;;;;;;-1:-1:-1;25447:149:0;;;;;:::i;:::-;;:::i;26299:168::-;;;;;;;;;;-1:-1:-1;26299:168:0;;;;;:::i;:::-;;:::i;22223:121::-;;;;;;;;;;-1:-1:-1;22223:121:0;;;;;:::i;:::-;;:::i;37298:862::-;;;;;;;;;;-1:-1:-1;37298:862:0;;;;;:::i;:::-;;:::i;18672:143::-;;;;;;;;;;-1:-1:-1;18672:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18780:18:0;;;18753:7;18780:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18672:143;14982:39;;;;;;;;;;;;;;;;26757:214;;;;;;;;;;-1:-1:-1;26757:214:0;;;;;:::i;:::-;;:::i;34808:121::-;;;;;;;;;;-1:-1:-1;34808:121:0;;;;;:::i;:::-;;:::i;26526:223::-;;;;;;;;;;-1:-1:-1;26526:223:0;;;;;:::i;:::-;;:::i;5249:244::-;;;;;;;;;;-1:-1:-1;5249:244:0;;;;;:::i;:::-;;:::i;29552:218::-;;;;;;;;;;;;;:::i;16030:39::-;;;;;;;;;;;;;;;;16488:35;;;;;;;;;;;;;;;;14071:31;;;;;;;;;;-1:-1:-1;14071:31:0;;;;;;;;36577:674;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;36683:10;:21;;:45;;-1:-1:-1;36708:10:0;-1:-1:-1;;;;;36708:20:0;;;36683:45;36675:80;;;;-1:-1:-1;;;36675:80:0;;10068:2:1;36675:80:0;;;10050:21:1;10107:2;10087:18;;;10080:30;10146:24;10126:18;;;10119:52;10188:18;;36675:80:0;;;;;;;;;36768:24;36813:10;:8;:10::i;:::-;36795:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;36868:26:0;;;;;;:18;:26;;;;;;36768:55;;-1:-1:-1;36868:46:0;;36768:55;;36868:46;:::i;:::-;-1:-1:-1;;;;;36836:26:0;;;;;;:18;:26;;;;;;;;:78;;;;36929:11;:19;;;;;;36925:124;;;-1:-1:-1;;;;;36992:22:0;;;;;;:14;:22;;;;;;:45;;37022:15;;36992:45;:::i;:::-;-1:-1:-1;;;;;36964:22:0;;;;;;:14;:22;;;;;:73;36925:124;37093:15;37077:13;;:31;;;;:::i;:::-;37061:13;:47;37139:17;;:36;;37159:16;;37139:36;:::i;:::-;37119:17;:56;37193:48;;17786:25:1;;;37218:4:0;;-1:-1:-1;;;;;37193:48:0;;;;;17774:2:1;17759:18;37193:48:0;;;;;;;;36662:589;36577:674;;:::o;27201:217::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;27305:9:::1;27300:111;27316:20:::0;;::::1;27300:111;;;27393:6;27358:18;:32;27377:9;;27387:1;27377:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27358:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27358:32:0;:41;;-1:-1:-1;;27358:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27338:3:::1;::::0;::::1;:::i;:::-;;;27300:111;;;;27201:217:::0;;;:::o;35225:276::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;35369:20:::1;:56:::0;35436:22:::1;:57:::0;35225:276::o;17887:83::-;17924:13;17957:5;17950:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17887:83;:::o;25862:160::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;26010:4:::1;25991:14;25975:13;;:30;;;;:::i;:::-;25974:40;;;;:::i;:::-;25956:15;:58:::0;-1:-1:-1;25862:160:0:o;18823:161::-;18898:4;18915:39;1125:10;18938:7;18947:6;18915:8;:39::i;:::-;-1:-1:-1;18972:4:0;18823:161;;;;;:::o;26979:214::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;27084:9:::1;27079:107;27095:20:::0;;::::1;27079:107;;;27168:6;27137:14;:28;27152:9;;27162:1;27152:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27137:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27137:28:0;:37;;-1:-1:-1;;27137:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27117:3:::1;::::0;::::1;:::i;:::-;;;27079:107;;21949:131:::0;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;22034:17:::1;:38:::0;;-1:-1:-1;;;;;;22034:38:0::1;-1:-1:-1::0;;;;;22034:38:0;;;::::1;::::0;;;::::1;::::0;;21949:131::o;24800:94::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;24865:11:::1;:21:::0;;-1:-1:-1;;24865:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24800:94::o;26100:122::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;26183:15:::1;:31:::0;26100:122::o;20779:306::-;20843:37;20891:28;20930:32;20993:30;;21025:24;21043:4;21025:9;:24::i;:::-;21051:25;;20985:92;;;;;;20779:306;;;:::o;18992:385::-;19090:4;19107:36;19117:6;19125:9;19136:6;19107:9;:36::i;:::-;-1:-1:-1;;;;;19165:19:0;;;;;;:11;:19;;;;;;;;1125:10;19165:33;;;;;;;;:43;-1:-1:-1;19165:43:0;19156:96;;;;-1:-1:-1;;;19156:96:0;;15011:2:1;19156:96:0;;;14993:21:1;15050:2;15030:18;;;15023:30;15089:34;15069:18;;;15062:62;15160:10;15140:18;;;15133:38;15188:19;;19156:96:0;14983:230:1;19156:96:0;-1:-1:-1;;;;;19305:19:0;;;;;;:11;:19;;;;;;;;1125:10;19305:33;;;;;;;;;19273:74;;19282:6;;19305:40;;19339:6;;19305:40;:::i;:::-;19273:8;:74::i;:::-;-1:-1:-1;19365:4:0;18992:385;;;;;:::o;24941:164::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;25025:18:::1;:28:::0;;-1:-1:-1;;25064:33:0;25025:28:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;25064:33:0;;;;;;25025:28:::1;25064:33:::0;;;::::1;::::0;;;::::1;;::::0;;24941:164::o;23347:262::-;23413:7;23452:17;;23441:7;:28;;23433:83;;;;-1:-1:-1;;;23433:83:0;;10419:2:1;23433:83:0;;;10401:21:1;10458:2;10438:18;;;10431:30;10497:34;10477:18;;;10470:62;10568:12;10548:18;;;10541:40;10598:19;;23433:83:0;10391:232:1;23433:83:0;23527:19;23550:10;:8;:10::i;:::-;23527:33;-1:-1:-1;23579:21:0;23527:33;23579:7;:21;:::i;:::-;23571:30;23347:262;-1:-1:-1;;;23347:262:0:o;32410:200::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;32546:56:::1;32559:15;32575:9;32585:16;32546:12;:56::i;:::-;32410:200:::0;;;:::o;24101:486::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;-1:-1:-1;;;;;24183:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24175:60;;;::::0;-1:-1:-1;;;24175:60:0;;13115:2:1;24175:60:0::1;::::0;::::1;13097:21:1::0;13154:2;13134:18;;;13127:30;13193:29;13173:18;;;13166:57;13240:18;;24175:60:0::1;13087:177:1::0;24175:60:0::1;24251:9;24246:334;24270:9;:16:::0;24266:20;::::1;24246:334;;;24328:7;-1:-1:-1::0;;;;;24312:23:0::1;:9;24322:1;24312:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24312:12:0::1;:23;24308:261;;;24371:9;24381:16:::0;;:20:::1;::::0;24400:1:::1;::::0;24381:20:::1;:::i;:::-;24371:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;24356:9:::1;:12:::0;;-1:-1:-1;;;;;24371:31:0;;::::1;::::0;24366:1;;24356:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;24356:46:0::1;-1:-1:-1::0;;;;;24356:46:0;;::::1;;::::0;;24421:23;;::::1;::::0;;:14:::1;:23:::0;;;;;;:27;;;24467:11:::1;:20:::0;;;;:28;;-1:-1:-1;;24467:28:0::1;::::0;;24514:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24514:15:0;;;;;-1:-1:-1;;;;;;24514:15:0::1;::::0;;;;;24246:334:::1;24101:486:::0;:::o;24308:261::-:1;24288:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24246:334;;;;24101:486:::0;:::o;19385:217::-;1125:10;19473:4;19523:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19523:34:0;;;;;;;;;;19473:4;;19490:82;;19513:7;;19523:47;;19560:10;;19523:47;:::i;22422:449::-;1125:10;22474:14;22523:19;;;:11;:19;;;;;;;;22522:20;22514:77;;;;-1:-1:-1;;;22514:77:0;;17023:2:1;22514:77:0;;;17005:21:1;17062:2;17042:18;;;17035:30;17101:34;17081:18;;;17074:62;17172:14;17152:18;;;17145:42;17204:19;;22514:77:0;16995:234:1;22514:77:0;22603:15;22630:25;22641:7;22649:5;22630:10;:25::i;:::-;-1:-1:-1;;;;;;;;22695:26:0;;;;;;:18;:26;;;;;;22602:53;;-1:-1:-1;22695:36:0;;22602:53;;-1:-1:-1;22695:26:0;-1:-1:-1;22695:36:0;;-1:-1:-1;;;22695:36:0:i;:::-;-1:-1:-1;;;;;22666:26:0;;;;;;:18;:26;;;;;:65;22762:17;;:27;;22782:7;;22762:27;:::i;:::-;22742:17;:47;22828:25;;:35;;22856:7;;22828:35;:::i;:::-;22800:25;:63;-1:-1:-1;;;22422:449:0:o;35573:454::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;35736:18:::1;35816:15:::0;35802:11;35784:14;35757:24:::1;35769:12:::0;35757:9;:24:::1;:::i;:::-;:41;;;;:::i;:::-;:56;;;;:::i;:::-;:74;;;;:::i;:::-;35736:95;;35863:4;35850:10;:17;35842:83;;;::::0;-1:-1:-1;;;35842:83:0;;13471:2:1;35842:83:0::1;::::0;::::1;13453:21:1::0;13510:2;13490:18;;;13483:30;13549:34;13529:18;;;13522:62;13620:23;13600:18;;;13593:51;13661:19;;35842:83:0::1;13443:243:1::0;35842:83:0::1;34566:9:::0;:30;;;34607:14;:36;;;34654:14;:35;;;34700:12;:35;;;34746:15;:36;;;35936:83:::1;35725:302;35573:454:::0;;;;;:::o;22879:460::-;22969:7;23008:13;;22997:7;:24;;22989:68;;;;-1:-1:-1;;;22989:68:0;;13893:2:1;22989:68:0;;;13875:21:1;13932:2;13912:18;;;13905:30;13971:33;13951:18;;;13944:61;14022:18;;22989:68:0;13865:181:1;22989:68:0;23073:17;23068:264;;23108:15;23135:25;23146:7;23154:5;23135:10;:25::i;:::-;-1:-1:-1;23107:53:0;;-1:-1:-1;23175:14:0;;-1:-1:-1;;;;;;;;23175:14:0;23068:264;23224:23;23258:25;23269:7;23277:5;23258:10;:25::i;:::-;-1:-1:-1;23222:61:0;;-1:-1:-1;23298:22:0;;-1:-1:-1;;;;;;;;23298:22:0;23617:476;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;-1:-1:-1;;;;;23814:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23813:21;23805:61;;;::::0;-1:-1:-1;;;23805:61:0;;12403:2:1;23805:61:0::1;::::0;::::1;12385:21:1::0;12442:2;12422:18;;;12415:30;12481:29;12461:18;;;12454:57;12528:18;;23805:61:0::1;12375:177:1::0;23805:61:0::1;-1:-1:-1::0;;;;;23880:27:0;::::1;23910:1;23880:27:::0;;;:18:::1;:27;::::0;;;;;:31;23877:137:::1;;-1:-1:-1::0;;;;;23974:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;23954:48:::1;::::0;:19:::1;:48::i;:::-;-1:-1:-1::0;;;;;23928:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:74;23877:137:::1;-1:-1:-1::0;;;;;24024:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;24024:27:0::1;24047:4;24024:27:::0;;::::1;::::0;;;24062:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;24062:23:0::1;::::0;;::::1;::::0;;23617:476::o;25659:111::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;25736:12:::1;:26:::0;25659:111::o;20251:520::-;20306:14;20331:19;20361:22;20394:19;20424:24;20459:23;20493:16;20520:27;20558:29;20618:9;;;;;;;;;;;20629:12;;20643:15;;20660:13;;20675:17;;20694:10;:8;:10::i;:::-;20706:11;;20610:153;;;;-1:-1:-1;20610:153:0;;-1:-1:-1;20610:153:0;;-1:-1:-1;20610:153:0;-1:-1:-1;20610:153:0;-1:-1:-1;20706:11:0;;;;;-1:-1:-1;20706:11:0;20719:18;;;;;-1:-1:-1;20739:21:0;;;;;;;;-1:-1:-1;20251:520:0;-1:-1:-1;20251:520:0:o;18273:216::-;-1:-1:-1;;;;;18363:20:0;;18339:7;18363:20;;;:11;:20;;;;;;;;18359:56;;;-1:-1:-1;;;;;;18392:23:0;;;;;:14;:23;;;;;;;18273:216::o;18359:56::-;-1:-1:-1;;;;;18453:27:0;;;;;;:18;:27;;;;;;18433:48;;:19;:48::i;22088:127::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;22171:15:::1;:36:::0;;-1:-1:-1;;;;;;22171:36:0::1;-1:-1:-1::0;;;;;22171:36:0;;;::::1;::::0;;;::::1;::::0;;22088:127::o;25187:184::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;25301:30:::1;:62:::0;25187:184::o;27585:1337::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;27704:22:::1;27737:19:::0;27759:10:::1;:8;:10::i;:::-;27737:32:::0;-1:-1:-1;27784:33:0;;::::1;27776:85;;;::::0;-1:-1:-1;;;27776:85:0;;9300:2:1;27776:85:0::1;::::0;::::1;9282:21:1::0;9339:2;9319:18;;;9312:30;9378:34;9358:18;;;9351:62;9449:10;9429:18;;;9422:38;9477:19;;27776:85:0::1;9272:230:1::0;27776:85:0::1;27876:6;27872:102;27886:20:::0;;::::1;27872:102;;;27957:6;;27964:1;27957:9;;;;;;;:::i;:::-;;;;;;;27940:14;:26;;;;:::i;:::-;27923:43:::0;-1:-1:-1;27908:3:0;::::1;::::0;::::1;:::i;:::-;;;;27872:102;;;;28015:14;27990:21;28000:10;27990:9;:21::i;:::-;:39;;27982:80;;;::::0;-1:-1:-1;;;27982:80:0;;12046:2:1;27982:80:0::1;::::0;::::1;12028:21:1::0;12085:2;12065:18;;;12058:30;12124;12104:18;;;12097:58;12172:18;;27982:80:0::1;12018:178:1::0;27982:80:0::1;28174:28;28191:11:::0;28174:14;:28:::1;:::i;:::-;-1:-1:-1::0;;;;;28146:24:0;::::1;;::::0;;;:18:::1;:24;::::0;;;;;:56:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;28116:24:0;::::1;;::::0;;;:18:::1;:24;::::0;;;;;;;:86;;;;28291:11:::1;:17:::0;;;;::::1;;28287:109;;;-1:-1:-1::0;;;;;28346:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;:42:::1;::::0;28374:14;;28346:42:::1;:::i;:::-;-1:-1:-1::0;;;;;28320:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;:68;28287:109:::1;28408:6;28404:513;28418:20:::0;;::::1;28404:513;;;28551:11;:25;28563:9;;28573:1;28563:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28551:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28551:25:0;;::::1;;28547:141;;;28666:6;;28673:1;28666:9;;;;;;;:::i;:::-;;;;;;;28628:14;:28;28643:9;;28653:1;28643:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28628:28:0::1;-1:-1:-1::0;;;;;28628:28:0::1;;;;;;;;;;;;;:47;;;;:::i;:::-;28592:14;:28;28607:9;;28617:1;28607:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28592:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28592:28:0;:83;28547:141:::1;28841:11;28829:6;;28836:1;28829:9;;;;;;;:::i;:::-;;;;;;;:23;;;;:::i;:::-;28791:18;:32;28810:9;;28820:1;28810:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28791:32:0::1;-1:-1:-1::0;;;;;28791:32:0::1;;;;;;;;;;;;;:61;;;;:::i;:::-;28751:18;:32;28770:9;;28780:1;28770:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28751:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28751:32:0;:101;28884:9;;28894:1;28884:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28870:37:0::1;28879:4;-1:-1:-1::0;;;;;28870:37:0::1;;28897:6;;28904:1;28897:9;;;;;;;:::i;:::-;;;;;;;28870:37;;;;17786:25:1::0;;17774:2;17759:18;;17741:76;28870:37:0::1;;;;;;;;28440:3:::0;::::1;::::0;::::1;:::i;:::-;;;;28404:513;;;;27695:1227;;27585:1337:::0;;;;;:::o;17978:87::-;18017:13;18050:7;18043:14;;;;;:::i;19610:343::-;1125:10;19703:4;19729:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19729:34:0;;;;;;;;;;:53;-1:-1:-1;19729:53:0;19720:103;;;;-1:-1:-1;;;19720:103:0;;17436:2:1;19720:103:0;;;17418:21:1;17475:2;17455:18;;;17448:30;17514:34;17494:18;;;17487:62;17585:7;17565:18;;;17558:35;17610:19;;19720:103:0;17408:227:1;19720:103:0;1125:10;19869:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19869:34:0;;;;;;;;;;19836:87;;1125:10;19859:7;;19869:52;;19906:15;;19869:52;:::i;34937:280::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;35070:28:::1;:63:::0;;;;35144:26:::1;:62:::0;34937:280::o;18497:167::-;18575:4;18592:42;1125:10;18616:9;18627:6;18592:9;:42::i;29038:455::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;29126:28:::1;29157:24;29175:4;29157:9;:24::i;:::-;29126:55;;29221:12;;29197:20;:36;29194:107;;29288:1;29273:12;;:16;;;;:::i;:::-;29250:39;;29194:107;29316:20:::0;;;:62:::1;;;29358:20;29340:15;:38;29316:62;29313:131;;;29412:20;29394:38;;29313:131;29454:31;29469:15;29454:14;:31::i;25447:149::-:0;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;25584:4:::1;25567:12;25551:13;;:28;;;;:::i;:::-;25550:38;;;;:::i;:::-;25535:12;:53:::0;-1:-1:-1;25447:149:0:o;26299:168::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;26375:21:::1;:31:::0;;;::::1;;;;-1:-1:-1::0;;26375:31:0;;::::1;;::::0;;26422:37:::1;::::0;::::1;::::0;::::1;::::0;26399:7;7807:14:1;7800:22;7782:41;;7770:2;7755:18;;7737:92;26422:37:0::1;;;;;;;;26299:168:::0;:::o;22223:121::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;22303:12:::1;:33:::0;;-1:-1:-1;;;;;;22303:33:0::1;-1:-1:-1::0;;;;;22303:33:0;;;::::1;::::0;;;::::1;::::0;;22223:121::o;37298:862::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;37398:10;:21;;:45;;-1:-1:-1;37423:10:0;-1:-1:-1;;;;;37423:20:0;;;37398:45;37390:80;;;;-1:-1:-1;;;37390:80:0;;10068:2:1;37390:80:0;;;10050:21:1;10107:2;10087:18;;;10080:30;10146:24;10126:18;;;10119:52;10188:18;;37390:80:0;10040:172:1;37390:80:0;37483:24;37528:10;:8;:10::i;:::-;37510:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;37589:26:0;;;;;;:18;:26;;;;;;37483:55;;-1:-1:-1;37589:46:0;;37483:55;;37589:46;:::i;:::-;-1:-1:-1;;;;;37551:26:0;;;;;;:18;:26;;;;;;;;:84;;;;37650:11;:19;;;;;;37646:130;;;-1:-1:-1;;;;;37719:22:0;;;;;;:14;:22;;;;;;:45;;37749:15;;37719:45;:::i;:::-;-1:-1:-1;;;;;37685:22:0;;;;;;:14;:22;;;;;:79;37646:130;37804:11;;-1:-1:-1;;;;;37804:11:0;37792:24;;;;:11;:24;;;;;;;;37788:144;;;37881:11;;-1:-1:-1;;;;;37881:11:0;37866:27;;;;:14;:27;;;;;;:52;;37903:15;;37866:52;:::i;:::-;37847:11;;-1:-1:-1;;;;;37847:11:0;37832:27;;;;:14;:27;;;;;:86;37788:144;38052:11;;-1:-1:-1;;;;;38052:11:0;38033:31;;;;:18;:31;;;;;;:53;;38070:16;;38033:53;:::i;:::-;38014:11;;;-1:-1:-1;;;;;38014:11:0;;;37995:31;;;;:18;:31;;;;;;;;;:91;;;;38121:11;;38104:46;;17786:25:1;;;38121:11:0;;;;38104:46;;;;;;17759:18:1;38104:46:0;17741:76:1;26757:214:0;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;26862:9:::1;26857:107;26873:20:::0;;::::1;26857:107;;;26946:6;26915:14;:28;26930:9;;26940:1;26930:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26915:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;26915:28:0;:37;;-1:-1:-1;;26915:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26895:3:::1;::::0;::::1;:::i;:::-;;;26857:107;;34808:121:::0;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;34886:14:::1;:27:::0;34808:121::o;26526:223::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;26636:9:::1;26631:111;26647:20:::0;;::::1;26631:111;;;26724:6;26689:18;:32;26708:9;;26718:1;26708:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26689:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;26689:32:0;:41;;-1:-1:-1;;26689:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26669:3:::1;::::0;::::1;:::i;:::-;;;26631:111;;5249:244:::0;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;1125:10;5161:23;5153:68;;;;-1:-1:-1;;;5153:68:0;;15420:2:1;5153:68:0;;;15402:21:1;;;15439:18;;;15432:30;-1:-1:-1;;;;;;;;;;;15478:18:1;;;15471:62;15550:18;;5153:68:0;15392:182:1;5153:68:0;-1:-1:-1;;;;;5338:22:0;::::1;5330:73;;;::::0;-1:-1:-1;;;5330:73:0;;10830:2:1;5330:73:0::1;::::0;::::1;10812:21:1::0;10869:2;10849:18;;;10842:30;10908:34;10888:18;;;10881:62;10979:8;10959:18;;;10952:36;11005:19;;5330:73:0::1;10802:228:1::0;5330:73:0::1;5440:6;::::0;;5419:38:::1;::::0;-1:-1:-1;;;;;5419:38:0;;::::1;::::0;5440:6;::::1;::::0;5419:38:::1;::::0;::::1;5468:6;:17:::0;;-1:-1:-1;;;;;;5468:17:0::1;-1:-1:-1::0;;;;;5468:17:0;;;::::1;::::0;;;::::1;::::0;;5249:244::o;29552:218::-;5068:7;5095:6;-1:-1:-1;;;;;5095:6:0;29610:10;:21;;:56;;-1:-1:-1;29649:17:0;;-1:-1:-1;;;;;29649:17:0;29635:10;:31;29610:56;29602:99;;;;-1:-1:-1;;;29602:99:0;;9709:2:1;29602:99:0;;;9691:21:1;9748:2;9728:18;;;9721:30;9787:32;9767:18;;;9760:60;9837:18;;29602:99:0;9681:180:1;29602:99:0;29713:17;;:49;;-1:-1:-1;;;;;29713:17:0;;;;29740:21;29713:49;;;;;:17;:49;:17;:49;29740:21;29713:17;:49;;;;;;;;;;;;;;;;;;;;;29552:218::o;29822:160::-;29863:7;29884:15;29901;29920:19;:17;:19::i;:::-;29883:56;;-1:-1:-1;29883:56:0;-1:-1:-1;29957:17:0;29883:56;;29957:17;:::i;:::-;29950:24;;;;29822:160;:::o;40053:337::-;-1:-1:-1;;;;;40146:19:0;;40138:68;;;;-1:-1:-1;;;40138:68:0;;16618:2:1;40138:68:0;;;16600:21:1;16657:2;16637:18;;;16630:30;16696:34;16676:18;;;16669:62;16767:6;16747:18;;;16740:34;16791:19;;40138:68:0;16590:226:1;40138:68:0;-1:-1:-1;;;;;40225:21:0;;40217:68;;;;-1:-1:-1;;;40217:68:0;;11237:2:1;40217:68:0;;;11219:21:1;11276:2;11256:18;;;11249:30;11315:34;11295:18;;;11288:62;11386:4;11366:18;;;11359:32;11408:19;;40217:68:0;11209:224:1;40217:68:0;-1:-1:-1;;;;;40298:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;40350:32;;17786:25:1;;;40350:32:0;;17759:18:1;40350:32:0;17741:76:1;40437:3712:0;-1:-1:-1;;;;;40528:20:0;;;;;;:14;:20;;;;;;;;40527:21;:44;;;;-1:-1:-1;;;;;;40553:18:0;;;;;;:14;:18;;;;;;;;40552:19;40527:44;40519:84;;;;-1:-1:-1;;;40519:84:0;;12759:2:1;40519:84:0;;;12741:21:1;12798:2;12778:18;;;12771:30;12837:29;12817:18;;;12810:57;12884:18;;40519:84:0;12731:177:1;40519:84:0;-1:-1:-1;;;;;40622:18:0;;40614:68;;;;-1:-1:-1;;;40614:68:0;;16212:2:1;40614:68:0;;;16194:21:1;16251:2;16231:18;;;16224:30;16290:34;16270:18;;;16263:62;16361:7;16341:18;;;16334:35;16386:19;;40614:68:0;16184:227:1;40614:68:0;-1:-1:-1;;;;;40701:16:0;;40693:64;;;;-1:-1:-1;;;40693:64:0;;8896:2:1;40693:64:0;;;8878:21:1;8935:2;8915:18;;;8908:30;8974:34;8954:18;;;8947:62;9045:5;9025:18;;;9018:33;9068:19;;40693:64:0;8868:225:1;40693:64:0;5068:7;5095:6;-1:-1:-1;;;;;40876:13:0;;;5095:6;;40876:13;;;;:36;;-1:-1:-1;;;;;;40893:19:0;;40907:4;40893:19;;40876:36;:66;;;;-1:-1:-1;40930:11:0;;-1:-1:-1;;;;;40916:26:0;;;40930:11;;40916:26;;40876:66;:89;;;;;40952:13;-1:-1:-1;;;;;40946:19:0;:2;-1:-1:-1;;;;;40946:19:0;;;40876:89;:116;;;;-1:-1:-1;40975:17:0;;-1:-1:-1;;;;;40969:23:0;;;40975:17;;40969:23;;40876:116;:141;;;;-1:-1:-1;41002:15:0;;-1:-1:-1;;;;;40996:21:0;;;41002:15;;40996:21;;40876:141;40872:326;;;41033:18;41054:13;41064:2;41054:9;:13::i;:::-;41115:15;;41033:34;;-1:-1:-1;41091:19:0;41104:6;41033:34;41091:19;:::i;:::-;41090:40;;41082:114;;;;-1:-1:-1;;;41082:114:0;;15781:2:1;41082:114:0;;;15763:21:1;15820:2;15800:18;;;15793:30;15859:34;15839:18;;;15832:62;15930:32;15910:18;;;15903:60;15980:19;;41082:114:0;15753:252:1;41082:114:0;41018:180;40872:326;5068:7;5095:6;-1:-1:-1;;;;;41221:15:0;;;5095:6;;41221:15;;;;:32;;-1:-1:-1;5068:7:0;5095:6;-1:-1:-1;;;;;41240:13:0;;;5095:6;;41240:13;;41221:32;:57;;;;-1:-1:-1;;;;;;41258:20:0;;;;;;:14;:20;;;;;;;;41257:21;41221:57;:80;;;;-1:-1:-1;;;;;;41283:18:0;;;;;;:14;:18;;;;;;;;41282:19;41221:80;41218:154;;;41325:11;;;;41317:43;;;;-1:-1:-1;;;41317:43:0;;14662:2:1;41317:43:0;;;14644:21:1;14701:2;14681:18;;;14674:30;14740:22;14720:18;;;14713:50;14780:18;;41317:43:0;14634:170:1;41317:43:0;41425:13;-1:-1:-1;;;;;41417:21:0;:4;-1:-1:-1;;;;;41417:21:0;;:56;;;;-1:-1:-1;41455:18:0;;;;;;;41417:56;:96;;;;-1:-1:-1;;;;;;41491:22:0;;;;;;:18;:22;;;;;;;;41490:23;41417:96;:132;;;;-1:-1:-1;;;;;;41530:19:0;;41544:4;41530:19;;41417:132;:177;;;;-1:-1:-1;41582:11:0;;-1:-1:-1;;;;;41568:26:0;;;41582:11;;41568:26;;41417:177;41413:368;;;-1:-1:-1;;;;;41619:17:0;;;;;;:13;:17;;;;;;41639:15;-1:-1:-1;41611:84:0;;;;-1:-1:-1;;;41611:84:0;;11640:2:1;41611:84:0;;;11622:21:1;11679:2;11659:18;;;11652:30;11718:34;11698:18;;;11691:62;11789:7;11769:18;;;11762:35;11814:19;;41611:84:0;11612:227:1;41611:84:0;41748:21;;41730:39;;41748:21;;;;;41730:15;:39;:::i;:::-;-1:-1:-1;;;;;41710:17:0;;;;;;:13;:17;;;;;:59;41413:368;5068:7;5095:6;-1:-1:-1;;;;;41796:15:0;;;5095:6;;41796:15;;;;:32;;-1:-1:-1;5068:7:0;5095:6;-1:-1:-1;;;;;41815:13:0;;;5095:6;;41815:13;;41796:32;:58;;;;-1:-1:-1;;;;;;41834:20:0;;;;;;:14;:20;;;;;;;;41833:21;41796:58;:81;;;;-1:-1:-1;;;;;;41859:18:0;;;;;;:14;:18;;;;;;;;41858:19;41796:81;41793:187;;;41911:12;;41901:6;:22;;41893:75;;;;-1:-1:-1;;;41893:75:0;;14253:2:1;41893:75:0;;;14235:21:1;14292:2;14272:18;;;14265:30;14331:34;14311:18;;;14304:62;14402:10;14382:18;;;14375:38;14430:19;;41893:75:0;14225:230:1;41893:75:0;42065:28;42096:24;42114:4;42096:9;:24::i;:::-;42065:55;;42172:12;;42148:20;:36;42145:115;;42243:1;42228:12;;:16;;;;:::i;:::-;42205:39;;42145:115;42339:30;;42315:54;;;;;;;42388:57;;-1:-1:-1;42429:16:0;;;;42428:17;42388:57;:99;;;;;42474:13;-1:-1:-1;;;;;42466:21:0;:4;-1:-1:-1;;;;;42466:21:0;;;42388:99;:141;;;;-1:-1:-1;42508:21:0;;;;;;;42388:141;42384:304;;;42587:30;;42564:53;;42636:36;42651:20;42636:14;:36::i;:::-;42744:16;;;;42743:17;:42;;;;;42772:13;-1:-1:-1;;;;;42764:21:0;:4;-1:-1:-1;;;;;42764:21:0;;;42743:42;42740:262;;;42818:26;;42845:15;;42862:20;;42805:78;;42818:26;-1:-1:-1;;;;;42845:15:0;;42805:12;:78::i;:::-;42915:28;;42944:17;;42963:22;;42902:84;;42915:28;-1:-1:-1;;;;;42944:17:0;;42902:12;:84::i;:::-;-1:-1:-1;;;;;;;43135:24:0;;43102:12;43135:24;;;:18;:24;;;;;;43117:4;;43135:24;;;:50;;-1:-1:-1;;;;;;43163:22:0;;;;;;:18;:22;;;;;;;;43135:50;43132:96;;;-1:-1:-1;43211:5:0;43132:96;43252:7;43248:53;;43275:14;:12;:14::i;:::-;43365:15;43382:23;43407:19;43428:23;43453:13;43468:18;43488;43508:16;43527:19;43550:41;43561:6;43576:13;-1:-1:-1;;;;;43570:19:0;:2;-1:-1:-1;;;;;43570:19:0;;43550:10;:41::i;:::-;43364:227;;;;;;;;;;;;;;;;;;43604:74;43622:4;43627:2;43630:6;43637:7;43645:15;43662;43604:17;:74::i;:::-;43729:45;43749:11;43762;43729:19;:45::i;:::-;43791:7;43787:353;;43814:15;:13;:15::i;:::-;43787:353;;;43973:21;43988:5;43973:14;:21::i;:::-;44009:31;44029:10;44009:19;:31::i;:::-;44055;44075:10;44055:19;:31::i;:::-;44101:27;44119:8;44101:17;:27::i;:::-;40506:3643;;;;;;;;;;40437:3712;;;:::o;32620:571::-;32877:20;32874:57;;32620:571;;;:::o;32874:57::-;32965:12;;32947:15;:30;32944:91;;;33011:12;;32993:30;;32944:91;33089:20;33099:9;33089;:20::i;:::-;33051:32;33067:16;33051:15;:32;:::i;:::-;33050:59;33047:137;;33125:47;33146:9;33156:15;33125:20;:47::i;30652:1073::-;30734:15;30751:23;30776:19;30806:23;30830:13;30845:18;30865;30885:16;30903:19;30937:18;30958:6;:29;;30984:3;30958:29;;;30967:14;;30958:29;30937:50;;31043:16;;31030:9;;31020:7;:19;;;;:::i;:::-;31018:41;;;;:::i;:::-;31000:59;;31134:16;;31153:3;31134:22;;;;:::i;:::-;31120:10;31101:14;;31091:7;:24;;;;:::i;:::-;31089:41;;;;:::i;:::-;:68;;;;:::i;:::-;31070:87;;31231:16;;31250:3;31231:22;;;;:::i;:::-;31217:10;31198:14;;31188:7;:24;;;;:::i;:::-;31186:41;;;;:::i;:::-;:68;;;;:::i;:::-;31168:86;;31329:16;;31348:3;31329:22;;;;:::i;:::-;31315:10;31298:12;;31288:7;:22;;;;:::i;:::-;31286:39;;;;:::i;:::-;:66;;;;:::i;:::-;31265:87;;31428:16;;31447:3;31428:22;;;;:::i;:::-;31413:10;31393:15;;31383:7;:25;;;;:::i;:::-;31381:42;;;;:::i;:::-;:70;;;;:::i;:::-;31363:88;-1:-1:-1;31363:88:0;31527:8;31514:10;31493:18;31501:10;31493:5;:18;:::i;:::-;:31;;;;:::i;:::-;:42;;;;:::i;:::-;:56;;;;:::i;:::-;31482:68;;:7;:68;:::i;:::-;31464:86;;31595:10;:8;:10::i;:::-;31581:24;;:11;:24;:::i;:::-;31563:42;;31646:10;:8;:10::i;:::-;31636:20;;:7;:20;:::i;:::-;31618:38;;31705:10;:8;:10::i;:::-;31687:28;;:15;:28;:::i;:::-;31669:46;;30924:801;30652:1073;;;;;;;;;;;:::o;38204:426::-;16980:16;:23;;-1:-1:-1;;16980:23:0;16999:4;16980:23;;;:16;38302:14:::1;38315:1;38302:12:::0;:14:::1;:::i;:::-;38281:35:::0;-1:-1:-1;38358:21:0::1;38392:28;38281:35:::0;38392:16:::1;:28::i;:::-;38441:18;38462:42;38486:18:::0;38462:21:::1;:42;:::i;:::-;38441:63;;38517:35;38530:10;38541;38517:12;:35::i;:::-;38570:52;::::0;;19252:25:1;;;19308:2;19293:18;;19286:34;;;19336:18;;;19329:34;;;38570:52:0::1;::::0;19240:2:1;19225:18;38570:52:0::1;;;;;;;-1:-1:-1::0;;17026:16:0;:24;;-1:-1:-1;;17026:24:0;;;-1:-1:-1;;38204:426:0:o;29990:652::-;30087:17;;30133:13;;30040:7;;;;;30163:335;30187:9;:16;30183:20;;30163:335;;;30264:7;30229:18;:32;30248:9;30258:1;30248:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30248:12:0;30229:32;;;;;;;;;;;;;:42;;:84;;;30306:7;30275:14;:28;30290:9;30300:1;30290:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30290:12:0;30275:28;;;;;;;;;;;;;:38;30229:84;30225:131;;;30323:17;;30342:13;;30315:41;;;;;;;29990:652;;:::o;30225:131::-;30391:18;:32;30410:9;30420:1;30410:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30410:12:0;30391:32;;;;;;;;;;;;;30381:42;;:7;:42;:::i;:::-;30371:52;;30458:14;:28;30473:9;30483:1;30473:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30473:12:0;30458:28;;;;;;;;;;;;;30448:38;;:7;:38;:::i;:::-;30438:48;-1:-1:-1;30205:3:0;;;;:::i;:::-;;;;30163:335;;;;30541:13;;30523:17;;:31;;;;:::i;:::-;30512:7;:43;30508:90;;;30565:17;;30584:13;;30557:41;;;;;;29990:652;;:::o;30508:90::-;30617:7;;30626;;-1:-1:-1;29990:652:0;-1:-1:-1;29990:652:0:o;36037:329::-;36106:9;;36080:13;:35;36154:14;;36126:18;:42;36205:14;;36179:18;:40;36259:12;;36230:16;:41;36308:15;;36282:19;:41;36336:22;-1:-1:-1;;;;;34566:9:0;:30;;;;34607:14;:36;;;;34654:14;:35;34700:12;:35;34746:15;:36;34419:381;36336:22;36037:329::o;44157:976::-;-1:-1:-1;;;;;44392:24:0;;;;;;:18;:24;;;;;;:35;;44420:7;;44392:35;:::i;:::-;-1:-1:-1;;;;;44362:24:0;;;;;;:18;:24;;;;;;;;:65;;;;44525:11;:17;;;;;;44521:110;;;-1:-1:-1;;;;;44584:20:0;;;;;;:14;:20;;;;;;:35;;44612:7;;44584:35;:::i;:::-;-1:-1:-1;;;;;44558:20:0;;;;;;:14;:20;;;;;:61;44521:110;-1:-1:-1;;;;;44729:15:0;;;;;;:11;:15;;;;;;;;44725:118;;;-1:-1:-1;;;;;44786:18:0;;;;;;:14;:18;;;;;;:43;;44814:15;;44786:43;:::i;:::-;-1:-1:-1;;;;;44760:18:0;;;;;;:14;:18;;;;;:69;44725:118;-1:-1:-1;;;;;44936:22:0;;;;;;:18;:22;;;;;;:43;;44964:15;;44936:43;:::i;:::-;-1:-1:-1;;;;;44906:22:0;;;;;;;:18;:22;;;;;;;:73;;;;44997:35;;;;;;;;;;45016:15;17786:25:1;;17774:2;17759:18;;17741:76;44997:35:0;;;;;;;;45048:77;;;19605:25:1;;;19661:2;19646:18;;19639:34;;;19689:18;;;19682:34;;;19747:2;19732:18;;19725:34;;;-1:-1:-1;;;;;45048:77:0;;;;;;;;;;19592:3:1;19577:19;45048:77:0;;;;;;;44157:976;;;;;;:::o;34129:199::-;34245:4;34225:17;;:24;;;;:::i;:::-;34205:17;:44;34288:25;;:32;;34316:4;;34288:32;:::i;:::-;34260:25;:60;-1:-1:-1;;34129:199:0:o;36378:157::-;36422:105;36434:13;;36449:18;;36469;;36489:16;;36507:19;;34566:9;:30;;;;34607:14;:36;;;;34654:14;:35;34700:12;:35;34746:15;:36;34419:381;33779:106;33854:12;;33838:29;;33847:6;;-1:-1:-1;;;;;33854:12:0;33838:8;:29::i;34005:116::-;34085:17;;34069:34;;34078:6;;-1:-1:-1;;;;;34085:17:0;34069:8;:34::i;33665:102::-;33729:30;33738:6;33753:4;33729:8;:30::i;33893:104::-;33971:15;;33955:32;;33964:6;;-1:-1:-1;;;;;33971:15:0;33955:8;:32::i;31737:636::-;16980:16;:23;;-1:-1:-1;;16980:23:0;16999:4;16980:23;;;:16;31895:10:::1;:8;:10::i;:::-;31877:28;::::0;:15;:28:::1;:::i;:::-;-1:-1:-1::0;;;;;31950:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;31850:55;;-1:-1:-1;31950:46:0::1;::::0;31850:55;;31950:46:::1;:::i;:::-;-1:-1:-1::0;;;;;31918:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;;:78;;;;32011:11:::1;:19:::0;;;;::::1;;32007:124;;;-1:-1:-1::0;;;;;32074:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;;:45:::1;::::0;32104:15;;32074:45:::1;:::i;:::-;-1:-1:-1::0;;;;;32046:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;:73;32007:124:::1;32209:4;32182:33;::::0;;;:18:::1;:33;::::0;;;;;:55:::1;::::0;32221:16;;32182:55:::1;:::i;:::-;32168:4;32141:33;::::0;;;:18:::1;:33;::::0;;;;;;:96;;;;32255:48;;-1:-1:-1;;;;;32255:48:0;::::1;::::0;::::1;::::0;::::1;::::0;32287:15;17786:25:1;;17774:2;17759:18;;17741:76;32255:48:0::1;;;;;;;;32316:47;32340:15;32356:6;32316:23;:47::i;:::-;-1:-1:-1::0;;17026:16:0;:24;;-1:-1:-1;;17026:24:0;;;-1:-1:-1;31737:636:0:o;38638:471::-;38728:16;;;38742:1;38728:16;;;;;;;;38704:21;;38728:16;;;;;;;;;;-1:-1:-1;38728:16:0;38704:40;;38773:4;38755;38760:1;38755:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;38755:23:0;;;-1:-1:-1;;;;;38755:23:0;;;;;38799:15;-1:-1:-1;;;;;38799:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38789:4;38794:1;38789:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;38789:32:0;;;-1:-1:-1;;;;;38789:32:0;;;;;38832:62;38849:4;38864:15;38882:11;38832:8;:62::i;:::-;38905:196;;-1:-1:-1;;;38905:196:0;;-1:-1:-1;;;;;38905:15:0;:66;;;;:196;;38986:11;;39012:1;;39028:4;;39055;;39075:15;;38905:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39638:395;39719:62;39736:4;39751:15;39769:11;39719:8;:62::i;:::-;39792:233;;;;;39864:4;39792:233;;;7371:34:1;7421:18;;;7414:34;;;39910:1:0;7464:18:1;;;7457:34;;;7507:18;;;7500:34;39942:42:0;7550:19:1;;;7543:44;39999:15:0;7603:19:1;;;7596:35;39792:15:0;-1:-1:-1;;;;;39792:31:0;;;;39831:9;;7282:19:1;;39792:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;39638:395;;:::o;33201:454::-;33281:26;33322:10;:8;:10::i;:::-;33310:22;;:9;:22;:::i;:::-;-1:-1:-1;;;;;33380:34:0;;;;;;:18;:34;;;;;;33281:51;;-1:-1:-1;33380:55:0;;33281:51;;33380:55;:::i;:::-;-1:-1:-1;;;;;33343:34:0;;;;;;:18;:34;;;;;;;;:92;;;;33453:11;:27;;;;;;33450:133;;;-1:-1:-1;;;;;33529:30:0;;;;;;:14;:30;;;;;;:42;;33562:9;;33529:42;:::i;:::-;-1:-1:-1;;;;;33496:30:0;;;;;;:14;:30;;;;;:75;33450:133;33600:47;;17786:25:1;;;-1:-1:-1;;;;;33600:47:0;;;33609:10;;33600:47;;17774:2:1;17759:18;33600:47:0;17741:76:1;39117:511:0;39246:16;;;39260:1;39246:16;;;;;;;;39222:21;;39246:16;;;;;;;;;;-1:-1:-1;39246:16:0;39222:40;;39291:4;39273;39278:1;39273:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;39273:23:0;;;-1:-1:-1;;;;;39273:23:0;;;;;39317:15;-1:-1:-1;;;;;39317:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39307:4;39312:1;39307:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;39307:32:0;;;-1:-1:-1;;;;;39307:32:0;;;;;39350:62;39367:4;39382:15;39400:11;39350:8;:62::i;:::-;39423:197;;-1:-1:-1;;;39423:197:0;;-1:-1:-1;;;;;39423:15:0;:66;;;;:197;;39504:11;;39530:1;;39546:4;;39565:14;;39594:15;;39423:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39211:417;39117:511;;:::o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;159:1;156;149:12;108:2;-1:-1:-1;182:20:1;;225:18;214:30;;211:2;;;257:1;254;247:12;211:2;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:2;;;371:1;368;361:12;308:2;98:283;;;;;:::o;386:160::-;451:20;;507:13;;500:21;490:32;;480:2;;536:1;533;526:12;480:2;432:114;;;:::o;551:247::-;610:6;663:2;651:9;642:7;638:23;634:32;631:2;;;679:1;676;669:12;631:2;718:9;705:23;737:31;762:5;737:31;:::i;803:251::-;873:6;926:2;914:9;905:7;901:23;897:32;894:2;;;942:1;939;932:12;894:2;974:9;968:16;993:31;1018:5;993:31;:::i;1059:388::-;1127:6;1135;1188:2;1176:9;1167:7;1163:23;1159:32;1156:2;;;1204:1;1201;1194:12;1156:2;1243:9;1230:23;1262:31;1287:5;1262:31;:::i;:::-;1312:5;-1:-1:-1;1369:2:1;1354:18;;1341:32;1382:33;1341:32;1382:33;:::i;:::-;1434:7;1424:17;;;1146:301;;;;;:::o;1452:456::-;1529:6;1537;1545;1598:2;1586:9;1577:7;1573:23;1569:32;1566:2;;;1614:1;1611;1604:12;1566:2;1653:9;1640:23;1672:31;1697:5;1672:31;:::i;:::-;1722:5;-1:-1:-1;1779:2:1;1764:18;;1751:32;1792:33;1751:32;1792:33;:::i;:::-;1556:352;;1844:7;;-1:-1:-1;;;1898:2:1;1883:18;;;;1870:32;;1556:352::o;1913:908::-;2044:6;2052;2060;2068;2076;2129:2;2117:9;2108:7;2104:23;2100:32;2097:2;;;2145:1;2142;2135:12;2097:2;2184:9;2171:23;2203:31;2228:5;2203:31;:::i;:::-;2253:5;-1:-1:-1;2309:2:1;2294:18;;2281:32;2332:18;2362:14;;;2359:2;;;2389:1;2386;2379:12;2359:2;2428:70;2490:7;2481:6;2470:9;2466:22;2428:70;:::i;:::-;2517:8;;-1:-1:-1;2402:96:1;-1:-1:-1;2605:2:1;2590:18;;2577:32;;-1:-1:-1;2621:16:1;;;2618:2;;;2650:1;2647;2640:12;2618:2;;2689:72;2753:7;2742:8;2731:9;2727:24;2689:72;:::i;:::-;2087:734;;;;-1:-1:-1;2087:734:1;;-1:-1:-1;2780:8:1;;2663:98;2087:734;-1:-1:-1;;;2087:734:1:o;2826:315::-;2894:6;2902;2955:2;2943:9;2934:7;2930:23;2926:32;2923:2;;;2971:1;2968;2961:12;2923:2;3010:9;2997:23;3029:31;3054:5;3029:31;:::i;:::-;3079:5;3131:2;3116:18;;;;3103:32;;-1:-1:-1;;;2913:228:1:o;3146:505::-;3238:6;3246;3254;3307:2;3295:9;3286:7;3282:23;3278:32;3275:2;;;3323:1;3320;3313:12;3275:2;3363:9;3350:23;3396:18;3388:6;3385:30;3382:2;;;3428:1;3425;3418:12;3382:2;3467:70;3529:7;3520:6;3509:9;3505:22;3467:70;:::i;:::-;3556:8;;-1:-1:-1;3441:96:1;-1:-1:-1;3610:35:1;;-1:-1:-1;3641:2:1;3626:18;;3610:35;:::i;:::-;3600:45;;3265:386;;;;;:::o;3656:180::-;3712:6;3765:2;3753:9;3744:7;3740:23;3736:32;3733:2;;;3781:1;3778;3771:12;3733:2;3804:26;3820:9;3804:26;:::i;3841:337::-;3904:6;3912;3965:2;3953:9;3944:7;3940:23;3936:32;3933:2;;;3981:1;3978;3971:12;3933:2;4004:26;4020:9;4004:26;:::i;:::-;3994:36;;4080:2;4069:9;4065:18;4052:32;4124:4;4117:5;4113:16;4106:5;4103:27;4093:2;;4144:1;4141;4134:12;4183:180;4242:6;4295:2;4283:9;4274:7;4270:23;4266:32;4263:2;;;4311:1;4308;4301:12;4263:2;-1:-1:-1;4334:23:1;;4253:110;-1:-1:-1;4253:110:1:o;4368:391::-;4453:6;4461;4469;4522:2;4510:9;4501:7;4497:23;4493:32;4490:2;;;4538:1;4535;4528:12;4490:2;4574:9;4561:23;4551:33;;4634:2;4623:9;4619:18;4606:32;4647:31;4672:5;4647:31;:::i;4764:248::-;4829:6;4837;4890:2;4878:9;4869:7;4865:23;4861:32;4858:2;;;4906:1;4903;4896:12;4858:2;4942:9;4929:23;4919:33;;4971:35;5002:2;4991:9;4987:18;4971:35;:::i;:::-;4961:45;;4848:164;;;;;:::o;5017:248::-;5085:6;5093;5146:2;5134:9;5125:7;5121:23;5117:32;5114:2;;;5162:1;5159;5152:12;5114:2;-1:-1:-1;;5185:23:1;;;5255:2;5240:18;;;5227:32;;-1:-1:-1;5104:161:1:o;5270:306::-;5358:6;5366;5374;5427:2;5415:9;5406:7;5402:23;5398:32;5395:2;;;5443:1;5440;5433:12;5395:2;5472:9;5466:16;5456:26;;5522:2;5511:9;5507:18;5501:25;5491:35;;5566:2;5555:9;5551:18;5545:25;5535:35;;5385:191;;;;;:::o;5581:454::-;5676:6;5684;5692;5700;5708;5761:3;5749:9;5740:7;5736:23;5732:33;5729:2;;;5778:1;5775;5768:12;5729:2;-1:-1:-1;;5801:23:1;;;5871:2;5856:18;;5843:32;;-1:-1:-1;5922:2:1;5907:18;;5894:32;;5973:2;5958:18;;5945:32;;-1:-1:-1;6024:3:1;6009:19;5996:33;;-1:-1:-1;5719:316:1;-1:-1:-1;5719:316:1:o;6040:484::-;6093:3;6131:5;6125:12;6158:6;6153:3;6146:19;6184:4;6213:2;6208:3;6204:12;6197:19;;6250:2;6243:5;6239:14;6271:1;6281:218;6295:6;6292:1;6289:13;6281:218;;;6360:13;;-1:-1:-1;;;;;6356:62:1;6344:75;;6439:12;;;;6474:15;;;;6317:1;6310:9;6281:218;;;-1:-1:-1;6515:3:1;;6101:423;-1:-1:-1;;;;;6101:423:1:o;8092:597::-;8204:4;8233:2;8262;8251:9;8244:21;8294:6;8288:13;8337:6;8332:2;8321:9;8317:18;8310:34;8362:1;8372:140;8386:6;8383:1;8380:13;8372:140;;;8481:14;;;8477:23;;8471:30;8447:17;;;8466:2;8443:26;8436:66;8401:10;;8372:140;;;8530:6;8527:1;8524:13;8521:2;;;8600:1;8595:2;8586:6;8575:9;8571:22;8567:31;8560:42;8521:2;-1:-1:-1;8673:2:1;8652:15;-1:-1:-1;;8648:29:1;8633:45;;;;8680:2;8629:54;;8213:476;-1:-1:-1;;;8213:476:1:o;17822:613::-;18129:6;18118:9;18111:25;18172:6;18167:2;18156:9;18152:18;18145:34;18215:3;18210:2;18199:9;18195:18;18188:31;18092:4;18236:57;18288:3;18277:9;18273:19;18265:6;18236:57;:::i;:::-;-1:-1:-1;;;;;18329:55:1;;;;18324:2;18309:18;;18302:83;-1:-1:-1;18416:3:1;18401:19;18394:35;18228:65;18101:334;-1:-1:-1;;;18101:334:1:o;21813:128::-;21853:3;21884:1;21880:6;21877:1;21874:13;21871:2;;;21890:18;;:::i;:::-;-1:-1:-1;21926:9:1;;21861:80::o;21946:274::-;21986:1;22012;22002:2;;-1:-1:-1;;;22044:1:1;22037:88;22148:4;22145:1;22138:15;22176:4;22173:1;22166:15;22002:2;-1:-1:-1;22205:9:1;;21992:228::o;22225:168::-;22265:7;22331:1;22327;22323:6;22319:14;22316:1;22313:21;22308:1;22301:9;22294:17;22290:45;22287:2;;;22338:18;;:::i;:::-;-1:-1:-1;22378:9:1;;22277:116::o;22398:125::-;22438:4;22466:1;22463;22460:8;22457:2;;;22471:18;;:::i;:::-;-1:-1:-1;22508:9:1;;22447:76::o;22528:437::-;22607:1;22603:12;;;;22650;;;22671:2;;22725:4;22717:6;22713:17;22703:27;;22671:2;22778;22770:6;22767:14;22747:18;22744:38;22741:2;;;-1:-1:-1;;;22812:1:1;22805:88;22916:4;22913:1;22906:15;22944:4;22941:1;22934:15;22741:2;;22583:382;;;:::o;22970:135::-;23009:3;-1:-1:-1;;23030:17:1;;23027:2;;;23050:18;;:::i;:::-;-1:-1:-1;23097:1:1;23086:13;;23017:88::o;23110:184::-;-1:-1:-1;;;23159:1:1;23152:88;23259:4;23256:1;23249:15;23283:4;23280:1;23273:15;23299:184;-1:-1:-1;;;23348:1:1;23341:88;23448:4;23445:1;23438:15;23472:4;23469:1;23462:15;23488:184;-1:-1:-1;;;23537:1:1;23530:88;23637:4;23634:1;23627:15;23661:4;23658:1;23651:15;23866:154;-1:-1:-1;;;;;23945:5:1;23941:54;23934:5;23931:65;23921:2;;24010:1;24007;24000:12

Swarm Source

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