Contract 0x8da80544045480bc9e2109c91e9515c4823c5561 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8583ba5adeb3d7615918c6fa0e3311046f3c19bf609ee6b96d6bd7bd2571d52cApprove130467962021-11-29 9:32:355 hrs 57 mins ago0x0bb7e8b02003254c82276da4e18c57b9ff0e7aea IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0x9fedff9ab810f2575f081174a7482545bb7565e950c26625cf9d75ce0eaf2ec4Approve130390382021-11-29 2:20:1213 hrs 10 mins ago0xb999c85ce80243c12f45a153c2c12ec39f3eb80a IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000077577885
0xaa74509e166b6d4eb3ae97c4ec53553d0476233c59abba160e9c13741e98d6c8Approve129980512021-11-27 13:42:272 days 1 hr ago0x3e9ec71498225b6f65a55f264f856103ca9e65e2 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0x1541890e3b3ae63b582c3557bce2e9c9b086a6e4bf1c0d10a9be227a476569faApprove129627022021-11-26 5:31:393 days 9 hrs ago0xed6be3b1328439236ed713cb23c019c3332dd0bb IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0xde40c0e3e45f451b852714fb6cca1c9a87de95d0ca1ebdc1636a0d4ccd90a617Transfer129586982021-11-26 1:29:553 days 14 hrs ago0x76b220943c16bc4851ce1d4096a7e4106b748f48 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.0001409705
0x458164c91b92c2fe9ccf3690e13913c426a0b1cd529784080ac87cea08dfd804Approve129560532021-11-25 22:51:553 days 16 hrs ago0xb78bb5617accde0b1392ee27a0ff146fa3554a13 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0xfe5e208622181731363d2ddc251a0eed11c4351c49fd921d8ba0d0d51259c98aApprove129533352021-11-25 20:29:093 days 19 hrs ago0x6e71cf74daaaca8d76aea13b8315166809fef6f4 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0xb45e76191481488a63cf35070a01ec79aa31bb48945467e8304a6ef046ae6273Approve129506292021-11-25 18:03:403 days 21 hrs ago0xc7d22c1819eddfd3a7d6472bfec0580533c1301b IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0xa9b29b7eb6897d5183cd82fdaefec50eee7a63f1460813d13542db4e38f9a123Approve129264452021-11-24 20:21:354 days 19 hrs ago0x11c0eef141f28b6336cd869602851907d7537592 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0xed920622a0c839be4713ef45a9467ac25391d1d70348b3b4ed01bd6c5f9a0745Approve129260412021-11-24 20:00:524 days 19 hrs ago0x543896e104802592f9bfacc4fe64ecf3fd519e37 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0xc07988e456836ed9bb3533eceb3f10ef741b4b89bd56116431e248e403cba8edApprove129213452021-11-24 15:54:234 days 23 hrs ago0xde02781725b090862fd49dd86e9bf3a3c834cdeb IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0x4f904a8215c14f5b11b1912b0c05ad8851df7a148fb220baa41139fea1fb8b4dApprove129092882021-11-24 5:25:155 days 10 hrs ago0xb0fe995286587a1d18111740341ce0a419003b1e IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0xad2700c3874d4e9e2d21f63230711d19f596bffbe5ff412cd5ed28bdca138d39Transfer128920252021-11-23 14:18:276 days 1 hr ago0xff41688edf4dce0199c9805ece28d58d7f0a4054 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000128155
0x32224178471bd3bfe2ccb7e2ee1ba1b75a4bd033335f258fd725b631dc7adc76Approve128898502021-11-23 12:23:126 days 3 hrs ago0x4390946ca4fea703f160801373349956d241a371 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0xa69b19b93b9b0a67498acdac02d2bbf103986a5e4d72717d182d5c624a1a5574Approve128871042021-11-23 9:59:536 days 5 hrs ago0xdb319f976844b4a0fa37e3c7a168640d74aa649d IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000310506
0xd0482dfdc09f4b02dcdb8caccf9650e0e5d834227a0cfd043253a160cf15a3e4Transfer128769922021-11-23 1:21:356 days 14 hrs ago0xf76b252f79794424f500b277f33835a4b29a7b93 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000128095
0x3fa755f1515d81814d9fd2898eb9cf6880b62d9690b64f20d7c40976da3208b7Approve128707682021-11-22 20:06:166 days 19 hrs ago0xb67dd4c0d990e7878f06b7485ee73f3aeab52673 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0x4c4f64970fbad9e899c93ac45e943562aee3604399f55ac8ea48d43abc9f841dApprove128667272021-11-22 16:36:486 days 22 hrs ago0x045b96ca61d7b7b61da78cbe0fe6e33ee339d93f IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0xf170ae8f919683078229734275e16b135686868dfa32359508c50b805b96d7e8Approve128649002021-11-22 15:00:387 days 29 mins ago0x3947114816599d30add2823467e21c5225a076b3 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00066537
0x635783e82118115373358f37704a3a9fbd9d94f9e9a6e83e1113b5a9b8937d80Approve128621822021-11-22 12:34:137 days 2 hrs ago0xf9c91d4a30a2985e350a791f42f81f7048d6fe82 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0xec6e3084bf23dbf7af17e43cfa62f9b2a1cde98abef9cf326cd504586e9d9b25Approve128386382021-11-21 16:35:057 days 22 hrs ago0x590e4b415e0744b95b9f1ca5849434bac891d66a IN  Nano Shiba Inu: NanoShiba Token0 BNB0.00022179
0x140639b95f6cab2e8aa4936d63d21cf5c337d869cbe4ca2104e2fef371040b3fApprove128122142021-11-20 18:06:148 days 21 hrs ago0x1b36f445e36a75d1931e817e99b98ebadb3f533a IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000072435
0xc255084e5dd5f1fde1a9e2f2a667067ab27a680ea9df6fd298fe7c0437a36155Approve128097222021-11-20 15:55:308 days 23 hrs ago0x463699c30ace06a841e0fef2d3b792fe0e2d22bf IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000266148
0x58939b3902cb383644622f1db1ae049ba863ed46493e9aa7e2c47b5ca6bf19b5Transfer128032702021-11-20 10:15:269 days 5 hrs ago0xf76b252f79794424f500b277f33835a4b29a7b93 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000179333
0xe1a7286efc744a8bb57a9f4a0980b4cfffbe74abc3fbd37ad242ceaff421313aApprove127931372021-11-20 1:25:449 days 14 hrs ago0x209922bf2a3901bd698f8ac53c98aa911a3b91d6 IN  Nano Shiba Inu: NanoShiba Token0 BNB0.000310506
[ Download CSV Export 

OVERVIEW

Nano Shiba Inu is a one-of-a-kind reward and rebase token that uses a proprietary contract on the Binance Smart Chain. Holders of Nano Shiba Inu are rewarded in $SHIB token rewards that are distributed automatically through one of the contract’s protocols.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xcd8d63754f4a091a100459a0122affc8b73426386dc288696d11216a3a32c95f118289512021-10-16 17:58:5443 days 21 hrs ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.053180263754088428 BNB
0xcd8d63754f4a091a100459a0122affc8b73426386dc288696d11216a3a32c95f118289512021-10-16 17:58:5443 days 21 hrs ago Nano Shiba Inu: NanoShiba Token0x4a0a492c1a851b6dd4fe11d37bad0a5380d169510.106360527508176856 BNB
0xcd8d63754f4a091a100459a0122affc8b73426386dc288696d11216a3a32c95f118289512021-10-16 17:58:5443 days 21 hrs ago Nano Shiba Inu: NanoShiba Token 0xc9cf5bad238045953b99f99bd49a17e6af3f0d720.106360527508176856 BNB
0xcd8d63754f4a091a100459a0122affc8b73426386dc288696d11216a3a32c95f118289512021-10-16 17:58:5443 days 21 hrs ago PancakeSwap: Router v2 Nano Shiba Inu: NanoShiba Token0.31908158252453057 BNB
0x108d335c093d89eb9d96c8faa2bd7d426d7d081804e38194b097eeb45c497ff0118288072021-10-16 17:51:0543 days 21 hrs ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.053596469063981294 BNB
0x108d335c093d89eb9d96c8faa2bd7d426d7d081804e38194b097eeb45c497ff0118288072021-10-16 17:51:0543 days 21 hrs ago Nano Shiba Inu: NanoShiba Token0x4a0a492c1a851b6dd4fe11d37bad0a5380d169510.107192938127962588 BNB
0x108d335c093d89eb9d96c8faa2bd7d426d7d081804e38194b097eeb45c497ff0118288072021-10-16 17:51:0543 days 21 hrs ago Nano Shiba Inu: NanoShiba Token 0xc9cf5bad238045953b99f99bd49a17e6af3f0d720.107192938127962588 BNB
0x108d335c093d89eb9d96c8faa2bd7d426d7d081804e38194b097eeb45c497ff0118288072021-10-16 17:51:0543 days 21 hrs ago PancakeSwap: Router v2 Nano Shiba Inu: NanoShiba Token0.321578814383887764 BNB
0x51d945f35942a1c232d2e685cc13f336e3601a2036b7b244e6bc5d1bbdaa8356118285702021-10-16 17:39:1043 days 21 hrs ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.053204579165332531 BNB
0x51d945f35942a1c232d2e685cc13f336e3601a2036b7b244e6bc5d1bbdaa8356118285702021-10-16 17:39:1043 days 21 hrs ago Nano Shiba Inu: NanoShiba Token0x4a0a492c1a851b6dd4fe11d37bad0a5380d169510.106409158330665062 BNB
0x51d945f35942a1c232d2e685cc13f336e3601a2036b7b244e6bc5d1bbdaa8356118285702021-10-16 17:39:1043 days 21 hrs ago Nano Shiba Inu: NanoShiba Token 0xc9cf5bad238045953b99f99bd49a17e6af3f0d720.106409158330665062 BNB
0x51d945f35942a1c232d2e685cc13f336e3601a2036b7b244e6bc5d1bbdaa8356118285702021-10-16 17:39:1043 days 21 hrs ago PancakeSwap: Router v2 Nano Shiba Inu: NanoShiba Token0.319227474991995186 BNB
0x5e992389b259127b318542ac7c1d16665242db697c3ac568f31a7e71a89435bd118277282021-10-16 16:56:2843 days 22 hrs ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.053687844382195655 BNB
0x5e992389b259127b318542ac7c1d16665242db697c3ac568f31a7e71a89435bd118277282021-10-16 16:56:2843 days 22 hrs ago Nano Shiba Inu: NanoShiba Token0x4a0a492c1a851b6dd4fe11d37bad0a5380d169510.10737568876439131 BNB
0x5e992389b259127b318542ac7c1d16665242db697c3ac568f31a7e71a89435bd118277282021-10-16 16:56:2843 days 22 hrs ago Nano Shiba Inu: NanoShiba Token 0xc9cf5bad238045953b99f99bd49a17e6af3f0d720.10737568876439131 BNB
0x5e992389b259127b318542ac7c1d16665242db697c3ac568f31a7e71a89435bd118277282021-10-16 16:56:2843 days 22 hrs ago PancakeSwap: Router v2 Nano Shiba Inu: NanoShiba Token0.322127066293173932 BNB
0x796295ff4727bacf60972fadee19411927b869974809f85110410e76c87026b0118273052021-10-16 16:34:1343 days 22 hrs ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.05465010081136889 BNB
0x796295ff4727bacf60972fadee19411927b869974809f85110410e76c87026b0118273052021-10-16 16:34:1343 days 22 hrs ago Nano Shiba Inu: NanoShiba Token0x4a0a492c1a851b6dd4fe11d37bad0a5380d169510.10930020162273778 BNB
0x796295ff4727bacf60972fadee19411927b869974809f85110410e76c87026b0118273052021-10-16 16:34:1343 days 22 hrs ago Nano Shiba Inu: NanoShiba Token 0xc9cf5bad238045953b99f99bd49a17e6af3f0d720.10930020162273778 BNB
0x796295ff4727bacf60972fadee19411927b869974809f85110410e76c87026b0118273052021-10-16 16:34:1343 days 22 hrs ago PancakeSwap: Router v2 Nano Shiba Inu: NanoShiba Token0.327900604868213341 BNB
0xeda46b70c2395b5eee94c981caee68612a16e3375990a905e932ed5d2443728c118263292021-10-16 15:45:2043 days 23 hrs ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.05401053552348068 BNB
0xeda46b70c2395b5eee94c981caee68612a16e3375990a905e932ed5d2443728c118263292021-10-16 15:45:2043 days 23 hrs ago Nano Shiba Inu: NanoShiba Token0x4a0a492c1a851b6dd4fe11d37bad0a5380d169510.108021071046961361 BNB
0xeda46b70c2395b5eee94c981caee68612a16e3375990a905e932ed5d2443728c118263292021-10-16 15:45:2043 days 23 hrs ago Nano Shiba Inu: NanoShiba Token 0xc9cf5bad238045953b99f99bd49a17e6af3f0d720.108021071046961361 BNB
0xeda46b70c2395b5eee94c981caee68612a16e3375990a905e932ed5d2443728c118263292021-10-16 15:45:2043 days 23 hrs ago PancakeSwap: Router v2 Nano Shiba Inu: NanoShiba Token0.324063213140884085 BNB
0x820786224d5b25ebc076c6b884264f3c927ad0a0cb596366a1484c2e0b165019118253562021-10-16 14:55:5644 days 34 mins ago Nano Shiba Inu: NanoShiba Token0x5e201f0152b7156df89f097ee2b396bf5881a6300.053953284902299688 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NANOSHIBAINU

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: unlicensed

/*


███████████████████████████████████████████████████████████████████████████████████
████▄─▀█▄─▄██▀▄─██▄─▀█▄─▄█─▄▄─███─▄▄▄▄█─█─█▄─▄█▄─▄─▀██▀▄─████▄─▄█▄─▀█▄─▄█▄─██─▄████
█████─█▄▀─███─▀─███─█▄▀─██─██─███▄▄▄▄─█─▄─██─███─▄─▀██─▀─█████─███─█▄▀─███─██─█████
███▀▄▄▄▀▀▄▄▀▄▄▀▄▄▀▄▄▄▀▀▄▄▀▄▄▄▄▀▀▀▄▄▄▄▄▀▄▀▄▀▄▄▄▀▄▄▄▄▀▀▄▄▀▄▄▀▀▀▄▄▄▀▄▄▄▀▀▄▄▀▀▄▄▄▄▀▀███

Nano Shiba Inu is a one-of-a-kind reward and rebase token that uses a proprietary contract on the Binance Smart Chain. Holders of Nano Shiba Inu are rewarded in $SHIB token rewards that are distributed automatically through one of the contract’s protocols.
https://www.nanoshibainu.io/
https://t.me/NanoShibaInuCoin
https://twitter.com/nanoshibainubsc

*/

pragma solidity ^0.7.4;

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

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

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface InterfaceLP {
    function sync() external;
}

interface IDEXRouter {
    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 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;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 RWRD = IBEP20(0x2859e4544C4bB03966803b044A93563Bd2D0DD4D);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 22);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(RWRD);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract NANOSHIBAINU is IBEP20, Auth {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Nano Shiba Inu";
    string constant _symbol = "NanoShiba";
    uint8 constant _decimals = 4;


    //mapping (address => uint256) _balances;
    mapping (address => uint256) _rBalance;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isTimelockExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public liquidityFee    = 5;
    uint256 public reflectionFee   = 5;
    uint256 public marketingFee    = 6;
    uint256 public devFee          = 2;
    uint256 public totalFee        = marketingFee + reflectionFee + liquidityFee + devFee;
    uint256 public feeDenominator  = 100;

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;

    uint256 public sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;

    uint256 targetLiquidity = 99;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    InterfaceLP public pairContract; 

    bool public tradingOpen = false;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 15;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    address public master;
    modifier onlyMaster() {
        require(msg.sender == master || isOwner(msg.sender));
        _;
    }

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);

    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 10**15 * 10**_decimals;
    uint256 public swapThreshold = rSupply * 10 / 10000;
    uint256 public rebase_count = 0;
    uint256 public rate;
    uint256 public _totalSupply;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant MAX_SUPPLY = ~uint128(0);
    uint256 private constant rSupply = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

    // Max wallet & Transaction
    uint256 public _maxTxAmount = rSupply.div(100).mul(1);
    uint256 public _maxWalletToken = rSupply.div(100).mul(2);

    function rebase_percentage(uint256 _percentage_base1000, bool reduce) public onlyMaster returns (uint256 newSupply){

        if(reduce){
            newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)).mul(-1));
        } else{
            newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)));
        }
        
    }

    // Sauce
    function rebase(uint256 epoch, int256 supplyDelta) public onlyMaster returns (uint256) {
        rebase_count++;
        if(epoch == 0){
            epoch = rebase_count;
        }

        require(!inSwap, "Try again");

        if (supplyDelta == 0) {
            emit LogRebase(epoch, _totalSupply);
            return _totalSupply;
        }

        if (supplyDelta < 0) {
            _totalSupply = _totalSupply.sub(uint256(-supplyDelta));
        } else {
            _totalSupply = _totalSupply.add(uint256(supplyDelta));
        }

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        rate = rSupply.div(_totalSupply);
        pairContract.sync();

        emit LogRebase(epoch, _totalSupply);
        return _totalSupply;
    }



    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        
        pairContract = InterfaceLP(pair);
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        rate = rSupply.div(_totalSupply);


        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x4A0a492c1A851B6dD4FE11D37Bad0a5380d16951;
        devFeeReceiver = 0x5E201f0152B7156dF89F097Ee2B396bF5881A630;

        isDividendExempt[marketingFeeReceiver] = true;
        isDividendExempt[devFeeReceiver] = true;


        _rBalance[msg.sender] = rSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    
    
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }

    function balanceOf(address account) public view override returns (uint256) {
        return _rBalance[account].div(rate);
    }
    
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    
    
    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        uint256 rAmount = amount.mul(rate);

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != devFeeReceiver  && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + rAmount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"buy Cooldown exists");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");    
        }

        // Checks max transaction limit
        checkTxLimit(sender, rAmount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? rAmount : takeFee(sender, rAmount,(recipient == pair));
        _rBalance[recipient] = _rBalance[recipient].add(amountReceived);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, balanceOf(sender)) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, balanceOf(recipient)) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived.div(rate));
        return true;
    }
    
    // Changed
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 rAmount = amount.mul(rate);
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");
        _rBalance[recipient] = _rBalance[recipient].add(rAmount);
        emit Transfer(sender, recipient, rAmount.div(rate));
        return true;
    }

    function checkTxLimit(address sender, uint256 rAmount) internal view {
        require(rAmount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }


    function takeFee(address sender, uint256 rAmount, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = 100;
        if(isSell){
            multiplier = sellMultiplier;
        } 

        uint256 feeAmount = rAmount.div(feeDenominator * 100).mul(totalFee).mul(multiplier);

        if(!isSell && (launchedAt + deadBlocks) > block.number){
            feeAmount = rAmount.div(100).mul(99);
        }

        _rBalance[address(this)] = _rBalance[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount.div(rate));

        return rAmount.sub(feeAmount);
    }

  
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _rBalance[address(this)] >= swapThreshold;
    }


    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }

    
    
    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }

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

    // switch Trading
    
    function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner {
        tradingOpen = _status;
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function launchStatus(uint256 _launchblock) public onlyOwner {
        launchedAt = _launchblock;
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }


    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 tokensToSell = swapThreshold.div(rate);

        uint256 amountToLiquify = tokensToSell.div(totalFee).mul(dynamicLiquidityFee).div(2);
        uint256 amountToSwap = tokensToSell.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify.div(rate));
        }
    }

    
    
    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, balanceOf(holder));
        }
    }
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
    
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _percentage_base100000) external authorized {
        swapEnabled = _enabled;
        swapThreshold = rSupply.div(100000).mul(_percentage_base100000);
    }


    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    
    function manualSync() external {
        InterfaceLP(pair).sync();
    }
    
    function setLP(address _address) external onlyOwner {
        pairContract = InterfaceLP(_address);
        isFeeExempt[_address];
    }

    
    
    function setMaster(address _master) external onlyOwner {
        master = _master;
    }

    
    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    
    
    function checkSwapThreshold() external view returns (uint256) {
        return swapThreshold.div(rate);
    }


    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    
    
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 900000);
        distributorGas = gas;
    }
    
    
    
    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        return IBEP20(tokenAddress).transfer(msg.sender, tokens);
    }


    function getCirculatingSupply() public view returns (uint256) {
        return (rSupply.sub(_rBalance[DEAD]).sub(_rBalance[ZERO])).div(rate);
    }


    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }


    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function checkMaxWalletToken() external view returns (uint256) {
        return _maxWalletToken.div(rate);
    }

    
    function checkMaxTxAmount() external view returns (uint256) {
        return _maxTxAmount.div(rate);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = rSupply.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = rSupply.div(1000).mul(maxTXPercentage_base1000);
    }



