Contract 0xA15272C90f928da7c420C8B19e528B21aD634eb8

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7d5cb1ad92cb7fa10ac88dc8d723d3eb1d6ae87bc7280db27da722afce0e44b0Upsurge121000972021-10-26 6:44:181 day 8 hrs ago0x053e6294400a9268e35df445624f58087c7f388f IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0x907577f6a8dbe9b16b568e5af6bab739cfaa741692849936955d4b9a0ebf40f8Transfer120298362021-10-23 19:38:453 days 19 hrs ago0x69619ea5b69febf9fd5e78f0b3e75629d528b8a7 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80.01 BNB0.000105275
0xcfaee9e8f48c5e42eea4cb9a5dd65ca65eb305edf14970640d17658071b82c9fApprove120276992021-10-23 17:50:483 days 21 hrs ago0xc428393bffe8edc681dbbdfa9c462f19caadbe39 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0xfe79552ed4ce6f8825c52db3a3e07d8ece2bc76afc635ef6b98463e06c4837d3Approve119824412021-10-22 3:29:015 days 11 hrs ago0x4c52a57cce7f9855f617f289159ea9d7fcf73e03 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0xf3581814b90773e2188f3c507e20e5122039324405a08d8665320158edd40003Upsurge119064812021-10-19 10:54:428 days 4 hrs ago0x81713bd08cf725241872df5377f6f8a867f85c47 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0xdc659595ff2525aba72355ab7f9759fe970d9ac2a4c2c21058063f62224625bdApprove119047982021-10-19 9:30:218 days 5 hrs ago0xac534b1359d0a83d1dc2e372708b01205fa0270f IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0x3837ca556a3c32285f7168f587e7b87d5d3ed70a25b326942504ed6e27884818Transfer118940062021-10-19 0:28:538 days 14 hrs ago0x69619ea5b69febf9fd5e78f0b3e75629d528b8a7 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80.01 BNB0.000105275
0x673772285db635a13d02434095e9ec1b97eb59f14cb0b151c58182090f4f89c7Transfer118935302021-10-19 0:05:058 days 15 hrs ago0x69619ea5b69febf9fd5e78f0b3e75629d528b8a7 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80.01 BNB0.000105275
0xa4ecfa36d36bfa61a6a4e32a041cfd9541728db0abcf09a11211866211e19e66Approve118765192021-10-18 9:48:249 days 5 hrs ago0x6164494b02da1217b64606418c88b99033a3c105 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0x1bc31d9722f15f54668d8b3df23eaf68ee80129fe9d963e546c829aa8c33c8d4Approve117722862021-10-14 18:34:3512 days 20 hrs ago0x3fc6731aa962e215a8480188704a3e23d9603891 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0x962862a14e4acc2c25442719b2963de5bccc5a0bab14023c06afdbb9fc74c474Approve117689932021-10-14 15:49:1612 days 23 hrs ago0x75482c730833e25fdd4e9ad8fc0abcec98645760 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0x33b16cc5c15f61a277e11eb8547511c78b0036e368fdf296ac5c8693482fe937Set Swap And Boo...117494522021-10-13 23:26:3813 days 15 hrs ago0x10e86e2bb248def3edbada50de865ed4bf336af4 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.000126305
0xe490acf49879bb3940e0f29e907a67707021f6dd8dd0355ae61ace4de35d0a43Set Booster Floo...117494362021-10-13 23:25:5013 days 15 hrs ago0x10e86e2bb248def3edbada50de865ed4bf336af4 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.0001373
0xc1156d08fb3b938933edfaa4d895357f0da50b4363ad0d96062185f525beed99Approve117392292021-10-13 14:51:5314 days 30 mins ago0x4e548def09b84c1b94918ec21d9c1371908b2856 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00026658
0x326decdbbad0a69f9cf2e43dd666f8374ca97b60c5b46bdee105cf1f1fd6348cUpsurge115917922021-10-08 10:33:0119 days 4 hrs ago0x81713bd08cf725241872df5377f6f8a867f85c47 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0x3b9a294c1157e5ce91ce4e90c1c79d048fa19340f012651d4c9ba4836e81583aApprove114642782021-10-04 0:09:5723 days 15 hrs ago0xc4417ee91ec12a94cf8cbe5e8f19e7db84b8df4c IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00031101
0x89ec7a668a49d90f65d01d36a6e1ce465179c4761ccf466767d3e5e5f412dbeaUpsurge114159072021-10-02 7:33:0725 days 7 hrs ago0x053e6294400a9268e35df445624f58087c7f388f IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0xb5d8e24b0759a9a73dce2f97b8292824a450fe076237dee52d69addfdde302abUpsurge114039532021-10-01 21:28:0525 days 17 hrs ago0x81713bd08cf725241872df5377f6f8a867f85c47 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.000150065
0xfe8b3c653f10dea2fbd8dbea3f7920cd9f3a80e00586135491c8b019f88f89bbUpsurge114039512021-10-01 21:27:5925 days 17 hrs ago0x81713bd08cf725241872df5377f6f8a867f85c47 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0xfebd85866364f1ca177f5db8b44ae90d26a438ab21f42967878e0fbd7f4e32c8Approve113987702021-10-01 17:06:0125 days 22 hrs ago0xa39b53922d81d4fd92c90d0570b6ffe6d9de1e00 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0x22ddad7ed769a974ae78754a896b9d9c044614705e593b7cbdbbfb615f513854Upsurge113921702021-10-01 11:29:4226 days 3 hrs ago0x81713bd08cf725241872df5377f6f8a867f85c47 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.000150065
0xe3a470d3b86b7612c5fff8c75340e2bb63afd1fe29058e09c120d12032206991Upsurge113921692021-10-01 11:29:3926 days 3 hrs ago0x81713bd08cf725241872df5377f6f8a867f85c47 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0x6861c3a3d72ff751652d717ea7402e01cfac90d8f1d7db56584cc08fcf2dae11Approve113877512021-10-01 7:46:4226 days 7 hrs ago0x19bbf18af04e79cff8b67764076ce7fe244f8aae IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
0x08b911e06cd8505a76691849eb4a580c2f3e15d8f9b2570d922e99f798c849a2Upsurge113508962021-09-30 0:45:0827 days 14 hrs ago0xad9b542121f263120f3fc835b5c891f71b8478d0 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.003309375
0x9765b1426bc8703a32404d4f6a57836caf6e867403957015cb3488cc8390c018Approve112772962021-09-27 10:48:5130 days 4 hrs ago0x24fb45af68350266591e0536f4b9c83eff6a4619 IN  0xa15272c90f928da7c420c8b19e528b21ad634eb80 BNB0.00022215
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb4f9968060d9e92d804215aa920c346a5125aa3ee15fa6d20d4d4ddbcea3967d121380282021-10-27 14:53:5428 mins ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.000060424630214611 BNB
0xb4f9968060d9e92d804215aa920c346a5125aa3ee15fa6d20d4d4ddbcea3967d121380282021-10-27 14:53:5428 mins ago 0xa15272c90f928da7c420c8b19e528b21ad634eb8 PancakeSwap: Router v20.032501028900999306 BNB
0xb4f9968060d9e92d804215aa920c346a5125aa3ee15fa6d20d4d4ddbcea3967d121380282021-10-27 14:53:5428 mins ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.032501028900999306 BNB
0xb4f9968060d9e92d804215aa920c346a5125aa3ee15fa6d20d4d4ddbcea3967d121380282021-10-27 14:53:5428 mins ago 0xa15272c90f928da7c420c8b19e528b21ad634eb80x28df4808fd9aa4dedc9b5f73141fd0df79c2542a0.001583476313989178 BNB
0xb4f9968060d9e92d804215aa920c346a5125aa3ee15fa6d20d4d4ddbcea3967d121380282021-10-27 14:53:5428 mins ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.0791738156994589 BNB
0x6b2925a6392908d9fe41608790f705280940838ef5fb9f50d78a04b1a60291ef121193592021-10-26 22:57:4416 hrs 25 mins ago 0xa15272c90f928da7c420c8b19e528b21ad634eb8 PancakeSwap: Router v21 BNB
0x6b2925a6392908d9fe41608790f705280940838ef5fb9f50d78a04b1a60291ef121193592021-10-26 22:57:4416 hrs 25 mins ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.000033698629118056 BNB
0x6b2925a6392908d9fe41608790f705280940838ef5fb9f50d78a04b1a60291ef121193592021-10-26 22:57:4416 hrs 25 mins ago 0xa15272c90f928da7c420c8b19e528b21ad634eb8 PancakeSwap: Router v20.025067837284260271 BNB
0x6b2925a6392908d9fe41608790f705280940838ef5fb9f50d78a04b1a60291ef121193592021-10-26 22:57:4416 hrs 25 mins ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.025067837284260271 BNB
0x6b2925a6392908d9fe41608790f705280940838ef5fb9f50d78a04b1a60291ef121193592021-10-26 22:57:4416 hrs 25 mins ago 0xa15272c90f928da7c420c8b19e528b21ad634eb80x28df4808fd9aa4dedc9b5f73141fd0df79c2542a0.001219165948895642 BNB
0x6b2925a6392908d9fe41608790f705280940838ef5fb9f50d78a04b1a60291ef121193592021-10-26 22:57:4416 hrs 25 mins ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.060958297444782146 BNB
0x2ae18fbbf9c2e39d00c12ffecb72bd8abbbc8f84538b8190a2937a3bcc928b25120855732021-10-25 18:36:571 day 20 hrs ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.000054013300192336 BNB
0x2ae18fbbf9c2e39d00c12ffecb72bd8abbbc8f84538b8190a2937a3bcc928b25120855732021-10-25 18:36:571 day 20 hrs ago 0xa15272c90f928da7c420c8b19e528b21ad634eb8 PancakeSwap: Router v20.031277530797748963 BNB
0x2ae18fbbf9c2e39d00c12ffecb72bd8abbbc8f84538b8190a2937a3bcc928b25120855732021-10-25 18:36:571 day 20 hrs ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.031277530797748963 BNB
0x2ae18fbbf9c2e39d00c12ffecb72bd8abbbc8f84538b8190a2937a3bcc928b25120855732021-10-25 18:36:571 day 20 hrs ago 0xa15272c90f928da7c420c8b19e528b21ad634eb80x28df4808fd9aa4dedc9b5f73141fd0df79c2542a0.001523173520679053 BNB
0x2ae18fbbf9c2e39d00c12ffecb72bd8abbbc8f84538b8190a2937a3bcc928b25120855732021-10-25 18:36:571 day 20 hrs ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.076158676033952679 BNB
0x62498511ddcad9983c6d3960298b57bd1bdbe677a8cca2c0956cab24598d70ec119824702021-10-22 3:30:295 days 11 hrs ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.000058374789145279 BNB
0x62498511ddcad9983c6d3960298b57bd1bdbe677a8cca2c0956cab24598d70ec119824702021-10-22 3:30:295 days 11 hrs ago 0xa15272c90f928da7c420c8b19e528b21ad634eb8 PancakeSwap: Router v20.032244692504146441 BNB
0x62498511ddcad9983c6d3960298b57bd1bdbe677a8cca2c0956cab24598d70ec119824702021-10-22 3:30:295 days 11 hrs ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.032244692504146441 BNB
0x62498511ddcad9983c6d3960298b57bd1bdbe677a8cca2c0956cab24598d70ec119824702021-10-22 3:30:295 days 11 hrs ago 0xa15272c90f928da7c420c8b19e528b21ad634eb80x28df4808fd9aa4dedc9b5f73141fd0df79c2542a0.001570723765074723 BNB
0x62498511ddcad9983c6d3960298b57bd1bdbe677a8cca2c0956cab24598d70ec119824702021-10-22 3:30:295 days 11 hrs ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.07853618825373615 BNB
0xc72f686eb12dfdd073e176f4fc385a07ea4286c3e3506524c19916bdf48ec637119662282021-10-21 13:44:146 days 1 hr ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.000071244375510908 BNB
0xc72f686eb12dfdd073e176f4fc385a07ea4286c3e3506524c19916bdf48ec637119662282021-10-21 13:44:146 days 1 hr ago 0xa15272c90f928da7c420c8b19e528b21ad634eb8 PancakeSwap: Router v20.035199800211072478 BNB
0xc72f686eb12dfdd073e176f4fc385a07ea4286c3e3506524c19916bdf48ec637119662282021-10-21 13:44:146 days 1 hr ago PancakeSwap: Router v2 0xa15272c90f928da7c420c8b19e528b21ad634eb80.035199800211072478 BNB
0xc72f686eb12dfdd073e176f4fc385a07ea4286c3e3506524c19916bdf48ec637119662282021-10-21 13:44:146 days 1 hr ago 0xa15272c90f928da7c420c8b19e528b21ad634eb80x28df4808fd9aa4dedc9b5f73141fd0df79c2542a0.001715935633497396 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity 0.7.4;


interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

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

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

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

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

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

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

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;
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Authorizable is Ownable {

    mapping(address => bool) public authorized;

    modifier onlyAuthorized() {
        address sender = _msgSender();
        require(authorized[sender] || sender == owner(), "must have privileges");
        _;
    }

    function addAuthorized(address account) onlyOwner public returns (bool) {
        require(account != address(0), "must not be the zero address");
        authorized[account] = true;
        return true;
    }
    function removeAuthorized(address account) onlyOwner public returns (bool) {
        require(account != address(0), "must not be the zero address");
        require(account != _msgSender(), "must not be the owner");
        authorized[account] = false;
        return true;
    }
}

