Contract 0x70756620ab567b57335f29d372297a0832ea462c

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0xa585fb0522bc4c5dff311a4a565f29ed08199acd486b6ffa574a001694e131ab84279372021-06-19 8:42:251 hr 39 mins ago0x42f539b32560edee4a439d99b96766d64bc46536 IN  0x70756620ab567b57335f29d372297a0832ea462c0.020189378165306 BNB0.000957635
0x9f4d268e2ec249bd2bd1b6b593ce059d5a95551b1079f10826e46b17afb06b7c84021622021-06-18 11:03:2023 hrs 18 mins ago0x50f7c215de83cbdb84f1999cfbfde106ec37de64 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0006230415
0x8cc026ea19ac1b0cafcd6c2f6b1204dfa8d3b957263d438d3be4b7988ce73cb583925572021-06-18 2:58:421 day 7 hrs ago0x55b4ec8f7726531485033a6934b669fa10a611e5 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0005963481
0xbb2d4d7a69634ff6c5e77c7316df6ead8ed4d36a842e3d3b2536940265f20df183704582021-06-17 8:22:112 days 1 hr ago0x2b1d1f740d9cc04d902f1ed1e846e1d830df4a03 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0006116226
0x5f24da9e386320e4e7796dcbb7e0f0838af21749123ae2ce639ccd56345b0f5483704122021-06-17 8:19:422 days 2 hrs ago0x2b1d1f740d9cc04d902f1ed1e846e1d830df4a03 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0009451575
0xd35088a9299fa7cd1627b130fa944729efefa15fcde0704aad3fdb73f057966583703562021-06-17 8:16:492 days 2 hrs ago0x2b1d1f740d9cc04d902f1ed1e846e1d830df4a03 IN  0x70756620ab567b57335f29d372297a0832ea462c2.491006871418534 BNB0.0009417762
0x390171732c4976312a61f6c8a24ebc52034360326c3b4a610de8b30059db8cd583703132021-06-17 8:14:402 days 2 hrs ago0x2b1d1f740d9cc04d902f1ed1e846e1d830df4a03 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0009423015
0x66042981e481721cf48fd5c1829e402e2e014b8bbbbf78096d2d4b3714845c8c83683272021-06-17 6:33:552 days 3 hrs ago0x3a364ed2eaf40edb60b527618830f3b45b86b276 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.000679945
0x42bd25f6baed2f2b63f359a3cb0b27fd7aab5a4c930bd79aa547e437d4c0c05d83157762021-06-15 10:23:143 days 23 hrs ago0xf7a02e65a3536deca8d60bbf3b07cd0f0aeb112a IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00059951
0xe32e0ea6d1576cf05e431823719b1efad2afd1f2f518fdeb9578a17847a6fd5783102712021-06-15 5:42:234 days 4 hrs ago0x371782a7e733211a5c971441574731f89a9c48d4 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.000786355
0x32fbf1a9028dba98396eacbdadae7d002e52de3de158fb626eba8151a3eebb6983075392021-06-15 3:25:094 days 6 hrs ago0xb58037305e41de188f03c2155a75d1fbe2b17d25 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00061812
0x82236a9cbf589389f7f63950a7a54d1ab497e1286f548abed37096e6b5157e8a83075122021-06-15 3:23:484 days 6 hrs ago0xb58037305e41de188f03c2155a75d1fbe2b17d25 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0010461936
0xcc81fadc91a23e81438277d82c8f04649700c6d6f6e987046cd290e36dca2a2883060192021-06-15 2:09:024 days 8 hrs ago0x5d11dad5373511a625b1d99e219ec6711932f3b5 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00059951
0x2c4c107266ed711d3eccf79bfa8a0c6a208d0dc308ddc1c3adad2cac782543ca82823392021-06-14 6:09:175 days 4 hrs ago0x4c05d1723046993fb5a7d79f866c2914f9ea8e41 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00110056
0x19ea792b0097f26d69112bb1be88e92670c2275445af951f3412f3af674332da82691692021-06-13 19:01:005 days 15 hrs ago0x7713faea02e83b65f26943189f7807847283b97d IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00052451
0x35379f1c0edbde97316ad9aa94cbe0fa348046b1aeabb9389071e1d76357eaab82657092021-06-13 16:04:425 days 18 hrs ago0x3e0c77c13440ba4d95c5865af4f3708336b9fd62 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0010959084
0x3cd3b1139aaf6ac5681d7e295c8fe75179a0405fa16f0a1c679844604d6a5e2082553492021-06-13 7:22:046 days 3 hrs ago0x56f1f7aac45ff924d7612e85ea9b92ee108a69fc IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.000584775
0x6501831999b25ac6be4d5b526c118b866f9c88eaca36261af1eaedaa7139d38e82542652021-06-13 6:26:566 days 3 hrs ago0x726d219e4fda4f1f11fe8b1a576e105d626b171a IN  0x70756620ab567b57335f29d372297a0832ea462c0.01 BNB0.01456753
0x41697f8e2d363dd2682779491509e2ec5354e737da3bd72e28cfeef271427e1e82529232021-06-13 5:19:426 days 5 hrs ago0x726d219e4fda4f1f11fe8b1a576e105d626b171a IN  0x70756620ab567b57335f29d372297a0832ea462c0.01 BNB0.0145521
0x5b203954c9b83e5d24496c3612f8d7866687ebd278af0740f11adb689d52131d82339412021-06-12 13:23:326 days 20 hrs ago0x7713faea02e83b65f26943189f7807847283b97d IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00052451
0xd62e662d25c9f021f7bca32b51ddffd6a0ec2a4882d71461ae515a20b897b94482278772021-06-12 8:19:127 days 2 hrs ago0xe73bc5380b9913eff01de26fb6d3f01401b6cb17 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.0006728481
0x08a27b5d2857c84d6ae566ec7a7e000fbcee8df1114718537f30aec9615fef3b82267512021-06-12 7:22:527 days 2 hrs ago0x716984660b963ebda4329e468228cb7ceea5d1b6 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.000584775
0xef96aa75b5c5ece0fa5b7f4f71d698de218cc99394c9c0e869c245e5ce6658fb82267402021-06-12 7:22:197 days 2 hrs ago0x716984660b963ebda4329e468228cb7ceea5d1b6 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00110068
0x5837fb96f5739ad3680aea552762305b6108b98f3cdab3319cb0a8e84f0d9e5582267212021-06-12 7:21:227 days 3 hrs ago0x716984660b963ebda4329e468228cb7ceea5d1b6 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.001168345
0xad12d1c8880febce8ea7cb2304d8040f8bfc2bb75d7c75a3f616dd55b09897c182191472021-06-12 1:01:337 days 9 hrs ago0x6d94ef02838e77eee131fcd8e6da55cf2a0c3a44 IN  0x70756620ab567b57335f29d372297a0832ea462c0 BNB0.00076775175
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa585fb0522bc4c5dff311a4a565f29ed08199acd486b6ffa574a001694e131ab84279372021-06-19 8:42:251 hr 39 mins ago 0x70756620ab567b57335f29d372297a0832ea462c Binance: WBNB Token0.020189378165306837 BNB
0x8cc026ea19ac1b0cafcd6c2f6b1204dfa8d3b957263d438d3be4b7988ce73cb583925572021-06-18 2:58:421 day 7 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x55b4ec8f7726531485033a6934b669fa10a611e50.005065968674262011 BNB
0x8cc026ea19ac1b0cafcd6c2f6b1204dfa8d3b957263d438d3be4b7988ce73cb583925572021-06-18 2:58:421 day 7 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.005065968674262011 BNB
0x5f24da9e386320e4e7796dcbb7e0f0838af21749123ae2ce639ccd56345b0f5483704122021-06-17 8:19:422 days 2 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x2b1d1f740d9cc04d902f1ed1e846e1d830df4a032.491006871418534974 BNB
0x5f24da9e386320e4e7796dcbb7e0f0838af21749123ae2ce639ccd56345b0f5483704122021-06-17 8:19:422 days 2 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c2.491006871418534974 BNB
0xd35088a9299fa7cd1627b130fa944729efefa15fcde0704aad3fdb73f057966583703562021-06-17 8:16:492 days 2 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c Binance: WBNB Token2.491006871418534975 BNB
0x35379f1c0edbde97316ad9aa94cbe0fa348046b1aeabb9389071e1d76357eaab82657092021-06-13 16:04:425 days 18 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x3e0c77c13440ba4d95c5865af4f3708336b9fd620.003791188223409507 BNB
0x35379f1c0edbde97316ad9aa94cbe0fa348046b1aeabb9389071e1d76357eaab82657092021-06-13 16:04:425 days 18 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.003791188223409507 BNB
0x3cd3b1139aaf6ac5681d7e295c8fe75179a0405fa16f0a1c679844604d6a5e2082553492021-06-13 7:22:046 days 3 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x56f1f7aac45ff924d7612e85ea9b92ee108a69fc0.605839630293121567 BNB
0x3cd3b1139aaf6ac5681d7e295c8fe75179a0405fa16f0a1c679844604d6a5e2082553492021-06-13 7:22:046 days 3 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.605839630293121567 BNB
0x6501831999b25ac6be4d5b526c118b866f9c88eaca36261af1eaedaa7139d38e82542652021-06-13 6:26:566 days 3 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c Binance: WBNB Token0.01 BNB
0x41697f8e2d363dd2682779491509e2ec5354e737da3bd72e28cfeef271427e1e82529232021-06-13 5:19:426 days 5 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c Binance: WBNB Token0.01 BNB
0xd62e662d25c9f021f7bca32b51ddffd6a0ec2a4882d71461ae515a20b897b94482278772021-06-12 8:19:127 days 2 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0xe73bc5380b9913eff01de26fb6d3f01401b6cb170.376132629058129464 BNB
0xd62e662d25c9f021f7bca32b51ddffd6a0ec2a4882d71461ae515a20b897b94482278772021-06-12 8:19:127 days 2 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.376132629058129464 BNB
0x08a27b5d2857c84d6ae566ec7a7e000fbcee8df1114718537f30aec9615fef3b82267512021-06-12 7:22:527 days 2 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x716984660b963ebda4329e468228cb7ceea5d1b63.197323377816318653 BNB
0x08a27b5d2857c84d6ae566ec7a7e000fbcee8df1114718537f30aec9615fef3b82267512021-06-12 7:22:527 days 2 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c3.197323377816318653 BNB
0x5837fb96f5739ad3680aea552762305b6108b98f3cdab3319cb0a8e84f0d9e5582267212021-06-12 7:21:227 days 3 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x716984660b963ebda4329e468228cb7ceea5d1b60.54307970456449939 BNB
0x5837fb96f5739ad3680aea552762305b6108b98f3cdab3319cb0a8e84f0d9e5582267212021-06-12 7:21:227 days 3 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.54307970456449939 BNB
0x98db4d9fa51b0b52875fddff0db9f31ac722ceb347995412bdce4cddbfad146682165052021-06-11 22:49:277 days 11 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x0a5045e68b99ec08ffc562f08611b1fcc0b7c06f0.058716960930550973 BNB
0x98db4d9fa51b0b52875fddff0db9f31ac722ceb347995412bdce4cddbfad146682165052021-06-11 22:49:277 days 11 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.058716960930550973 BNB
0xfca1b6b5c775c9eff18b34c23cb98e31f300fb97301f0f95477eade04495b18682067932021-06-11 14:40:337 days 19 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0x341df94887f453d1213a508f273b0d2736bf4bfc0.013809414226704182 BNB
0xfca1b6b5c775c9eff18b34c23cb98e31f300fb97301f0f95477eade04495b18682067932021-06-11 14:40:337 days 19 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.013809414226704182 BNB
0xcdf932015aacaab09e70c0bd1a7710c82dcfbae516a03fd54933fb40103f6e3e81767512021-06-10 13:32:198 days 20 hrs ago 0x70756620ab567b57335f29d372297a0832ea462c0xb7c0138cf6885df39f87c28095df0863713bc85c0.066923011427204561 BNB
0xcdf932015aacaab09e70c0bd1a7710c82dcfbae516a03fd54933fb40103f6e3e81767512021-06-10 13:32:198 days 20 hrs ago Binance: WBNB Token 0x70756620ab567b57335f29d372297a0832ea462c0.066923011427204561 BNB
0x236eebefa3ad6fa2c78d270cb635fd39aee61a2b898f3f7a8a4ac1f8df5d8ac781709802021-06-10 8:43:259 days 1 hr ago 0x70756620ab567b57335f29d372297a0832ea462c0xe2e2b858bacfff887a54027307237ecb096d584b0.260246733887806927 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Router02

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// File: ../inx-core/contracts/interfaces/IUniswapV2Factory.sol

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;

    function setFeeWeights(uint8[2] calldata weights) external;
    function getFeeWeights() view external returns(uint8[2] memory weights);

    function getCodeHash() external pure returns (bytes32);

}