/* Airdrop Begins */

function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

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

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

    uint256 SCCC = tokens * addresses.length;

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

event AutoLiquify(uint256 amountBNB, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchblock","type":"uint256"}],"name":"launchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage_base1000","type":"uint256"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"rebase_percentage","outputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_master","type":"address"}],"name":"setMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_base100000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6001600160a01b03199182161782556003805461dead9083161790556004805490911690556005600b819055600c556006600d55600e8190556012600f55606460108190556011805460ff199081166001908117909255601393909355600060145560158290556063601955601a91909155601d805460ff60a01b191690556207a120601f55602080548316821761ff001916610f001790556022805490921617905561271068041c7e1626e66fffff190460235560006024556200011d6001620001096064678ac7230489e800006000195b0660001903620004c160201b62002f7e1790919060201c565b6200051460201b62002fc01790919060201c565b6027556200013e6002620001096064678ac7230489e80000600019620000f0565b6028553480156200014e57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601b80549092167310ed43c718714eb63d5aa57b78b54704e256024e1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001de57600080fd5b505afa158015620001f3573d6000803e3d6000fd5b505050506040513d60208110156200020a57600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200026257600080fd5b505af115801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051601c80546001600160a01b03199081166001600160a01b03938416178255306000908152600660209081526040808320601b54871684529091529020600019908190559154601d805491909416911617909155678ac7230489e800006026819055620002fe918190620000f0565b602555601b546040516001600160a01b03909116906200031e9062000619565b6001600160a01b03909116815260405190819003602001906000f0801580156200034c573d6000803e3d6000fd5b50601e80546001600160a01b039283166001600160a01b031991821617909155336000818152600760209081526040808320805460ff19908116600190811790925560088452828520805482168317905560098452828520805482168317905560038054891686528386208054831684179055308087528487208054841685179055601c548a168752600a86528487208054841685179055865283862080548316841790555488168552828520805482168317905560168054881687179055601780548816734a0a492c1a851b6dd4fe11d37bad0a5380d16951179081905560188054909816735e201f0152b7156df89f097ee2b396bf5881a6301788558816855282852080548216831790559554909616835280832080549095169095179093558181526005835283812067693fcf03e3d7ffff19905560265484519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a362000627565b60006200050b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200057260201b60201c565b90505b92915050565b60008262000525575060006200050e565b828202828482816200053357fe5b04146200050b5760405162461bcd60e51b81526004018080602001828103825260218152602001806200569c6021913960400191505060405180910390fd5b60008183620006025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005c6578181015183820152602001620005ac565b50505050905090810190601f168015620005f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200060f57fe5b0495945050505050565b610f1d806200477f83390190565b61414880620006376000396000f3fe6080604052600436106105a35760003560e01c8063722b62ad116102e0578063bf56b37111610184578063ee97f7f3116100e1578063f887ea4011610095578063fe9fbb801161006f578063fe9fbb80146113ac578063fed0d2a1146113df578063ffb54a99146113f4576105aa565b8063f887ea401461134f578063fabb0b4f14611364578063fe575a8714611379576105aa565b8063f2fde38b116100c6578063f2fde38b146112a6578063f708a64f146112d9578063f84ba65d14611314576105aa565b8063ee97f7f31461125e578063f0b37c0414611273576105aa565b8063dab84ee711610138578063df20fd491161011d578063df20fd49146111ed578063e96fada21461121f578063ec72d65f14611234576105aa565b8063dab84ee71461119d578063dd62ed3e146111b2576105aa565b8063ca33e64c11610169578063ca33e64c14611119578063d51ed1c81461112e578063d7c0103214611158576105aa565b8063bf56b371146110ef578063bfe1092814611104576105aa565b80638e2eee841161023d5780639d1944f5116101f1578063b43b7835116101cb578063b43b78351461107d578063b6a5d7de14611092578063bd9ab537146110c5576105aa565b80639d1944f514611005578063a8aa1b311461102f578063a9059cbb14611044576105aa565b806395d89b411161022257806395d89b4114610fb157806398118cb414610fc65780639ba1fc4c14610fdb576105aa565b80638e2eee8414610f0057806393028afd14610f7f576105aa565b806383ad799411610294578063893d20e811610279578063893d20e814610ea3578063896648c114610eb85780638b42507f14610ecd576105aa565b806383ad799414610e7957806383b4ac6814610e8e576105aa565b806378109e54116102c557806378109e5414610e1f5780637a43e23f14610e345780637d1db4a514610e64576105aa565b8063722b62ad14610df5578063753d02a114610e0a576105aa565b80632f54bf6e1161044757806350db71fb116103a4578063658d4b7f116103585780636d351d1a116103325780636d351d1a14610d985780636ddd171314610dad57806370a0823114610dc2576105aa565b8063658d4b7f14610d335780636827e76414610d6e5780636b67c4df14610d83576105aa565b80635e562f3b116103895780635e562f3b14610cdd5780636149a20a14610d09578063617fe0ed14610d1e576105aa565b806350db71fb14610c6f578063571ac8b014610caa576105aa565b80633f4218e0116103fb57806344a33fd2116103e057806344a33fd214610be15780634d709adf14610c0b57806350af449e14610c3c576105aa565b80633f4218e014610b7b5780634355855a14610bae576105aa565b8063335f6a431161042c578063335f6a4314610aa057806333f3d62814610b2d5780633eaaf86b14610b66576105aa565b80632f54bf6e14610a42578063313ce56714610a75576105aa565b80631da1db5e1161050057806326fae0d3116104b45780632d48e8961161048e5780632d48e896146109aa5780632d594567146109da5780632f34d28214610a0f576105aa565b806326fae0d31461094d5780632b112e49146109805780632c4e722e14610995576105aa565b8063201e7991116104e5578063201e7991146108a857806323b872dd146108d857806326e353b81461091b576105aa565b80631da1db5e146108695780631df4ccfc14610893576105aa565b80630a92570f11610557578063180b0d7e1161053c578063180b0d7e1461076057806318160ddd146107755780631ca0a28d1461078a576105aa565b80630a92570f1461071b5780631161ae3914610730576105aa565b806306fdde031161058857806306fdde031461061a57806309302dc6146106a4578063095ea7b3146106ce576105aa565b80630445b667146105af57806304a66b48146105d6576105aa565b366105aa57005b600080fd5b3480156105bb57600080fd5b506105c4611409565b60408051918252519081900360200190f35b3480156105e257600080fd5b50610618600480360360a08110156105f957600080fd5b508035906020810135906040810135906060810135906080013561140f565b005b34801561062657600080fd5b5061062f6114e9565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610669578181015183820152602001610651565b50505050905090810190601f1680156106965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106b057600080fd5b50610618600480360360208110156106c757600080fd5b5035611520565b3480156106da57600080fd5b50610707600480360360408110156106f157600080fd5b506001600160a01b03813516906020013561158e565b604080519115158252519081900360200190f35b34801561072757600080fd5b506105c46115f5565b34801561073c57600080fd5b506107076004803603604081101561075357600080fd5b50803590602001356115fb565b34801561076c57600080fd5b506105c461160f565b34801561078157600080fd5b506105c4611615565b34801561079657600080fd5b50610618600480360360608110156107ad57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156107d857600080fd5b8201836020820111156107ea57600080fd5b8035906020019184602083028401116401000000008311171561080c57600080fd5b91939092909160208101903564010000000081111561082a57600080fd5b82018360208201111561083c57600080fd5b8035906020019184602083028401116401000000008311171561085e57600080fd5b50909250905061161b565b34801561087557600080fd5b506106186004803603602081101561088c57600080fd5b5035611935565b34801561089f57600080fd5b506105c46119c5565b3480156108b457600080fd5b50610618600480360360408110156108cb57600080fd5b50803590602001356119cb565b3480156108e457600080fd5b50610707600480360360608110156108fb57600080fd5b506001600160a01b03813581169160208101359091169060400135611a1e565b34801561092757600080fd5b506106186004803603604081101561093e57600080fd5b50803515159060200135611ae7565b34801561095957600080fd5b506106186004803603602081101561097057600080fd5b50356001600160a01b0316611b86565b34801561098c57600080fd5b506105c4611c09565b3480156109a157600080fd5b506105c4611c67565b3480156109b657600080fd5b50610618600480360360408110156109cd57600080fd5b5080359060200135611c6d565b3480156109e657600080fd5b50610618600480360360408110156109fd57600080fd5b5080351515906020013560ff16611d36565b348015610a1b57600080fd5b5061061860048036036020811015610a3257600080fd5b50356001600160a01b0316611d9f565b348015610a4e57600080fd5b5061070760048036036020811015610a6557600080fd5b50356001600160a01b0316611e18565b348015610a8157600080fd5b50610a8a611e2c565b6040805160ff9092168252519081900360200190f35b348015610aac57600080fd5b5061061860048036036060811015610ac357600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115610aee57600080fd5b820183602082011115610b0057600080fd5b80359060200191846020830284011164010000000083111715610b2257600080fd5b919350915035611e31565b348015610b3957600080fd5b5061070760048036036040811015610b5057600080fd5b506001600160a01b0381351690602001356120b9565b348015610b7257600080fd5b506105c4612199565b348015610b8757600080fd5b5061070760048036036020811015610b9e57600080fd5b50356001600160a01b031661219f565b348015610bba57600080fd5b5061070760048036036020811015610bd157600080fd5b50356001600160a01b03166121b4565b348015610bed57600080fd5b5061061860048036036020811015610c0457600080fd5b50356121c9565b348015610c1757600080fd5b50610c20612220565b604080516001600160a01b039092168252519081900360200190f35b348015610c4857600080fd5b5061070760048036036020811015610c5f57600080fd5b50356001600160a01b031661222f565b348015610c7b57600080fd5b5061061860048036036040811015610c9257600080fd5b506001600160a01b0381351690602001351515612244565b348015610cb657600080fd5b5061070760048036036020811015610ccd57600080fd5b50356001600160a01b03166122b7565b348015610ce957600080fd5b5061061860048036036020811015610d0057600080fd5b503515156122c5565b348015610d1557600080fd5b506105c461231b565b348015610d2a57600080fd5b50610707612334565b348015610d3f57600080fd5b5061061860048036036040811015610d5657600080fd5b506001600160a01b038135169060200135151561233d565b348015610d7a57600080fd5b506105c46123b0565b348015610d8f57600080fd5b506105c46123b6565b348015610da457600080fd5b506105c46123bc565b348015610db957600080fd5b506107076123d5565b348015610dce57600080fd5b506105c460048036036020811015610de557600080fd5b50356001600160a01b03166123de565b348015610e0157600080fd5b50610a8a612406565b348015610e1657600080fd5b50610618612414565b348015610e2b57600080fd5b506105c461247e565b348015610e4057600080fd5b506105c460048036036040811015610e5757600080fd5b5080359060200135612484565b348015610e7057600080fd5b506105c46126a0565b348015610e8557600080fd5b506105c46126a6565b348015610e9a57600080fd5b506107076126ac565b348015610eaf57600080fd5b50610c206126bb565b348015610ec457600080fd5b506107076126ca565b348015610ed957600080fd5b5061070760048036036020811015610ef057600080fd5b50356001600160a01b03166126d3565b348015610f0c57600080fd5b5061061860048036036040811015610f2357600080fd5b810190602081018135640100000000811115610f3e57600080fd5b820183602082011115610f5057600080fd5b80359060200191846020830284011164010000000083111715610f7257600080fd5b91935091503515156126e8565b348015610f8b57600080fd5b506105c460048036036040811015610fa257600080fd5b50803590602001351515612780565b348015610fbd57600080fd5b5061062f61280d565b348015610fd257600080fd5b506105c4612844565b348015610fe757600080fd5b5061061860048036036020811015610ffe57600080fd5b503561284a565b34801561101157600080fd5b506106186004803603602081101561102857600080fd5b5035612892565b34801561103b57600080fd5b50610c206128ee565b34801561105057600080fd5b506107076004803603604081101561106757600080fd5b506001600160a01b0381351690602001356128fd565b34801561108957600080fd5b506105c461290a565b34801561109e57600080fd5b50610618600480360360208110156110b557600080fd5b50356001600160a01b0316612923565b3480156110d157600080fd5b50610618600480360360208110156110e857600080fd5b503561298d565b3480156110fb57600080fd5b506105c46129f1565b34801561111057600080fd5b50610c206129f7565b34801561112557600080fd5b50610c20612a06565b34801561113a57600080fd5b506105c46004803603602081101561115157600080fd5b5035612a15565b34801561116457600080fd5b506106186004803603606081101561117b57600080fd5b506001600160a01b038135811691602081013582169160409091013516612a49565b3480156111a957600080fd5b50610c20612add565b3480156111be57600080fd5b506105c4600480360360408110156111d557600080fd5b506001600160a01b0381358116916020013516612aec565b3480156111f957600080fd5b506106186004803603604081101561121057600080fd5b50803515159060200135612b17565b34801561122b57600080fd5b50610c20612b90565b34801561124057600080fd5b506106186004803603602081101561125757600080fd5b5035612b9f565b34801561126a57600080fd5b50610c20612be7565b34801561127f57600080fd5b506106186004803603602081101561129657600080fd5b50356001600160a01b0316612bfc565b3480156112b257600080fd5b50610618600480360360208110156112c957600080fd5b50356001600160a01b0316612c60565b3480156112e557600080fd5b50610618600480360360408110156112fc57600080fd5b506001600160a01b0381351690602001351515612d1e565b34801561132057600080fd5b506106186004803603604081101561133757600080fd5b506001600160a01b0381351690602001351515612ead565b34801561135b57600080fd5b50610c20612f20565b34801561137057600080fd5b506105c4612f2f565b34801561138557600080fd5b506107076004803603602081101561139c57600080fd5b50356001600160a01b0316612f35565b3480156113b857600080fd5b50610707600480360360208110156113cf57600080fd5b50356001600160a01b0316612f4a565b3480156113eb57600080fd5b506105c4612f68565b34801561140057600080fd5b50610707612f6e565b60235481565b61141833612f4a565b611457576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600b859055600c849055600d839055600e8290556114818261147b85818989613019565b90613019565b600f55601081905560038104600f54106114e2576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000604482015290519081900360640190fd5b5050505050565b60408051808201909152600e81527f4e616e6f20536869626120496e75000000000000000000000000000000000000602082015290565b61152933611e18565b611563576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611588816115826103e8678ac7230489e800006000195b061990612f7e565b90612fc0565b60285550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60245481565b60008261160783612a15565b119392505050565b60105481565b60265490565b61162433611e18565b61165e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b610321831061169e5760405162461bcd60e51b815260040180806020018281038252602d8152602001806140e6602d913960400191505060405180910390fd5b8281146116dc5760405162461bcd60e51b81526004018080602001828103825260288152602001806140316028913960400191505060405180910390fd5b6000805b8481101561170a578383828181106116f457fe5b60200291909101359290920191506001016116e0565b5080611715876123de565b1015611768576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611898576117ab8787878481811061178357fe5b905060200201356001600160a01b031686868581811061179f57fe5b90506020020135613073565b50600a60008787848181106117bc57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661189057601e546001600160a01b03166314b6ca9687878481811061180357fe5b905060200201356001600160a01b031661183789898681811061182257fe5b905060200201356001600160a01b03166123de565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561187d57600080fd5b505af192505050801561188e575060015b505b60010161176b565b506001600160a01b0386166000908152600a602052604090205460ff1661192d57601e546001600160a01b03166314b6ca96876118d4816123de565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561191a57600080fd5b505af192505050801561192b575060015b505b505050505050565b61193e33612f4a565b61197d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60175447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f193505050501580156119c0573d6000803e3d6000fd5b505050565b600f5481565b6119d433612f4a565b611a13576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601991909155601a55565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611ad257604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054611aad918490613198565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b611add84848461322f565b90505b9392505050565b611af033611e18565b611b2a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b8415158102919091179182905560ff9104168015611b735750601454155b15611b82574360145560138190555b5050565b611b8f33611e18565b611bc9576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602280546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6025546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611c62929091611c5c9190611c569067693fcf03e3d7ffff19906138b9565b906138b9565b90612f7e565b905090565b60255481565b611c7633612f4a565b611cb5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601e54604080517f2d48e896000000000000000000000000000000000000000000000000000000008152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611d2257600080fd5b505af115801561192d573d6000803e3d6000fd5b611d3f33611e18565b611d79576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6020805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611da833611e18565b611de2576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601d80546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600490565b611e3a33611e18565b611e74576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d18210611eb45760405162461bcd60e51b815260040180806020018281038252602e815260200180614059602e913960400191505060405180910390fd5b80820280611ec1866123de565b1015611f14576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561201d57611f4586868684818110611f2f57fe5b905060200201356001600160a01b031685613073565b50600a6000868684818110611f5657fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661201557601e546001600160a01b03166314b6ca96868684818110611f9d57fe5b905060200201356001600160a01b0316611fbc88888681811061182257fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561200257600080fd5b505af1925050508015612013575060015b505b600101611f17565b506001600160a01b0385166000908152600a602052604090205460ff166114e257601e546001600160a01b03166314b6ca9686612059816123de565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561209f57600080fd5b505af19250505080156120b0575060015b6114e2576114e2565b60006120c433611e18565b6120fe576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b15801561216657600080fd5b505af115801561217a573d6000803e3d6000fd5b505050506040513d602081101561219057600080fd5b50519392505050565b60265481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b6121d233612f4a565b612211576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611994565b601d546001600160a01b031681565b60096020526000908152604090205460ff1681565b61224d33612f4a565b61228c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006115ef8260001961158e565b6122ce33611e18565b612308576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6011805460ff1916911515919091179055565b6000611c62602554602754612f7e90919063ffffffff16565b60205460ff1681565b61234633612f4a565b612385576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600e5481565b600d5481565b6000611c62602554602354612f7e90919063ffffffff16565b60225460ff1681565b6025546001600160a01b03821660009081526005602052604081205490916115ef9190612f7e565b602054610100900460ff1681565b601c60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561246457600080fd5b505af1158015612478573d6000803e3d6000fd5b50505050565b60285481565b6022546000906201000090046001600160a01b03163314806124aa57506124aa33611e18565b6124b357600080fd5b602480546001019055826124c75760245492505b602254610100900460ff1615612524576040805162461bcd60e51b815260206004820152600960248201527f54727920616761696e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8161256a57602654604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a2506026546115ef565b600082121561258c576026546125849060008490036138b9565b60265561259d565b6026546125999083613019565b6026555b6026546fffffffffffffffffffffffffffffffff10156125cc576fffffffffffffffffffffffffffffffff6026555b6026546125e490678ac7230489e8000060001961157a565b602555601d54604080517ffff6cae900000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561264657600080fd5b505af115801561265a573d6000803e3d6000fd5b505060265460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060265492915050565b60275481565b600c5481565b602254610100900460ff161590565b6000546001600160a01b031690565b60115460ff1681565b60086020526000908152604090205460ff1681565b6126f133611e18565b61272b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8281101561247857816012600086868581811061274757fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161272e565b6022546000906201000090046001600160a01b03163314806127a657506127a633611e18565b6127af57600080fd5b81156127ed576127e660006127e16000196127db876115826103e8602654612f7e90919063ffffffff16565b906138fb565b612484565b90506115ef565b611ae060006127e1856115826103e8602654612f7e90919063ffffffff16565b60408051808201909152600981527f4e616e6f53686962610000000000000000000000000000000000000000000000602082015290565b600b5481565b61285333611e18565b61288d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601455565b61289b33612f4a565b6128da576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba081106128e957600080fd5b601f55565b601c546001600160a01b031681565b6000611ae033848461322f565b6000611c62602554602854612f7e90919063ffffffff16565b61292c33611e18565b612966576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61299633611e18565b6129d0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6129eb816115826103e8678ac7230489e8000060001961157a565b60275550565b60145481565b601e546001600160a01b031681565b6016546001600160a01b031681565b60006115ef612a22611c09565b601c54611c5c90612a4290600290611582906001600160a01b03166123de565b8590612fc0565b612a5233612f4a565b612a91576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601680546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601780549385169382169390931790925560188054919093169116179055565b6018546001600160a01b031681565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612b2033612f4a565b612b5f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6022805460ff1916831515179055612b8981611582620186a0678ac7230489e8000060001961157a565b6023555050565b6017546001600160a01b031681565b612ba833611e18565b612be2576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b6022546201000090046001600160a01b031681565b612c0533611e18565b612c3f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612c6933611e18565b612ca3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612d2733612f4a565b612d66576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612d8d5750601c546001600160a01b03838116911614155b612d9657600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612e4c57601e54604080517f14b6ca960000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612e2f57600080fd5b505af1158015612e43573d6000803e3d6000fd5b50505050611b82565b601e546001600160a01b03166314b6ca9683612e67816123de565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611d2257600080fd5b612eb633612f4a565b612ef5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601b546001600160a01b031681565b60135481565b60126020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60155481565b601d54600160a01b900460ff1681565b6000611ae083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613943565b600082612fcf575060006115ef565b82820282848281612fdc57fe5b0414611ae05760405162461bcd60e51b81526004018080602001828103825260218152602001806140876021913960400191505060405180910390fd5b600082820183811015611ae0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008061308b60255484612fc090919063ffffffff16565b90506130fc816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060056000896001600160a01b03166001600160a01b03168152602001908152602001600020546131989092919063ffffffff16565b6001600160a01b03808716600090815260056020526040808220939093559086168152205461312b9082613019565b6001600160a01b03808616600081815260056020526040902092909255602554908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061317c908590612f7e565b60408051918252519081900360200190a3506001949350505050565b600081848411156132275760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131ec5781810151838201526020016131d4565b50505050905090810190601f1680156132195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602254600090610100900460ff16156132545761324d848484613073565b9050611ae0565b6001600160a01b03841660009081526001602052604090205460ff1615801561329657506001600160a01b03831660009081526001602052604090205460ff16155b156132f957601d54600160a01b900460ff166132f9576040805162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e20796574000000000000000000000000604482015290519081900360640190fd5b600061331060255484612fc090919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff1615801561334557506001600160a01b0384163014155b801561335f57506003546001600160a01b03858116911614155b80156133795750601c546001600160a01b03858116911614155b801561339357506017546001600160a01b03858116911614155b80156133ad57506018546001600160a01b03858116911614155b80156133c757506016546001600160a01b03858116911614155b1561341e5760006133d7856123de565b9050602854828201111561341c5760405162461bcd60e51b815260040180806020018281038252603e8152602001806140a8603e913960400191505060405180910390fd5b505b601c546001600160a01b03868116911614801561343d575060205460ff165b801561346257506001600160a01b03841660009081526009602052604090205460ff16155b156134fe576001600160a01b03841660009081526021602052604090205442116134d3576040805162461bcd60e51b815260206004820152601360248201527f62757920436f6f6c646f776e2065786973747300000000000000000000000000604482015290519081900360640190fd5b602080546001600160a01b03861660009081526021909252604090912061010090910460ff16420190555b60115460ff161561359c576001600160a01b03851660009081526012602052604090205460ff1615801561354b57506001600160a01b03841660009081526012602052604090205460ff16155b61359c576040805162461bcd60e51b815260206004820152600b60248201527f426c61636b6c6973746564000000000000000000000000000000000000000000604482015290519081900360640190fd5b6135a685826139a8565b6135ae613a22565b156135bb576135bb613a76565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b038816600090815260059091529190912054613616918390613198565b6001600160a01b03861660009081526005602052604081209190915561363b86613f24565b158061364d575061364b85613f24565b155b61367457601c5461366f90879084906001600160a01b03898116911614613f43565b613676565b815b6001600160a01b03861660009081526005602052604090205490915061369c9082613019565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff1661374357601e546001600160a01b03166314b6ca96876136ea816123de565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561373057600080fd5b505af1925050508015613741575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166137d757601e546001600160a01b03166314b6ca968661377e816123de565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156137c457600080fd5b505af19250505080156137d5575060015b505b601e54601f54604080517fffb2c4790000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561384057600080fd5b505af1925050508015613851575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61389c60255485612f7e90919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b6000611ae083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613198565b6000828202600160ff1b8114158061391c5750600160ff1b84811690841614155b61392557600080fd5b82158061393a57508383828161393757fe5b05145b611ae057600080fd5b600081836139925760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156131ec5781810151838201526020016131d4565b50600083858161399e57fe5b0495945050505050565b602754811115806139d157506001600160a01b03821660009081526008602052604090205460ff165b611b82576040805162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015290519081900360640190fd5b601c546000906001600160a01b03163314801590613a485750602254610100900460ff16155b8015613a56575060225460ff165b8015611c6257505060235430600090815260056020526040902054101590565b6022805461ff001916610100179055601954601a54600091613a97916115fb565b613aa357600b54613aa6565b60005b90506000613ac1602554602354612f7e90919063ffffffff16565b90506000613ae36002611c5c85611582600f5487612f7e90919063ffffffff16565b90506000613af183836138b9565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613b2557fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110613b5057fe5b6001600160a01b03928316602091820292909201810191909152601b546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613c03578181015183820152602001613beb565b505050509050019650505050505050600060405180830381600087803b158015613c2c57600080fd5b505af1158015613c40573d6000803e3d6000fd5b505050506000613c5982476138b990919063ffffffff16565b90506000613c74613c6b896002612f7e565b600f54906138b9565b90506000613c896002611c5c8481878e612fc0565b90506000613ca683611c5c600c5487612fc090919063ffffffff16565b90506000613cc384611c5c600d5488612fc090919063ffffffff16565b90506000613ce085611c5c600e5489612fc090919063ffffffff16565b9050601e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613d3257600080fd5b505af193505050508015613d44575060015b506017546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114613d97576040519150601f19603f3d011682016040523d82523d6000602084013e613d9c565b606091505b50506018546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613df1576040519150601f19603f3d011682016040523d82523d6000602084013e613df6565b606091505b5060009250508b159050613f0a57601b54601654604080517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b158015613e9257600080fd5b505af1158015613ea6573d6000803e3d6000fd5b50505050506040513d6060811015613ebd57600080fd5b50506025547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908690613ef1908e90612f7e565b6040805192835260208301919091528051918290030190a15b50506022805461ff00191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b600060648215613f5257506015545b6000613f7682611582600f546115826010546064028a612f7e90919063ffffffff16565b905083158015613f8b57504360135460145401115b15613fa357613fa06063611582876064612f7e565b90505b30600090815260056020526040902054613fbd9082613019565b306000818152600560205260409020919091556025546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061400b908590612f7e565b60408051918252519081900360200190a361402685826138b9565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573a26469706673582212207f8e3ab814e7191489e13dc7696384d7b6d742dfd297f9216081fa3997b7e9ef64736f6c634300070600336080604052600180546001600160a01b0319908116732859e4544c4bb03966803b044a93563bd2d0dd4d179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d5569021e19e0c9bab2400000600e5534801561007f57600080fd5b50604051610f1d380380610f1d833981810160405260208110156100a257600080fd5b50516001600160a01b0381166100cc577310ed43c718714eb63d5aa57b78b54704e256024e6100ce565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610e15806101086000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610774565b34801561026057600080fd5b506100f761077a565b34801561027557600080fd5b50610142610780565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b503561078b565b3480156102b457600080fd5b506100f761086d565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610873565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a57610335826109b4565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d82610a22565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610b29565b90610b74565b6008556001600160a01b03821660009081526007602052604090208190556103c581610bce565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610bce565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610b29565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061059757fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105c157fe5b6001600160a01b039283166020918202929092018101919091526003546040517fb6f9de9500000000000000000000000000000000000000000000000000000000815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561066c578181015183820152602001610654565b50505050905001955050505050506000604051808303818588803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061073294508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561070057600080fd5b505afa158015610714573d6000803e3d6000fd5b505050506040513d602081101561072a57600080fd5b505190610b29565b6009549091506107429082610b74565b600955600854600c5461076c916107639161075d9085610beb565b90610c44565b600b5490610b74565b600b55505050565b600b5481565b600a5481565b61078933610873565b565b6000546001600160a01b031633146107a257600080fd5b600454806107b0575061086a565b6000805a905060005b84831080156107c757508381105b156108655783600f54106107db576000600f555b6108076004600f54815481106107ed57fe5b6000918252602090912001546001600160a01b0316610c86565b15610838576108386004600f548154811061081e57fe5b6000918252602090912001546001600160a01b0316610873565b61084d6108465a8490610b29565b8490610b74565b92505a600f80546001908101909155909250016107b9565b505050505b50565b600d5481565b6001600160a01b0381166000908152600760205260409020546108955761086a565b60006108a0826103e8565b905080156109b057600a546108b59082610b74565b600a55600154604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561092757600080fd5b505af115801561093b573d6000803e3d6000fd5b505050506040513d602081101561095157600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109869082610b74565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610bce565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b909101805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b600480546000198101908110610a3457fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a6c57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610ac757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610af757fe5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff1916905501905550565b6000610b6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cc2565b90505b92915050565b600082820183811015610b6b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b6e600c5461075d600b5485610beb90919063ffffffff16565b600082610bfa57506000610b6e565b82820282848281610c0757fe5b0414610b6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180610dbf6021913960400191505060405180910390fd5b6000610b6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d59565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b6e5750600e54610cbb836103e8565b1192915050565b60008184841115610d515760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d16578181015183820152602001610cfe565b50505050905090810190601f168015610d435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610da85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d16578181015183820152602001610cfe565b506000838581610db457fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207ea581dc38591ffb41f4196440896f98471c3d520256f2dea7f8ab589b9e56a064736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed ByteCode Sourcemap

13235:20227:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15556:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28246:512;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28246:512:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18869:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31363:175;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31363:175:0;;:::i;19323:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19323:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15614:31;;;;;;;;;;;;;:::i;30961:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30961:150:0;;;;;;;:::i;14312:36::-;;;;;;;;;;;;;:::i;18599:88::-;;;;;;;;;;;;;:::i;31748:903::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31748:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31748:903:0;;-1:-1:-1;31748:903:0;-1:-1:-1;31748:903:0;:::i;23963:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23963:218:0;;:::i;14220:85::-;;;;;;;;;;;;;:::i;29300:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29300:183:0;;;;;;;:::i;19847:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19847:364:0;;;;;;;;;;;;;;;;;:::i;24594:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24594:250:0;;;;;;;;;:::i;29742:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29742:90:0;-1:-1:-1;;;;;29742:90:0;;:::i;30625:149::-;;;;;;;;;;;;;:::i;15652:19::-;;;;;;;;;;;;;:::i;30078:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30078:183:0;;;;;;;:::i;25292:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25292:164:0;;;;;;;;;;;:::i;29583:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29583:139:0;-1:-1:-1;;;;;29583:139:0;;:::i;5220:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5220:103:0;-1:-1:-1;;;;;5220:103:0;;:::i;18693:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32655:739;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32655:739:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32655:739:0;-1:-1:-1;32655:739:0;;:::i;30441:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30441:174:0;;;;;;;;:::i;15678:27::-;;;;;;;;;;;;;:::i;13836:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13836:44:0;-1:-1:-1;;;;;13836:44:0;;:::i;13998:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13998:49:0;-1:-1:-1;;;;;13998:49:0;;:::i;24201:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24201:215:0;;:::i;14834:31::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14834:31:0;;;;;;;;;;;;;;13942:49;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13942:49:0;-1:-1:-1;;;;;13942:49:0;;:::i;28108:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28108:130:0;;;;;;;;;;:::i;19559:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19559:116:0;-1:-1:-1;;;;;19559:116:0;;:::i;24965:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24965:99:0;;;;:::i;31247:108::-;;;;;;;;;;;;;:::i;15000:37::-;;;;;;;;;;;;;:::i;27840:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27840:120:0;;;;;;;;;;:::i;14179:34::-;;;;;;;;;;;;;:::i;14138:::-;;;;;;;;;;;;;:::i;29951:111::-;;;;;;;;;;;;;:::i;15146:30::-;;;;;;;;;;;;;:::i;19041:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19041:129:0;-1:-1:-1;;;;;19041:129:0;;:::i;15044:39::-;;;;;;;;;;;;;:::i;29497:74::-;;;;;;;;;;;;;:::i;16016:56::-;;;;;;;;;;;;;:::i;16475:811::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16475:811:0;;;;;;;:::i;15956:53::-;;;;;;;;;;;;;:::i;14097:34::-;;;;;;;;;;;;;:::i;29846:85::-;;;;;;;;;;;;;:::i;18955:78::-;;;;;;;;;;;;;:::i;14357:32::-;;;;;;;;;;;;;:::i;13887:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13887:48:0;-1:-1:-1;;;;;13887:48:0;;:::i;25072:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25072:210:0;-1:-1:-1;25072:210:0;;;;:::i;16081:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16081:372:0;;;;;;;;;:::i;18779:84::-;;;;;;;;;;;;;:::i;14056:34::-;;;;;;;;;;;;;:::i;24852:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24852:105:0;;:::i;30281:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30281:136:0;;:::i;14808:19::-;;;;;;;;;;;;;:::i;19683:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19683:156:0;;;;;;;;:::i;31119:114::-;;;;;;;;;;;;;:::i;5013:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5013:94:0;-1:-1:-1;;;;;5013:94:0;;:::i;31546:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31546:170:0;;:::i;14487:29::-;;;;;;;;;;;;;:::i;14915:38::-;;;;;;;;;;;;;:::i;14570:36::-;;;;;;;;;;;;;:::i;30784:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30784:167:0;;:::i;28772:297::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28772:297:0;;;;;;;;;;;;;;;;;;;:::i;14655:29::-;;;;;;;;;;;;;:::i;19182:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19182:133:0;;;;;;;;;;:::i;29079:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29079:211:0;;;;;;;;;:::i;14613:35::-;;;;;;;;;;;;;:::i;24436:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24436:121:0;;:::i;15266:21::-;;;;;;;;;;;;;:::i;5115:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5115:97:0;-1:-1:-1;;;;;5115:97:0;;:::i;5446:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5446:173:0;-1:-1:-1;;;;;5446:173:0;;:::i;27481:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27481:347:0;;;;;;;;;;:::i;27972:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27972:128:0;;;;;;;;;;:::i;14777:24::-;;;;;;;;;;;;;:::i;14451:29::-;;;;;;;;;;;;;:::i;14396:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14396:46:0;-1:-1:-1;;;;;14396:46:0;;:::i;5331:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5331:107:0;-1:-1:-1;;;;;5331:107:0;;:::i;14525:36::-;;;;;;;;;;;;;:::i;14875:31::-;;;;;;;;;;;;;:::i;15556:51::-;;;;:::o;28246:512::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;28406:12:::1;:28:::0;;;28445:13:::1;:30:::0;;;28486:12:::1;:28:::0;;;28525:6:::1;:16:::0;;;28563:65:::1;28534:7:::0;28563:52:::1;28501:13:::0;28563:52;28421:13;28461:14;28563:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:65::-;28552:8;:76:::0;28639:14:::1;:32:::0;;;28716:1:::1;28656:15:::0;28701:16:::1;28690:8;;:27;28682:68;;;::::0;;-1:-1:-1;;;28682:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28246:512:::0;;;;;:::o;18869:80::-;18941:5;;;;;;;;;;;;;;;;;18869:80;:::o;31363:175::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;31484:46:::1;31506:23:::0;31484:17:::1;31496:4;15527:22:::0;-1:-1:-1;;15875:38:0::1;;15860:54:::0;;31484:11:::1;:17::i;:::-;:21:::0;::::1;:46::i;:::-;31466:15;:64:::0;-1:-1:-1;31363:175:0:o;19323:216::-;19427:10;19398:4;19415:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19415:32:0;;;;;;;;;;;:41;;;19472:37;;;;;;;19398:4;;19415:32;;19427:10;;19472:37;;;;;;;;-1:-1:-1;19527:4:0;19323:216;;;;;:::o;15614:31::-;;;;:::o;30961:150::-;31041:4;31097:6;31065:29;31085:8;31065:19;:29::i;:::-;:38;;30961:150;-1:-1:-1;;;30961:150:0:o;14312:36::-;;;;:::o;18599:88::-;18672:12;;18599:88;:::o;31748:903::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;31897:3:::1;31878:22:::0;::::1;31870:79;;;;-1:-1:-1::0;;;31870:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31987:33:::0;;::::1;31979:85;;;;-1:-1:-1::0;;;31979:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32073:12;32102:6:::0;32098:82:::1;32112:20:::0;;::::1;32098:82;;;32163:6;;32170:1;32163:9;;;;;;;;;::::0;;;::::1;;32156:16:::0;;;::::1;::::0;-1:-1:-1;32134:3:0::1;;32098:82;;;;32215:4;32196:15;32206:4;32196:9;:15::i;:::-;:23;;32188:63;;;::::0;;-1:-1:-1;;;32188:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32264:6;32260:250;32274:20:::0;;::::1;32260:250;;;32311:43;32326:4;32331:9;;32341:1;32331:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;32331:12:0::1;32344:6;;32351:1;32344:9;;;;;;;;;;;;;32311:14;:43::i;:::-;;32369:16;:30;32386:9;;32396:1;32386:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;32386:12:0::1;32369:30:::0;;-1:-1:-1;32369:30:0;::::1;::::0;;;;;;-1:-1:-1;32369:30:0;;::::1;;32365:138;;32420:11;::::0;-1:-1:-1;;;;;32420:11:0::1;:20;32441:9:::0;;32451:1;32441:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32441:12:0::1;32455:23;32465:9;;32475:1;32465:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;32465:12:0::1;32455:9;:23::i;:::-;32420:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;32420:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32416:75:::0;::::1;32296:3;;32260:250;;;-1:-1:-1::0;;;;;;32547:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;32543:105;;32586:11;::::0;-1:-1:-1;;;;;32586:11:0::1;:20;32607:4:::0;32613:15:::1;32607:4:::0;32613:9:::1;:15::i;:::-;32586:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32586:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32582:59:::0;::::1;4896:1;31748:903:::0;;;;;:::o;23963:218::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;24107:20:::1;::::0;24067:21:::1;::::0;-1:-1:-1;;;;;24107:20:0::1;24099:74;24169:3;24138:28:::0;;::::1;:34;;24099:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4996:1;23963:218:::0;:::o;14220:85::-;;;;:::o;29300:183::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;29398:15:::1;:25:::0;;;;29434:26:::1;:41:::0;29300:183::o;19847:364::-;-1:-1:-1;;;;;19967:19:0;;19947:4;19967:19;;;:11;:19;;;;;;;;19987:10;19967:31;;;;;;;;-1:-1:-1;;19967:46:0;19964:180;;20063:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20063:19:0;;-1:-1:-1;20063:19:0;;;:11;:19;;;;;20083:10;20063:31;;;;;;;;;;:69;;20099:6;;20063:35;:69::i;:::-;-1:-1:-1;;;;;20029:19:0;;;;;;:11;:19;;;;;;;;20049:10;20029:31;;;;;;;:103;19964:180;20163:40;20177:6;20185:9;20196:6;20163:13;:40::i;:::-;20156:47;;19847:364;;;;;;:::o;24594:250::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;24680:11:::1;:21:::0;;;::::1;-1:-1:-1::0;;;24680:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;24715:11:::0;::::1;;:30:::0;::::1;;;-1:-1:-1::0;24730:10:0::1;::::0;:15;24715:30:::1;24712:125;;;24774:12;24761:10;:25:::0;24801:10:::1;:24:::0;;;24712:125:::1;24594:250:::0;;:::o;29742:90::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;29808:6:::1;:16:::0;;-1:-1:-1;;;;;29808:16:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;29742:90::o;30625:149::-;30761:4;;30749;;-1:-1:-1;;;;;30749:4:0;;;30678:7;30739:15;;;:9;:15;;;;;;;30728:4;;;;;30718:15;;;;;30678:7;;30705:61;;30761:4;;30706:49;;30739:15;30706:28;;-1:-1:-1;;15860:54:0;30706:11;:28::i;:::-;:32;;:49::i;:::-;30705:55;;:61::i;:::-;30698:68;;30625:149;:::o;15652:19::-;;;;:::o;30078:183::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;30188:11:::1;::::0;:65:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;30188:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;25292:164:::0;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;25376:18:::1;:28:::0;;-1:-1:-1;;25376:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;25415:33:0::1;25376:28;;25415:33:::0;;;::::1;::::0;;;::::1;;::::0;;25292:164::o;29583:139::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;29646:12:::1;:36:::0;;-1:-1:-1;;;;;29646:36:0;;::::1;-1:-1:-1::0;;29646:36:0;;::::1;::::0;::::1;::::0;;:12:::1;29693:21:::0;:11:::1;:21;::::0;29583:139::o;5220:103::-;5275:4;5310:5;-1:-1:-1;;;;;5310:5:0;;;5299:16;;;;5220:103::o;18693:80::-;13662:1;18693:80;:::o;32655:739::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;32799:4:::1;32780:23:::0;::::1;32772:81;;;;-1:-1:-1::0;;;32772:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32900:25:::0;;::::1;::::0;32942:15:::1;32952:4:::0;32942:9:::1;:15::i;:::-;:23;;32934:63;;;::::0;;-1:-1:-1;;;32934:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33010:6;33006:247;33020:20:::0;;::::1;33006:247;;;33057:40;33072:4;33077:9;;33087:1;33077:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;33077:12:0::1;33090:6;33057:14;:40::i;:::-;;33112:16;:30;33129:9;;33139:1;33129:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;33129:12:0::1;33112:30:::0;;-1:-1:-1;33112:30:0;::::1;::::0;;;;;;-1:-1:-1;33112:30:0;;::::1;;33108:138;;33163:11;::::0;-1:-1:-1;;;;;33163:11:0::1;:20;33184:9:::0;;33194:1;33184:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33184:12:0::1;33198:23;33208:9;;33218:1;33208:12;;;;;;33198:23;33163:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;33163:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;33159:75:::0;::::1;33042:3;;33006:247;;;-1:-1:-1::0;;;;;;33290:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;33286:105;;33329:11;::::0;-1:-1:-1;;;;;33329:11:0::1;:20;33350:4:::0;33356:15:::1;33350:4:::0;33356:9:::1;:15::i;:::-;33329:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;33329:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;33325:59;;;;30441:174:::0;30526:12;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;30558:49:::1;::::0;;;;;30588:10:::1;30558:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;30558:29:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;-1:-1:-1;30558:29:0;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30558:49:0;;30441:174;-1:-1:-1;;;30441:174:0:o;15678:27::-;;;;:::o;13836:44::-;;;;;;;;;;;;;;;:::o;13998:49::-;;;;;;;;;;;;;;;:::o;24201:215::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;24312:21:::1;24352:10;24344:64;24404:3;24373:28:::0;;::::1;:34;::::0;14834:31;;;-1:-1:-1;;;;;14834:31:0;;:::o;13942:49::-;;;;;;;;;;;;;;;:::o;28108:130::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28197:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;28197:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28108:130::o;19559:116::-;19614:4;19638:29;19646:7;-1:-1:-1;;19638:7:0;:29::i;24965:99::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;25033:13:::1;:23:::0;;-1:-1:-1;;25033:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24965:99::o;31247:108::-;31298:7;31325:22;31342:4;;31325:12;;:16;;:22;;;;:::i;15000:37::-;;;;;;:::o;27840:120::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27924:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27924:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27840:120::o;14179:34::-;;;;:::o;14138:::-;;;;:::o;29951:111::-;30004:7;30031:23;30049:4;;30031:13;;:17;;:23;;;;:::i;15146:30::-;;;;;;:::o;19041:129::-;19157:4;;-1:-1:-1;;;;;19134:18:0;;19107:7;19134:18;;;:9;:18;;;;;;19107:7;;19134:28;;:18;:22;:28::i;15044:39::-;;;;;;;;;:::o;29497:74::-;29551:4;;;;;;;;;-1:-1:-1;;;;;29551:4:0;-1:-1:-1;;;;;29539:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29497:74::o;16016:56::-;;;;:::o;16475:811::-;15349:6;;16553:7;;15349:6;;;-1:-1:-1;;;;;15349:6:0;15335:10;:20;;:43;;;15359:19;15367:10;15359:7;:19::i;:::-;15327:52;;;;;;16573:12:::1;:14:::0;;::::1;;::::0;;16601:10;16598:61:::1;;16635:12;;16627:20;;16598:61;16680:6;::::0;::::1;::::0;::::1;;;16679:7;16671:29;;;::::0;;-1:-1:-1;;;16671:29:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16717:16:::0;16713:118:::1;;16772:12;::::0;16755:30:::1;::::0;;;;;;16765:5;;16755:30:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;16807:12:0::1;::::0;16800:19:::1;;16713:118;16861:1;16847:11;:15;16843:188;;;16894:12;::::0;:39:::1;::::0;16919:12:::1;::::0;;::::1;16894:16;:39::i;:::-;16879:12;:54:::0;16843:188:::1;;;16981:12;::::0;:38:::1;::::0;17006:11;16981:16:::1;:38::i;:::-;16966:12;:53:::0;16843:188:::1;17047:12;::::0;17062:10:::1;-1:-1:-1::0;17043:83:0::1;;;17104:10;17089:12;:25:::0;17043:83:::1;17157:12;::::0;17145:25:::1;::::0;15527:22;-1:-1:-1;;15875:38:0::1;::::0;17145:25:::1;17138:4;:32:::0;17181:12:::1;::::0;:19:::1;::::0;;;;;;;-1:-1:-1;;;;;17181:12:0;;::::1;::::0;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;:12:::1;::::0;:19;;;;;;;;:12;;:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17235:12:0::1;::::0;17218:30:::1;::::0;;;;;;17228:5;;-1:-1:-1;17218:30:0::1;::::0;-1:-1:-1;17218:30:0;;;;::::1;::::0;;::::1;-1:-1:-1::0;17266:12:0::1;::::0;16475:811;;;;:::o;15956:53::-;;;;:::o;14097:34::-;;;;:::o;29846:85::-;29917:6;;;;;;;29916:7;;29846:85::o;18955:78::-;19007:7;19025:5;-1:-1:-1;;;;;19025:5:0;18955:78;:::o;14357:32::-;;;;;;:::o;13887:48::-;;;;;;;;;;;;;;;:::o;25072:210::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;25174:9:::1;25169:106;25185:20:::0;;::::1;25169:106;;;25257:6;25227:13;:27;25241:9;;25251:1;25241:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;25241:12:0::1;25227:27:::0;;-1:-1:-1;25227:27:0;::::1;::::0;;;;;;-1:-1:-1;25227:27:0;:36;;-1:-1:-1;;25227:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;25207:3:0::1;25169:106;;16081:372:::0;15349:6;;16178:17;;15349:6;;;-1:-1:-1;;;;;15349:6:0;15335:10;:20;;:43;;;15359:19;15367:10;15359:7;:19::i;:::-;15327:52;;;;;;16212:6:::1;16209:227;;;16246:71;16253:1;16255:61;-1:-1:-1::0;;16259:48:0::1;16286:20;16259:22;16276:4;16259:12;;:16;;:22;;;;:::i;:48::-;16255:57:::0;::::1;:61::i;:::-;16246:6;:71::i;:::-;16234:83;;16209:227;;;16361:63;16368:1;16374:48;16401:20;16374:22;16391:4;16374:12;;:16;;:22;;;;:::i;18779:84::-:0;18853:7;;;;;;;;;;;;;;;;;18779:84;:::o;14056:34::-;;;;:::o;24852:105::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;24924:10:::1;:25:::0;24852:105::o;30281:136::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;30371:6:::1;30365:3;:12;30357:21;;;::::0;::::1;;30389:14;:20:::0;30281:136::o;14808:19::-;;;-1:-1:-1;;;;;14808:19:0;;:::o;19683:156::-;19763:4;19787:44;19801:10;19813:9;19824:6;19787:13;:44::i;31119:114::-;31173:7;31200:25;31220:4;;31200:15;;:19;;:25;;;;:::i;5013:94::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5073:19:0::1;;::::0;;;5095:4:::1;5073:19;::::0;;;;;;;:26;;-1:-1:-1;;5073:26:0::1;::::0;;::::1;::::0;;5013:94::o;31546:170::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;31661:47:::1;31683:24:::0;31661:17:::1;31673:4;15527:22:::0;-1:-1:-1;;15875:38:0::1;::::0;31661:47:::1;31646:12;:62:::0;-1:-1:-1;31546:170:0:o;14487:29::-;;;;:::o;14915:38::-;;;-1:-1:-1;;;;;14915:38:0;;:::o;14570:36::-;;;-1:-1:-1;;;;;14570:36:0;;:::o;30784:167::-;30852:7;30879:64;30920:22;:20;:22::i;:::-;30902:4;;30879:36;;30892:22;;30912:1;;30892:15;;-1:-1:-1;;;;;30902:4:0;30892:9;:15::i;:22::-;30879:8;;:12;:36::i;28772:297::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;28917:21:::1;:46:::0;;-1:-1:-1;;;;;28917:46:0;;::::1;-1:-1:-1::0;;28917:46:0;;::::1;;::::0;;;28974:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;29029:14:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;28772:297::o;14655:29::-;;;-1:-1:-1;;;;;14655:29:0;;:::o;19182:133::-;-1:-1:-1;;;;;19284:19:0;;;19266:7;19284:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19182:133::o;29079:211::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;29186:11:::1;:22:::0;;-1:-1:-1;;29186:22:0::1;::::0;::::1;;;::::0;;29235:47:::1;29259:22:::0;29235:19:::1;29247:6;15527:22:::0;-1:-1:-1;;15875:38:0::1;::::0;29235:47:::1;29219:13;:63:::0;-1:-1:-1;;29079:211:0:o;14613:35::-;;;-1:-1:-1;;;;;14613:35:0;;:::o;24436:121::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;24514:14:::1;:27:::0;24436:121::o;15266:21::-;;;;;;-1:-1:-1;;;;;15266:21:0;;:::o;5115:97::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5177:19:0::1;5199:5;5177:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;5177:27:0::1;::::0;;5115:97::o;5446:173::-;4864:19;4872:10;4864:7;:19::i;:::-;4856:38;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;-1:-1:-1;;;4856:38:0;;;;;;;;;;;;;;;5522:5:::1;:11:::0;;-1:-1:-1;;5522:11:0::1;-1:-1:-1::0;;;;;5522:11:0;::::1;::::0;;::::1;::::0;;5544:19;;;-1:-1:-1;5544:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5544:26:0::1;::::0;;::::1;::::0;;;5586:25;;;;;;;::::1;::::0;;;;;;;;;::::1;5446:173:::0;:::o;27481:347::-;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27578:23:0;::::1;27596:4;27578:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;27615:4:0::1;::::0;-1:-1:-1;;;;;27605:14:0;;::::1;27615:4:::0;::::1;27605:14;;27578:41;27570:50;;;::::0;::::1;;-1:-1:-1::0;;;;;27631:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;27631:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;27675:146:::1;;27700:11;::::0;:31:::1;::::0;;;;;-1:-1:-1;;;;;27700:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27675:146;;;27762:11;::::0;-1:-1:-1;;;;;27762:11:0::1;:20;27783:6:::0;27791:17:::1;27783:6:::0;27791:9:::1;:17::i;:::-;27762:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;27762:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;27972:128:::0;4954:24;4967:10;4954:12;:24::i;:::-;4946:48;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;-1:-1:-1;;;4946:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28060:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;28060:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27972:128::o;14777:24::-;;;-1:-1:-1;;;;;14777:24:0;;:::o;14451:29::-;;;;:::o;14396:46::-;;;;;;;;;;;;;;;:::o;5331:107::-;-1:-1:-1;;;;;5411:19:0;5387:4;5411:19;;;:14;:19;;;;;;;;;5331:107::o;14525:36::-;;;;:::o;14875:31::-;;;-1:-1:-1;;;14875:31:0;;;;;:::o;2256:132::-;2314:7;2341:39;2345:1;2348;2341:39;;;;;;;;;;;;;;;;;:3;:39::i;2000:250::-;2058:7;2082:6;2078:47;;-1:-1:-1;2112:1:0;2105:8;;2078:47;2149:5;;;2153:1;2149;:5;:1;2173:5;;;;;:10;2165:56;;;;-1:-1:-1;;;2165:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:181;1531:7;1563:5;;;1587:6;;;;1579:46;;;;;-1:-1:-1;;;1579:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;22415:388;22508:4;22525:15;22543:16;22554:4;;22543:6;:10;;:16;;;;:::i;:::-;22525:34;;22590:54;22612:7;22590:54;;;;;;;;;;;;;;;;;:9;:17;22600:6;-1:-1:-1;;;;;22590:17:0;-1:-1:-1;;;;;22590:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;22570:17:0;;;;;;;:9;:17;;;;;;:74;;;;22678:20;;;;;;;:33;;22703:7;22678:24;:33::i;:::-;-1:-1:-1;;;;;22655:20:0;;;;;;;:9;:20;;;;;:56;;;;22767:4;;22727:46;;;;;;22755:17;;:7;;:11;:17::i;:::-;22727:46;;;;;;;;;;;;;;;-1:-1:-1;22791:4:0;;22415:388;-1:-1:-1;;;;22415:388:0:o;1802:192::-;1888:7;1924:12;1916:6;;;;1908:29;;;;-1:-1:-1;;;1908:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1960:5:0;;;1802:192::o;20219:2162::-;20331:6;;20311:4;;20331:6;;;;;20328:63;;;20347:41;20362:6;20370:9;20381:6;20347:14;:41::i;:::-;20340:48;;;;20328:63;-1:-1:-1;;;;;20407:22:0;;;;;;:14;:22;;;;;;;;20406:23;:53;;;;-1:-1:-1;;;;;;20434:25:0;;;;;;:14;:25;;;;;;;;20433:26;20406:53;20403:127;;;20483:11;;-1:-1:-1;;;20483:11:0;;;;20475:43;;;;;-1:-1:-1;;;20475:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20542:15;20560:16;20571:4;;20560:6;:10;;:16;;;;:::i;:::-;-1:-1:-1;;;;;20594:22:0;;;;;;:14;:22;;;;;;20542:34;;-1:-1:-1;20594:22:0;;20593:23;:53;;;;-1:-1:-1;;;;;;20620:26:0;;20641:4;20620:26;;20593:53;:84;;;;-1:-1:-1;20672:4:0;;-1:-1:-1;;;;;20651:26:0;;;20672:4;;20651:26;;20593:84;:105;;;;-1:-1:-1;20694:4:0;;-1:-1:-1;;;;;20681:17:0;;;20694:4;;20681:17;;20593:105;:142;;;;-1:-1:-1;20715:20:0;;-1:-1:-1;;;;;20702:33:0;;;20715:20;;20702:33;;20593:142;:173;;;;-1:-1:-1;20752:14:0;;-1:-1:-1;;;;;20739:27:0;;;20752:14;;20739:27;;20593:173;:212;;;;-1:-1:-1;20784:21:0;;-1:-1:-1;;;;;20771:34:0;;;20784:21;;20771:34;;20593:212;20589:405;;;20821:18;20842:20;20852:9;20842;:20::i;:::-;20821:41;;20911:15;;20899:7;20886:10;:20;20885:41;;20877:115;;;;-1:-1:-1;;;20877:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20589:405;;21028:4;;-1:-1:-1;;;;;21018:14:0;;;21028:4;;21018:14;:49;;;;-1:-1:-1;21049:18:0;;;;21018:49;:94;;;;-1:-1:-1;;;;;;21085:27:0;;;;;;:16;:27;;;;;;;;21084:28;21018:94;21014:281;;;-1:-1:-1;;;;;21137:24:0;;;;;;:13;:24;;;;;;21164:15;-1:-1:-1;21129:73:0;;;;;-1:-1:-1;;;21129:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21262:21;;;-1:-1:-1;;;;;21217:24:0;;;;;;:13;:24;;;;;;;21262:21;;;;;;21244:15;:39;21217:66;;21014:281;21332:13;;;;21329:122;;;-1:-1:-1;;;;;21370:21:0;;;;;;:13;:21;;;;;;;;21369:22;:51;;;;-1:-1:-1;;;;;;21396:24:0;;;;;;:13;:24;;;;;;;;21395:25;21369:51;21361:74;;;;;-1:-1:-1;;;21361:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21504:29;21517:6;21525:7;21504:12;:29::i;:::-;21549:16;:14;:16::i;:::-;21546:35;;;21568:10;:8;:10::i;:::-;21640:54;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21640:17:0;;-1:-1:-1;21640:17:0;;;:9;:17;;;;;;;;:54;;21662:7;;21640:21;:54::i;:::-;-1:-1:-1;;;;;21620:17:0;;;;;;:9;:17;;;;;:74;;;;21734:21;21630:6;21734:13;:21::i;:::-;21733:22;:51;;;;21760:24;21774:9;21760:13;:24::i;:::-;21759:25;21733:51;21732:110;;21836:4;;21798:44;;21806:6;;21814:7;;-1:-1:-1;;;;;21823:17:0;;;21836:4;;21823:17;21798:7;:44::i;:::-;21732:110;;;21788:7;21732:110;-1:-1:-1;;;;;21876:20:0;;;;;;:9;:20;;;;;;21707:135;;-1:-1:-1;21876:40:0;;21707:135;21876:24;:40::i;:::-;-1:-1:-1;;;;;21853:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;21962:24;;;;;:16;:24;;;;;;;21958:119;;22007:11;;-1:-1:-1;;;;;22007:11:0;:20;22028:6;22036:17;22028:6;22036:9;:17::i;:::-;22007:47;;;;;;;;;;;;;-1:-1:-1;;;;;22007:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22003:63;;-1:-1:-1;;;;;22093:27:0;;;;;;:16;:27;;;;;;;;22089:129;;22141:11;;-1:-1:-1;;;;;22141:11:0;:20;22162:9;22173:20;22162:9;22173;:20::i;:::-;22141:53;;;;;;;;;;;;;-1:-1:-1;;;;;22141:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22137:69;;22234:11;;22254:14;;22234:35;;;;;;;;;;;;;;-1:-1:-1;;;;;22234:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;22230:51;22315:9;-1:-1:-1;;;;;22298:53:0;22307:6;-1:-1:-1;;;;;22298:53:0;;22326:24;22345:4;;22326:14;:18;;:24;;;;:::i;:::-;22298:53;;;;;;;;;;;;;;;-1:-1:-1;22369:4:0;;20219:2162;-1:-1:-1;;;;;20219:2162:0:o;1660:136::-;1718:7;1745:43;1749:1;1752;1745:43;;;;;;;;;;;;;;;;;:3;:43::i;2742:239::-;2798:6;2828:5;;;-1:-1:-1;;;2854:15:0;;;;:55;;-1:-1:-1;;;;2874:14:0;;;2894;;;2873:36;;2854:55;2846:64;;;;;;2930:6;;;2929:24;;;2951:1;2946;2942;:5;;;;;;:10;2929:24;2921:33;;;;;2394:189;2480:7;2515:12;2508:5;2500:28;;;;-1:-1:-1;;;2500:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2539:9;2555:1;2551;:5;;;;;;;2394:189;-1:-1:-1;;;;;2394:189:0:o;22811:168::-;22910:12;;22899:7;:23;;:50;;;-1:-1:-1;;;;;;22926:23:0;;;;;;:15;:23;;;;;;;;22899:50;22891:80;;;;;-1:-1:-1;;;22891:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;23756:197;23843:4;;23805;;-1:-1:-1;;;;;23843:4:0;23829:10;:18;;;;:38;;-1:-1:-1;23861:6:0;;;;;;;23860:7;23829:38;:62;;;;-1:-1:-1;23880:11:0;;;;23829:62;:116;;;;-1:-1:-1;;23932:13:0;;23922:4;23904:24;;;;:9;:24;;;;;;:41;;;23756:197::o;25464:1997::-;15223:6;:13;;-1:-1:-1;;15223:13:0;;;;;25559:15:::1;::::0;25576:26:::1;::::0;15223:13;;25543:60:::1;::::0;:15:::1;:60::i;:::-;:79;;25610:12;;25543:79;;;25606:1;25543:79;25513:109;;25633:20;25656:23;25674:4;;25656:13;;:17;;:23;;;;:::i;:::-;25633:46;;25692:23;25718:58;25774:1;25718:51;25749:19;25718:26;25735:8;;25718:12;:16;;:26;;;;:::i;:58::-;25692:84:::0;-1:-1:-1;25787:20:0::1;25810:33;:12:::0;25692:84;25810:16:::1;:33::i;:::-;25880:16;::::0;;25894:1:::1;25880:16:::0;;;;;::::1;::::0;;25787:56;;-1:-1:-1;25856:21:0::1;::::0;25880:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25880:16:0::1;25856:40;;25925:4;25907;25912:1;25907:7;;;;;;;;-1:-1:-1::0;;;;;25907:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25951:4:::1;::::0;25941:7;;25951:4;::::1;::::0;25941;;25951;;25941:7;::::1;;;;;-1:-1:-1::0;;;;;25941:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;26026:6:::1;::::0;:188:::1;::::0;;;;::::1;::::0;::::1;::::0;;;25968:21:::1;26026:188:::0;;;;;;26168:4:::1;26026:188:::0;;;;;;26188:15:::1;26026:188:::0;;;;;;;;;;;;;;;;;;;;;25992:21:::1;::::0;26026:6;;;::::1;::::0;:57:::1;::::0;26098:12;;25968:21;;26141:4;;26026:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;25968:21;26026:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26227:17;26247:40;26273:13;26247:21;:25;;:40;;;;:::i;:::-;26227:60:::0;-1:-1:-1;26300:19:0::1;26322:40;26335:26;:19:::0;26359:1:::1;26335:23;:26::i;:::-;26322:8;::::0;;:12:::1;:40::i;:::-;26300:62:::0;-1:-1:-1;26383:26:0::1;26412:58;26468:1;26412:51;26300:62:::0;26412:51;:9;26426:19;26412:13:::1;:34::i;:58::-;26383:87;;26481:27;26511:45;26544:11;26511:28;26525:13;;26511:9;:13;;:28;;;;:::i;:45::-;26481:75;;26567:26;26596:44;26628:11;26596:27;26610:12;;26596:9;:13;;:27;;;;:::i;:44::-;26567:73;;26651:20;26674:38;26700:11;26674:21;26688:6;;26674:9;:13;;:21;;;;:::i;:38::-;26651:61;;26729:11;;;;;;;;;-1:-1:-1::0;;;;;26729:11:0::1;-1:-1:-1::0;;;;;26729:19:0::1;;26756;26729:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;26725:65:::0;26829:20:::1;::::0;26821:77:::1;::::0;26801:15:::1;::::0;-1:-1:-1;;;;;26829:20:0::1;::::0;26888:5:::1;::::0;26863:18;;26801:15;26821:77;26801:15;26821:77;26863:18;26829:20;26888:5;26821:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;26933:14:0::1;::::0;26925:65:::1;::::0;26800:98;;-1:-1:-1;;;;;;26933:14:0::1;::::0;26980:5:::1;::::0;26961:12;;26933:14:::1;26925:65:::0;26933:14;26925:65;26961:12;26933:14;26980:5;26925:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;27064:5:0::1;::::0;-1:-1:-1;;27085:19:0;;;-1:-1:-1;27082:372:0::1;;27120:6;::::0;27294:21:::1;::::0;27120:244:::1;::::0;;;;;27196:4:::1;27120:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;27294:21:0;;::::1;27120:244:::0;;;;27334:15:::1;27120:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;27150:18;;27120:244;;;;;::::1;::::0;;;;;;;;;27150:18;27120:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;27436:4:0::1;::::0;27384:58:::1;::::0;27396:18;;27416:25:::1;::::0;:15;;:19:::1;:25::i;:::-;27384:58;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;27082:372;-1:-1:-1::0;;15241:6:0;:14;;-1:-1:-1;;15241:14:0;;;-1:-1:-1;;;;;;;;;;;25464:1997:0:o;22987:114::-;-1:-1:-1;;;;;23074:19:0;23049:4;23074:19;;;:11;:19;;;;;;;;23073:20;;22987:114::o;23111:633::-;23192:7;23243:3;23257:64;;;;-1:-1:-1;23295:14:0;;23257:64;23334:17;23354:63;23406:10;23354:47;23392:8;;23354:33;23366:14;;23383:3;23366:20;23354:7;:11;;:33;;;;:::i;:63::-;23334:83;;23434:6;23433:7;:51;;;;;23472:12;23458:10;;23445;;:23;23444:40;23433:51;23430:118;;;23512:24;23533:2;23512:16;:7;23524:3;23512:11;:16::i;:24::-;23500:36;;23430:118;23605:4;23587:24;;;;:9;:24;;;;;;:39;;23616:9;23587:28;:39::i;:::-;23578:4;23560:24;;;;:9;:24;;;;;:66;;;;23688:4;;-1:-1:-1;;;;;23642:52:0;;;;;23674:19;;:9;;:13;:19::i;:::-;23642:52;;;;;;;;;;;;;;;23714:22;:7;23726:9;23714:11;:22::i;:::-;23707:29;23111:633;-1:-1:-1;;;;;;23111:633:0:o

Swarm Source

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