contract Reflective is IERC20, Authorizable {
    using SafeMath for uint256;
    using Address for address;
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    
    address payable public constant reserve = payable(0x28DF4808FD9aa4dedc9b5f73141Fd0Df79c2542a); 

    mapping (address => bool) private _isBlacklisted;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    
    address[] private _excluded;
    address   private _star;
    
    uint256 private constant _MAX = ~uint256(0);
    uint256 private constant _DENOMINATOR = 100;
    uint256 private constant _PRECISION = 100;

    uint256 private constant _tTotal = 1000000000000 * 10**8;
    uint256 private _rTotal = (_MAX - (_MAX % _tTotal));
    uint256 private _tFeeTotal;

    string  private constant _NAME = "SURGE";
    string  private constant _SYMBOL = "SURGE";
    uint8   private constant _DECIMALS = 8;

    uint256 private _taxFee = 1;
    uint256 private _reserveFee = 2;
    uint256 private _swapFee = 13;
    
    uint256 private _maxTxAmount = 5000000000 * 10**8;

    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousSwapFee = _swapFee;

    uint256 private _minimumAccumulationForBooster = 300000000 * 10**8; 
    uint256 private _minimumAccumulationForLiquidity = 250000000 * 10**8;
    
    uint256 private _boosterCeiling = 1 * 10**18;
    uint256 private _boosterFloor   = 1 * 10**18;
    uint256 private _boosterDivisor = 100;
    
    uint256 private _boosterRequisite;

    bool private _inSwapAndLiquify;
    bool private _swapAndLiquifyEnabled;
    bool private _swapAndBoosterEnabled;
    bool private _maxTxEnabled;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndBoosterEnabledUpdated(bool enabled);
    
    event SwapETHForTokens(uint256 amountIn,address[] path);
    event SwapTokensForETH(uint256 amountIn,address[] path);
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity);
    
    modifier lockTheSwap {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }
    
    
    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function excludeBlacklist(address account) external onlyAuthorized {
        _isBlacklisted[account] = false;
    }
    function includeBlacklist(address account) external onlyAuthorized {
        _isBlacklisted[account] = true;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyAuthorized {
        require(taxFee <= 10, 
        "must not exceed 10 percent");
        
        _taxFee = taxFee;
    }
    function setSwapFeePercent(uint256 swapFee) external onlyAuthorized {
        require(swapFee <= 20, 
        "must not exceed 20 percent");
        
        _swapFee = swapFee;
    }
    function setReserveFeePercent(uint256 reserveFee) external onlyAuthorized {
        require(reserveFee <= 10, 
        "must not exceed 10 percent");
        
        _reserveFee = reserveFee;
    }

    function setStar(address star) external onlyAuthorized {
        _star = star;
    }
    function setMaxTx(uint256 maxTxAmount) external onlyAuthorized {
        _maxTxAmount = maxTxAmount;
    }
    function setMaxTxEnabled(bool state) external onlyAuthorized {
        _maxTxEnabled = state;
    }
    
    function setSwapAndLiquifyEnabled(bool state) external onlyAuthorized {
        _swapAndLiquifyEnabled = state;
        emit SwapAndLiquifyEnabledUpdated(state);
    }
    function setSwapAndBoostereEnabled(bool state) external onlyAuthorized {
        _swapAndBoosterEnabled = state;
        emit SwapAndBoosterEnabledUpdated(state);
    }

    function setMinimumAccumulationForBooster(uint256 min) external onlyAuthorized {
        _minimumAccumulationForBooster = min;
    }
    function setMinimumAccumulationForLiquidity(uint256 min) external onlyAuthorized {
        _minimumAccumulationForLiquidity = min;
    }
        
    function setBoosterCeiling(uint256 ceiling) external onlyAuthorized {
        _boosterCeiling = ceiling * 10**18;
    }
    function setBoosterFloor(uint256 floor) external onlyAuthorized {
        _boosterFloor = floor * 10**18;
    }
    function setBoosterRequisite(uint256 amount) external onlyAuthorized {
        _boosterRequisite = amount;
    }
    function setBoosterDivisor(uint256 divisor) external onlyAuthorized {
        _boosterDivisor = divisor;
    }

    function excludeFromReward(address account) external onlyAuthorized {

        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }
    function includeInReward(address account) external onlyAuthorized {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function getTaxFee() external view returns (uint256) {
        return _taxFee;
    }   
    function getReserveFee() external view returns (uint256) {
        return _reserveFee;
    }   
    function getSwapFees() external view returns (uint256) {
        return _swapFee;
    }   
    function getMaxTx() external view returns (uint256) {
        return _maxTxAmount;
    }   
    
    function getBoosterSizeValue() external view returns (uint256) {
        uint256 balance = address(this).balance;
        
        if (balance > _boosterFloor) {
            if (balance > _boosterCeiling) { 
                return _boosterCeiling.div(_boosterDivisor);
            } else {  
                return balance.div(_boosterDivisor); 
            }
        } else {
            return 0;
        }
    }
    function getBoosterSizePercent() external view returns (uint256) {
        return (_DENOMINATOR.mul(_PRECISION)).div(_boosterDivisor);
    }
    function getBoosterFloor() external view returns (uint256) {
        return _boosterFloor;
    }   
    function getBoosterCeiling() external view returns (uint256) {
        return _boosterCeiling;
    }   
    function getBoosterDivisor() external view returns (uint256) {
        return _boosterDivisor;
    }   
    function getBoosterRequisite() external view returns (uint256) {
        return _boosterRequisite;
    }   
    function getBoosterReserve() external view returns (uint256) {
        return address(this).balance;
    }  
    
    function isLiquificationEnabled() external view returns (bool) {
        return _swapAndLiquifyEnabled;
    }   
    function isBoosterEnabled() external view returns (bool) {
        return _swapAndBoosterEnabled;
    }   
    function isMaxTxEnabled() external view returns (bool) {
        return _maxTxEnabled;
    }  
    
    function isBlacklisted(address account) external view returns (bool) {
        return _isBlacklisted[account];
    }  
    
    function excludeFromFee(address account) external onlyAuthorized {
        _isExcludedFromFee[account] = true;
    }
    function includeInFee(address account) external onlyAuthorized {
        _isExcludedFromFee[account] = false;
    }

    function name() external view returns (string memory) {
        return _NAME;
    }
    function symbol() external view returns (string memory) {
        return _SYMBOL;
    }
    function decimals() external view returns (uint8) {
        return _DECIMALS;
    }

    function totalSupply() external view override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function transferBatch(address[] calldata recipients, uint256[] calldata amounts) external returns (bool) {
        require(recipients.length == amounts.length, 
        "Must be matching argument lengths");
        
        uint256 length = recipients.length;
        
        for (uint i = 0; i < length; i++) {
            require(transfer(recipients[i], amounts[i]));
        }
        return true;
    }

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    
    function getMinimumAccumulationForBooster() external view returns (uint256) {
        return _minimumAccumulationForBooster;
    }
    function getMinimumAccumulationForLiquidity() external view returns (uint256) {
        return _minimumAccumulationForLiquidity;
    }

    function isOverBoosterRequisite(uint256 amount) public view returns (bool) {
        return amount >= _boosterRequisite; 
    }
    function isExcludedFromFee(address account) external view returns (bool) {
        return _isExcludedFromFee[account];
    }
    function isExcludedFromReward(address account) external view returns (bool) {
        return _isExcluded[account];
    }
    function totalFees() external view returns (uint256) {
        return _tFeeTotal;
    }
    
    function deliver(uint256 tAmount) external {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }
    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    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);
    }
    function _transfer(address from, address to, uint256 amount) private {
        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");
        
        require(!_isBlacklisted[from], "must not be blacklisted");
        require(!_isBlacklisted[to], "must not be blacklisted");

        
        if (_maxTxEnabled) {
                require(amount <= _maxTxAmount, 
                    "transfer amount exceeds the maximum tx amount.");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= (_minimumAccumulationForLiquidity.add(_minimumAccumulationForBooster));
        
        if(contractTokenBalance >= _maxTxAmount) 
            { contractTokenBalance = _maxTxAmount; }

        if (!_inSwapAndLiquify && _swapAndLiquifyEnabled && to == uniswapV2Pair) {
            
            if (overMinimumTokenBalance) {
                contractTokenBalance = _minimumAccumulationForBooster;
                _swapTokens(contractTokenBalance);   
                
                contractTokenBalance = _minimumAccumulationForLiquidity;
                _swapAndLiquify(contractTokenBalance);
            }
            
            uint256 balance = address(this).balance;
            
            if (_swapAndBoosterEnabled && balance > _boosterFloor && isOverBoosterRequisite(amount)) {
                
                if (balance > _boosterCeiling)
                    balance = _boosterCeiling;
                
                _swapAndBoost(balance.div(_boosterDivisor));
            }
        }
        
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function _swapAndBoost(uint256 amount) private lockTheSwap {
        if (amount > 0) {
            _swapETHForTokens(amount);
        }
    }
    function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        _swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to uniswap
        _addLiquidity(otherHalf, newBalance);
        
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }
    function _swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        
        uint256 initialBalance = address(this).balance;
        _swapTokensForEth(contractTokenBalance);
        uint256 transferredBalance = address(this).balance.sub(initialBalance);
        
        uint256 reserveFee = (transferredBalance.mul(_reserveFee)).div(100);
        _transferReserve(reserve, reserveFee);
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    function _swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

      // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            _star, 
            block.timestamp.add(300)
        );
        
        emit SwapETHForTokens(amount, path);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            _removeAllFee();
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee)
            _restoreAllFee();
    }
    
    function _transferReserve(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tSwap) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTokensForSwappingFees(tSwap);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tSwap) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeTokensForSwappingFees(tSwap);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tSwap) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeTokensForSwappingFees(tSwap);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tSwap) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeTokensForSwappingFees(tSwap);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _takeTokensForSwappingFees(uint256 tSwap) private {
        uint256 currentRate =  _getRate();
        uint256 rSwap = tSwap.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rSwap);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tSwap);
    }
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
    
    function _removeAllFee() private {
        if(_taxFee == 0 && _swapFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousSwapFee = _swapFee;
        
        _taxFee = 0;
        _swapFee = 0;
    }
    function _restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _swapFee = _previousSwapFee;
    }
    
    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tSwap) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tSwap, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tSwap);
    }
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = _calculateTaxFee(tAmount);
        uint256 tSwap = _calculateSwapFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tSwap);
        return (tTransferAmount, tFee, tSwap);
    }
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tSwap, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rSwap = tSwap.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rSwap);
        return (rAmount, rTransferAmount, rFee);
    }
    
    function _calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }
    function _calculateSwapFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_swapFee).div(
            10**2
        );
    }
    
}

contract Token is Reflective {
    using SafeMath for uint256;
    
    Outpost private _outpost;
    
    uint32  private constant _TERM      = 31536000 seconds;
    uint8   private constant _OFFSET    = 15 seconds;
    uint16  private constant _TERMINATE = 300 seconds;
    
    uint8   private constant _DENOMINATOR = 100;
    
    uint8   private _up = 8;
    uint8   private _cp = 25;
    uint8   private _rp = 4;
    
    uint256 private _COOLDOWN = 2700 seconds;
    uint256 private _mr = 500000000 * 10**8;
    
    uint256 private _genesis;
    bool    private _hp;

    uint256 private _unlockedLP;
    uint256 private _latest;
    
    event Surged(uint256 amount);
    event Rewarded(uint256 amount);
    
    constructor() {
        _hp = true;
        _genesis = _time();
        _unlockedLP = _genesis.add(_TERM);
    }

    receive () external payable {}
    
    function upsurge() external returns (bool) {
        require(balanceOf(_msgSender()) >= getMinimumRequisite(), 
        "must comply with minimum balance requirement");
        
        uint256 time = _time();
        uint256 clearance = getLatest().add(_COOLDOWN);
        
        require(time >= clearance, 
        "must wait for cooldown clearance");
        
        _latest = time;
        
        uint256 removeable = getCycledLP();
        
        _removeLP(removeable);
        IUniswapV2Pair(uniswapV2Pair).sync();
        
        uint surge = _outpost.recycle();

        emit Surged(surge);
        return true;
    }
 
    function unlockLP() external onlyAuthorized returns (bool) {
        require(_time() > _unlockedLP, 
        "must be in an unlockable state");
        
        uint256 amount = IERC20(uniswapV2Pair).balanceOf(address(this));
        IERC20(uniswapV2Pair).transfer(_msgSender(), amount);
        return true;
    }
    function unlockHP() external onlyAuthorized returns (bool) {
        require(_time() <= getGenesis().add(_TERMINATE), 
        "Must find a proper developer");
        
        _hp = false;
        return true;
    }
    
    function setOutpost(address payable outpost) external onlyAuthorized returns (bool) {
        _outpost = Outpost(outpost);
        return true;
    }
    function setMinimumRequisite(uint256 amount) external onlyAuthorized returns (bool) {
        _mr = amount;
        return true;
    }
    function setCooldown(uint256 cooldown) external onlyAuthorized returns (bool) {
        _COOLDOWN = cooldown;
        return true;
    }
    
    function setUP(uint8 amount) external onlyAuthorized returns (bool) {
        require(amount <= 10, 
        "must not exceed 10 percent");
        
        _up = amount;
        return true;
    }
    function setCP(uint8 amount) external onlyAuthorized returns (bool) {
        require(amount <= 100, //support for 0.X %, max of 1 %
        "must not exceed 10 percent");
        
        _cp = amount;
        return true;
    }
    function setRP(uint8 amount) external onlyAuthorized returns (bool) {
        require(amount <= 10, 
        "must not exceed 10 percent");
        
        _rp = amount;
        return true;
    }

    function getCooldown() external view returns (uint256) {
        return _COOLDOWN;
    }
    function getClearance() external view returns (uint256) {
        uint256 time = _time();
        uint256 latest = getLatest();
        uint256 next = latest.add(_COOLDOWN);
        if (next > time) { return next.sub(time); } else { return 0; }
    }
    
    function getUnlockedLPAt() external view returns (uint256) {
        return _unlockedLP;
    }

    function getLockedTokens() external view returns (uint256) {
        uint256 AMMBalance = balanceOf(uniswapV2Pair);
        
        uint256 LPTotal = IERC20(uniswapV2Pair).totalSupply();
        uint256 LPBalance = getLockedLP();
        uint256 LPTotalPercentage = LPBalance.mul(1e12).div(LPTotal);
        
        return AMMBalance.mul(LPTotalPercentage).div(1e12);
    }
    
    function getCycledLP() public view returns (uint256) {
        return (getRemoveableLP().mul(_up)).div(_DENOMINATOR);
    }
    function getLockedLP() public view returns (uint256) {
        return getRemoveableLP().add(getBurnedLP());
    }
    function getBurnedLP() public view returns (uint256) {
        return IERC20(uniswapV2Pair).balanceOf(address(0));
    }

    function getUP() external view returns (uint8) {
        return _up;
    }
    function getCP() external view returns (uint256) {
        return _cp;
    }
    function getRP() external view returns (uint8) {
        return _rp;
    }

    function getMinimumRequisite() public view returns (uint256) {
        return _mr;
    }
    function getLatest() public view returns (uint256) {
        return _latest;
    }
    function getGenesis() public view returns (uint256) {
        return _genesis;
    }
    function getHP() public view returns (bool) {
        return _hp;
    }

    function getRemoveableLP() private view returns (uint256) {
        return IERC20(uniswapV2Pair).balanceOf(_environment());
    }
    
    function _environment() private view returns (address) {
        return address(this);
    }
    function _time() private view returns (uint256) {
        return block.timestamp;
    }

    function _removeLP(uint256 amount) private returns (uint256) {
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), amount);
        
        (uint256 screwThisVariable) = IUniswapV2Router02(uniswapV2Router)
            .removeLiquidityETHSupportingFeeOnTransferTokens(
                _environment(),
                amount,
                0,
                0,
                address(_outpost),
                _time() + _OFFSET);
    }
    
}