// File: ../inx-lib/contracts/libraries/TransferHelper.sol

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

pragma solidity >=0.6.0;

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

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

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

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

// File: contracts/interfaces/IPlayerBook.sol

pragma solidity ^0.6.0;


interface IPlayerBook {
    function settleReward( address from,uint256 amount ) external returns (uint256);
    function bindRefer( address from,string calldata  affCode )  external returns (bool);
    function hasRefer(address from) external returns(bool);

}

// File: contracts/interfaces/IUniswapV2Router01.sol

pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityInvter(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        address to,
        string calldata inviter,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    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 addLiquidityETHInvter(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        string calldata inviter,
        uint deadline
    ) external  payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokensInviter(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        string calldata inviter,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokensInviter(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        string calldata inviter,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

// File: contracts/interfaces/IUniswapV2Router02.sol

pragma solidity >=0.6.2;


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

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

// File: ../inx-core/contracts/interfaces/IUniswapV2Pair.sol

pragma solidity >=0.5.0;

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address _token0, address _token1,string calldata _pairName,string calldata _pairSymbol) external;
    function setFeeRatio(uint16 _feeRatio) external;
    function getFeeRatio() view external returns(uint16);
    function unlockedFeeRatio() view external returns(uint);
}

// File: contracts/libraries/UniswapV2Library.sol

pragma solidity >=0.5.0;


//import "./SafeMath.sol";

library UniswapV2Library {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'1df2e5185870b0dc9a4ce44d5fb609a457f09e0d17d1766bb728fe794fec8076' // init code hash
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // fetches and sorts the getFeeRatio for a pair
    function getFeeRatio(address factory, address tokenA, address tokenB) internal view returns (uint16) {
        return IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getFeeRatio();
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(996);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOutWithFee(uint amountIn, uint reserveIn, uint reserveOut,uint16 feeRatio) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(1000-feeRatio);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(996);
        amountIn = (numerator / denominator).add(1);
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountInWithFee(uint amountOut, uint reserveIn, uint reserveOut,uint16 feeRatio) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(1000-feeRatio);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            uint16 feeRatio = getFeeRatio(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOutWithFee(amounts[i], reserveIn, reserveOut,feeRatio);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            uint16 feeRatio = getFeeRatio(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountInWithFee(amounts[i], reserveIn, reserveOut,feeRatio);
        }
    }
}

// File: contracts/libraries/SafeMath.sol

pragma solidity =0.6.6;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}

// File: contracts/libraries/owner.sol

pragma solidity >=0.4.22 <0.7.0;

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

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

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

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

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

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

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

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

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

// File: contracts/interfaces/IERC20.sol

pragma solidity >=0.5.0;

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

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

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

// File: contracts/interfaces/IWETH.sol

pragma solidity >=0.5.0;

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

// File: contracts/INXV2Router02.sol

pragma solidity =0.6.6;










contract UniswapV2Router02 is IUniswapV2Router02 ,Ownable{
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WETH;

    address public _playerBook = address(0xd656111DEfd1582f8B5a998FF7Bc118434a37437);

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');
        _;
    }

    constructor(address _factory, address _WETH) public {
        factory = _factory;
        WETH = _WETH;
    }

    receive() external payable {
        assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract
    }

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {
            IUniswapV2Factory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidityInvter(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        address to,
        string calldata inviter,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        if (bytes(inviter).length != 0){
            AddInvter(msg.sender,inviter);
        }
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, 0, 0);
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IUniswapV2Pair(pair).mint(to);
    }

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IUniswapV2Pair(pair).mint(to);
    }
    function addLiquidityETHInvter(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        string calldata inviter,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
        if (bytes(inviter).length != 0){
            AddInvter(msg.sender,inviter);
        }
        (amountToken, amountETH) = _addLiquidity(
            token,
            WETH,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountETHMin
        );
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWETH(WETH).deposit{value: amountETH}();
        assert(IWETH(WETH).transfer(pair, amountETH));
        liquidity = IUniswapV2Pair(pair).mint(to);
        // refund dust eth, if any
        if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
    }

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
        (amountToken, amountETH) = _addLiquidity(
            token,
            WETH,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountETHMin
        );
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWETH(WETH).deposit{value: amountETH}();
        assert(IWETH(WETH).transfer(pair, amountETH));
        liquidity = IUniswapV2Pair(pair).mint(to);
        // refund dust eth, if any
        if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);
        (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
        (amountToken, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountETH) {
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountETH) {
        (, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountETH) {
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountETHMin, to, deadline
        );
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = UniswapV2Library.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }

    function swapExactTokensForTokensInviter(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        string calldata inviter,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        if (bytes(inviter).length != 0){
            AddInvter(msg.sender,inviter);
        }
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokensInviter(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        string calldata inviter,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        if (bytes(inviter).length != 0){
            AddInvter(msg.sender,inviter);
        }
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust eth, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = UniswapV2Library.sortTokens(input, output);
            IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            uint16 feeRatio = pair.getFeeRatio();
            amountOutput = UniswapV2Library.getAmountOutWithFee(amountInput, reserveInput, reserveOutput,feeRatio);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokensInviter(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        string calldata inviter,
        uint deadline
    ) external virtual override ensure(deadline) {
        if (bytes(inviter).length != 0){
            AddInvter(msg.sender,inviter);
        }
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        uint amountIn = msg.value;
        IWETH(WETH).deposit{value: amountIn}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WETH).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).withdraw(amountOut);
        TransferHelper.safeTransferETH(to, amountOut);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return UniswapV2Library.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return UniswapV2Library.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return UniswapV2Library.getAmountsIn(factory, amountOut, path);
    }

    function AddInvter(address account, string memory affCode) public
    {
        if (!IPlayerBook(_playerBook).hasRefer(account)) {
            IPlayerBook(_playerBook).bindRefer(account, affCode);
        }
    }

    function SetPlayerBook(address playerbook) public onlyOwner{
        _playerBook = playerbook;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"affCode","type":"string"}],"name":"AddInvter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"playerbook","type":"address"}],"name":"SetPlayerBook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_playerBook","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"inviter","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETHInvter","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"inviter","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityInvter","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"inviter","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensInviter","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"inviter","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokensInviter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"inviter","type":"string"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokensInviter","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600180546001600160a01b03191673d656111defd1582f8b5a998ff7bc118434a374371790553480156200003757600080fd5b5060405162005f4b38038062005f4b833981810160405260408110156200005d57600080fd5b508051602090910151600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c615d2362000228600039806102235280611324528061135f528061148652806114dc5280611510528061158452806117435280611961528061206b52806121d152806128e052806129da5280612a905280612b5e5280612ca45280612d2c528061300c5280613087528061313652806132025280613297528061330b52806139485280613d475280613d9d5280613dd15280613e455280613ff4528061413752806141bf5250806114ba52806117d152806118a85280611ab15280611b885280611c245280611c5d5280611d985280611f4252806120f952806121af528061231f52806125fa5280612bf15280612d5e5280612ec1528061333d5280613596528061378e52806137b7528061386e52806139265280613bfb5280613d7b528061408752806141f152806145c1528061466f52806146ef5280614d465280614d895280615093528061527d5250615d236000f3fe6080604052600436106102135760003560e01c80638da5cb5b11610118578063d06ca61f116100a0578063e8e337001161006f578063e8e3370014611163578063f2fde38b146111c5578063f305d719146111f8578063f9cff3511461123e578063fb3bdb41146112535761024c565b8063d06ca61f14610e96578063d1c5fb9914610f4b578063ded9382a1461102f578063e84fa9a5146110a25761024c565b8063ad615dec116100e7578063ad615dec14610d17578063af2979eb14610d4d578063b6f9de9514610da0578063baa2abde14610e24578063c45a015514610e815761024c565b80638da5cb5b14610c755780638f32d59b14610ca6578063a179390a14610ccf578063ad5c464814610d025761024c565b80634a25d94a1161019b578063715018a61161016a578063715018a614610a7a578063791ac94714610a8f5780637ff36ab514610b2557806385f8c25914610ba95780638803dbee14610bdf5761024c565b80634a25d94a146107f75780635b0d59841461088d5780635c11d795146109005780636cc5fd62146109965761024c565b80631a9e4113116101e25780631a9e4113146104a25780631f00ca74146105865780632195995c1461063b57806338ed1739146106b9578063464afdbc1461074f5761024c565b806302751cec1461025157806303d0c3fc146102bd578063054d50d41461037457806318cbafe5146103bc5761024c565b3661024c57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461024a57fe5b005b600080fd5b34801561025d57600080fd5b506102a4600480360360c081101561027457600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356112d7565b6040805192835260208301919091528051918290030190f35b610356600480360360e08110156102d357600080fd5b6001600160a01b03823581169260208101359260408201359260608301359260808101359091169181019060c0810160a0820135600160201b81111561031857600080fd5b82018360208201111561032a57600080fd5b803590602001918460018302840111600160201b8311171561034b57600080fd5b9193509150356113f1565b60408051938452602084019290925282820152519081900360600190f35b34801561038057600080fd5b506103aa6004803603606081101561039757600080fd5b50803590602081013590604001356116de565b60408051918252519081900360200190f35b3480156103c857600080fd5b50610452600480360360a08110156103df57600080fd5b813591602081013591810190606081016040820135600160201b81111561040557600080fd5b82018360208201111561041757600080fd5b803590602001918460208302840111600160201b8311171561043857600080fd5b91935091506001600160a01b0381351690602001356116f3565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048e578181015183820152602001610476565b505050509050019250505060405180910390f35b3480156104ae57600080fd5b50610452600480360360c08110156104c557600080fd5b813591602081013591810190606081016040820135600160201b8111156104eb57600080fd5b8201836020820111156104fd57600080fd5b803590602001918460208302840111600160201b8311171561051e57600080fd5b919390926001600160a01b0383351692604081019060200135600160201b81111561054857600080fd5b82018360208201111561055a57600080fd5b803590602001918460018302840111600160201b8311171561057b57600080fd5b919350915035611a20565b34801561059257600080fd5b50610452600480360360408110156105a957600080fd5b81359190810190604081016020820135600160201b8111156105ca57600080fd5b8201836020820111156105dc57600080fd5b803590602001918460208302840111600160201b831117156105fd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611c1d945050505050565b34801561064757600080fd5b506102a4600480360361016081101561065f57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611c53565b3480156106c557600080fd5b50610452600480360360a08110156106dc57600080fd5b813591602081013591810190606081016040820135600160201b81111561070257600080fd5b82018360208201111561071457600080fd5b803590602001918460208302840111600160201b8311171561073557600080fd5b91935091506001600160a01b038135169060200135611d4d565b34801561075b57600080fd5b50610356600480360360e081101561077257600080fd5b6001600160a01b038235811692602081013582169260408201359260608301359260808101359091169181019060c0810160a0820135600160201b8111156107b957600080fd5b8201836020820111156107cb57600080fd5b803590602001918460018302840111600160201b831117156107ec57600080fd5b919350915035611e98565b34801561080357600080fd5b50610452600480360360a081101561081a57600080fd5b813591602081013591810190606081016040820135600160201b81111561084057600080fd5b82018360208201111561085257600080fd5b803590602001918460208302840111600160201b8311171561087357600080fd5b91935091506001600160a01b03813516906020013561201b565b34801561089957600080fd5b506103aa60048036036101408110156108b157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356121a7565b34801561090c57600080fd5b5061024a600480360360a081101561092357600080fd5b813591602081013591810190606081016040820135600160201b81111561094957600080fd5b82018360208201111561095b57600080fd5b803590602001918460208302840111600160201b8311171561097c57600080fd5b91935091506001600160a01b0381351690602001356122b5565b3480156109a257600080fd5b5061024a600480360360c08110156109b957600080fd5b813591602081013591810190606081016040820135600160201b8111156109df57600080fd5b8201836020820111156109f157600080fd5b803590602001918460208302840111600160201b83111715610a1257600080fd5b919390926001600160a01b0383351692604081019060200135600160201b811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b803590602001918460018302840111600160201b83111715610a6f57600080fd5b91935091503561254a565b348015610a8657600080fd5b5061024a6127ef565b348015610a9b57600080fd5b5061024a600480360360a0811015610ab257600080fd5b813591602081013591810190606081016040820135600160201b811115610ad857600080fd5b820183602082011115610aea57600080fd5b803590602001918460208302840111600160201b83111715610b0b57600080fd5b91935091506001600160a01b038135169060200135612892565b61045260048036036080811015610b3b57600080fd5b81359190810190604081016020820135600160201b811115610b5c57600080fd5b820183602082011115610b6e57600080fd5b803590602001918460208302840111600160201b83111715610b8f57600080fd5b91935091506001600160a01b038135169060200135612b16565b348015610bb557600080fd5b506103aa60048036036060811015610bcc57600080fd5b5080359060208101359060400135612e69565b348015610beb57600080fd5b50610452600480360360a0811015610c0257600080fd5b813591602081013591810190606081016040820135600160201b811115610c2857600080fd5b820183602082011115610c3a57600080fd5b803590602001918460208302840111600160201b83111715610c5b57600080fd5b91935091506001600160a01b038135169060200135612e76565b348015610c8157600080fd5b50610c8a612f6f565b604080516001600160a01b039092168252519081900360200190f35b348015610cb257600080fd5b50610cbb612f7e565b604080519115158252519081900360200190f35b348015610cdb57600080fd5b5061024a60048036036020811015610cf257600080fd5b50356001600160a01b0316612f8f565b348015610d0e57600080fd5b50610c8a61300a565b348015610d2357600080fd5b506103aa60048036036060811015610d3a57600080fd5b508035906020810135906040013561302e565b348015610d5957600080fd5b506103aa600480360360c0811015610d7057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561303b565b61024a60048036036080811015610db657600080fd5b81359190810190604081016020820135600160201b811115610dd757600080fd5b820183602082011115610de957600080fd5b803590602001918460208302840111600160201b83111715610e0a57600080fd5b91935091506001600160a01b0381351690602001356131bc565b348015610e3057600080fd5b506102a4600480360360e0811015610e4757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135613548565b348015610e8d57600080fd5b50610c8a61378c565b348015610ea257600080fd5b5061045260048036036040811015610eb957600080fd5b81359190810190604081016020820135600160201b811115610eda57600080fd5b820183602082011115610eec57600080fd5b803590602001918460208302840111600160201b83111715610f0d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506137b0945050505050565b348015610f5757600080fd5b50610452600480360360c0811015610f6e57600080fd5b813591602081013591810190606081016040820135600160201b811115610f9457600080fd5b820183602082011115610fa657600080fd5b803590602001918460208302840111600160201b83111715610fc757600080fd5b919390926001600160a01b0383351692604081019060200135600160201b811115610ff157600080fd5b82018360208201111561100357600080fd5b803590602001918460018302840111600160201b8311171561102457600080fd5b9193509150356137dd565b34801561103b57600080fd5b506102a4600480360361014081101561105357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561391c565b3480156110ae57600080fd5b5061024a600480360360408110156110c557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156110ef57600080fd5b82018360208201111561110157600080fd5b803590602001918460018302840111600160201b8311171561112257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613a30945050505050565b34801561116f57600080fd5b50610356600480360361010081101561118757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613b98565b3480156111d157600080fd5b5061024a600480360360208110156111e857600080fd5b50356001600160a01b0316613c93565b610356600480360360c081101561120e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135613cf8565b34801561124a57600080fd5b50610c8a613f9d565b6104526004803603608081101561126957600080fd5b81359190810190604081016020820135600160201b81111561128a57600080fd5b82018360208201111561129c57600080fd5b803590602001918460208302840111600160201b831117156112bd57600080fd5b91935091506001600160a01b038135169060200135613fac565b600080824281101561131e576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b61134d897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a613548565b909350915061135d89868561432e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156113c357600080fd5b505af11580156113d7573d6000803e3d6000fd5b505050506113e58583614498565b50965096945050505050565b6000806000834281101561143a576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b8515611480576114803388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a3092505050565b6114ae8c7f00000000000000000000000000000000000000000000000000000000000000008d348e8e614590565b909450925060006115007f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000614804565b905061150e8d3383886148c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561156957600080fd5b505af115801561157d573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561160257600080fd5b505af1158015611616573d6000803e3d6000fd5b505050506040513d602081101561162c57600080fd5b505161163457fe5b806001600160a01b0316636a6278428a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561168c57600080fd5b505af11580156116a0573d6000803e3d6000fd5b505050506040513d60208110156116b657600080fd5b50519250348410156116ce576116ce33853403614498565b5050985098509895505050505050565b60006116eb848484614a21565b949350505050565b60608142811015611739576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061177357fe5b905060200201356001600160a01b03166001600160a01b0316146117cc576040805162461bcd60e51b815260206004820152601d6024820152600080516020615beb833981519152604482015290519081900360640190fd5b61182a7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b1192505050565b9150868260018451038151811061183d57fe5b602002602001015110156118825760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b6119208686600081811061189257fe5b905060200201356001600160a01b0316336119067f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106118d457fe5b905060200201356001600160a01b03168b8b60018181106118f157fe5b905060200201356001600160a01b0316614804565b8560008151811061191357fe5b60200260200101516148c4565b61195f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614c97915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061199e57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156119dc57600080fd5b505af11580156119f0573d6000803e3d6000fd5b50505050611a158483600185510381518110611a0857fe5b6020026020010151614498565b509695505050505050565b60608142811015611a66576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b8315611aac57611aac3386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a3092505050565b611b0a7f00000000000000000000000000000000000000000000000000000000000000008b8a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b1192505050565b91508882600184510381518110611b1d57fe5b60200260200101511015611b625760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b611bd188886000818110611b7257fe5b905060200201356001600160a01b0316336119067f00000000000000000000000000000000000000000000000000000000000000008c8c6000818110611bb457fe5b905060200201356001600160a01b03168d8d60018181106118f157fe5b611c10828989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508b9250614c97915050565b5098975050505050505050565b6060611c4a7f00000000000000000000000000000000000000000000000000000000000000008484614ed7565b90505b92915050565b6000806000611c837f00000000000000000000000000000000000000000000000000000000000000008f8f614804565b9050600087611c92578c611c96565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611d0c57600080fd5b505af1158015611d20573d6000803e3d6000fd5b50505050611d338f8f8f8f8f8f8f613548565b809450819550505050509b509b9950505050505050505050565b60608142811015611d93576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b611df17f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b1192505050565b91508682600184510381518110611e0457fe5b60200260200101511015611e495760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b611e598686600081811061189257fe5b611a1582878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614c97915050565b60008060008342811015611ee1576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b8515611f2757611f273388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a3092505050565b611f368c8c8c8c600080614590565b90945092506000611f687f00000000000000000000000000000000000000000000000000000000000000008e8e614804565b9050611f768d3383886148c4565b611f828c3383876148c4565b806001600160a01b0316636a6278428a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611fda57600080fd5b505af1158015611fee573d6000803e3d6000fd5b505050506040513d602081101561200457600080fd5b5051949d939c50939a509198505050505050505050565b60608142811015612061576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061209b57fe5b905060200201356001600160a01b03166001600160a01b0316146120f4576040805162461bcd60e51b815260206004820152601d6024820152600080516020615beb833981519152604482015290519081900360640190fd5b6121527f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614ed792505050565b9150868260008151811061216257fe5b602002602001015111156118825760405162461bcd60e51b8152600401808060200182810382526027815260200180615bc46027913960400191505060405180910390fd5b6000806121f57f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000614804565b9050600086612204578b612208565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561227e57600080fd5b505af1158015612292573d6000803e3d6000fd5b505050506122a48d8d8d8d8d8d61303b565b9d9c50505050505050505050505050565b80428110156122f9576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b61236e8585600081811061230957fe5b905060200201356001600160a01b0316336123687f00000000000000000000000000000000000000000000000000000000000000008989600081811061234b57fe5b905060200201356001600160a01b03168a8a60018181106118f157fe5b8a6148c4565b60008585600019810181811061238057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123e557600080fd5b505afa1580156123f9573d6000803e3d6000fd5b505050506040513d602081101561240f57600080fd5b5051604080516020888102828101820190935288825292935061245192909189918991829185019084908082843760009201919091525088925061503c915050565b86612503828888600019810181811061246657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124cb57600080fd5b505afa1580156124df573d6000803e3d6000fd5b505050506040513d60208110156124f557600080fd5b50519063ffffffff6153b216565b10156125405760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b5050505050505050565b804281101561258e576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b82156125d4576125d43385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a3092505050565b612649878760008181106125e457fe5b905060200201356001600160a01b0316336126437f00000000000000000000000000000000000000000000000000000000000000008b8b600081811061262657fe5b905060200201356001600160a01b03168c8c60018181106118f157fe5b8c6148c4565b60008787600019810181811061265b57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b50516040805160208a810282810182019093528a825292935061272c9290918b918b9182918501908490808284376000920191909152508a925061503c915050565b886127a6828a8a600019810181811061274157fe5b905060200201356001600160a01b03166001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124cb57600080fd5b10156127e35760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b50505050505050505050565b6127f7612f7e565b612848576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b80428110156128d6576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061291057fe5b905060200201356001600160a01b03166001600160a01b031614612969576040805162461bcd60e51b815260206004820152601d6024820152600080516020615beb833981519152604482015290519081900360640190fd5b6129798585600081811061230957fe5b6129b785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061503c915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015612a2157600080fd5b505afa158015612a35573d6000803e3d6000fd5b505050506040513d6020811015612a4b57600080fd5b5051905086811015612a8e5760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612af457600080fd5b505af1158015612b08573d6000803e3d6000fd5b505050506125408482614498565b60608142811015612b5c576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110612b9357fe5b905060200201356001600160a01b03166001600160a01b031614612bec576040805162461bcd60e51b815260206004820152601d6024820152600080516020615beb833981519152604482015290519081900360640190fd5b612c4a7f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614b1192505050565b91508682600184510381518110612c5d57fe5b60200260200101511015612ca25760405162461bcd60e51b815260040180806020018281038252602b815260200180615c54602b913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110612cde57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d1157600080fd5b505af1158015612d25573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612d8a7f00000000000000000000000000000000000000000000000000000000000000008989600081811061234b57fe5b84600081518110612d9757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612dee57600080fd5b505af1158015612e02573d6000803e3d6000fd5b505050506040513d6020811015612e1857600080fd5b5051612e2057fe5b612e5f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614c97915050565b5095945050505050565b60006116eb848484615402565b60608142811015612ebc576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b612f1a7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614ed792505050565b91508682600081518110612f2a57fe5b60200260200101511115611e495760405162461bcd60e51b8152600401808060200182810382526027815260200180615bc46027913960400191505060405180910390fd5b6000546001600160a01b031690565b6000546001600160a01b0316331490565b612f97612f7e565b612fe8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006116eb8484846154f2565b60008142811015613081576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b6130b0887f00000000000000000000000000000000000000000000000000000000000000008989893089613548565b604080516370a0823160e01b8152306004820152905191945061313492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561310357600080fd5b505afa158015613117573d6000803e3d6000fd5b505050506040513d602081101561312d57600080fd5b505161432e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b50505050611a158483614498565b8042811015613200576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585600081811061323757fe5b905060200201356001600160a01b03166001600160a01b031614613290576040805162461bcd60e51b815260206004820152601d6024820152600080516020615beb833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156132f057600080fd5b505af1158015613304573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6133697f00000000000000000000000000000000000000000000000000000000000000008989600081811061234b57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156133b957600080fd5b505af11580156133cd573d6000803e3d6000fd5b505050506040513d60208110156133e357600080fd5b50516133eb57fe5b6000868660001981018181106133fd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561346257600080fd5b505afa158015613476573d6000803e3d6000fd5b505050506040513d602081101561348c57600080fd5b505160408051602089810282810182019093528982529293506134ce9290918a918a91829185019084908082843760009201919091525089925061503c915050565b8761250382898960001981018181106134e357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124cb57600080fd5b600080824281101561358f576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b60006135bc7f00000000000000000000000000000000000000000000000000000000000000008c8c614804565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561361757600080fd5b505af115801561362b573d6000803e3d6000fd5b505050506040513d602081101561364157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561368e57600080fd5b505af11580156136a2573d6000803e3d6000fd5b505050506040513d60408110156136b857600080fd5b508051602090910151909250905060006136d28e8e61559e565b509050806001600160a01b03168e6001600160a01b0316146136f55781836136f8565b82825b90975095508a87101561373c5760405162461bcd60e51b8152600401808060200182810382526026815260200180615c0b6026913960400191505060405180910390fd5b8986101561377b5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b516026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060611c4a7f00000000000000000000000000000000000000000000000000000000000000008484614b11565b60608142811015613823576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b8315613869576138693386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a3092505050565b6138c77f00000000000000000000000000000000000000000000000000000000000000008b8a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614ed792505050565b915088826000815181106138d757fe5b60200260200101511115611b625760405162461bcd60e51b8152600401808060200182810382526027815260200180615bc46027913960400191505060405180910390fd5b600080600061396c7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000614804565b905060008761397b578c61397f565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156139f557600080fd5b505af1158015613a09573d6000803e3d6000fd5b50505050613a1b8e8e8e8e8e8e6112d7565b909f909e509c50505050505050505050505050565b6001546040805163a526a92b60e01b81526001600160a01b0385811660048301529151919092169163a526a92b9160248083019260209291908290030181600087803b158015613a7f57600080fd5b505af1158015613a93573d6000803e3d6000fd5b505050506040513d6020811015613aa957600080fd5b5051613b94576001546040805163d66d140760e01b81526001600160a01b038581166004830190815260248301938452855160448401528551919094169363d66d14079387938793606490910190602085019080838360005b83811015613b1a578181015183820152602001613b02565b50505050905090810190601f168015613b475780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b158015613b6757600080fd5b505af1158015613b7b573d6000803e3d6000fd5b505050506040513d6020811015613b9157600080fd5b50505b5050565b60008060008342811015613be1576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b613bef8c8c8c8c8c8c614590565b90945092506000613c217f00000000000000000000000000000000000000000000000000000000000000008e8e614804565b9050613c2f8d3383886148c4565b613c3b8c3383876148c4565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611fda57600080fd5b613c9b612f7e565b613cec576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b613cf58161567c565b50565b60008060008342811015613d41576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b613d6f8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614590565b90945092506000613dc17f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000614804565b9050613dcf8b3383886148c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015613e2a57600080fd5b505af1158015613e3e573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613ec357600080fd5b505af1158015613ed7573d6000803e3d6000fd5b505050506040513d6020811015613eed57600080fd5b5051613ef557fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015613f4d57600080fd5b505af1158015613f61573d6000803e3d6000fd5b505050506040513d6020811015613f7757600080fd5b5051925034841015613f8f57613f8f33853403614498565b505096509650969350505050565b6001546001600160a01b031681565b60608142811015613ff2576040805162461bcd60e51b81526020600482015260186024820152600080516020615cce833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061402957fe5b905060200201356001600160a01b03166001600160a01b031614614082576040805162461bcd60e51b815260206004820152601d6024820152600080516020615beb833981519152604482015290519081900360640190fd5b6140e07f000000000000000000000000000000000000000000000000000000000000000088888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250614ed792505050565b915034826000815181106140f057fe5b602002602001015111156141355760405162461bcd60e51b8152600401808060200182810382526027815260200180615bc46027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061417157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156141a457600080fd5b505af11580156141b8573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61421d7f00000000000000000000000000000000000000000000000000000000000000008989600081811061234b57fe5b8460008151811061422a57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561428157600080fd5b505af1158015614295573d6000803e3d6000fd5b505050506040513d60208110156142ab57600080fd5b50516142b357fe5b6142f282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614c97915050565b816000815181106142ff57fe5b6020026020010151341115612e5f57612e5f338360008151811061431f57fe5b60200260200101513403614498565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106143ab5780518252601f19909201916020918201910161438c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461440d576040519150601f19603f3d011682016040523d82523d6000602084013e614412565b606091505b5091509150818015614440575080511580614440575080806020019051602081101561443d57600080fd5b50515b614491576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106144e45780518252601f1990920191602091820191016144c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614546576040519150601f19603f3d011682016040523d82523d6000602084013e61454b565b606091505b505090508061458b5760405162461bcd60e51b8152600401808060200182810382526023815260200180615c316023913960400191505060405180910390fd5b505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561460a57600080fd5b505afa15801561461e573d6000803e3d6000fd5b505050506040513d602081101561463457600080fd5b50516001600160a01b031614156146e757604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156146ba57600080fd5b505af11580156146ce573d6000803e3d6000fd5b505050506040513d60208110156146e457600080fd5b50505b6000806147157f00000000000000000000000000000000000000000000000000000000000000008b8b61571c565b91509150816000148015614727575080155b15614737578793508692506147f7565b60006147448984846154f2565b9050878111614797578581101561478c5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b516026913960400191505060405180910390fd5b8894509250826147f5565b60006147a48984866154f2565b9050898111156147b057fe5b878110156147ef5760405162461bcd60e51b8152600401808060200182810382526026815260200180615c0b6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000806000614813858561559e565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f1df2e5185870b0dc9a4ce44d5fb609a457f09e0d17d1766bb728fe794fec8076609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106149495780518252601f19909201916020918201910161492a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146149ab576040519150601f19603f3d011682016040523d82523d6000602084013e6149b0565b606091505b50915091508180156149de5750805115806149de57508080602001905160208110156149db57600080fd5b50515b614a195760405162461bcd60e51b8152600401808060200182810382526024815260200180615c7f6024913960400191505060405180910390fd5b505050505050565b6000808411614a615760405162461bcd60e51b815260040180806020018281038252602b815260200180615ca3602b913960400191505060405180910390fd5b600083118015614a715750600082115b614aac5760405162461bcd60e51b8152600401808060200182810382526028815260200180615b776028913960400191505060405180910390fd5b6000614ac0856103e463ffffffff6157e316565b90506000614ad4828563ffffffff6157e316565b90506000614afa83614aee886103e863ffffffff6157e316565b9063ffffffff61584616565b9050808281614b0557fe5b04979650505050505050565b6060600282511015614b6a576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015614b8257600080fd5b50604051908082528060200260200182016040528015614bac578160200160208202803683370190505b5090508281600081518110614bbd57fe5b60200260200101818152505060005b6001835103811015614c8f57600080614c0f87868581518110614beb57fe5b6020026020010151878660010181518110614c0257fe5b602002602001015161571c565b915091506000614c4988878681518110614c2557fe5b6020026020010151888760010181518110614c3c57fe5b6020026020010151615895565b9050614c6a858581518110614c5a57fe5b602002602001015184848461590e565b858560010181518110614c7957fe5b6020908102919091010152505050600101614bcc565b509392505050565b60005b6001835103811015613b9157600080848381518110614cb557fe5b6020026020010151858460010181518110614ccc57fe5b6020026020010151915091506000614ce4838361559e565b5090506000878560010181518110614cf857fe5b60200260200101519050600080836001600160a01b0316866001600160a01b031614614d2657826000614d2a565b6000835b91509150600060028a51038810614d415788614d82565b614d827f0000000000000000000000000000000000000000000000000000000000000000878c8b60020181518110614d7557fe5b6020026020010151614804565b9050614daf7f00000000000000000000000000000000000000000000000000000000000000008888614804565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015614dec576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614e5d578181015183820152602001614e45565b50505050905090810190601f168015614e8a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614eac57600080fd5b505af1158015614ec0573d6000803e3d6000fd5b505060019099019850614c9a975050505050505050565b6060600282511015614f30576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015614f4857600080fd5b50604051908082528060200260200182016040528015614f72578160200160208202803683370190505b5090508281600183510381518110614f8657fe5b60209081029190910101528151600019015b8015614c8f57600080614fc887866001860381518110614fb457fe5b6020026020010151878681518110614c0257fe5b915091506000614ff588876001870381518110614fe157fe5b6020026020010151888781518110614c3c57fe5b905061501685858151811061500657fe5b60200260200101518484846159fa565b85600186038151811061502557fe5b602090810291909101015250505060001901614f98565b60005b600183510381101561458b5760008084838151811061505a57fe5b602002602001015185846001018151811061507157fe5b6020026020010151915091506000615089838361559e565b50905060006150b97f00000000000000000000000000000000000000000000000000000000000000008585614804565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d606081101561512457600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a81169089161461515a57828461515d565b83835b915091506151bb828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124cb57600080fd5b95506000876001600160a01b03166359362b886040518163ffffffff1660e01b815260040160206040518083038186803b1580156151f857600080fd5b505afa15801561520c573d6000803e3d6000fd5b505050506040513d602081101561522257600080fd5b505190506152328784848461590e565b95505050505050600080856001600160a01b0316886001600160a01b03161461525d57826000615261565b6000835b91509150600060028c51038a10615278578a6152ac565b6152ac7f0000000000000000000000000000000000000000000000000000000000000000898e8d60020181518110614d7557fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b8381101561533657818101518382015260200161531e565b50505050905090810190601f1680156153635780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561538557600080fd5b505af1158015615399573d6000803e3d6000fd5b50506001909b019a5061503f9950505050505050505050565b80820382811115611c4d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b60008084116154425760405162461bcd60e51b815260040180806020018281038252602c815260200180615b00602c913960400191505060405180910390fd5b6000831180156154525750600082115b61548d5760405162461bcd60e51b8152600401808060200182810382526028815260200180615b776028913960400191505060405180910390fd5b60006154b16103e86154a5868863ffffffff6157e316565b9063ffffffff6157e316565b905060006154cb6103e46154a5868963ffffffff6153b216565b90506154e860018284816154db57fe5b049063ffffffff61584616565b9695505050505050565b60008084116155325760405162461bcd60e51b8152600401808060200182810382526025815260200180615b9f6025913960400191505060405180910390fd5b6000831180156155425750600082115b61557d5760405162461bcd60e51b8152600401808060200182810382526028815260200180615b776028913960400191505060405180910390fd5b8261558e858463ffffffff6157e316565b8161559557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156155f25760405162461bcd60e51b8152600401808060200182810382526025815260200180615b2c6025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610615612578284615615565b83835b90925090506001600160a01b038216615675576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6001600160a01b0381166156c15760405162461bcd60e51b8152600401808060200182810382526026815260200180615ada6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600061572b858561559e565b50905060008061573c888888614804565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561577457600080fd5b505afa158015615788573d6000803e3d6000fd5b505050506040513d606081101561579e57600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b03878116908416146157d15780826157d4565b81815b90999098509650505050505050565b60008115806157fe575050808202828282816157fb57fe5b04145b611c4d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611c4d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60006158a2848484614804565b6001600160a01b03166359362b886040518163ffffffff1660e01b815260040160206040518083038186803b1580156158da57600080fd5b505afa1580156158ee573d6000803e3d6000fd5b505050506040513d602081101561590457600080fd5b5051949350505050565b600080851161594e5760405162461bcd60e51b815260040180806020018281038252602b815260200180615ca3602b913960400191505060405180910390fd5b60008411801561595e5750600083115b6159995760405162461bcd60e51b8152600401808060200182810382526028815260200180615b776028913960400191505060405180910390fd5b60006159b48661ffff6103e88690031663ffffffff6157e316565b905060006159c8828663ffffffff6157e316565b905060006159e283614aee896103e863ffffffff6157e316565b90508082816159ed57fe5b0498975050505050505050565b6000808511615a3a5760405162461bcd60e51b815260040180806020018281038252602c815260200180615b00602c913960400191505060405180910390fd5b600084118015615a4a5750600083115b615a855760405162461bcd60e51b8152600401808060200182810382526028815260200180615b776028913960400191505060405180910390fd5b6000615a9d6103e86154a5878963ffffffff6157e316565b90506000615abe61ffff6103e8869003166154a5878a63ffffffff6153b216565b9050615ace60018284816154db57fe5b97965050505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e56414c49445f50415448000000556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20455850495245440000000000000000a2646970667358221220daaef32ab0eb5b4938c36db49c6bda15fa7edc7677969a6d90c76b2ffb4935bd64736f6c634300060600330000000000000000000000001e945c1f5a55da3e9c0ea0d9612f098fbac9ea86000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

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