contract Outpost is Context {
    using SafeMath for uint256;   
    
    Token private _token;
    
    uint256 private constant _DENOMINATOR = 100;
    address payable private constant _RESERVE = 0x28DF4808FD9aa4dedc9b5f73141Fd0Df79c2542a;
    address public constant blackhole = 0x000000000000000000000000000000000000dEaD;
    
    constructor(address payable token) {
        _token = Token(token);
    }
    
    receive () external payable {}
    
    function recycle() external returns (uint256) { 
        require(_msgSender() == address(_token), 
        "must be called by the token");
        
        require(!_token.getHP(), 
        "must solve the problem on your own");
        
        address environment = _environment();
        _reposition(environment.balance);
        
        uint256 lockable = _token.balanceOf(environment);
        uint256 reward = ((lockable.mul(_token.getCP())).div(_DENOMINATOR)).div(_DENOMINATOR);
        uint256 burned = lockable.sub(reward);
        
        _token.transfer(tx.origin, reward);
        _token.transfer(blackhole, burned);
    
        return burned;
    }
    
    function _reposition(uint256 amount) private { 
        address[] memory uniswapPairPath = new address[](2);
        
        uniswapPairPath[0] = IUniswapV2Router02(_token.uniswapV2Router()).WETH();
        uniswapPairPath[1] = address(_token);
        
        uint256 rp = _token.getRP();
        uint256 reserve = (amount.mul(rp)).div(_DENOMINATOR);
        _RESERVE.transfer(reserve);
        
        _token.approve(address(_token.uniswapV2Router()), amount);
        
        IUniswapV2Router02(_token.uniswapV2Router())
        .swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount.sub(reserve)}(
                0,
                uniswapPairPath,
                _environment(),
                _time() 
                );
    }  
    function _environment() private view returns (address) {
        return address(this);
    }
    function _time() private view returns (uint256) {
        return block.timestamp;
    }
    
}

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":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":"amount","type":"uint256"}],"name":"Rewarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Surged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndBoosterEnabledUpdated","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBoosterCeiling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBoosterDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBoosterFloor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBoosterRequisite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBoosterReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBoosterSizePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBoosterSizeValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClearance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCycledLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGenesis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLockedLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumAccumulationForBooster","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumAccumulationForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumRequisite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRP","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserveFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUP","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockedLPAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBoosterEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"isLiquificationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMaxTxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"isOverBoosterRequisite","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":"account","type":"address"}],"name":"removeAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ceiling","type":"uint256"}],"name":"setBoosterCeiling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setBoosterDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"floor","type":"uint256"}],"name":"setBoosterFloor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBoosterRequisite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"}],"name":"setCP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cooldown","type":"uint256"}],"name":"setCooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setMaxTxEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"}],"name":"setMinimumAccumulationForBooster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"}],"name":"setMinimumAccumulationForLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinimumRequisite","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"outpost","type":"address"}],"name":"setOutpost","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"}],"name":"setRP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reserveFee","type":"uint256"}],"name":"setReserveFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"star","type":"address"}],"name":"setStar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapAndBoostereEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapFee","type":"uint256"}],"name":"setSwapFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"}],"name":"setUP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"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":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"transferBatch","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"},{"inputs":[],"name":"unlockHP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upsurge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405268056bc75e2d631000006000190619600a556001600c8190556002600d908155600e8190556706f05b59d3b20000600f55601091909155601155666a94d74f4300006012556658d15e17628000601355670de0b6b3a7640000601481905560155560646016556018805460ff60c01b1916600160c31b1760ff60c81b1916601960c81b1760ff60d01b1916600160d21b179055610a8c60195566b1a2bc2ec50000601a55348015620000b557600080fd5b506000620000c2620003c9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a54600360006200011d620003c9565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060007310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019457600080fd5b505afa158015620001a9573d6000803e3d6000fd5b505050506040513d6020811015620001c057600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200021157600080fd5b505afa15801562000226573d6000803e3d6000fd5b505050506040513d60208110156200023d57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200029057600080fd5b505af1158015620002a5573d6000803e3d6000fd5b505050506040513d6020811015620002bc57600080fd5b50516001600160601b0319606091821b811660a0529082901b16608052600160066000620002e9620003cd565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600690925290208054909116600117905562000333620003c9565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040518082815260200191505060405180910390a350601c805460ff191660011790556200039f620003dc565b601b819055620003c0906301e13380620003e0602090811b6200393b17901c565b601d5562000442565b3390565b6000546001600160a01b031690565b4290565b6000828201838110156200043b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60805160601c60a05160601c615332620004c660003980611944528061196e528061243a52806125f35280612cf9528061322f52806132d25280613d1b5280613fdb528061419e525080611598528061400a52806140a9528061473352806147eb528061481252806149b35280614a1a5280614ab15280614b8a52506153326000f3fe6080604052600436106104ce5760003560e01c806365314d0d11610276578063b18149c51161014f578063d4722cd4116100c1578063f2fde38b11610085578063f2fde38b14611160578063f3e7fc8014611193578063f66608fe146111a8578063f9142329146111bd578063fe434247146111d2578063fe575a87146111fc576104d5565b8063d4722cd414611089578063d64da805146110b3578063dccf80a1146110dd578063dd62ed3e146110f2578063ea2f0b371461112d576104d5565b8063c36af46011610113578063c36af46014610fd6578063c49b9a8014610feb578063c91bbba514611017578063cd3293de1461102c578063cf1c316a14611041578063cf7c788614611074576104d5565b8063b18149c514610f3a578063b4e94ca814610f4f578063b918161114610f64578063b91f3f9714610f97578063bc33718214610fac576104d5565b806388f82020116101e857806395d89b41116101ac57806395d89b411461059b5780639e60d32e14610e74578063a0c3b42014610e9e578063a457c2d714610eb3578063a5a7cf1f14610eec578063a9059cbb14610f01576104d5565b806388f8202014610dd85780638bc6c03e14610e0b5780638da5cb5b14610e355780639251c4ce14610e4a57806395688df614610e5f576104d5565b80637573141b1161023a5780637573141b14610d2d57806375a0bdbc14610d5757806377c3256814610d6c5780637c6f05d714610d815780637d6085ec14610d965780637dc948b614610dab576104d5565b806365314d0d14610ca65780636cfc752214610cbb57806370a0823114610cd0578063715018a614610d035780637514ac2414610d18576104d5565b80633685d419116103a857806348f3c6761161031a5780634fc3f41a116102de5780634fc3f41a14610bab57806352390c0214610bd55780635342acb414610c08578063541958ff14610c3b578063557b5a5814610c675780635c1e2aae14610c91576104d5565b806348f3c67614610b0657806349bd5a5e14610b395780634a92df3c14610b4e5780634bf8d8c514610b815780634de0acac14610b96576104d5565b806342302aa81161036c57806342302aa8146109fc578063437823ec14610a2f578063438b9d8714610a62578063454091cd14610a775780634549b03914610aa1578063485d7d9414610ad3576104d5565b80633685d4191461086d57806339509351146108a05780633b264189146108d95780633b3e672f146109035780633bd5d173146109d2576104d5565b80631de36363116104415780632e610237116104055780632e610237146107ad578063313ce567146107c257806331d950f1146107ed578063322a04d9146108175780633317bbcc1461082c5780633609924114610841576104d5565b80631de36363146106e3578063218e4a151461071657806323b872dd1461072b5780632d59590f1461076e5780632d83811914610783576104d5565b8063095ea7b311610493578063095ea7b3146106255780630d7f46d91461065e57806313114a9d146106735780631694505e1461068857806318160ddd146106b95780631a43bcb5146106ce576104d5565b80623de09f146104da57806304161d9c14610501578063051da69314610542578063061c82d01461056f57806306fdde031461059b576104d5565b366104d557005b600080fd5b3480156104e657600080fd5b506104ef61122f565b60408051918252519081900360200190f35b34801561050d57600080fd5b5061052e6004803603602081101561052457600080fd5b503560ff16611236565b604080519115158252519081900360200190f35b34801561054e57600080fd5b5061052e6004803603602081101561056557600080fd5b503560ff1661132d565b34801561057b57600080fd5b506105996004803603602081101561059257600080fd5b5035611424565b005b3480156105a757600080fd5b506105b06114f9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ea5781810151838201526020016105d2565b50505050905090810190601f1680156106175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063157600080fd5b5061052e6004803603604081101561064857600080fd5b506001600160a01b038135169060200135611518565b34801561066a57600080fd5b506104ef611536565b34801561067f57600080fd5b506104ef611590565b34801561069457600080fd5b5061069d611596565b604080516001600160a01b039092168252519081900360200190f35b3480156106c557600080fd5b506104ef6115ba565b3480156106da57600080fd5b506104ef6115c7565b3480156106ef57600080fd5b5061052e6004803603602081101561070657600080fd5b50356001600160a01b03166115cd565b34801561072257600080fd5b506104ef61168b565b34801561073757600080fd5b5061052e6004803603606081101561074e57600080fd5b506001600160a01b03813581169160208101359091169060400135611691565b34801561077a57600080fd5b506104ef611718565b34801561078f57600080fd5b506104ef600480360360208110156107a657600080fd5b5035611728565b3480156107b957600080fd5b5061052e61178a565b3480156107ce57600080fd5b506107d7611896565b6040805160ff9092168252519081900360200190f35b3480156107f957600080fd5b506105996004803603602081101561081057600080fd5b503561189b565b34801561082357600080fd5b506104ef611936565b34801561083857600080fd5b506104ef61193c565b34801561084d57600080fd5b506105996004803603602081101561086457600080fd5b50351515611a38565b34801561087957600080fd5b506105996004803603602081101561089057600080fd5b50356001600160a01b0316611b15565b3480156108ac57600080fd5b5061052e600480360360408110156108c357600080fd5b506001600160a01b038135169060200135611d0a565b3480156108e557600080fd5b50610599600480360360208110156108fc57600080fd5b5035611d58565b34801561090f57600080fd5b5061052e6004803603604081101561092657600080fd5b81019060208101813564010000000081111561094157600080fd5b82018360208201111561095357600080fd5b8035906020019184602083028401116401000000008311171561097557600080fd5b91939092909160208101903564010000000081111561099357600080fd5b8201836020820111156109a557600080fd5b803590602001918460208302840111640100000000831117156109c757600080fd5b509092509050611de9565b3480156109de57600080fd5b50610599600480360360208110156109f557600080fd5b5035611e8a565b348015610a0857600080fd5b5061059960048036036020811015610a1f57600080fd5b50356001600160a01b0316611f64565b348015610a3b57600080fd5b5061059960048036036020811015610a5257600080fd5b50356001600160a01b0316612011565b348015610a6e57600080fd5b506107d76120c1565b348015610a8357600080fd5b5061059960048036036020811015610a9a57600080fd5b50356120d1565b348015610aad57600080fd5b506104ef60048036036040811015610ac457600080fd5b508035906020013515156121a6565b348015610adf57600080fd5b5061052e60048036036020811015610af657600080fd5b50356001600160a01b031661223f565b348015610b1257600080fd5b5061059960048036036020811015610b2957600080fd5b50356001600160a01b031661238a565b348015610b4557600080fd5b5061069d612438565b348015610b5a57600080fd5b5061059960048036036020811015610b7157600080fd5b50356001600160a01b031661245c565b348015610b8d57600080fd5b5061052e61250c565b348015610ba257600080fd5b506104ef612724565b348015610bb757600080fd5b5061052e60048036036020811015610bce57600080fd5b5035612728565b348015610be157600080fd5b5061059960048036036020811015610bf857600080fd5b50356001600160a01b03166127be565b348015610c1457600080fd5b5061052e60048036036020811015610c2b57600080fd5b50356001600160a01b0316612978565b348015610c4757600080fd5b5061059960048036036020811015610c5e57600080fd5b50351515612996565b348015610c7357600080fd5b5061052e60048036036020811015610c8a57600080fd5b5035612a40565b348015610c9d57600080fd5b506104ef612ad6565b348015610cb257600080fd5b5061052e612adc565b348015610cc757600080fd5b506104ef612aea565b348015610cdc57600080fd5b506104ef60048036036020811015610cf357600080fd5b50356001600160a01b0316612af0565b348015610d0f57600080fd5b50610599612b52565b348015610d2457600080fd5b5061052e612bfe565b348015610d3957600080fd5b5061059960048036036020811015610d5057600080fd5b5035612c0e565b348015610d6357600080fd5b506104ef612cf5565b348015610d7857600080fd5b506104ef612d96565b348015610d8d57600080fd5b506104ef612dc4565b348015610da257600080fd5b5061052e612dca565b348015610db757600080fd5b5061052e60048036036020811015610dce57600080fd5b503560ff16612dd3565b348015610de457600080fd5b5061052e60048036036020811015610dfb57600080fd5b50356001600160a01b0316612eca565b348015610e1757600080fd5b5061059960048036036020811015610e2e57600080fd5b5035612ee8565b348015610e4157600080fd5b5061069d612f83565b348015610e5657600080fd5b506104ef612f92565b348015610e6b57600080fd5b506104ef612f98565b348015610e8057600080fd5b5061059960048036036020811015610e9757600080fd5b5035612fad565b348015610eaa57600080fd5b506104ef61303e565b348015610ebf57600080fd5b5061052e60048036036040811015610ed657600080fd5b506001600160a01b038135169060200135613044565b348015610ef857600080fd5b506104ef6130ac565b348015610f0d57600080fd5b5061052e60048036036040811015610f2457600080fd5b506001600160a01b0381351690602001356130f4565b348015610f4657600080fd5b506104ef613108565b348015610f5b57600080fd5b506107d761311d565b348015610f7057600080fd5b5061052e60048036036020811015610f8757600080fd5b50356001600160a01b031661312d565b348015610fa357600080fd5b5061052e613142565b348015610fb857600080fd5b5061059960048036036020811015610fcf57600080fd5b503561337b565b348015610fe257600080fd5b506104ef61340c565b348015610ff757600080fd5b506105996004803603602081101561100e57600080fd5b50351515613412565b34801561102357600080fd5b506104ef6134ed565b34801561103857600080fd5b5061069d6134f3565b34801561104d57600080fd5b5061052e6004803603602081101561106457600080fd5b50356001600160a01b031661350b565b34801561108057600080fd5b506104ef6135f2565b34801561109557600080fd5b50610599600480360360208110156110ac57600080fd5b50356135f8565b3480156110bf57600080fd5b5061052e600480360360208110156110d657600080fd5b5035613689565b3480156110e957600080fd5b506104ef613691565b3480156110fe57600080fd5b506104ef6004803603604081101561111557600080fd5b506001600160a01b0381358116916020013516613697565b34801561113957600080fd5b506105996004803603602081101561115057600080fd5b50356001600160a01b03166136c2565b34801561116c57600080fd5b506105996004803603602081101561118357600080fd5b50356001600160a01b031661376f565b34801561119f57600080fd5b506104ef613871565b3480156111b457600080fd5b506104ef613877565b3480156111c957600080fd5b5061052e61387d565b3480156111de57600080fd5b50610599600480360360208110156111f557600080fd5b503561388c565b34801561120857600080fd5b5061052e6004803603602081101561121f57600080fd5b50356001600160a01b031661391d565b6016545b90565b60008061124161399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680611283575061126e612f83565b6001600160a01b0316816001600160a01b0316145b6112c2576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b600a8360ff161115611309576040805162461bcd60e51b815260206004820152601a6024820152600080516020615162833981519152604482015290519081900360640190fd5b6018805460ff8516600160c01b0260ff60c01b199091161790556001915050919050565b60008061133861399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061137a5750611365612f83565b6001600160a01b0316816001600160a01b0316145b6113b9576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b60648360ff161115611400576040805162461bcd60e51b815260206004820152601a6024820152600080516020615162833981519152604482015290519081900360640190fd5b6018805460ff8516600160c81b0260ff60c81b199091161790556001915050919050565b600061142e61399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680611470575061145b612f83565b6001600160a01b0316816001600160a01b0316145b6114af576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b600a8211156114f3576040805162461bcd60e51b815260206004820152601a6024820152600080516020615162833981519152604482015290519081900360640190fd5b50600c55565b604080518082019091526005815264535552474560d81b602082015290565b600061152c61152561399c565b84846139a0565b5060015b92915050565b600080611541613a8c565b9050600061154d61340c565b905060006115666019548361393b90919063ffffffff16565b9050828111156115845761157a8184613a90565b9350505050611233565b60009350505050611233565b600b5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b68056bc75e2d6310000090565b601b5490565b6000806115d861399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061161a5750611605612f83565b6001600160a01b0316816001600160a01b0316145b611659576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b601880546001600160a01b03851664010000000002640100000000600160c01b03199091161790556001915050919050565b60195490565b600061169e848484613ad2565b61170e846116aa61399c565b611709856040518060600160405280602881526020016151f2602891396001600160a01b038a166000908152600560205260408120906116e861399c565b6001600160a01b031681526020810191909152604001600020549190613e33565b6139a0565b5060019392505050565b601854600160c81b900460ff1690565b6000600a5482111561176b5760405162461bcd60e51b815260040180806020018281038252602a8152602001806150f0602a913960400191505060405180910390fd5b6000611775613eca565b90506117818382613eed565b9150505b919050565b60008061179561399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806117d757506117c2612f83565b6001600160a01b0316816001600160a01b0316145b611816576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b61182a61012c6118246115c7565b9061393b565b611832613a8c565b1115611885576040805162461bcd60e51b815260206004820152601c60248201527f4d7573742066696e6420612070726f70657220646576656c6f70657200000000604482015290519081900360640190fd5b5050601c805460ff19169055600190565b600890565b60006118a561399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806118e757506118d2612f83565b6001600160a01b0316816001600160a01b0316145b611926576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50670de0b6b3a764000002601455565b60145490565b6000806119687f0000000000000000000000000000000000000000000000000000000000000000612af0565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119c557600080fd5b505afa1580156119d9573d6000803e3d6000fd5b505050506040513d60208110156119ef57600080fd5b5051905060006119fd612f98565b90506000611a1a83611a148464e8d4a51000613f2f565b90613eed565b9050611a2f64e8d4a51000611a148684613f2f565b94505050505090565b6000611a4261399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680611a845750611a6f612f83565b6001600160a01b0316816001600160a01b0316145b611ac3576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b6018805483151562010000810262ff0000199092169190911790915560408051918252517fab8f13bfc086fbd090645d30d0564120bfcda05a297d806e32c3cb9975db79139181900360200190a15050565b6000611b1f61399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680611b615750611b4c612f83565b6001600160a01b0316816001600160a01b0316145b611ba0576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526007602052604090205460ff16611c0d576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015611d0557826001600160a01b031660088281548110611c3157fe5b6000918252602090912001546001600160a01b03161415611cfd57600880546000198101908110611c5e57fe5b600091825260209091200154600880546001600160a01b039092169183908110611c8457fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600482526040808220829055600790925220805460ff191690556008805480611cd657fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611d05565b600101611c10565b505050565b600061152c611d1761399c565b846117098560056000611d2861399c565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061393b565b6000611d6261399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680611da45750611d8f612f83565b6001600160a01b0316816001600160a01b0316145b611de3576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50601355565b6000838214611e295760405162461bcd60e51b81526004018080602001828103825260218152602001806151826021913960400191505060405180910390fd5b8360005b81811015611e7d57611e6c878783818110611e4457fe5b905060200201356001600160a01b0316868684818110611e6057fe5b905060200201356130f4565b611e7557600080fd5b600101611e2d565b5060019695505050505050565b6000611e9461399c565b6001600160a01b03811660009081526007602052604090205490915060ff1615611eef5760405162461bcd60e51b815260040180806020018281038252602c8152602001806152ac602c913960400191505060405180910390fd5b6000611efa83613f88565b505050506001600160a01b038416600090815260036020526040902054919250611f2691905082613a90565b6001600160a01b038316600090815260036020526040902055600a54611f4c9082613a90565b600a55600b54611f5c908461393b565b600b55505050565b6000611f6e61399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680611fb05750611f9b612f83565b6001600160a01b0316816001600160a01b0316145b611fef576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b506001600160a01b03166000908152600260205260409020805460ff19169055565b600061201b61399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061205d5750612048612f83565b6001600160a01b0316816001600160a01b0316145b61209c576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b506001600160a01b03166000908152600660205260409020805460ff19166001179055565b601854600160c01b900460ff1690565b60006120db61399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061211d5750612108612f83565b6001600160a01b0316816001600160a01b0316145b61215c576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b600a8211156121a0576040805162461bcd60e51b815260206004820152601a6024820152600080516020615162833981519152604482015290519081900360640190fd5b50600d55565b600068056bc75e2d63100000831115612206576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161222557600061221684613f88565b50939550611530945050505050565b600061223084613f88565b50929550611530945050505050565b600061224961399c565b6001600160a01b031661225a612f83565b6001600160a01b0316146122a3576040805162461bcd60e51b8152602060048201819052602482015260008051602061521a833981519152604482015290519081900360640190fd5b6001600160a01b0382166122fe576040805162461bcd60e51b815260206004820152601c60248201527f6d757374206e6f7420626520746865207a65726f206164647265737300000000604482015290519081900360640190fd5b61230661399c565b6001600160a01b0316826001600160a01b03161415612364576040805162461bcd60e51b815260206004820152601560248201527436bab9ba103737ba103132903a34329037bbb732b960591b604482015290519081900360640190fd5b506001600160a01b03166000908152600160208190526040909120805460ff1916905590565b600061239461399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806123d657506123c1612f83565b6001600160a01b0316816001600160a01b0316145b612415576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061246661399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806124a85750612493612f83565b6001600160a01b0316816001600160a01b0316145b6124e7576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b506001600160a01b03166000908152600260205260409020805460ff19166001179055565b600061251661303e565b61252661252161399c565b612af0565b10156125635760405162461bcd60e51b815260040180806020018281038252602c8152602001806150c4602c913960400191505060405180910390fd5b600061256d613a8c565b9050600061257f60195461182461340c565b9050808210156125d6576040805162461bcd60e51b815260206004820181905260248201527f6d757374207761697420666f7220636f6f6c646f776e20636c656172616e6365604482015290519081900360640190fd5b601e82905560006125e5612d96565b90506125f081613fd7565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561264c57600080fd5b505af1158015612660573d6000803e3d6000fd5b505050506000601860049054906101000a90046001600160a01b03166001600160a01b0316630f23cbaa6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156126b657600080fd5b505af11580156126ca573d6000803e3d6000fd5b505050506040513d60208110156126e057600080fd5b50516040805182815290519192507fbc139108799d3f1d69b7cba3fe9dcffda6964c9bf64526c6f1d5cecc59faa07a919081900360200190a1600194505050505090565b4790565b60008061273361399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806127755750612760612f83565b6001600160a01b0316816001600160a01b0316145b6127b4576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b5050601955600190565b60006127c861399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061280a57506127f5612f83565b6001600160a01b0316816001600160a01b0316145b612849576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526007602052604090205460ff16156128b7576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205415612911576001600160a01b0382166000908152600360205260409020546128f790611728565b6001600160a01b0383166000908152600460205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b60006129a061399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806129e257506129cd612f83565b6001600160a01b0316816001600160a01b0316145b612a21576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b506018805491151563010000000263ff00000019909216919091179055565b600080612a4b61399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680612a8d5750612a78612f83565b6001600160a01b0316816001600160a01b0316145b612acc576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b5050601a55600190565b601d5490565b601854610100900460ff1690565b60155490565b6001600160a01b03811660009081526007602052604081205460ff1615612b3057506001600160a01b038116600090815260046020526040902054611785565b6001600160a01b03821660009081526003602052604090205461153090611728565b612b5a61399c565b6001600160a01b0316612b6b612f83565b6001600160a01b031614612bb4576040805162461bcd60e51b8152602060048201819052602482015260008051602061521a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6018546301000000900460ff1690565b6000612c1861399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680612c5a5750612c45612f83565b6001600160a01b0316816001600160a01b0316145b612c99576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b6014821115612cef576040805162461bcd60e51b815260206004820152601a60248201527f6d757374206e6f74206578636565642032302070657263656e74000000000000604482015290519081900360640190fd5b50600e55565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a0823160006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612d6557600080fd5b505afa158015612d79573d6000803e3d6000fd5b505050506040513d6020811015612d8f57600080fd5b5051905090565b601854600090612dbf90606490611a1490600160c01b900460ff16612db961419a565b90613f2f565b905090565b60135490565b601c5460ff1690565b600080612dde61399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680612e205750612e0b612f83565b6001600160a01b0316816001600160a01b0316145b612e5f576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b600a8360ff161115612ea6576040805162461bcd60e51b815260206004820152601a6024820152600080516020615162833981519152604482015290519081900360640190fd5b6018805460ff8516600160d01b0260ff60d01b199091161790556001915050919050565b6001600160a01b031660009081526007602052604090205460ff1690565b6000612ef261399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680612f345750612f1f612f83565b6001600160a01b0316816001600160a01b0316145b612f73576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50670de0b6b3a764000002601555565b6000546001600160a01b031690565b600f5490565b6000612dbf612fa5612cf5565b61182461419a565b6000612fb761399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680612ff95750612fe4612f83565b6001600160a01b0316816001600160a01b0316145b613038576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50601655565b601a5490565b600061152c61305161399c565b84611709856040518060600160405280602581526020016152d8602591396005600061307b61399c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190613e33565b60155460009047908111156130ea576014548111156130dc576016546014546130d491613eed565b915050611233565b6016546130d4908290613eed565b6000915050611233565b600061152c61310161399c565b8484613ad2565b601654600090612dbf90611a14606480613f2f565b601854600160d01b900460ff1690565b60016020526000908152604090205460ff1681565b60008061314d61399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061318f575061317a612f83565b6001600160a01b0316816001600160a01b0316145b6131ce576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b601d546131d9613a8c565b1161322b576040805162461bcd60e51b815260206004820152601e60248201527f6d75737420626520696e20616e20756e6c6f636b61626c652073746174650000604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561329a57600080fd5b505afa1580156132ae573d6000803e3d6000fd5b505050506040513d60208110156132c457600080fd5b505190506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb6132ff61399c565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561334657600080fd5b505af115801561335a573d6000803e3d6000fd5b505050506040513d602081101561337057600080fd5b506001935050505090565b600061338561399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806133c757506133b2612f83565b6001600160a01b0316816001600160a01b0316145b613406576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50600f55565b601e5490565b600061341c61399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061345e5750613449612f83565b6001600160a01b0316816001600160a01b0316145b61349d576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b60188054831515610100810261ff00199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a15050565b600e5490565b7328df4808fd9aa4dedc9b5f73141fd0df79c2542a81565b600061351561399c565b6001600160a01b0316613526612f83565b6001600160a01b03161461356f576040805162461bcd60e51b8152602060048201819052602482015260008051602061521a833981519152604482015290519081900360640190fd5b6001600160a01b0382166135ca576040805162461bcd60e51b815260206004820152601c60248201527f6d757374206e6f7420626520746865207a65726f206164647265737300000000604482015290519081900360640190fd5b506001600160a01b03166000908152600160208190526040909120805460ff19168217905590565b60175490565b600061360261399c565b6001600160a01b03811660009081526001602052604090205490915060ff1680613644575061362f612f83565b6001600160a01b0316816001600160a01b0316145b613683576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50601755565b601754111590565b60125490565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60006136cc61399c565b6001600160a01b03811660009081526001602052604090205490915060ff168061370e57506136f9612f83565b6001600160a01b0316816001600160a01b0316145b61374d576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b506001600160a01b03166000908152600660205260409020805460ff19169055565b61377761399c565b6001600160a01b0316613788612f83565b6001600160a01b0316146137d1576040805162461bcd60e51b8152602060048201819052602482015260008051602061521a833981519152604482015290519081900360640190fd5b6001600160a01b0381166138165760405162461bcd60e51b815260040180806020018281038252602681526020018061511a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600d5490565b600c5490565b60185462010000900460ff1690565b600061389661399c565b6001600160a01b03811660009081526001602052604090205490915060ff16806138d857506138c3612f83565b6001600160a01b0316816001600160a01b0316145b613917576040805162461bcd60e51b81526020600482015260146024820152600080516020615081833981519152604482015290519081900360640190fd5b50601255565b6001600160a01b031660009081526002602052604090205460ff1690565b600082820183811015613995576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166139e55760405162461bcd60e51b81526004018080602001828103825260248152602001806152886024913960400191505060405180910390fd5b6001600160a01b038216613a2a5760405162461bcd60e51b81526004018080602001828103825260228152602001806151406022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b4290565b600061399583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e33565b6001600160a01b038316613b175760405162461bcd60e51b81526004018080602001828103825260258152602001806152636025913960400191505060405180910390fd5b6001600160a01b038216613b5c5760405162461bcd60e51b81526004018080602001828103825260238152602001806150a16023913960400191505060405180910390fd5b60008111613b9b5760405162461bcd60e51b815260040180806020018281038252602981526020018061523a6029913960400191505060405180910390fd5b6001600160a01b03831660009081526002602052604090205460ff1615613c03576040805162461bcd60e51b81526020600482015260176024820152761b5d5cdd081b9bdd08189948189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090205460ff1615613c6b576040805162461bcd60e51b81526020600482015260176024820152761b5d5cdd081b9bdd08189948189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b6018546301000000900460ff1615613cbe57600f54811115613cbe5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151a3602e913960400191505060405180910390fd5b6000613cc930612af0565b90506000613ce460125460135461393b90919063ffffffff16565b8210159050600f548210613cf857600f5491505b60185460ff16158015613d125750601854610100900460ff165b8015613d4f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15613dd4578015613d76576012549150613d6882614210565b6013549150613d7682614281565b601854479062010000900460ff168015613d91575060155481115b8015613da15750613da184613689565b15613dd257601454811115613db557506014545b613dd2613dcd60165483613eed90919063ffffffff16565b61431e565b505b6001600160a01b03851660009081526006602052604090205460019060ff1680613e1657506001600160a01b03851660009081526006602052604090205460ff165b15613e1f575060005b613e2b86868684614347565b505050505050565b60008184841115613ec25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e87578181015183820152602001613e6f565b50505050905090810190601f168015613eb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000613ed7614469565b9092509050613ee68282613eed565b9250505090565b600061399583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145e8565b600082613f3e57506000611530565b82820282848281613f4b57fe5b04146139955760405162461bcd60e51b81526004018080602001828103825260218152602001806151d16021913960400191505060405180910390fd5b6000806000806000806000806000613f9f8a61464d565b9250925092506000806000613fbd8d8686613fb8613eca565b61468f565b919f909e50909c50959a5093985091965092945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561407057600080fd5b505af1158015614084573d6000803e3d6000fd5b505050506040513d602081101561409a57600080fd5b50600090506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663af2979eb6140d66146df565b6018548690600090819064010000000090046001600160a01b0316600f6140fb613a8c565b016040518763ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b031681526020018281526020019650505050505050602060405180830381600087803b15801561416757600080fd5b505af115801561417b573d6000803e3d6000fd5b505050506040513d602081101561419157600080fd5b50919392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082316141d36146df565b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612d6557600080fd5b6018805460ff1916600117905547614227826146e3565b60006142334783613a90565b905060006142516064611a14600d5485613f2f90919063ffffffff16565b90506142717328df4808fd9aa4dedc9b5f73141fd0df79c2542a82614977565b50506018805460ff191690555050565b6018805460ff19166001179055600061429b826002613eed565b905060006142a98383613a90565b9050476142b5836146e3565b60006142c14783613a90565b90506142cd83826149ad565b604080518581526020810183905280820185905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506018805460ff19169055505050565b6018805460ff19166001179055801561433a5761433a81614a8f565b506018805460ff19169055565b8061435457614354614cd8565b6001600160a01b03841660009081526007602052604090205460ff16801561439557506001600160a01b03831660009081526007602052604090205460ff16155b156143aa576143a5848484614d0a565b614456565b6001600160a01b03841660009081526007602052604090205460ff161580156143eb57506001600160a01b03831660009081526007602052604090205460ff165b156143fb576143a5848484614e2e565b6001600160a01b03841660009081526007602052604090205460ff16801561443b57506001600160a01b03831660009081526007602052604090205460ff165b1561444b576143a5848484614ed7565b614456848484614f4a565b8061446357614463614f8e565b50505050565b600a54600090819068056bc75e2d63100000825b6008548110156145a85782600360006008848154811061449957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806144fe57508160046000600884815481106144d757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561451c57600a5468056bc75e2d63100000945094505050506145e4565b61455c600360006008848154811061453057fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a90565b925061459e600460006008848154811061457257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a90565b915060010161447d565b50600a546145bf9068056bc75e2d63100000613eed565b8210156145de57600a5468056bc75e2d631000009350935050506145e4565b90925090505b9091565b600081836146375760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613e87578181015183820152602001613e6f565b50600083858161464357fe5b0495945050505050565b60008060008061465c85614f9c565b9050600061466986614fb8565b905060006146818261467b8986613a90565b90613a90565b979296509094509092505050565b600080808061469e8886613f2f565b905060006146ac8887613f2f565b905060006146ba8888613f2f565b905060006146cc8261467b8686613a90565b939b939a50919850919650505050505050565b3090565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061471157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561478a57600080fd5b505afa15801561479e573d6000803e3d6000fd5b505050506040513d60208110156147b457600080fd5b50518151829060019081106147c557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050614810307f0000000000000000000000000000000000000000000000000000000000000000846139a0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156148b557818101518382015260200161489d565b505050509050019650505050505050600060405180830381600087803b1580156148de57600080fd5b505af11580156148f2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561495f578181015183820152602001614947565b50505050905001935050505060405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611d05573d6000803e3d6000fd5b6149d8307f0000000000000000000000000000000000000000000000000000000000000000846139a0565b6040805163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163f305d71991849160c48082019260609290919082900301818588803b158015614a6457600080fd5b505af1158015614a78573d6000803e3d6000fd5b50505050506040513d606081101561446357600080fd5b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614b0857600080fd5b505afa158015614b1c573d6000803e3d6000fd5b505050506040513d6020811015614b3257600080fd5b505181518290600090614b4157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110614b6f57fe5b6001600160a01b0392831660209182029290920101526009547f000000000000000000000000000000000000000000000000000000000000000082169163b6f9de95918591600091869116614bc64261012c61393b565b6040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614c30578181015183820152602001614c18565b50505050905001955050505050506000604051808303818588803b158015614c5757600080fd5b505af1158015614c6b573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360008381101561495f578181015183820152602001614947565b600c54158015614ce85750600e54155b15614cf257614d08565b600c8054601055600e8054601155600091829055555b565b600080600080600080614d1c87613f88565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150614d4e9088613a90565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054614d7d9087613a90565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054614dac908661393b565b6001600160a01b038916600090815260036020526040902055614dce81614fd4565b614dd8848361505c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614e4087613f88565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150614e729087613a90565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054614ea8908461393b565b6001600160a01b038916600090815260046020908152604080832093909355600390522054614dac908661393b565b600080600080600080614ee987613f88565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150614f1b9088613a90565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054614e729087613a90565b600080600080600080614f5c87613f88565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150614d7d9087613a90565b601054600c55601154600e55565b60006115306064611a14600c5485613f2f90919063ffffffff16565b60006115306064611a14600e5485613f2f90919063ffffffff16565b6000614fde613eca565b90506000614fec8383613f2f565b30600090815260036020526040902054909150615009908261393b565b3060009081526003602090815260408083209390935560079052205460ff1615611d055730600090815260046020526040902054615047908461393b565b30600090815260046020526040902055505050565b600a546150699083613a90565b600a55600b54615079908261393b565b600b55505056fe6d75737420686176652070726976696c6567657300000000000000000000000045524332303a207472616e7366657220746f20746865207a65726f20616464726573736d75737420636f6d706c792077697468206d696e696d756d2062616c616e636520726571756972656d656e74416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d757374206e6f74206578636565642031302070657263656e740000000000004d757374206265206d61746368696e6720617267756d656e74206c656e677468737472616e7366657220616d6f756e74206578636565647320746865206d6178696d756d20747820616d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122002c95d58079d12ff3a6ef6be752164624385782324da4a7c09da1c07f8bcb60d64736f6c63430007040033

Deployed ByteCode Sourcemap

48977:5916:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31650:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;51568:203;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51568:203:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;51777:235;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51777:235:0;;;;:::i;27563:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27563:183:0;;:::i;:::-;;32721:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34384:163;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34384:163:0;;;;;;;;:::i;52325:255::-;;;;;;;;;;;;;:::i;35741:89::-;;;;;;;;;;;;;:::i;24364:51::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;24364:51:0;;;;;;;;;;;;;;33000:97;;;;;;;;;;;;;:::i;53909:86::-;;;;;;;;;;;;;:::i;51116:152::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51116:152:0;-1:-1:-1;;;;;51116:152:0;;:::i;52229:90::-;;;;;;;;;;;;;:::i;33486:315::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33486:315:0;;;;;;;;;;;;;;;;;:::i;53555:78::-;;;;;;;;;;;;;:::i;36671:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36671:253:0;;:::i;50882:222::-;;;;;;;;;;;;;:::i;32907:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29125:121;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29125:121:0;;:::i;31539:102::-;;;;;;;;;;;;;:::i;52696:383::-;;;;;;;;;;;;;:::i;28652:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28652:171:0;;;;:::i;29957:482::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29957:482:0;-1:-1:-1;;;;;29957:482:0;;:::i;34555:220::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34555:220:0;;;;;;;;:::i;28971:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28971:138:0;;:::i;33807:418::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33807:418:0;;-1:-1:-1;33807:418:0;-1:-1:-1;33807:418:0;:::i;35842:379::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35842:379:0;;:::i;27312:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27312:117:0;-1:-1:-1;;;;;27312:117:0;;:::i;32472:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32472:118:0;-1:-1:-1;;;;;32472:118:0;;:::i;53473:76::-;;;;;;;;;;;;;:::i;27946:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27946:203:0;;:::i;36227:438::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36227:438:0;;;;;;;;;:::i;23951:284::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23951:284:0;-1:-1:-1;;;;;23951:284:0;;:::i;28157:86::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28157:86:0;-1:-1:-1;;;;;28157:86:0;;:::i;24422:38::-;;;;;;;;;;;;;:::i;27435:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27435:116:0;-1:-1:-1;;;;;27435:116:0;;:::i;49892:654::-;;;;;;;;;;;;;:::i;31876:108::-;;;;;;;;;;;;;:::i;51417:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51417:139:0;;:::i;29611:340::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29611:340:0;-1:-1:-1;;;;;29611:340:0;;:::i;35481:126::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35481:126:0;-1:-1:-1;;;;;35481:126:0;;:::i;28363:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28363:101:0;;;;:::i;51274:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51274:137:0;;:::i;52592:96::-;;;;;;;;;;;;;:::i;31998:111::-;;;;;;;;;;;;;:::i;31432:98::-;;;;;;;;;;;;;:::i;33103:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33103:198:0;-1:-1:-1;;;;;33103:198:0;;:::i;22909:148::-;;;;;;;;;;;;;:::i;32232:94::-;;;;;;;;;;;;;:::i;27752:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27752:188:0;;:::i;53343:122::-;;;;;;;;;;;;;:::i;53091:125::-;;;;;;;;;;;;;:::i;35202:136::-;;;;;;;;;;;;;:::i;54001:73::-;;;;;;;;;;;;;:::i;52018:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52018:203:0;;;;:::i;35613:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35613:122:0;-1:-1:-1;;;;;35613:122:0;;:::i;29252:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29252:113:0;;:::i;22258:87::-;;;;;;;;;;;;;:::i;30747:90::-;;;;;;;;;;;;;:::i;53222:115::-;;;;;;;;;;;;;:::i;29491:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29491:112:0;;:::i;53723:90::-;;;;;;;;;;;;;:::i;34781:271::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34781:271:0;;;;;;;;:::i;30852:426::-;;;;;;;;;;;;;:::i;33307:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33307:167:0;;;;;;;;:::i;31284:142::-;;;;;;;;;;;;;:::i;53639:76::-;;;;;;;;;;;;;:::i;23505:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23505:42:0;-1:-1:-1;;;;;23505:42:0;;:::i;50555:321::-;;;;;;;;;;;;;:::i;28249:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28249:108:0;;:::i;53819:84::-;;;;;;;;;;;;;:::i;28476:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28476:170:0;;;;:::i;30649:89::-;;;;;;;;;;;;;:::i;24473:93::-;;;;;;;;;;;;;:::i;23733:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23733:212:0;-1:-1:-1;;;;;23733:212:0;;:::i;31761:106::-;;;;;;;;;;;;;:::i;29371:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29371:114:0;;:::i;35346:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35346:129:0;;:::i;35064:132::-;;;;;;;;;;;;;:::i;34233:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34233:145:0;;;;;;;;;;:::i;32596:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32596:117:0;-1:-1:-1;;;;;32596:117:0;;:::i;23212:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23212:244:0;-1:-1:-1;;;;;23212:244:0;;:::i;30546:94::-;;;;;;;;;;;;;:::i;30451:86::-;;;;;;;;;;;;;:::i;32118:105::-;;;;;;;;;;;;;:::i;28831:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28831:134:0;;:::i;32340:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32340:118:0;-1:-1:-1;;;;;32340:118:0;;:::i;31650:102::-;31729:15;;31650:102;;:::o;51568:203::-;51630:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;51665:2:::1;51655:6;:12;;;;51647:61;;;::::0;;-1:-1:-1;;;51647:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;51647:61:0;;;;;;;;;;;;;::::1;;51729:3;:12:::0;;::::1;::::0;::::1;-1:-1:-1::0;;;51729:12:0::1;-1:-1:-1::0;;;;51729:12:0;;::::1;;::::0;;-1:-1:-1;;;51568:203:0;;;;:::o;51777:235::-;51839:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;51874:3:::1;51864:6;:13;;;;51856:93;;;::::0;;-1:-1:-1;;;51856:93:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;51856:93:0;;;;;;;;;;;;;::::1;;51970:3;:12:::0;;::::1;::::0;::::1;-1:-1:-1::0;;;51970:12:0::1;-1:-1:-1::0;;;;51970:12:0;;::::1;;::::0;;-1:-1:-1;;;51777:235:0;;;;:::o;27563:183::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;27658:2:::1;27648:6;:12;;27640:61;;;::::0;;-1:-1:-1;;;27640:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27640:61:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;27722:7:0::1;:16:::0;27563:183::o;32721:85::-;32793:5;;;;;;;;;;;;-1:-1:-1;;;32793:5:0;;;;32721:85;:::o;34384:163::-;34461:4;34478:39;34487:12;:10;:12::i;:::-;34501:7;34510:6;34478:8;:39::i;:::-;-1:-1:-1;34535:4:0;34384:163;;;;;:::o;52325:255::-;52372:7;52392:12;52407:7;:5;:7::i;:::-;52392:22;;52425:14;52442:11;:9;:11::i;:::-;52425:28;;52464:12;52479:21;52490:9;;52479:6;:10;;:21;;;;:::i;:::-;52464:36;;52522:4;52515;:11;52511:62;;;52537:14;:4;52546;52537:8;:14::i;:::-;52530:21;;;;;;;52511:62;52569:1;52562:8;;;;;;;35741:89;35812:10;;35741:89;:::o;24364:51::-;;;:::o;33000:97::-;25195:21;33000:97;:::o;53909:86::-;53979:8;;53909:86;:::o;51116:152::-;51194:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;51211:8:::1;:27:::0;;-1:-1:-1;;;;;51211:27:0;::::1;::::0;::::1;-1:-1:-1::0;;;;;;51211:27:0;;::::1;;::::0;;-1:-1:-1;;;51116:152:0;;;;:::o;52229:90::-;52302:9;;52229:90;:::o;33486:315::-;33586:4;33603:36;33613:6;33621:9;33632:6;33603:9;:36::i;:::-;33650:121;33659:6;33667:12;:10;:12::i;:::-;33681:89;33719:6;33681:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33681:19:0;;;;;;:11;:19;;;;;;33701:12;:10;:12::i;:::-;-1:-1:-1;;;;;33681:33:0;;;;;;;;;;;;-1:-1:-1;33681:33:0;;;:89;:37;:89::i;:::-;33650:8;:121::i;:::-;-1:-1:-1;33789:4:0;33486:315;;;;;:::o;53555:78::-;53622:3;;-1:-1:-1;;;53622:3:0;;;;;53555:78::o;36671:253::-;36737:7;36776;;36765;:18;;36757:73;;;;-1:-1:-1;;;36757:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36841:19;36864:10;:8;:10::i;:::-;36841:33;-1:-1:-1;36892:24:0;:7;36841:33;36892:11;:24::i;:::-;36885:31;;;36671:253;;;;:::o;50882:222::-;50935:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;50971:28:::1;49243:11;50971:12;:10;:12::i;:::-;:16:::0;::::1;:28::i;:::-;50960:7;:5;:7::i;:::-;:39;;50952:90;;;::::0;;-1:-1:-1;;;50952:90:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;51063:3:0::1;:11:::0;;-1:-1:-1;;51063:11:0::1;::::0;;-1:-1:-1;;50882:222:0:o;32907:85::-;25449:1;32907:85;:::o;29125:121::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;29232:6:0::1;29222:16;29204:15;:34:::0;29125:121::o;31539:102::-;31618:15;;31539:102;:::o;52696:383::-;52746:7;52766:18;52787:24;52797:13;52787:9;:24::i;:::-;52766:45;;52832:15;52857:13;-1:-1:-1;;;;;52850:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52850:35:0;;-1:-1:-1;52896:17:0;52916:13;:11;:13::i;:::-;52896:33;-1:-1:-1;52940:25:0;52968:32;52992:7;52968:19;52896:33;52982:4;52968:13;:19::i;:::-;:23;;:32::i;:::-;52940:60;-1:-1:-1;53028:43:0;53066:4;53028:33;:10;52940:60;53028:14;:33::i;:43::-;53021:50;;;;;;52696:383;:::o;28652:171::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;28734:22:::1;:30:::0;;;::::1;;::::0;;::::1;-1:-1:-1::0;;28734:30:0;;::::1;::::0;;;::::1;::::0;;;28780:35:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;28652:171:::0;;:::o;29957:482::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30042:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;30034:60;;;::::0;;-1:-1:-1;;;30034:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30110:9;30105:327;30129:9;:16:::0;30125:20;::::1;30105:327;;;30187:7;-1:-1:-1::0;;;;;30171:23:0::1;:9;30181:1;30171:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;30171:12:0::1;:23;30167:254;;;30230:9;30240:16:::0;;-1:-1:-1;;30240:20:0;;;30230:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;30215:9:::1;:12:::0;;-1:-1:-1;;;;;30230:31:0;;::::1;::::0;30225:1;;30215:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;30215:46:0::1;-1:-1:-1::0;;;;;30215:46:0;;::::1;;::::0;;30280:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;30319:11:::1;:20:::0;;;;:28;;-1:-1:-1;;30319:28:0::1;::::0;;30366:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;30366:15:0;;;;;-1:-1:-1;;;;;;30366:15:0::1;::::0;;;;;30400:5:::1;;30167:254;30147:3;;30105:327;;;;29957:482:::0;;:::o;34555:220::-;34645:4;34662:83;34671:12;:10;:12::i;:::-;34685:7;34694:50;34733:10;34694:11;:25;34706:12;:10;:12::i;:::-;-1:-1:-1;;;;;34694:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;34694:25:0;;;:34;;;;;;;;;;;:38;:50::i;28971:138::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;29063:32:0::1;:38:::0;28971:138::o;33807:418::-;33907:4;33932:35;;;33924:91;;;;-1:-1:-1;;;33924:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34053:10;34036:14;34091:105;34112:6;34108:1;:10;34091:105;;;34148:35;34157:10;;34168:1;34157:13;;;;;;;;;;;;;-1:-1:-1;;;;;34157:13:0;34172:7;;34180:1;34172:10;;;;;;;;;;;;;34148:8;:35::i;:::-;34140:44;;;;;;34120:3;;34091:105;;;-1:-1:-1;34213:4:0;;33807:418;-1:-1:-1;;;;;;33807:418:0:o;35842:379::-;35896:14;35913:12;:10;:12::i;:::-;-1:-1:-1;;;;;35945:19:0;;;;;;:11;:19;;;;;;35896:29;;-1:-1:-1;35945:19:0;;35944:20;35936:77;;;;-1:-1:-1;;;35936:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36025:15;36049:19;36060:7;36049:10;:19::i;:::-;-1:-1:-1;;;;;;;;;36097:15:0;;;;;;:7;:15;;;;;;36024:44;;-1:-1:-1;36097:28:0;;:15;-1:-1:-1;36024:44:0;36097:19;:28::i;:::-;-1:-1:-1;;;;;36079:15:0;;;;;;:7;:15;;;;;:46;36146:7;;:20;;36158:7;36146:11;:20::i;:::-;36136:7;:30;36190:10;;:23;;36205:7;36190:14;:23::i;:::-;36177:10;:36;-1:-1:-1;;;35842:379:0:o;27312:117::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27390:23:0::1;27416:5;27390:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;27390:31:0::1;::::0;;27312:117::o;32472:118::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32548:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;32548:34:0::1;32578:4;32548:34;::::0;;32472:118::o;53473:76::-;53538:3;;-1:-1:-1;;;53538:3:0;;;;;53473:76::o;27946:203::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;28053:2:::1;28039:10;:16;;28031:65;;;::::0;;-1:-1:-1;;;28031:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28031:65:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;28117:11:0::1;:24:::0;27946:203::o;36227:438::-;36319:7;25195:21;36347:7;:18;;36339:62;;;;;-1:-1:-1;;;36339:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36417:17;36412:246;;36452:15;36476:19;36487:7;36476:10;:19::i;:::-;-1:-1:-1;36451:44:0;;-1:-1:-1;36510:14:0;;-1:-1:-1;;;;;36510:14:0;36412:246;36559:23;36590:19;36601:7;36590:10;:19::i;:::-;-1:-1:-1;36557:52:0;;-1:-1:-1;36624:22:0;;-1:-1:-1;;;;;36624:22:0;23951:284;24020:4;22489:12;:10;:12::i;:::-;-1:-1:-1;;;;;22478:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;22478:23:0;;22470:68;;;;;-1:-1:-1;;;22470:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22470:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24045:21:0;::::1;24037:62;;;::::0;;-1:-1:-1;;;24037:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24129:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;24118:23:0::1;:7;-1:-1:-1::0;;;;;24118:23:0::1;;;24110:57;;;::::0;;-1:-1:-1;;;24110:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24110:57:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;;24178:19:0::1;24200:5;24178:19:::0;;;:10:::1;:19;::::0;;;;;;;:27;;-1:-1:-1;;24178:27:0::1;::::0;;:10;23951:284::o;28157:86::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;28223:5:0::1;:12:::0;;-1:-1:-1;;;;;;28223:12:0::1;-1:-1:-1::0;;;;;28223:12:0;;;::::1;::::0;;;::::1;::::0;;28157:86::o;24422:38::-;;;:::o;27435:116::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27513:23:0::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;27513:30:0::1;27539:4;27513:30;::::0;;27435:116::o;49892:654::-;49929:4;49981:21;:19;:21::i;:::-;49954:23;49964:12;:10;:12::i;:::-;49954:9;:23::i;:::-;:48;;49946:115;;;;-1:-1:-1;;;49946:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50082:12;50097:7;:5;:7::i;:::-;50082:22;;50115:17;50135:26;50151:9;;50135:11;:9;:11::i;:26::-;50115:46;;50198:9;50190:4;:17;;50182:72;;;;;-1:-1:-1;;;50182:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50275:7;:14;;;50310:18;50331:13;:11;:13::i;:::-;50310:34;;50365:21;50375:10;50365:9;:21::i;:::-;;50412:13;-1:-1:-1;;;;;50397:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50454:10;50467:8;;;;;;;;;-1:-1:-1;;;;;50467:8:0;-1:-1:-1;;;;;50467:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50467:18:0;50503:13;;;;;;;;50467:18;;-1:-1:-1;50503:13:0;;;;;;50467:18;50503:13;;;50534:4;50527:11;;;;;;49892:654;:::o;31876:108::-;31955:21;31876:108;:::o;51417:139::-;51489:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;51506:9:0::1;:20:::0;51544:4:::1;::::0;51417:139::o;29611:340::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29701:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;29700:21;29692:61;;;::::0;;-1:-1:-1;;;29692:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;29767:16:0;::::1;29786:1;29767:16:::0;;;:7:::1;:16;::::0;;;;;:20;29764:108:::1;;-1:-1:-1::0;;;;;29843:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;29823:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;29804:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;29764:108:::1;-1:-1:-1::0;;;;;;29882:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;29882:27:0::1;29905:4;29882:27:::0;;::::1;::::0;;;29920:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;29920:23:0::1;::::0;;::::1;::::0;;29611:340::o;35481:126::-;-1:-1:-1;;;;;35572:27:0;35548:4;35572:27;;;:18;:27;;;;;;;;;35481:126::o;28363:101::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;28435:13:0::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;28435:21:0;;::::1;::::0;;;::::1;::::0;;28363:101::o;51274:137::-;51352:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;51369:3:0::1;:12:::0;51399:4:::1;::::0;51274:137::o;52592:96::-;52669:11;;52592:96;:::o;31998:111::-;32079:22;;;;;;;;31998:111::o;31432:98::-;31509:13;;31432:98;:::o;33103:198::-;-1:-1:-1;;;;;33193:20:0;;33169:7;33193:20;;;:11;:20;;;;;;;;33189:49;;;-1:-1:-1;;;;;;33222:16:0;;;;;;:7;:16;;;;;;33215:23;;33189:49;-1:-1:-1;;;;;33276:16:0;;;;;;:7;:16;;;;;;33256:37;;:19;:37::i;22909:148::-;22489:12;:10;:12::i;:::-;-1:-1:-1;;;;;22478:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;22478:23:0;;22470:68;;;;;-1:-1:-1;;;22470:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22470:68:0;;;;;;;;;;;;;;;23016:1:::1;23000:6:::0;;22979:40:::1;::::0;-1:-1:-1;;;;;23000:6:0;;::::1;::::0;22979:40:::1;::::0;23016:1;;22979:40:::1;23047:1;23030:19:::0;;-1:-1:-1;;;;;;23030:19:0::1;::::0;;22909:148::o;32232:94::-;32305:13;;;;;;;;32232:94::o;27752:188::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;27850:2:::1;27839:7;:13;;27831:62;;;::::0;;-1:-1:-1;;;27831:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;27914:8:0::1;:18:::0;27752:188::o;53343:122::-;53387:7;53421:13;-1:-1:-1;;;;;53414:31:0;;53454:1;53414:43;;;;;;;;;;;;;-1:-1:-1;;;;;53414:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;53414:43:0;;-1:-1:-1;53343:122:0;:::o;53091:125::-;53185:3;;53135:7;;53162:46;;49307:3;;53163:26;;-1:-1:-1;;;53185:3:0;;53162:46;53185:3;53163:17;:15;:17::i;:::-;:21;;:26::i;53162:46::-;53155:53;;53091:125;:::o;35202:136::-;35298:32;;35202:136;:::o;54001:73::-;54063:3;;;;54001:73;:::o;52018:203::-;52080:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;52115:2:::1;52105:6;:12;;;;52097:61;;;::::0;;-1:-1:-1;;;52097:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;52097:61:0;;;;;;;;;;;;;::::1;;52179:3;:12:::0;;::::1;::::0;::::1;-1:-1:-1::0;;;52179:12:0::1;-1:-1:-1::0;;;;52179:12:0;;::::1;;::::0;;-1:-1:-1;;;52018:203:0;;;;:::o;35613:122::-;-1:-1:-1;;;;;35707:20:0;35683:4;35707:20;;;:11;:20;;;;;;;;;35613:122::o;29252:113::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;29351:6:0::1;29343:14;29327:13;:30:::0;29252:113::o;22258:87::-;22304:7;22331:6;-1:-1:-1;;;;;22331:6:0;22258:87;:::o;30747:90::-;30817:12;;30747:90;:::o;53222:115::-;53266:7;53293:36;53315:13;:11;:13::i;:::-;53293:17;:15;:17::i;29491:112::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;29570:15:0::1;:25:::0;29491:112::o;53723:90::-;53802:3;;53723:90;:::o;34781:271::-;34876:4;34893:129;34902:12;:10;:12::i;:::-;34916:7;34925:96;34964:15;34925:96;;;;;;;;;;;;;;;;;:11;:25;34937:12;:10;:12::i;:::-;-1:-1:-1;;;;;34925:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;34925:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;30852:426::-;31000:13;;30906:7;;30944:21;;30990:23;;30986:285;;;31044:15;;31034:7;:25;31030:189;;;31108:15;;31088;;:36;;:19;:36::i;:::-;31081:43;;;;;31030:189;31186:15;;31174:28;;:7;;:11;:28::i;30986:285::-;31258:1;31251:8;;;;;33307:167;33385:4;33402:42;33412:12;:10;:12::i;:::-;33426:9;33437:6;33402:9;:42::i;31284:142::-;31402:15;;31340:7;;31367:51;;31368:28;25148:3;;31368:16;:28::i;53639:76::-;53704:3;;-1:-1:-1;;;53704:3:0;;;;;53639:76::o;23505:42::-;;;;;;;;;;;;;;;:::o;50555:321::-;50608:4;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;50643:11:::1;;50633:7;:5;:7::i;:::-;:21;50625:74;;;::::0;;-1:-1:-1;;;50625:74:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;50720:14;50744:13;-1:-1:-1::0;;;;;50737:31:0::1;;50777:4;50737:46;;;;;;;;;;;;;-1:-1:-1::0;;;;;50737:46:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;50737:46:0;;-1:-1:-1;;;;;;50801:13:0::1;50794:30;;50825:12;:10;:12::i;:::-;50839:6;50794:52;;;;;;;;;;;;;-1:-1:-1::0;;;;;50794:52:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;50864:4:0::1;::::0;-1:-1:-1;;;50555:321:0;;:::o;28249:108::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;28323:12:0::1;:26:::0;28249:108::o;53819:84::-;53888:7;;53819:84;:::o;28476:170::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;28557:22:::1;:30:::0;;;::::1;;;::::0;::::1;-1:-1:-1::0;;28557:30:0;;::::1;::::0;;;::::1;::::0;;;28603:35:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;28476:170:::0;;:::o;30649:89::-;30722:8;;30649:89;:::o;24473:93::-;24523:42;24473:93;:::o;23733:212::-;23799:4;22489:12;:10;:12::i;:::-;-1:-1:-1;;;;;22478:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;22478:23:0;;22470:68;;;;;-1:-1:-1;;;22470:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22470:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23824:21:0;::::1;23816:62;;;::::0;;-1:-1:-1;;;23816:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;;23889:19:0::1;;::::0;;;23911:4:::1;23889:19;::::0;;;;;;;:26;;-1:-1:-1;;23889:26:0::1;::::0;::::1;::::0;;23911:4;23733:212::o;31761:106::-;31842:17;;31761:106;:::o;29371:114::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;29451:17:0::1;:26:::0;29371:114::o;35346:129::-;35449:17;;-1:-1:-1;35439:27:0;;35346:129::o;35064:132::-;35158:30;;35064:132;:::o;34233:145::-;-1:-1:-1;;;;;34343:18:0;;;34316:7;34343:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;34233:145::o;32596:117::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32670:27:0::1;32700:5;32670:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;32670:35:0::1;::::0;;32596:117::o;23212:244::-;22489:12;:10;:12::i;:::-;-1:-1:-1;;;;;22478:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;22478:23:0;;22470:68;;;;;-1:-1:-1;;;22470:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22470:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23301:22:0;::::1;23293:73;;;;-1:-1:-1::0;;;23293:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23403:6;::::0;;23382:38:::1;::::0;-1:-1:-1;;;;;23382:38:0;;::::1;::::0;23403:6;::::1;::::0;23382:38:::1;::::0;::::1;23431:6;:17:::0;;-1:-1:-1;;;;;;23431:17:0::1;-1:-1:-1::0;;;;;23431:17:0;;;::::1;::::0;;;::::1;::::0;;23212:244::o;30546:94::-;30621:11;;30546:94;:::o;30451:86::-;30522:7;;30451:86;:::o;32118:105::-;32193:22;;;;;;;;32118:105::o;28831:134::-;23593:14;23610:12;:10;:12::i;:::-;-1:-1:-1;;;;;23641:18:0;;;;;;:10;:18;;;;;;23593:29;;-1:-1:-1;23641:18:0;;;:39;;;23673:7;:5;:7::i;:::-;-1:-1:-1;;;;;23663:17:0;:6;-1:-1:-1;;;;;23663:17:0;;23641:39;23633:72;;;;;-1:-1:-1;;;23633:72:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23633:72:0;;;;;;;;;;;;;;;-1:-1:-1;28921:30:0::1;:36:::0;28831:134::o;32340:118::-;-1:-1:-1;;;;;32427:23:0;32403:4;32427:23;;;:14;:23;;;;;;;;;32340:118::o;16910:181::-;16968:7;17000:5;;;17024:6;;;;17016:46;;;;;-1:-1:-1;;;17016:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17082:1;16910:181;-1:-1:-1;;;16910:181:0:o;21403:106::-;21491:10;21403:106;:::o;36932:337::-;-1:-1:-1;;;;;37025:19:0;;37017:68;;;;-1:-1:-1;;;37017:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37104:21:0;;37096:68;;;;-1:-1:-1;;;37096:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37177:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;37229:32;;;;;;;;;;;;;;;;;36932:337;;;:::o;54325:89::-;54391:15;54325:89;:::o;17374:136::-;17432:7;17459:43;17463:1;17466;17459:43;;;;;;;;;;;;;;;;;:3;:43::i;37275:2093::-;-1:-1:-1;;;;;37363:18:0;;37355:68;;;;-1:-1:-1;;;37355:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37442:16:0;;37434:64;;;;-1:-1:-1;;;37434:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37536:1;37527:6;:10;37519:64;;;;-1:-1:-1;;;37519:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37613:20:0;;;;;;:14;:20;;;;;;;;37612:21;37604:57;;;;;-1:-1:-1;;;37604:57:0;;;;;;;;;;;;-1:-1:-1;;;37604:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;37681:18:0;;;;;;:14;:18;;;;;;;;37680:19;37672:55;;;;;-1:-1:-1;;;37672:55:0;;;;;;;;;;;;-1:-1:-1;;;37672:55:0;;;;;;;;;;;;;;;37754:13;;;;;;;37750:153;;;37806:12;;37796:6;:22;;37788:103;;;;-1:-1:-1;;;37788:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37915:28;37946:24;37964:4;37946:9;:24::i;:::-;37915:55;;37981:28;38037:68;38074:30;;38037:32;;:36;;:68;;;;:::i;:::-;38012:20;:94;;37981:125;;38154:12;;38130:20;:36;38127:95;;38207:12;;38184:35;;38127:95;38239:17;;;;38238:18;:44;;;;-1:-1:-1;38260:22:0;;;;;;;38238:44;:67;;;;;38292:13;-1:-1:-1;;;;;38286:19:0;:2;-1:-1:-1;;;;;38286:19:0;;38238:67;38234:828;;;38340:23;38336:320;;;38407:30;;38384:53;;38456:33;38468:20;38456:11;:33::i;:::-;38552:32;;38529:55;;38603:37;38619:20;38603:15;:37::i;:::-;38756:22;;38702:21;;38756:22;;;;;:49;;;;;38792:13;;38782:7;:23;38756:49;:83;;;;;38809:30;38832:6;38809:22;:30::i;:::-;38752:299;;;38892:15;;38882:7;:25;38878:77;;;-1:-1:-1;38940:15:0;;38878:77;38992:43;39006:28;39018:15;;39006:7;:11;;:28;;;;:::i;:::-;38992:13;:43::i;:::-;38234:828;;-1:-1:-1;;;;;39209:24:0;;39082:12;39209:24;;;:18;:24;;;;;;39097:4;;39209:24;;;:50;;-1:-1:-1;;;;;;39237:22:0;;;;;;:18;:22;;;;;;;;39209:50;39206:96;;;-1:-1:-1;39285:5:0;39206:96;39322:38;39337:4;39342:2;39345:6;39352:7;39322:14;:38::i;:::-;37275:2093;;;;;;:::o;17813:192::-;17899:7;17935:12;17927:6;;;;17919:29;;;;-1:-1:-1;;;17919:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17971:5:0;;;17813:192::o;46755:163::-;46796:7;46817:15;46834;46853:19;:17;:19::i;:::-;46816:56;;-1:-1:-1;46816:56:0;-1:-1:-1;46890:20:0;46816:56;;46890:11;:20::i;:::-;46883:27;;;;46755:163;:::o;19211:132::-;19269:7;19296:39;19300:1;19303;19296:39;;;;;;;;;;;;;;;;;:3;:39::i;18264:471::-;18322:7;18567:6;18563:47;;-1:-1:-1;18597:1:0;18590:8;;18563:47;18634:5;;;18638:1;18634;:5;:1;18658:5;;;;;:10;18650:56;;;;-1:-1:-1;;;18650:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47497:404;47556:7;47565;47574;47583;47592;47601;47622:23;47647:12;47661:13;47678:20;47690:7;47678:11;:20::i;:::-;47621:77;;;;;;47710:15;47727:23;47752:12;47768:45;47780:7;47789:4;47795:5;47802:10;:8;:10::i;:::-;47768:11;:45::i;:::-;47709:104;;;;-1:-1:-1;47709:104:0;;-1:-1:-1;47864:15:0;;-1:-1:-1;47881:4:0;;-1:-1:-1;47887:5:0;;-1:-1:-1;47497:404:0;;-1:-1:-1;;;;;47497:404:0:o;54422:462::-;54474:7;54501:13;-1:-1:-1;;;;;54494:29:0;;54532:15;54550:6;54494:63;;;;;;;;;;;;;-1:-1:-1;;;;;54494:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54579:25:0;;-1:-1:-1;;;;;;54627:15:0;54608:97;;54724:14;:12;:14::i;:::-;54830:8;;54757:6;;54782:1;;;;54830:8;;;-1:-1:-1;;;;;54830:8:0;49188:10;54858:7;:5;:7::i;:::-;:17;54608:268;;;;;;;;;;;;;-1:-1:-1;;;;;54608:268:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;54608:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;54422:462:0;;;-1:-1:-1;;;54422:462:0:o;54082:131::-;54131:7;54165:13;-1:-1:-1;;;;;54158:31:0;;54190:14;:12;:14::i;:::-;54158:47;;;;;;;;;;;;;-1:-1:-1;;;;;54158:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;40521:413;26647:17;:24;;-1:-1:-1;;26647:24:0;26667:4;26647:24;;;40638:21:::1;40670:39;40688:20:::0;40670:17:::1;:39::i;:::-;40720:26;40749:41;:21;40775:14:::0;40749:25:::1;:41::i;:::-;40720:70;;40811:18;40832:46;40874:3;40833:35;40856:11;;40833:18;:22;;:35;;;;:::i;40832:46::-;40811:67;;40889:37;24523:42;40915:10;40889:16;:37::i;:::-;-1:-1:-1::0;;26694:17:0;:25;;-1:-1:-1;;26694:25:0;;;-1:-1:-1;;40521:413:0:o;39527:988::-;26647:17;:24;;-1:-1:-1;;26647:24:0;26667:4;26647:24;;;:17;39679:27:::1;:20:::0;39704:1:::1;39679:24;:27::i;:::-;39664:42:::0;-1:-1:-1;39717:17:0::1;39737:30;:20:::0;39664:42;39737:24:::1;:30::i;:::-;39717:50:::0;-1:-1:-1;40070:21:0::1;40136:23;40154:4:::0;40136:17:::1;:23::i;:::-;40290:18;40311:41;:21;40337:14:::0;40311:25:::1;:41::i;:::-;40290:62;;40402:36;40416:9;40427:10;40402:13;:36::i;:::-;40464:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;26694:17:0;:25;;-1:-1:-1;;26694:25:0;;;-1:-1:-1;;;39527:988:0:o;39376:145::-;26647:17;:24;;-1:-1:-1;;26647:24:0;26667:4;26647:24;;;39450:10;;39446:68:::1;;39477:25;39495:6;39477:17;:25::i;:::-;-1:-1:-1::0;26694:17:0;:25;;-1:-1:-1;;26694:25:0;;;39376:145::o;42181:706::-;42292:7;42288:41;;42314:15;:13;:15::i;:::-;-1:-1:-1;;;;;42354:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;42378:22:0;;;;;;:11;:22;;;;;;;;42377:23;42354:46;42350:467;;;42417:48;42439:6;42447:9;42458:6;42417:21;:48::i;:::-;42350:467;;;-1:-1:-1;;;;;42488:19:0;;;;;;:11;:19;;;;;;;;42487:20;:46;;;;-1:-1:-1;;;;;;42511:22:0;;;;;;:11;:22;;;;;;;;42487:46;42483:334;;;42550:46;42570:6;42578:9;42589:6;42550:19;:46::i;42483:334::-;-1:-1:-1;;;;;42618:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;42641:22:0;;;;;;:11;:22;;;;;;;;42618:45;42614:203;;;42680:48;42702:6;42710:9;42721:6;42680:21;:48::i;42614:203::-;42761:44;42779:6;42787:9;42798:6;42761:17;:44::i;:::-;42841:7;42837:42;;42863:16;:14;:16::i;:::-;42181:706;;;;:::o;46924:561::-;47021:7;;46974;;;;25195:21;46974:7;47081:289;47105:9;:16;47101:20;;47081:289;;;47171:7;47147;:21;47155:9;47165:1;47155:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47155:12:0;47147:21;;;;;;;;;;;;;:31;;:66;;;47206:7;47182;:21;47190:9;47200:1;47190:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47190:12:0;47182:21;;;;;;;;;;;;;:31;47147:66;47143:97;;;47223:7;;25195:21;47215:25;;;;;;;;;47143:97;47265:34;47277:7;:21;47285:9;47295:1;47285:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47285:12:0;47277:21;;;;;;;;;;;;;47265:7;;:11;:34::i;:::-;47255:44;;47324:34;47336:7;:21;47344:9;47354:1;47344:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47344:12:0;47336:21;;;;;;;;;;;;;47324:7;;:11;:34::i;:::-;47314:44;-1:-1:-1;47123:3:0;;47081:289;;;-1:-1:-1;47394:7:0;;:20;;25195:21;47394:11;:20::i;:::-;47384:7;:30;47380:61;;;47424:7;;25195:21;47416:25;;;;;;;;47380:61;47460:7;;-1:-1:-1;47469:7:0;-1:-1:-1;46924:561:0;;;:::o;19839:278::-;19925:7;19960:12;19953:5;19945:28;;;;-1:-1:-1;;;19945:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19984:9;20000:1;19996;:5;;;;;;;19839:278;-1:-1:-1;;;;;19839:278:0:o;47907:312::-;47967:7;47976;47985;48005:12;48020:25;48037:7;48020:16;:25::i;:::-;48005:40;;48056:13;48072:26;48090:7;48072:17;:26::i;:::-;48056:42;-1:-1:-1;48109:23:0;48135:28;48056:42;48135:17;:7;48147:4;48135:11;:17::i;:::-;:21;;:28::i;:::-;48109:54;48199:4;;-1:-1:-1;48205:5:0;;-1:-1:-1;47907:312:0;;-1:-1:-1;;;47907:312:0:o;48225:409::-;48335:7;;;;48391:24;:7;48403:11;48391;:24::i;:::-;48373:42;-1:-1:-1;48426:12:0;48441:21;:4;48450:11;48441:8;:21::i;:::-;48426:36;-1:-1:-1;48473:13:0;48489:22;:5;48499:11;48489:9;:22::i;:::-;48473:38;-1:-1:-1;48522:23:0;48548:28;48473:38;48548:17;:7;48560:4;48548:11;:17::i;:28::-;48595:7;;;;-1:-1:-1;48621:4:0;;-1:-1:-1;48225:409:0;;-1:-1:-1;;;;;;;48225:409:0:o;54225:94::-;54306:4;54225:94;:::o;40942:667::-;41093:16;;;41107:1;41093:16;;;41069:21;41093:16;;;;;41069:21;41093:16;;;;;;;;;;-1:-1:-1;41093:16:0;41069:40;;41138:4;41120;41125:1;41120:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;41120:23:0;;;-1:-1:-1;;;;;41120:23:0;;;;;41164:15;-1:-1:-1;;;;;41164:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41164:22:0;41154:7;;:4;;41159:1;;41154:7;;;;;;;;;;;:32;-1:-1:-1;;;;;41154:32:0;;;-1:-1:-1;;;;;41154:32:0;;;;;41199:62;41216:4;41231:15;41249:11;41199:8;:62::i;:::-;41300:15;-1:-1:-1;;;;;41300:66:0;;41381:11;41407:1;41451:4;41478;41514:15;41300:240;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41300:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41566:35;41583:11;41596:4;41566:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40942:667;;:::o;42899:122::-;42987:26;;-1:-1:-1;;;;;42987:18:0;;;:26;;;;;43006:6;;42987:26;;;;43006:6;42987:18;:26;;;;;;;;;;;;;;;;;;;45858:520;46007:62;46024:4;46039:15;46057:11;46007:8;:62::i;:::-;46112:258;;;-1:-1:-1;;;46112:258:0;;46184:4;46112:258;;;;;;;;;;;;46230:1;46112:258;;;;;;;;;;;;;;46344:15;46112:258;;;;;;-1:-1:-1;;;;;46112:15:0;:31;;;;46151:9;;46112:258;;;;;;;;;;;;;;;46151:9;46112:31;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41615:558;41761:16;;;41775:1;41761:16;;;41737:21;41761:16;;;;;41737:21;41761:16;;;;;;;;;;-1:-1:-1;41761:16:0;41737:40;;41798:15;-1:-1:-1;;;;;41798:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41798:22:0;41788:7;;:4;;41793:1;;41788:7;;;;;;;;;:32;-1:-1:-1;;;;;41788:32:0;;;-1:-1:-1;;;;;41788:32:0;;;;;41849:4;41831;41836:1;41831:7;;;;;;;;-1:-1:-1;;;;;41831:23:0;;;:7;;;;;;;;;:23;42053:5;;41891:15;:66;;;;;41965:6;;41987:1;;42034:4;;42053:5;42074:24;:15;42094:3;42074:19;:24::i;:::-;41891:218;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41891:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42135:30;42152:6;42160:4;42135:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46390:231;46437:7;;:12;:29;;;;-1:-1:-1;46453:8:0;;:13;46437:29;46434:41;;;46468:7;;46434:41;46513:7;;;46495:15;:25;46550:8;;;46531:16;:27;-1:-1:-1;46579:11:0;;;;46601:12;46390:231;:::o;44131:568::-;44234:15;44251:23;44276:12;44290:23;44315:12;44329:13;44346:19;44357:7;44346:10;:19::i;:::-;-1:-1:-1;;;;;44394:15:0;;;;;;:7;:15;;;;;;44233:132;;-1:-1:-1;44233:132:0;;-1:-1:-1;44233:132:0;;-1:-1:-1;44233:132:0;-1:-1:-1;44233:132:0;-1:-1:-1;44233:132:0;-1:-1:-1;44394:28:0;;44414:7;44394:19;:28::i;:::-;-1:-1:-1;;;;;44376:15:0;;;;;;:7;:15;;;;;;;;:46;;;;44451:7;:15;;;;:28;;44471:7;44451:19;:28::i;:::-;-1:-1:-1;;;;;44433:15:0;;;;;;;:7;:15;;;;;;:46;;;;44511:18;;;;;;;:39;;44534:15;44511:22;:39::i;:::-;-1:-1:-1;;;;;44490:18:0;;;;;;:7;:18;;;;;:60;44564:33;44591:5;44564:26;:33::i;:::-;44608:23;44620:4;44626;44608:11;:23::i;:::-;44664:9;-1:-1:-1;;;;;44647:44:0;44656:6;-1:-1:-1;;;;;44647:44:0;;44675:15;44647:44;;;;;;;;;;;;;;;;;;44131:568;;;;;;;;;:::o;43537:588::-;43638:15;43655:23;43680:12;43694:23;43719:12;43733:13;43750:19;43761:7;43750:10;:19::i;:::-;-1:-1:-1;;;;;43798:15:0;;;;;;:7;:15;;;;;;43637:132;;-1:-1:-1;43637:132:0;;-1:-1:-1;43637:132:0;;-1:-1:-1;43637:132:0;-1:-1:-1;43637:132:0;-1:-1:-1;43637:132:0;-1:-1:-1;43798:28:0;;43637:132;43798:19;:28::i;:::-;-1:-1:-1;;;;;43780:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;43858:18;;;;;:7;:18;;;;;:39;;43881:15;43858:22;:39::i;:::-;-1:-1:-1;;;;;43837:18:0;;;;;;:7;:18;;;;;;;;:60;;;;43929:7;:18;;;;:39;;43952:15;43929:22;:39::i;44705:644::-;44808:15;44825:23;44850:12;44864:23;44889:12;44903:13;44920:19;44931:7;44920:10;:19::i;:::-;-1:-1:-1;;;;;44968:15:0;;;;;;:7;:15;;;;;;44807:132;;-1:-1:-1;44807:132:0;;-1:-1:-1;44807:132:0;;-1:-1:-1;44807:132:0;-1:-1:-1;44807:132:0;-1:-1:-1;44807:132:0;-1:-1:-1;44968:28:0;;44988:7;44968:19;:28::i;:::-;-1:-1:-1;;;;;44950:15:0;;;;;;:7;:15;;;;;;;;:46;;;;45025:7;:15;;;;:28;;45045:7;45025:19;:28::i;43027:504::-;43126:15;43143:23;43168:12;43182:23;43207:12;43221:13;43238:19;43249:7;43238:10;:19::i;:::-;-1:-1:-1;;;;;43286:15:0;;;;;;:7;:15;;;;;;43125:132;;-1:-1:-1;43125:132:0;;-1:-1:-1;43125:132:0;;-1:-1:-1;43125:132:0;-1:-1:-1;43125:132:0;-1:-1:-1;43125:132:0;-1:-1:-1;43286:28:0;;43125:132;43286:19;:28::i;46627:116::-;46682:15;;46672:7;:25;46719:16;;46708:8;:27;46627:116::o;48646:155::-;48711:7;48738:55;48777:5;48738:20;48750:7;;48738;:11;;:20;;;;:::i;48807:157::-;48873:7;48900:56;48940:5;48900:21;48912:8;;48900:7;:11;;:21;;;;:::i;45510:342::-;45580:19;45603:10;:8;:10::i;:::-;45580:33;-1:-1:-1;45624:13:0;45640:22;:5;45580:33;45640:9;:22::i;:::-;45714:4;45698:22;;;;:7;:22;;;;;;45624:38;;-1:-1:-1;45698:33:0;;45624:38;45698:26;:33::i;:::-;45689:4;45673:22;;;;:7;:22;;;;;;;;:58;;;;45745:11;:26;;;;;;45742:102;;;45827:4;45811:22;;;;:7;:22;;;;;;:33;;45838:5;45811:26;:33::i;:::-;45802:4;45786:22;;;;:7;:22;;;;;:58;45510:342;;;:::o;45357:147::-;45435:7;;:17;;45447:4;45435:11;:17::i;:::-;45425:7;:27;45476:10;;:20;;45491:4;45476:14;:20::i;:::-;45463:10;:33;-1:-1:-1;;45357:147:0:o

Swarm Source

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