0000000000000000000000001e945c1f5a55da3e9c0ea0d9612f098fbac9ea86000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e945c1f5a55da3e9c0ea0d9612f098fbac9ea86
Arg [1] : 000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c


Deployed ByteCode Sourcemap

22809:23364:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23388:10;-1:-1:-1;;;;;23402:4:0;23388:18;;23381:26;;;;22809:23364;;12:1:-1;9;2:12;29470:673:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29470:673:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;29470:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26463:1111;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;26463:1111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;26463:1111:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26463:1111:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26463:1111:0;;-1:-1:-1;26463:1111:0;-1:-1:-1;26463:1111:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;44782:262;;5:9:-1;2:2;;;27:1;24;17:12;2:2;44782:262:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;44782:262:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;38165:850;;5:9:-1;2:2;;;27:1;24;17:12;2:2;38165:850:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;38165:850:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;38165:850:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;38165:850:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;38165:850:0;;-1:-1:-1;38165:850:0;-1:-1:-1;;;;;;38165:850:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;38165:850:0;;;;;;;;;;;;;;;;;33858:766;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33858:766:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;33858:766:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;33858:766:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;33858:766:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;33858:766:0;;;;-1:-1:-1;;;;;33858:766:0;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;33858:766:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;33858:766:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;33858:766:0;;-1:-1:-1;33858:766:0;-1:-1:-1;33858:766:0;;:::i;45582:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;45582:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;45582:253:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;45582:253:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;45582:253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;45582:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;45582:253:0;;-1:-1:-1;45582:253:0;;-1:-1:-1;;;;;45582:253:0:i;30149:677::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30149:677:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;30149:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34632:628::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34632:628:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;34632:628:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34632:628:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34632:628:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34632:628:0;;-1:-1:-1;34632:628:0;-1:-1:-1;;;;;;34632:628:0;;;;;;;;:::i;24906:805::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24906:805:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;24906:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;24906:805:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;24906:805:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;24906:805:0;;-1:-1:-1;24906:805:0;-1:-1:-1;24906:805:0;;:::i;37331:828::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;37331:828:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;37331:828:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;37331:828:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;37331:828:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;37331:828:0;;-1:-1:-1;37331:828:0;-1:-1:-1;;;;;;37331:828:0;;;;;;;;:::i;32286:718::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32286:718:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;32286:718:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;42123:714::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;42123:714:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;42123:714:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;42123:714:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;42123:714:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;42123:714:0;;-1:-1:-1;42123:714:0;-1:-1:-1;;;;;;42123:714:0;;;;;;;;:::i;41265:852::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;41265:852:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;41265:852:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;41265:852:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;41265:852:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;41265:852:0;;;;-1:-1:-1;;;;;41265:852:0;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;41265:852:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;41265:852:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;41265:852:0;;-1:-1:-1;41265:852:0;-1:-1:-1;41265:852:0;;:::i;20844:140::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20844:140:0;;;:::i;43699:843::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;43699:843:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;43699:843:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;43699:843:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;43699:843:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;43699:843:0;;-1:-1:-1;43699:843:0;-1:-1:-1;;;;;;43699:843:0;;;;;;;;:::i;36628:697::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;36628:697:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;36628:697:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;36628:697:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;36628:697:0;;-1:-1:-1;36628:697:0;-1:-1:-1;;;;;;36628:697:0;;;;;;;;:::i;45052:261::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;45052:261:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;45052:261:0;;;;;;;;;;;;:::i;36016:606::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36016:606:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;36016:606:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;36016:606:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;36016:606:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;36016:606:0;;-1:-1:-1;36016:606:0;-1:-1:-1;;;;;;36016:606:0;;;;;;;;:::i;20033:79::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20033:79:0;;;:::i;:::-;;;;-1:-1:-1;;;;;20033:79:0;;;;;;;;;;;;;;20399:92;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20399:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;46068:102;;5:9:-1;2:2;;;27:1;24;17:12;2:2;46068:102:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;46068:102:0;-1:-1:-1;;;;;46068:102:0;;:::i;22953:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22953:38:0;;;:::i;44586:188::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;44586:188:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;44586:188:0;;;;;;;;;;;;:::i;31580:700::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31580:700:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;31580:700:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;42843:850::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;42843:850:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;42843:850:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;42843:850:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;42843:850:0;;-1:-1:-1;42843:850:0;-1:-1:-1;;;;;;42843:850:0;;;;;;;;:::i;28599:865::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28599:865:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;28599:865:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22905:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22905:41:0;;;:::i;45321:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;45321:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;45321:253:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;45321:253:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;45321:253:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;45321:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;45321:253:0;;-1:-1:-1;45321:253:0;;-1:-1:-1;;;;;45321:253:0:i;35266:744::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35266:744:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;35266:744:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;35266:744:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;35266:744:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;35266:744:0;;;;-1:-1:-1;;;;;35266:744:0;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;35266:744:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;35266:744:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35266:744:0;;-1:-1:-1;35266:744:0;-1:-1:-1;35266:744:0;;:::i;30832:669::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30832:669:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;30832:669:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;45843:217::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;45843:217:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;45843:217:0;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;45843:217:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;45843:217:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;45843:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;45843:217:0;;-1:-1:-1;45843:217:0;;-1:-1:-1;;;;;45843:217:0:i;25719:738::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25719:738:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;25719:738:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21139:109::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21139:109:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21139:109:0;-1:-1:-1;;;;;21139:109:0;;:::i;27582:974::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;27582:974:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23000:80::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23000:80:0;;;:::i;39021:810::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;39021:810:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;39021:810:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;39021:810:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;39021:810:0;;-1:-1:-1;39021:810:0;-1:-1:-1;;;;;;39021:810:0;;;;;;;;:::i;29470:673::-;29707:16;29725:14;29688:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;29779:196:::1;29809:5;29829:4;29848:9;29872:14;29901:12;29936:4;29956:8;29779:15;:196::i;:::-;29752:223:::0;;-1:-1:-1;29752:223:0;-1:-1:-1;29986:51:0::1;30014:5:::0;30021:2;29752:223;29986:27:::1;:51::i;:::-;30054:4;-1:-1:-1::0;;;;;30048:20:0::1;;30069:9;30048:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;30048:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;30048:31:0;;;;30090:45;30121:2;30125:9;30090:30;:45::i;:::-;29470:673:::0;;;;;;;;;;:::o;26463:1111::-;26756:16;26774:14;26790;26737:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;26821:26;;26817:87:::1;;26863:29;26873:10;26884:7;;26863:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26863:9:0::1;::::0;-1:-1:-1;;;26863:29:0:i:1;:::-;26941:176;26969:5;26989:4;27008:18;27041:9;27065:14;27094:12;26941:13;:176::i;:::-;26914:203:::0;;-1:-1:-1;26914:203:0;-1:-1:-1;27128:12:0::1;27143:46;27168:7;27177:5:::0;27184:4:::1;27143:24;:46::i;:::-;27128:61;;27200:69;27232:5;27239:10;27251:4;27257:11;27200:31;:69::i;:::-;27286:4;-1:-1:-1::0;;;;;27280:19:0::1;;27307:9;27280:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27280:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27280:39:0;;;;;27343:4;-1:-1:-1::0;;;;;27337:20:0::1;;27358:4;27364:9;27337:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;27337:37:0::1;-1:-1:-1::0;;;;;27337:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27337:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27337:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27337:37:0;27330:45:::1;;;;27413:4;-1:-1:-1::0;;;;;27398:25:0::1;;27424:2;27398:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;27398:29:0::1;-1:-1:-1::0;;;;;27398:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27398:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27398:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27398:29:0;;-1:-1:-1;27478:9:0::1;:21:::0;-1:-1:-1;27474:92:0::1;;;27501:65;27532:10;27556:9;27544;:21;27501:30;:65::i;:::-;23206:1;26463:1111:::0;;;;;;;;;;;;;:::o;44782:262::-;44935:14;44974:62;45004:8;45014:9;45025:10;44974:29;:62::i;:::-;44967:69;44782:262;-1:-1:-1;;;;44782:262:0:o;38165:850::-;38379:21;38351:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38451:4:0::1;38426:29;:4:::0;;-1:-1:-1;;38431:15:0;;38426:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;38426:21:0::1;-1:-1:-1::0;;;;;38426:29:0::1;;38418:71;;;::::0;;-1:-1:-1;;;38418:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;38418:71:0;;;;;;;;;;;;;::::1;;38510:55;38541:7;38550:8;38560:4;;38510:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;38510:30:0::1;::::0;-1:-1:-1;;;38510:55:0:i:1;:::-;38500:65;;38615:12;38584:7;38609:1;38592:7;:14;:18;38584:27;;;;;;;;;;;;;;:43;;38576:99;;;;-1:-1:-1::0;;;38576:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38686:141;38732:4;;38737:1;38732:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;38732:7:0::1;38741:10;38753:51;38778:7;38787:4;;38792:1;38787:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;38787:7:0::1;38796:4;;38801:1;38796:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;38796:7:0::1;38753:24;:51::i;:::-;38806:7;38814:1;38806:10;;;;;;;;;;;;;;38686:31;:141::i;:::-;38838:35;38844:7;38853:4;;38838:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;38867:4:0::1;::::0;-1:-1:-1;38838:5:0::1;::::0;-1:-1:-1;;38838:35:0:i:1;:::-;38890:4;-1:-1:-1::0;;;;;38884:20:0::1;;38905:7;38930:1;38913:7;:14;:18;38905:27;;;;;;;;;;;;;;38884:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;38884:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38884:49:0;;;;38944:63;38975:2;38979:7;39004:1;38987:7;:14;:18;38979:27;;;;;;;;;;;;;;38944:30;:63::i;:::-;38165:850:::0;;;;;;;;;:::o;33858:766::-;34123:21;34104:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;34161:26;;34157:87:::1;;34203:29;34213:10;34224:7;;34203:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34203:9:0::1;::::0;-1:-1:-1;;;34203:29:0:i:1;:::-;34264:55;34295:7;34304:8;34314:4;;34264:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34264:30:0::1;::::0;-1:-1:-1;;;34264:55:0:i:1;:::-;34254:65;;34369:12;34338:7;34363:1;34346:7;:14;:18;34338:27;;;;;;;;;;;;;;:43;;34330:99;;;;-1:-1:-1::0;;;34330:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34440:141;34486:4;;34491:1;34486:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;34486:7:0::1;34495:10;34507:51;34532:7;34541:4;;34546:1;34541:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;34541:7:0::1;34550:4;;34555:1;34550:7;;;;;;34440:141;34592:24;34598:7;34607:4;;34592:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34613:2:0;;-1:-1:-1;34592:5:0::1;::::0;-1:-1:-1;;34592:24:0:i:1;:::-;33858:766:::0;;;;;;;;;;;:::o;45582:253::-;45726:21;45772:55;45802:7;45811:9;45822:4;45772:29;:55::i;:::-;45765:62;;45582:253;;;;;:::o;30149:677::-;30455:12;30469;30494;30509:49;30534:7;30543:6;30551;30509:24;:49::i;:::-;30494:64;;30569:10;30582;:33;;30606:9;30582:33;;;-1:-1:-1;;30582:33:0;30626:80;;;-1:-1:-1;;;30626:80:0;;30654:10;30626:80;;;;30674:4;30626:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30569:46;;-1:-1:-1;;;;;;30626:27:0;;;;;:80;;;;;-1:-1:-1;;30626:80:0;;;;;;;;-1:-1:-1;30626:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;30626:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30626:80:0;;;;30738;30754:6;30762;30770:9;30781:10;30793;30805:2;30809:8;30738:15;:80::i;:::-;30717:101;;;;;;;;30149:677;;;;;;;;;;;;;;;;:::o;34632:628::-;34856:21;34837:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;34900:55:::1;34931:7;34940:8;34950:4;;34900:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34900:30:0::1;::::0;-1:-1:-1;;;34900:55:0:i:1;:::-;34890:65;;35005:12;34974:7;34999:1;34982:7;:14;:18;34974:27;;;;;;;;;;;;;;:43;;34966:99;;;;-1:-1:-1::0;;;34966:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35076:141;35122:4;;35127:1;35122:7;;;;;;35076:141;35228:24;35234:7;35243:4;;35228:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;35249:2:0;;-1:-1:-1;35228:5:0::1;::::0;-1:-1:-1;;35228:24:0:i:1;24906:805::-:0;25182:12;25196;25210:14;25163:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;25241:26;;25237:87:::1;;25283:29;25293:10;25304:7;;25283:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;25283:9:0::1;::::0;-1:-1:-1;;;25283:29:0:i:1;:::-;25355:67;25369:6;25377;25385:14;25401;25417:1;25420::::0;25355:13:::1;:67::i;:::-;25334:88:::0;;-1:-1:-1;25334:88:0;-1:-1:-1;25433:12:0::1;25448:49;25473:7;25482:6:::0;25490;25448:24:::1;:49::i;:::-;25433:64;;25508:66;25540:6;25548:10;25560:4;25566:7;25508:31;:66::i;:::-;25585;25617:6;25625:10;25637:4;25643:7;25585:31;:66::i;:::-;25689:4;-1:-1:-1::0;;;;;25674:25:0::1;;25700:2;25674:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;25674:29:0::1;-1:-1:-1::0;;;;;25674:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;25674:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;25674:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;25674:29:0;24906:805;;;;-1:-1:-1;25674:29:0;;-1:-1:-1;24906:805:0;;-1:-1:-1;;;;;;;;;24906:805:0:o;37331:828::-;37545:21;37517:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;37617:4:0::1;37592:29;:4:::0;;-1:-1:-1;;37597:15:0;;37592:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;37592:21:0::1;-1:-1:-1::0;;;;;37592:29:0::1;;37584:71;;;::::0;;-1:-1:-1;;;37584:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;37584:71:0;;;;;;;;;;;;;::::1;;37676:55;37706:7;37715:9;37726:4;;37676:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;37676:29:0::1;::::0;-1:-1:-1;;;37676:55:0:i:1;:::-;37666:65;;37764:11;37750:7;37758:1;37750:10;;;;;;;;;;;;;;:25;;37742:77;;;;-1:-1:-1::0;;;37742:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32286:718:::0;32604:14;32631:12;32646:46;32671:7;32680:5;32687:4;32646:24;:46::i;:::-;32631:61;;32703:10;32716;:33;;32740:9;32716:33;;;-1:-1:-1;;32716:33:0;32760:80;;;-1:-1:-1;;;32760:80:0;;32788:10;32760:80;;;;32808:4;32760:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32703:46;;-1:-1:-1;;;;;;32760:27:0;;;;;:80;;;;;-1:-1:-1;;32760:80:0;;;;;;;;-1:-1:-1;32760:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;32760:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32760:80:0;;;;32863:133;32925:5;32932:9;32943:14;32959:12;32973:2;32977:8;32863:47;:133::i;:::-;32851:145;32286:718;-1:-1:-1;;;;;;;;;;;;;32286:718:0:o;42123:714::-;42357:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;42378:139:::1;42424:4;;42429:1;42424:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;42424:7:0::1;42433:10;42445:51;42470:7;42479:4;;42484:1;42479:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;42479:7:0::1;42488:4;;42493:1;42488:7;;;;;;42445:51;42498:8;42378:31;:139::i;:::-;42528:18;42556:4:::0;;-1:-1:-1;;42561:15:0;;42556:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;42556:21:0::1;-1:-1:-1::0;;;;;42549:39:0::1;;42589:2;42549:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;42549:43:0::1;-1:-1:-1::0;;;;;42549:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;42549:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;42549:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;42549:43:0;42603:44:::1;::::0;;42549:43:::1;42603:44:::0;;::::1;::::0;;;;;;;;;;;42549:43;;-1:-1:-1;42603:44:0::1;::::0;;;42638:4;;;;;;42603:44;::::1;::::0;42638:4;;42603:44;42638:4;42603:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;42644:2:0;;-1:-1:-1;42603:34:0::1;::::0;-1:-1:-1;;42603:44:0:i:1;:::-;42746:12:::0;42680:62:::1;42728:13:::0;42687:4;;-1:-1:-1;;42692:15:0;;42687:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;42687:21:0::1;-1:-1:-1::0;;;;;42680:39:0::1;;42720:2;42680:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;42680:43:0::1;-1:-1:-1::0;;;;;42680:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;42680:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;42680:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;42680:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;42658:171;;;;-1:-1:-1::0;;;42658:171:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23206:1;42123:714:::0;;;;;;;:::o;41265:852::-;41540:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;41565:26;;41561:87:::1;;41607:29;41617:10;41628:7;;41607:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;41607:9:0::1;::::0;-1:-1:-1;;;41607:29:0:i:1;:::-;41658:139;41704:4;;41709:1;41704:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;41704:7:0::1;41713:10;41725:51;41750:7;41759:4;;41764:1;41759:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;41759:7:0::1;41768:4;;41773:1;41768:7;;;;;;41725:51;41778:8;41658:31;:139::i;:::-;41808:18;41836:4:::0;;-1:-1:-1;;41841:15:0;;41836:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;41836:21:0::1;-1:-1:-1::0;;;;;41829:39:0::1;;41869:2;41829:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;41829:43:0::1;-1:-1:-1::0;;;;;41829:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;41829:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;41829:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;41829:43:0;41883:44:::1;::::0;;41829:43:::1;41883:44:::0;;::::1;::::0;;;;;;;;;;;41829:43;;-1:-1:-1;41883:44:0::1;::::0;;;41918:4;;;;;;41883:44;::::1;::::0;41918:4;;41883:44;41918:4;41883:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;41924:2:0;;-1:-1:-1;41883:34:0::1;::::0;-1:-1:-1;;41883:44:0:i:1;:::-;42026:12:::0;41960:62:::1;42008:13:::0;41967:4;;-1:-1:-1;;41972:15:0;;41967:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;41967:21:0::1;-1:-1:-1::0;;;;;41960:39:0::1;;42000:2;41960:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;41960:43:0::1;-1:-1:-1::0;;;;;41960:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;41960:62:0;:78;;41938:171;;;;-1:-1:-1::0;;;41938:171:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23206:1;41265:852:::0;;;;;;;;;:::o;20844:140::-;20245:9;:7;:9::i;:::-;20237:54;;;;;-1:-1:-1;;;20237:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20943:1:::1;20927:6:::0;;20906:40:::1;::::0;-1:-1:-1;;;;;20927:6:0;;::::1;::::0;20906:40:::1;::::0;20943:1;;20906:40:::1;20974:1;20957:19:::0;;-1:-1:-1;;;;;;20957:19:0::1;::::0;;20844:140::o;43699:843::-;43966:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;44025:4:0::1;44000:29;:4:::0;;-1:-1:-1;;44005:15:0;;44000:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;44000:21:0::1;-1:-1:-1::0;;;;;44000:29:0::1;;43992:71;;;::::0;;-1:-1:-1;;;43992:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;43992:71:0;;;;;;;;;;;;;::::1;;44074:139;44120:4;;44125:1;44120:7;;;;;;44074:139;44224:55;44259:4;;44224:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;44273:4:0::1;::::0;-1:-1:-1;44224:34:0::1;::::0;-1:-1:-1;;44224:55:0:i:1;:::-;44307:37;::::0;;-1:-1:-1;;;44307:37:0;;44338:4:::1;44307:37;::::0;::::1;::::0;;;44290:14:::1;::::0;-1:-1:-1;;;;;44314:4:0::1;44307:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;44307:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44307:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;44307:37:0;;-1:-1:-1;44363:25:0;;::::1;;44355:81;;;;-1:-1:-1::0;;;44355:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44453:4;-1:-1:-1::0;;;;;44447:20:0::1;;44468:9;44447:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;44447:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44447:31:0;;;;44489:45;44520:2;44524:9;44489:30;:45::i;36628:697::-:0;36844:21;36816:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;36902:4:::1;-1:-1:-1::0;;;;;36891:15:0::1;:4;;36896:1;36891:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;36891:7:0::1;-1:-1:-1::0;;;;;36891:15:0::1;;36883:57;;;::::0;;-1:-1:-1;;;36883:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;36883:57:0;;;;;;;;;;;;;::::1;;36961:56;36992:7;37001:9;37012:4;;36961:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;36961:30:0::1;::::0;-1:-1:-1;;;36961:56:0:i:1;:::-;36951:66;;37067:12;37036:7;37061:1;37044:7;:14;:18;37036:27;;;;;;;;;;;;;;:43;;37028:99;;;;-1:-1:-1::0;;;37028:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37144:4;-1:-1:-1::0;;;;;37138:19:0::1;;37165:7;37173:1;37165:10;;;;;;;;;;;;;;37138:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;37138:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;37138:40:0;;;;;37202:4;-1:-1:-1::0;;;;;37196:20:0::1;;37217:51;37242:7;37251:4;;37256:1;37251:7;;;;;;37217:51;37270:7;37278:1;37270:10;;;;;;;;;;;;;;37196:85;;;;;;;;;;;;;-1:-1:-1::0;;;;;37196:85:0::1;-1:-1:-1::0;;;;;37196:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;37196:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;37196:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;37196:85:0;37189:93:::1;;;;37293:24;37299:7;37308:4;;37293:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;37314:2:0;;-1:-1:-1;37293:5:0::1;::::0;-1:-1:-1;;37293:24:0:i:1;:::-;36628:697:::0;;;;;;;;:::o;45052:261::-;45205:13;45243:62;45272:9;45283;45294:10;45243:28;:62::i;36016:606::-;36240:21;36221:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;36284:55:::1;36314:7;36323:9;36334:4;;36284:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;36284:29:0::1;::::0;-1:-1:-1;;;36284:55:0:i:1;:::-;36274:65;;36372:11;36358:7;36366:1;36358:10;;;;;;;;;;;;;;:25;;36350:77;;;;-1:-1:-1::0;;;36350:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20033:79:::0;20071:7;20098:6;-1:-1:-1;;;;;20098:6:0;20033:79;:::o;20399:92::-;20439:4;20477:6;-1:-1:-1;;;;;20477:6:0;20463:10;:20;;20399:92::o;46068:102::-;20245:9;:7;:9::i;:::-;20237:54;;;;;-1:-1:-1;;;20237:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46138:11:::1;:24:::0;;-1:-1:-1;;;;;;46138:24:0::1;-1:-1:-1::0;;;;;46138:24:0;;;::::1;::::0;;;::::1;::::0;;46068:102::o;22953:38::-;;;:::o;44586:188::-;44683:12;44715:51;44738:7;44747:8;44757;44715:22;:51::i;31580:700::-;31846:14;31827:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;31889:196:::1;31919:5;31939:4;31958:9;31982:14;32011:12;32046:4;32066:8;31889:15;:196::i;:::-;32135:38;::::0;;-1:-1:-1;;;32135:38:0;;32167:4:::1;32135:38;::::0;::::1;::::0;;;31873:212;;-1:-1:-1;32096:78:0::1;::::0;-1:-1:-1;32124:5:0;;32131:2;;-1:-1:-1;;;;;32135:23:0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;32135:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32135:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32135:38:0;32096:27:::1;:78::i;:::-;32191:4;-1:-1:-1::0;;;;;32185:20:0::1;;32206:9;32185:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32185:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32185:31:0;;;;32227:45;32258:2;32262:9;32227:30;:45::i;42843:850::-:0;43103:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;43148:4:::1;-1:-1:-1::0;;;;;43137:15:0::1;:4;;43142:1;43137:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;43137:7:0::1;-1:-1:-1::0;;;;;43137:15:0::1;;43129:57;;;::::0;;-1:-1:-1;;;43129:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;43129:57:0;;;;;;;;;;;;;::::1;;43197:13;43213:9;43197:25;;43239:4;-1:-1:-1::0;;;;;43233:19:0::1;;43260:8;43233:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;43233:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;43233:38:0;;;;;43295:4;-1:-1:-1::0;;;;;43289:20:0::1;;43310:51;43335:7;43344:4;;43349:1;43344:7;;;;;;43310:51;43363:8;43289:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;43289:83:0::1;-1:-1:-1::0;;;;;43289:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;43289:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;43289:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;43289:83:0;43282:91:::1;;;;43384:18;43412:4:::0;;-1:-1:-1;;43417:15:0;;43412:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;43412:21:0::1;-1:-1:-1::0;;;;;43405:39:0::1;;43445:2;43405:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;43405:43:0::1;-1:-1:-1::0;;;;;43405:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;43405:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;43405:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;43405:43:0;43459:44:::1;::::0;;43405:43:::1;43459:44:::0;;::::1;::::0;;;;;;;;;;;43405:43;;-1:-1:-1;43459:44:0::1;::::0;;;43494:4;;;;;;43459:44;::::1;::::0;43494:4;;43459:44;43494:4;43459:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;43500:2:0;;-1:-1:-1;43459:34:0::1;::::0;-1:-1:-1;;43459:44:0:i:1;:::-;43602:12:::0;43536:62:::1;43584:13:::0;43543:4;;-1:-1:-1;;43548:15:0;;43543:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;43543:21:0::1;-1:-1:-1::0;;;;;43536:39:0::1;;43576:2;43536:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;43536:43:0::1;-1:-1:-1::0;;;;;43536:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;28599:865:0::0;28853:12;28867;28834:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;28892:12:::1;28907:49;28932:7;28941:6;28949;28907:24;:49::i;:::-;28967:62;::::0;;-1:-1:-1;;;28967:62:0;;29001:10:::1;28967:62;::::0;::::1;::::0;-1:-1:-1;;;;;28967:33:0;::::1;:62:::0;;;;;;;;;;;;;;28892:64;;-1:-1:-1;28967:33:0;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;28967:33:0;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;28967:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28967:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;29097:29:0::1;::::0;;-1:-1:-1;;;29097:29:0;;-1:-1:-1;;;;;29097:29:0;;::::1;;::::0;::::1;::::0;;;29067:12:::1;::::0;;;29097:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;29067:12;29097:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;29097:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29097:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29097:29:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;29097:29:0;-1:-1:-1;29138:14:0::1;29157:43;29185:6:::0;29193;29157:27:::1;:43::i;:::-;29137:63;;;29242:6;-1:-1:-1::0;;;;;29232:16:0::1;:6;-1:-1:-1::0;;;;;29232:16:0::1;;:58;;29273:7;29282;29232:58;;;29252:7;29261;29232:58;29211:79:::0;;-1:-1:-1;29211:79:0;-1:-1:-1;29309:21:0;;::::1;;29301:72;;;;-1:-1:-1::0;;;29301:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29403:10;29392:7;:21;;29384:72;;;;-1:-1:-1::0;;;29384:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23206:1;;;;28599:865:::0;;;;;;;;;;;:::o;22905:41::-;;;:::o;45321:253::-;45465:21;45511:55;45542:7;45551:8;45561:4;45511:30;:55::i;35266:744::-;35531:21;35512:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;35569:26;;35565:87:::1;;35611:29;35621:10;35632:7;;35611:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;35611:9:0::1;::::0;-1:-1:-1;;;35611:29:0:i:1;:::-;35672:55;35702:7;35711:9;35722:4;;35672:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;35672:29:0::1;::::0;-1:-1:-1;;;35672:55:0:i:1;:::-;35662:65;;35760:11;35746:7;35754:1;35746:10;;;;;;;;;;;;;;:25;;35738:77;;;;-1:-1:-1::0;;;35738:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30832:669:::0;31121:16;31139:14;31166:12;31181:46;31206:7;31215:5;31222:4;31181:24;:46::i;:::-;31166:61;;31238:10;31251;:33;;31275:9;31251:33;;;-1:-1:-1;;31251:33:0;31295:80;;;-1:-1:-1;;;31295:80:0;;31323:10;31295:80;;;;31343:4;31295:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31238:46;;-1:-1:-1;;;;;;31295:27:0;;;;;:80;;;;;-1:-1:-1;;31295:80:0;;;;;;;;-1:-1:-1;31295:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;31295:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31295:80:0;;;;31413;31432:5;31439:9;31450:14;31466:12;31480:2;31484:8;31413:18;:80::i;:::-;31386:107;;;;-1:-1:-1;30832:669:0;-1:-1:-1;;;;;;;;;;;;;30832:669:0:o;45843:217::-;45942:11;;45930:42;;;-1:-1:-1;;;45930:42:0;;-1:-1:-1;;;;;45930:42:0;;;;;;;;;45942:11;;;;;45930:33;;:42;;;;;;;;;;;;;;45942:11;;45930:42;;;2:2:-1;;;;27:1;24;17:12;2:2;45930:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45930:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;45930:42:0;45925:128;;46001:11;;45989:52;;;-1:-1:-1;;;45989:52:0;;-1:-1:-1;;;;;45989:52:0;;;;;;;;;;;;;;;;;;;;;;;46001:11;;;;;45989:34;;46024:7;;46033;;45989:52;;;;;;;;;;;;46001:11;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;45989:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;45989:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;45989:52:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;45925:128:0;45843:217;;:::o;25719:738::-;26007:12;26021;26035:14;25988:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;26083:85:::1;26097:6;26105;26113:14;26129;26145:10;26157;26083:13;:85::i;:::-;26062:106:::0;;-1:-1:-1;26062:106:0;-1:-1:-1;26179:12:0::1;26194:49;26219:7;26228:6:::0;26236;26194:24:::1;:49::i;:::-;26179:64;;26254:66;26286:6;26294:10;26306:4;26312:7;26254:31;:66::i;:::-;26331;26363:6;26371:10;26383:4;26389:7;26331:31;:66::i;:::-;26435:4;-1:-1:-1::0;;;;;26420:25:0::1;;26446:2;26420:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;26420:29:0::1;-1:-1:-1::0;;;;;26420:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;21139:109:0::0;20245:9;:7;:9::i;:::-;20237:54;;;;;-1:-1:-1;;;20237:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21212:28:::1;21231:8;21212:18;:28::i;:::-;21139:109:::0;:::o;27582:974::-;27835:16;27853:14;27869;27816:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;27923:176:::1;27951:5;27971:4;27990:18;28023:9;28047:14;28076:12;27923:13;:176::i;:::-;27896:203:::0;;-1:-1:-1;27896:203:0;-1:-1:-1;28110:12:0::1;28125:46;28150:7;28159:5:::0;28166:4:::1;28125:24;:46::i;:::-;28110:61;;28182:69;28214:5;28221:10;28233:4;28239:11;28182:31;:69::i;:::-;28268:4;-1:-1:-1::0;;;;;28262:19:0::1;;28289:9;28262:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28262:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28262:39:0;;;;;28325:4;-1:-1:-1::0;;;;;28319:20:0::1;;28340:4;28346:9;28319:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;28319:37:0::1;-1:-1:-1::0;;;;;28319:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28319:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28319:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;28319:37:0;28312:45:::1;;;;28395:4;-1:-1:-1::0;;;;;28380:25:0::1;;28406:2;28380:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;28380:29:0::1;-1:-1:-1::0;;;;;28380:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28380:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28380:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;28380:29:0;;-1:-1:-1;28460:9:0::1;:21:::0;-1:-1:-1;28456:92:0::1;;;28483:65;28514:10;28538:9;28526;:21;28483:30;:65::i;:::-;23206:1;27582:974:::0;;;;;;;;;;;:::o;23000:80::-;;;-1:-1:-1;;;;;23000:80:0;;:::o;39021:810::-;39234:21;39206:8;23151:15;23139:8;:27;;23131:64;;;;;-1:-1:-1;;;23131:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23131:64:0;;;;;;;;;;;;;;;39292:4:::1;-1:-1:-1::0;;;;;39281:15:0::1;:4;;39286:1;39281:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;39281:7:0::1;-1:-1:-1::0;;;;;39281:15:0::1;;39273:57;;;::::0;;-1:-1:-1;;;39273:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;39273:57:0;;;;;;;;;;;;;::::1;;39351:55;39381:7;39390:9;39401:4;;39351:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;39351:29:0::1;::::0;-1:-1:-1;;;39351:55:0:i:1;:::-;39341:65;;39439:9;39425:7;39433:1;39425:10;;;;;;;;;;;;;;:23;;39417:75;;;;-1:-1:-1::0;;;39417:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39509:4;-1:-1:-1::0;;;;;39503:19:0::1;;39530:7;39538:1;39530:10;;;;;;;;;;;;;;39503:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;39503:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39503:40:0;;;;;39567:4;-1:-1:-1::0;;;;;39561:20:0::1;;39582:51;39607:7;39616:4;;39621:1;39616:7;;;;;;39582:51;39635:7;39643:1;39635:10;;;;;;;;;;;;;;39561:85;;;;;;;;;;;;;-1:-1:-1::0;;;;;39561:85:0::1;-1:-1:-1::0;;;;;39561:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;39561:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39561:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;39561:85:0;39554:93:::1;;;;39658:24;39664:7;39673:4;;39658:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;39679:2:0;;-1:-1:-1;39658:5:0::1;::::0;-1:-1:-1;;39658:24:0:i:1;:::-;39745:7;39753:1;39745:10;;;;;;;;;;;;;;39733:9;:22;39729:94;;;39757:66;39788:10;39812:7;39820:1;39812:10;;;;;;;;;;;;;;39800:9;:22;39757:30;:66::i;1640:398::-:0;1872:45;;;-1:-1:-1;;;;;1872:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1872:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1861:57:0;;;;1826:12;;1840:17;;1861:10;;;;1872:45;1861:57;;;25:18:-1;1861:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1861:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1825:93:0;;;;1937:7;:57;;;;-1:-1:-1;1949:11:0;;:16;;:44;;;1980:4;1969:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1969:24:0;1949:44;1929:101;;;;;-1:-1:-1;;;1929:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:398;;;;;:::o;2502:200::-;2615:12;;;2575;2615;;;;;;;;;-1:-1:-1;;;;;2593:7:0;;;2608:5;;2593:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2593:35:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2574:54:0;;;2647:7;2639:55;;;;-1:-1:-1;;;2639:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2502:200;;;:::o;23510:1390::-;23823:50;;;-1:-1:-1;;;23823:50:0;;-1:-1:-1;;;;;23823:50:0;;;;;;;;;;;;;;;;23728:12;;;;;;23841:7;23823:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;23823:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23823:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23823:50:0;-1:-1:-1;;;;;23823:64:0;;23819:150;;;23904:53;;;-1:-1:-1;;;23904:53:0;;-1:-1:-1;;;;;23904:53:0;;;;;;;;;;;;;;;;23922:7;23904:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;23904:37:0;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;23904:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23904:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;23819:150:0;23980:13;23995;24012:53;24041:7;24050:6;24058;24012:28;:53::i;:::-;23979:86;;;;24080:8;24092:1;24080:13;:30;;;;-1:-1:-1;24097:13:0;;24080:30;24076:817;;;24149:14;;-1:-1:-1;24165:14:0;;-1:-1:-1;24076:817:0;;;24213:19;24235:58;24258:14;24274:8;24284;24235:22;:58::i;:::-;24213:80;;24330:14;24312;:32;24308:574;;24391:10;24373:14;:28;;24365:79;;;;-1:-1:-1;;;24365:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24485:14;;-1:-1:-1;24501:14:0;-1:-1:-1;24501:14:0;24308:574;;;24557:19;24579:58;24602:14;24618:8;24628;24579:22;:58::i;:::-;24557:80;;24681:14;24663;:32;;24656:40;;;;24741:10;24723:14;:28;;24715:79;;;;-1:-1:-1;;;24715:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24835:14;-1:-1:-1;24851:14:0;;-1:-1:-1;24308:574:0;24076:817;;23510:1390;;;;;;;;;;;:::o;12979:478::-;13068:12;13094:14;13110;13128:26;13139:6;13147;13128:10;:26::i;:::-;13292:32;;;-1:-1:-1;;13292:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;13292:32:0;;;;;13282:43;;;;;;-1:-1:-1;;;;;;13195:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13195:251:0;;;;;;;13185:262;;;;;;;;;12979:478;-1:-1:-1;;;;;12979:478:0:o;2046:448::-;2317:51;;;-1:-1:-1;;;;;2317:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2317:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2306:63:0;;;;2271:12;;2285:17;;2306:10;;;;2317:51;2306:63;;;25:18:-1;2306:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2306:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2270:99:0;;;;2388:7;:57;;;;-1:-1:-1;2400:11:0;;:16;;:44;;;2431:4;2420:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2420:24:0;2400:44;2380:106;;;;-1:-1:-1;;;2380:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2046:448;;;;;;:::o;14712:517::-;14805:14;14851:1;14840:8;:12;14832:68;;;;-1:-1:-1;;;14832:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14931:1;14919:9;:13;:31;;;;;14949:1;14936:10;:14;14919:31;14911:84;;;;-1:-1:-1;;;14911:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15006:20;15029:17;:8;15042:3;15029:17;:12;:17;:::i;:::-;15006:40;-1:-1:-1;15057:14:0;15074:31;15006:40;15094:10;15074:31;:19;:31;:::i;:::-;15057:48;-1:-1:-1;15116:16:0;15135:40;15159:15;15135:19;:9;15149:4;15135:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;15116:59;;15210:11;15198:9;:23;;;;;;;14712:517;-1:-1:-1;;;;;;;14712:517:0:o;17202:602::-;17303:21;17360:1;17345:4;:11;:16;;17337:59;;;;;-1:-1:-1;;;17337:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17428:4;:11;17417:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17417:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;17417:23:0;;17407:33;;17464:8;17451:7;17459:1;17451:10;;;;;;;;;;;;;:21;;;;;17488:6;17483:314;17514:1;17500:4;:11;:15;17496:1;:19;17483:314;;;17538:14;17554:15;17573:42;17585:7;17594:4;17599:1;17594:7;;;;;;;;;;;;;;17603:4;17608:1;17612;17608:5;17603:11;;;;;;;;;;;;;;17573;:42::i;:::-;17537:78;;;;17630:15;17648:42;17660:7;17669:4;17674:1;17669:7;;;;;;;;;;;;;;17678:4;17683:1;17687;17683:5;17678:11;;;;;;;;;;;;;;17648;:42::i;:::-;17630:60;;17722:63;17742:7;17750:1;17742:10;;;;;;;;;;;;;;17754:9;17765:10;17776:8;17722:19;:63::i;:::-;17705:7;17713:1;17717;17713:5;17705:14;;;;;;;;;;;;;;;;;:80;-1:-1:-1;;;17517:3:0;;17483:314;;;;17202:602;;;;;:::o;33115:735::-;33222:6;33217:626;33248:1;33234:4;:11;:15;33230:1;:19;33217:626;;;33272:13;33287:14;33306:4;33311:1;33306:7;;;;;;;;;;;;;;33315:4;33320:1;33324;33320:5;33315:11;;;;;;;;;;;;;;33271:56;;;;33343:14;33362:42;33390:5;33397:6;33362:27;:42::i;:::-;33342:62;;;33419:14;33436:7;33444:1;33448;33444:5;33436:14;;;;;;;;;;;;;;33419:31;;33466:15;33483;33511:6;-1:-1:-1;;;;;33502:15:0;:5;-1:-1:-1;;;;;33502:15:0;;:61;;33544:9;33560:1;33502:61;;;33526:1;33530:9;33502:61;33465:98;;;;33578:10;33609:1;33595:4;:11;:15;33591:1;:19;:82;;33670:3;33591:82;;;33613:54;33638:7;33647:6;33655:4;33660:1;33664;33660:5;33655:11;;;;;;;;;;;;;;33613:24;:54::i;:::-;33578:95;;33703:48;33728:7;33737:5;33744:6;33703:24;:48::i;:::-;-1:-1:-1;;;;;33688:69:0;;33776:10;33788;33800:2;33814:1;33804:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;33804:12:0;87:42:-1;143:17;;-1:-1;33804:12:0;;33688:143;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33688:143:0;-1:-1:-1;;;;;33688:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;33688:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33688:143:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;33251:3:0;;;;;-1:-1:-1;33217:626:0;;-1:-1:-1;;;;;;;;33217:626:0;17885:623;17986:21;18043:1;18028:4;:11;:16;;18020:59;;;;;-1:-1:-1;;;18020:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18111:4;:11;18100:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18100:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;18100:23:0;;18090:33;;18164:9;18134:7;18159:1;18142:7;:14;:18;18134:27;;;;;;;;;;;;;;;;;:39;18198:11;;-1:-1:-1;;18198:15:0;18184:317;18215:5;;18184:317;;18243:14;18259:15;18278:42;18290:7;18299:4;18308:1;18304;:5;18299:11;;;;;;;;;;;;;;18312:4;18317:1;18312:7;;;;;;;18278:42;18242:78;;;;18335:15;18353:42;18365:7;18374:4;18383:1;18379;:5;18374:11;;;;;;;;;;;;;;18387:4;18392:1;18387:7;;;;;;;18353:42;18335:60;;18427:62;18446:7;18454:1;18446:10;;;;;;;;;;;;;;18458:9;18469:10;18480:8;18427:18;:62::i;:::-;18410:7;18422:1;18418;:5;18410:14;;;;;;;;;;;;;;;;;:79;-1:-1:-1;;;;;18222:3:0;18184:317;;39978:1281;40091:6;40086:1166;40117:1;40103:4;:11;:15;40099:1;:19;40086:1166;;;40141:13;40156:14;40175:4;40180:1;40175:7;;;;;;;;;;;;;;40184:4;40189:1;40193;40189:5;40184:11;;;;;;;;;;;;;;40140:56;;;;40212:14;40231:42;40259:5;40266:6;40231:27;:42::i;:::-;40211:62;;;40288:19;40325:48;40350:7;40359:5;40366:6;40325:24;:48::i;:::-;40288:86;;40389:16;40420:17;40508:13;40523;40541:4;-1:-1:-1;;;;;40541:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;40541:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40541:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;40541:18:0;;;;;;;-1:-1:-1;;;;;40507:52:0;;;;-1:-1:-1;40507:52:0;;-1:-1:-1;40575:17:0;;-1:-1:-1;;;;;40616:15:0;;;;;;;:61;;40658:8;40668;40616:61;;;40635:8;40645;40616:61;40574:103;;;;40706:56;40749:12;40713:5;-1:-1:-1;;;;;40706:23:0;;40738:4;40706:38;;;;;;;;;;;;;-1:-1:-1;;;;;40706:38:0;-1:-1:-1;;;;;40706:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;40706:56:0;40692:70;;40777:15;40795:4;-1:-1:-1;;;;;40795:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;40795:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40795:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;40795:18:0;;-1:-1:-1;40843:87:0;40880:11;40893:12;40907:13;40795:18;40843:36;:87::i;:::-;40828:102;;40086:1166;;;;;40961:15;40978;41006:6;-1:-1:-1;;;;;40997:15:0;:5;-1:-1:-1;;;;;40997:15:0;;:67;;41042:12;41061:1;40997:67;;;41021:1;41025:12;40997:67;40960:104;;;;41079:10;41110:1;41096:4;:11;:15;41092:1;:19;:82;;41171:3;41092:82;;;41114:54;41139:7;41148:6;41156:4;41161:1;41165;41161:5;41156:11;;;;;;;41114:54;41227:12;;;41237:1;41227:12;;;;;;;;;;-1:-1:-1;;;41189:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;41189:51:0;;;;;;;;;;;;;;;;;;;;;;41079:95;;-1:-1:-1;41189:9:0;;;;;;41199:10;;41211;;41079:95;;41227:12;;41189:51;;;;;;;;41227:12;;41189:51;;;;41227:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41189:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;41189:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;40120:3:0;;;;;-1:-1:-1;40086:1166:0;;-1:-1:-1;;;;;;;;;;40086:1166:0;18855:129;18939:5;;;18934:16;;;;18926:50;;;;;-1:-1:-1;;;18926:50:0;;;;;;;;;;;;-1:-1:-1;;;18926:50:0;;;;;;;;;;;;;;16022:472;16115:13;16161:1;16149:9;:13;16141:70;;;;-1:-1:-1;;;16141:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16242:1;16230:9;:13;:31;;;;;16260:1;16247:10;:14;16230:31;16222:84;;;;-1:-1:-1;;;16222:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16317:14;16334:34;16363:4;16334:24;:9;16348;16334:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;16317:51;-1:-1:-1;16379:16:0;16398:34;16428:3;16398:25;:10;16413:9;16398:25;:14;:25;:::i;:34::-;16379:53;;16454:32;16484:1;16467:11;16455:9;:23;;;;;;;16454:32;:29;:32;:::i;:::-;16443:43;16022:472;-1:-1:-1;;;;;;16022:472:0:o;14269:321::-;14351:12;14394:1;14384:7;:11;14376:61;;;;-1:-1:-1;;;14376:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14467:1;14456:8;:12;:28;;;;;14483:1;14472:8;:12;14456:28;14448:81;;;;-1:-1:-1;;;14448:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14574:8;14550:21;:7;14562:8;14550:21;:11;:21;:::i;:::-;:32;;;;;;;14269:321;-1:-1:-1;;;;14269:321:0:o;12538:349::-;12613:14;12629;12674:6;-1:-1:-1;;;;;12664:16:0;:6;-1:-1:-1;;;;;12664:16:0;;;12656:66;;;;-1:-1:-1;;;12656:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12761:6;-1:-1:-1;;;;;12752:15:0;:6;-1:-1:-1;;;;;12752:15:0;;:53;;12790:6;12798;12752:53;;;12771:6;12779;12752:53;12733:72;;-1:-1:-1;12733:72:0;-1:-1:-1;;;;;;12824:20:0;;12816:63;;;;;-1:-1:-1;;;12816:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12538:349;;;;;:::o;21354:229::-;-1:-1:-1;;;;;21428:22:0;;21420:73;;;;-1:-1:-1;;;21420:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21530:6;;;21509:38;;-1:-1:-1;;;;;21509:38:0;;;;21530:6;;;21509:38;;;21558:6;:17;;-1:-1:-1;;;;;;21558:17:0;-1:-1:-1;;;;;21558:17:0;;;;;;;;;;21354:229::o;13515:391::-;13608:13;13623;13650:14;13669:26;13680:6;13688;13669:10;:26::i;:::-;13649:46;;;13707:13;13722;13755:32;13763:7;13772:6;13780;13755:7;:32::i;:::-;-1:-1:-1;;;;;13740:60:0;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13740:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13740:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13740:62:0;;;;;;;-1:-1:-1;;;;;13706:96:0;;;;-1:-1:-1;13706:96:0;;-1:-1:-1;;;;;;13836:16:0;;;;;;;:62;;13879:8;13889;13836:62;;;13856:8;13866;13836:62;13813:85;;;;-1:-1:-1;13515:391:0;-1:-1:-1;;;;;;;13515:391:0:o;18992:142::-;19044:6;19071;;;:30;;-1:-1:-1;;19086:5:0;;;19100:1;19095;19086:5;19095:1;19081:15;;;;;:20;19071:30;19063:63;;;;;-1:-1:-1;;;19063:63:0;;;;;;;;;;;;-1:-1:-1;;;19063:63:0;;;;;;;;;;;;;;18719:128;18803:5;;;18798:16;;;;18790:49;;;;;-1:-1:-1;;;18790:49:0;;;;;;;;;;;;-1:-1:-1;;;18790:49:0;;;;;;;;;;;;;;13967:189;14060:6;14101:32;14109:7;14118:6;14126;14101:7;:32::i;:::-;-1:-1:-1;;;;;14086:60:0;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14086:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14086:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14086:62:0;;13967:189;-1:-1:-1;;;;13967:189:0:o;15351:550::-;15467:14;15513:1;15502:8;:12;15494:68;;;;-1:-1:-1;;;15494:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15593:1;15581:9;:13;:31;;;;;15611:1;15598:10;:14;15581:31;15573:84;;;;-1:-1:-1;;;15573:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15668:20;15691:27;:8;:27;15704:4;:13;;;15691:27;;:12;:27;:::i;:::-;15668:50;-1:-1:-1;15729:14:0;15746:31;15668:50;15766:10;15746:31;:19;:31;:::i;:::-;15729:48;-1:-1:-1;15788:16:0;15807:40;15831:15;15807:19;:9;15821:4;15807:19;:13;:19;:::i;:40::-;15788:59;;15882:11;15870:9;:23;;;;;;;15351:550;-1:-1:-1;;;;;;;;15351:550:0:o;16615:505::-;16731:13;16777:1;16765:9;:13;16757:70;;;;-1:-1:-1;;;16757:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16858:1;16846:9;:13;:31;;;;;16876:1;16863:10;:14;16846:31;16838:84;;;;-1:-1:-1;;;16838:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16933:14;16950:34;16979:4;16950:24;:9;16964;16950:24;:13;:24;:::i;:34::-;16933:51;-1:-1:-1;16995:16:0;17014:44;;17044:4;:13;;;17014:44;:25;:10;17029:9;17014:25;:14;:25;:::i;:44::-;16995:63;;17080:32;17110:1;17093:11;17081:9;:23;;;;17080:32;17069:43;16615:505;-1:-1:-1;;;;;;;16615:505:0:o

Swarm Source

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