Contract 0xd954551853F55deb4Ae31407c423e67B1621424A 6

 

Contract Overview

BSCswap: Router
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x20019f7791aa40d291d6381c53bbf46deddf99d1402dff1fe7241f34d7ff1a10Swap Exact Token...146048332022-01-23 3:01:445 hrs 34 mins ago0xd2966c5b739d5c9a03ead6746ce092843170e842 IN  BSCswap: Router0 BNB0.000790675
0xa0bb5b5ca63041d4048a379bb944ca2b4d52eac7253d210b1978045d0848cf5dSwap Exact Token...146048262022-01-23 3:01:235 hrs 35 mins ago0xd2966c5b739d5c9a03ead6746ce092843170e842 IN  BSCswap: Router0 BNB0.000790675
0x90aab89508e959a80e432c68f0e053585ec02b6de14acc8cb5b7e44ec70b5858Swap Exact Token...146048172022-01-23 3:00:565 hrs 35 mins ago0xd2966c5b739d5c9a03ead6746ce092843170e842 IN  BSCswap: Router0 BNB0.000790675
0x39db9be5e3caad92d352b1b193f2a4f03321b8441f518607948246595bcdac7cSwap Exact Token...145940632022-01-22 18:02:4714 hrs 33 mins ago0xd2966c5b739d5c9a03ead6746ce092843170e842 IN  BSCswap: Router0 BNB0.000790675
0x2b230481bdaa88100234d3c783b18a1a8063c5d275eb487afa2dff9cbd048320Swap Exact Token...145940612022-01-22 18:02:4114 hrs 33 mins ago0xd2966c5b739d5c9a03ead6746ce092843170e842 IN  BSCswap: Router0 BNB0.000790675
0xa572de996dc5b3afe79962dfb58c47b4b3df9776825e7bc8016040fe41713c3bAdd Liquidity BN...145939872022-01-22 17:58:5814 hrs 37 mins ago0x3c8a73893d7dc0e50e2bd1741bffd1fdf6b4f240 IN  BSCswap: Router0.2 BNB0.00101334
0xef80046129ae7d1824278d41decdfeeb3f51af5a10f7d1c4676071dfddae3854Swap Exact Token...145938782022-01-22 17:53:3114 hrs 43 mins ago0x4b4bbc0127651b9594442f03e8fded228f22f181 IN  BSCswap: Router0 BNB0.000790675
0xea406e6f4c7d9c03876ee9c4a608524afa7df52e5c7586ca86c34ed0a7016727Swap BNB For Exa...145913252022-01-22 15:45:3916 hrs 50 mins ago0xfaa041154a05bd85b91cf4892e0d879f9d744e42 IN  BSCswap: Router0.754803868092593 BNB0.000844135
0xf21c68e1233d6d084532c425b6c29f8ec8a4623beb99aa979ff2494c7e0ae523Swap BNB For Exa...145891062022-01-22 13:54:3318 hrs 41 mins ago0xbf6865eb205fea0f70f2d1b654c8e94c2e1bd5f8 IN  BSCswap: Router0.054479173091837 BNB0.00059077
0x98eb975324514145e8cbf60caa89ac7ebf2db7635459464e56d89f04f18e13f0Swap Exact Token...145887912022-01-22 13:38:4818 hrs 57 mins ago0x92a4098447a82261be8f375bbc6cd0084c8f3f6d IN  BSCswap: Router0 BNB0.000681108
0x8f9f7ae25570257b62efda18909081bbbc1b0407980e55ddc298327a7d23a466Swap Exact BNB F...145887552022-01-22 13:37:0018 hrs 59 mins ago0x92a4098447a82261be8f375bbc6cd0084c8f3f6d IN  BSCswap: Router0.129546425908086 BNB0.000751116
0x1b69230488b7991a6232f30bb8171ec972e5650dd519abfd7fe87ffd22eb6f8fSwap Exact Token...145882902022-01-22 13:13:4519 hrs 22 mins ago0xab69236e0ec4416af15b74229184b5cbe2c2290f IN  BSCswap: Router0 BNB0.00160321
0x598f868022aea12aa34d907ef0bb75040f7cf054a31b2736190fbbf60500eb66Swap Exact Token...145882302022-01-22 13:10:4519 hrs 25 mins ago0xab69236e0ec4416af15b74229184b5cbe2c2290f IN  BSCswap: Router0 BNB0.000896115
0xb41f3edd93a2354f5028cc025c7ee0af729010532b2a57e503a4f2d29e9f6723Add Liquidity BN...145873342022-01-22 12:25:5120 hrs 10 mins ago0xb6be5b293b4275bc9c2656521ffb2c23cd5b26f2 IN  BSCswap: Router0.001 BNB0.00119898
0xb96d3c2cc65ae72803118b9598a2449dbeb537ae62ae3537403c3e3e328ce115Swap Exact Token...145819662022-01-22 7:54:551 day 41 mins ago0xffa15b548e161b05e8f000fd10ae8711426b1eb8 IN  BSCswap: Router0 BNB0.000790615
0xa5cdaaf546e3cb4a2318240084997ef6a20ff435f0255017ea4182ef44271121Swap BNB For Exa...145817282022-01-22 7:43:011 day 53 mins ago0xfaa041154a05bd85b91cf4892e0d879f9d744e42 IN  BSCswap: Router0.788657297371193 BNB0.000844135
0x2fd5b6fff57c768a8d5e3e72ce61f0e037680cb9859636bbebbe3ee9fd50827aSwap Exact Token...145815172022-01-22 7:32:281 day 1 hr ago0x044c9955e4afd0d65d28319a6733500907d2ccf8 IN  BSCswap: Router0 BNB0.000790675
0xdbaa49e73c741a5fd2f8c6d762dce411b97dc87c57e74a8fc23f996875d0104dSwap Exact Token...145810032022-01-22 7:06:461 day 1 hr ago0x044c9955e4afd0d65d28319a6733500907d2ccf8 IN  BSCswap: Router0 BNB0.000790675
0x8ef563a3dbfe43400134956c33958f9844b0429a4bd92f4223b744b87aeb86b4Swap Exact Token...145806392022-01-22 6:48:191 day 1 hr ago0xffa15b548e161b05e8f000fd10ae8711426b1eb8 IN  BSCswap: Router0 BNB0.000790615
0x96dbd7ba2c69d6fad76a8c6dbc3e3921f33854c543e5f6318e56459f796dc20eSwap Exact Token...145806252022-01-22 6:47:281 day 1 hr ago0xffa15b548e161b05e8f000fd10ae8711426b1eb8 IN  BSCswap: Router0 BNB0.000790615
0x662343af53d39de532e31f205b8ad174ed1f62aad23996d14b8581a4ef7993e0Swap BNB For Exa...145793642022-01-22 5:43:491 day 2 hrs ago0xfaa041154a05bd85b91cf4892e0d879f9d744e42 IN  BSCswap: Router0.076803987610085 BNB0.000844075
0x06ca914b910da9349389f0888ba60ab90e183c7cfb69117f3e3de38fa036cb93Swap Exact Token...145782972022-01-22 4:49:591 day 3 hrs ago0xfaa041154a05bd85b91cf4892e0d879f9d744e42 IN  BSCswap: Router0 BNB0.000896055
0x0cdb0ebe548de31deaaf27ac15b0a4207627adbea69ee71ab1d4288ea4ea1371Swap BNB For Exa...145782672022-01-22 4:48:291 day 3 hrs ago0xfaa041154a05bd85b91cf4892e0d879f9d744e42 IN  BSCswap: Router0.10773864729681 BNB0.00079784
0x4202983d89611a23799ac972093cfb20ea910bd67d8278b985d0ff7d7b417790Swap Exact BNB F...145780662022-01-22 4:38:261 day 3 hrs ago0xfaa041154a05bd85b91cf4892e0d879f9d744e42 IN  BSCswap: Router0.93 BNB0.00067277
0x7160bb9db03c4f56b79657828d3b058c6c869a492b498fcf395e521204de5361Swap Exact Token...145779342022-01-22 4:31:501 day 4 hrs ago0xffa15b548e161b05e8f000fd10ae8711426b1eb8 IN  BSCswap: Router0 BNB0.000790615
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x20019f7791aa40d291d6381c53bbf46deddf99d1402dff1fe7241f34d7ff1a10146048332022-01-23 3:01:445 hrs 34 mins ago BSCswap: Router0xd2966c5b739d5c9a03ead6746ce092843170e8420.01297522770122107 BNB
0x20019f7791aa40d291d6381c53bbf46deddf99d1402dff1fe7241f34d7ff1a10146048332022-01-23 3:01:445 hrs 34 mins ago Binance: WBNB Token BSCswap: Router0.01297522770122107 BNB
0xa0bb5b5ca63041d4048a379bb944ca2b4d52eac7253d210b1978045d0848cf5d146048262022-01-23 3:01:235 hrs 35 mins ago BSCswap: Router0xd2966c5b739d5c9a03ead6746ce092843170e8420.013227455548176912 BNB
0xa0bb5b5ca63041d4048a379bb944ca2b4d52eac7253d210b1978045d0848cf5d146048262022-01-23 3:01:235 hrs 35 mins ago Binance: WBNB Token BSCswap: Router0.013227455548176912 BNB
0x90aab89508e959a80e432c68f0e053585ec02b6de14acc8cb5b7e44ec70b5858146048172022-01-23 3:00:565 hrs 35 mins ago BSCswap: Router0xd2966c5b739d5c9a03ead6746ce092843170e8420.013487114065095166 BNB
0x90aab89508e959a80e432c68f0e053585ec02b6de14acc8cb5b7e44ec70b5858146048172022-01-23 3:00:565 hrs 35 mins ago Binance: WBNB Token BSCswap: Router0.013487114065095166 BNB
0x39db9be5e3caad92d352b1b193f2a4f03321b8441f518607948246595bcdac7c145940632022-01-22 18:02:4714 hrs 33 mins ago BSCswap: Router0xd2966c5b739d5c9a03ead6746ce092843170e8420.016538234271382196 BNB
0x39db9be5e3caad92d352b1b193f2a4f03321b8441f518607948246595bcdac7c145940632022-01-22 18:02:4714 hrs 33 mins ago Binance: WBNB Token BSCswap: Router0.016538234271382196 BNB
0x2b230481bdaa88100234d3c783b18a1a8063c5d275eb487afa2dff9cbd048320145940612022-01-22 18:02:4114 hrs 33 mins ago BSCswap: Router0xd2966c5b739d5c9a03ead6746ce092843170e8420.016937227191545724 BNB
0x2b230481bdaa88100234d3c783b18a1a8063c5d275eb487afa2dff9cbd048320145940612022-01-22 18:02:4114 hrs 33 mins ago Binance: WBNB Token BSCswap: Router0.016937227191545724 BNB
0xa572de996dc5b3afe79962dfb58c47b4b3df9776825e7bc8016040fe41713c3b145939872022-01-22 17:58:5814 hrs 37 mins ago BSCswap: Router0x3c8a73893d7dc0e50e2bd1741bffd1fdf6b4f2401 wei
0xa572de996dc5b3afe79962dfb58c47b4b3df9776825e7bc8016040fe41713c3b145939872022-01-22 17:58:5814 hrs 37 mins ago BSCswap: Router Binance: WBNB Token0.199999999999999999 BNB
0xef80046129ae7d1824278d41decdfeeb3f51af5a10f7d1c4676071dfddae3854145938782022-01-22 17:53:3114 hrs 43 mins ago BSCswap: Router0x4b4bbc0127651b9594442f03e8fded228f22f1810.01833395001221943 BNB
0xef80046129ae7d1824278d41decdfeeb3f51af5a10f7d1c4676071dfddae3854145938782022-01-22 17:53:3114 hrs 43 mins ago Binance: WBNB Token BSCswap: Router0.01833395001221943 BNB
0xea406e6f4c7d9c03876ee9c4a608524afa7df52e5c7586ca86c34ed0a7016727145913252022-01-22 15:45:3916 hrs 50 mins ago BSCswap: Router0xfaa041154a05bd85b91cf4892e0d879f9d744e420.003755243124838775 BNB
0xea406e6f4c7d9c03876ee9c4a608524afa7df52e5c7586ca86c34ed0a7016727145913252022-01-22 15:45:3916 hrs 50 mins ago BSCswap: Router Binance: WBNB Token0.751048624967755102 BNB
0xf21c68e1233d6d084532c425b6c29f8ec8a4623beb99aa979ff2494c7e0ae523145891062022-01-22 13:54:3318 hrs 41 mins ago BSCswap: Router0xbf6865eb205fea0f70f2d1b654c8e94c2e1bd5f80.000271040662148445 BNB
0xf21c68e1233d6d084532c425b6c29f8ec8a4623beb99aa979ff2494c7e0ae523145891062022-01-22 13:54:3318 hrs 41 mins ago BSCswap: Router Binance: WBNB Token0.054208132429689125 BNB
0x98eb975324514145e8cbf60caa89ac7ebf2db7635459464e56d89f04f18e13f0145887912022-01-22 13:38:4818 hrs 57 mins ago BSCswap: Router0x92a4098447a82261be8f375bbc6cd0084c8f3f6d0.104141974872789378 BNB
0x98eb975324514145e8cbf60caa89ac7ebf2db7635459464e56d89f04f18e13f0145887912022-01-22 13:38:4818 hrs 57 mins ago Binance: WBNB Token BSCswap: Router0.104141974872789378 BNB
0x8f9f7ae25570257b62efda18909081bbbc1b0407980e55ddc298327a7d23a466145887552022-01-22 13:37:0018 hrs 59 mins ago BSCswap: Router Binance: WBNB Token0.129546425908086733 BNB
0x1b69230488b7991a6232f30bb8171ec972e5650dd519abfd7fe87ffd22eb6f8f145882902022-01-22 13:13:4519 hrs 22 mins ago BSCswap: Router0xab69236e0ec4416af15b74229184b5cbe2c2290f0.000000008890654059 BNB
0x1b69230488b7991a6232f30bb8171ec972e5650dd519abfd7fe87ffd22eb6f8f145882902022-01-22 13:13:4519 hrs 22 mins ago Binance: WBNB Token BSCswap: Router0.000000008890654059 BNB
0x598f868022aea12aa34d907ef0bb75040f7cf054a31b2736190fbbf60500eb66145882302022-01-22 13:10:4519 hrs 25 mins ago BSCswap: Router0xab69236e0ec4416af15b74229184b5cbe2c2290f1.656273378558130527 BNB
0x598f868022aea12aa34d907ef0bb75040f7cf054a31b2736190fbbf60500eb66145882302022-01-22 13:10:4519 hrs 25 mins ago Binance: WBNB Token BSCswap: Router1.656273378558130527 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BSCswapRouter

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-14
*/

/**
 *Submitted for verification at Bscscan.com on 2020-09-13
*/

// Dependency file: contracts/interfaces/IBSCswapRouter01.sol

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

// pragma solidity >=0.6.2;

interface IBSCswapRouter01 {
    function factory() external pure returns (address);
    function WBNB() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityBNB(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountBNB, 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 removeLiquidityBNB(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountBNB);
    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 removeLiquidityBNBWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountBNB);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactBNBForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactBNB(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForBNB(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapBNBForExactTokens(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);
}

// Dependency file: contracts/interfaces/IBSCswapPair.sol

// pragma solidity >=0.5.0;

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

// Dependency file: contracts/interfaces/IWBNB.sol

// pragma solidity >=0.5.0;

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

// Dependency file: contracts/interfaces/IBEP20.sol

// pragma solidity >=0.5.0;

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

// Dependency file: contracts/interfaces/IBSCswapFactory.sol

// pragma solidity >=0.5.0;

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

// Dependency file: contracts/interfaces/IBSCswapRouter02.sol

// pragma solidity >=0.6.2;

// import './IBSCswapRouter01.sol';

interface IBSCswapRouter02 is IBSCswapRouter01 {
    function removeLiquidityBNBSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external returns (uint amountBNB);
    function removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountBNB);

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

// Dependency file: contracts/libraries/TransferHelper.sol

// pragma solidity >=0.6.0;

// helper methods for interacting with BEP20 tokens and sending BNB that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint 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, uint 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, uint 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 safeTransferBNB(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: BNB_TRANSFER_FAILED');
    }
}

// Dependency file: contracts/libraries/SafeMath.sol

// pragma solidity =0.6.12;

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

library SafeMathBSCswap {
    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');
    }
}

// Dependency file: contracts/libraries/BSCswapLibrary.sol

// pragma solidity >=0.5.0;

// import '../interfaces/IBSCswapPair.sol';

// import "./SafeMath.sol";

library BSCswapLibrary {
    using SafeMathBSCswap 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, 'BSCswapLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'BSCswapLibrary: 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'acc1c81cc3e9fb496da555f6bd67c3a095e579b26c1b580070cc6afa8f0a94fa' // 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,) = IBSCswapPair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // 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, 'BSCswapLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'BSCswapLibrary: 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, 'BSCswapLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'BSCswapLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        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, 'BSCswapLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'BSCswapLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        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, 'BSCswapLibrary: 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]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // 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, 'BSCswapLibrary: 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]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

pragma solidity =0.6.12;


// import './libraries/BSCswapLibrary.sol';
// import './libraries/SafeMath.sol';
// import './libraries/TransferHelper.sol';
// import './interfaces/IBSCswapRouter02.sol';
// import './interfaces/IBSCswapFactory.sol';
// import './interfaces/IBEP20.sol';
// import './interfaces/IWBNB.sol';

contract BSCswapRouter is IBSCswapRouter02 {
    using SafeMathBSCswap for uint;

    address public immutable override factory;
    address public immutable override WBNB;

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

    constructor(address _factory, address _WBNB) public {
        factory = _factory;
        WBNB = _WBNB;
    }

    receive() external payable {
        assert(msg.sender == WBNB); // only accept BNB via fallback from the WBNB 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 (IBSCswapFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            IBSCswapFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = BSCswapLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = BSCswapLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'BSCswapRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = BSCswapLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'BSCswapRouter: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    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 = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IBSCswapPair(pair).mint(to);
    }
    function addLiquidityBNB(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountBNB, uint liquidity) {
        (amountToken, amountBNB) = _addLiquidity(
            token,
            WBNB,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountBNBMin
        );
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWBNB(WBNB).deposit{value: amountBNB}();
        assert(IWBNB(WBNB).transfer(pair, amountBNB));
        liquidity = IBSCswapPair(pair).mint(to);
        // refund dust BNB, if any
        if (msg.value > amountBNB) TransferHelper.safeTransferBNB(msg.sender, msg.value - amountBNB);
    }

    // **** 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 = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        IBSCswapPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IBSCswapPair(pair).burn(to);
        (address token0,) = BSCswapLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'BSCswapRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'BSCswapRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityBNB(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountBNB) {
        (amountToken, amountBNB) = removeLiquidity(
            token,
            WBNB,
            liquidity,
            amountTokenMin,
            amountBNBMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWBNB(WBNB).withdraw(amountBNB);
        TransferHelper.safeTransferBNB(to, amountBNB);
    }
    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 = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityBNBWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountBNB) {
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountBNB) = removeLiquidityBNB(token, liquidity, amountTokenMin, amountBNBMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityBNBSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountBNB) {
        (, amountBNB) = removeLiquidity(
            token,
            WBNB,
            liquidity,
            amountTokenMin,
            amountBNBMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IBEP20BSCswap(token).balanceOf(address(this)));
        IWBNB(WBNB).withdraw(amountBNB);
        TransferHelper.safeTransferBNB(to, amountBNB);
    }
    function removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountBNB) {
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountBNB = removeLiquidityBNBSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountBNBMin, 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,) = BSCswapLibrary.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 ? BSCswapLibrary.pairFor(factory, output, path[i + 2]) : _to;
            IBSCswapPair(BSCswapLibrary.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = BSCswapLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.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 = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactBNBForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWBNB(WBNB).deposit{value: amounts[0]}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactBNB(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] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWBNB(WBNB).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferBNB(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForBNB(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] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWBNB(WBNB).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferBNB(to, amounts[amounts.length - 1]);
    }
    function swapBNBForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        IWBNB(WBNB).deposit{value: amounts[0]}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust BNB, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferBNB(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,) = BSCswapLibrary.sortTokens(input, output);
            IBSCswapPair pair = IBSCswapPair(BSCswapLibrary.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 = IBEP20BSCswap(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = BSCswapLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? BSCswapLibrary.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IBEP20BSCswap(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IBEP20BSCswap(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactBNBForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        uint amountIn = msg.value;
        IWBNB(WBNB).deposit{value: amountIn}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IBEP20BSCswap(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IBEP20BSCswap(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForBNBSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WBNB, 'BSCswapRouter: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IBEP20BSCswap(WBNB).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWBNB(WBNB).withdraw(amountOut);
        TransferHelper.safeTransferBNB(to, amountOut);
    }

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WBNB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WBNB","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":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityBNB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","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":[{"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":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityBNB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityBNBSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","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":"removeLiquidityBNBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","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":"removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountBNB","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":[{"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":"swapBNBForExactTokens","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":"swapExactBNBForTokens","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":"swapExactBNBForTokensSupportingFeeOnTransferTokens","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":"swapExactTokensForBNB","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":"swapExactTokensForBNBSupportingFeeOnTransferTokens","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":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","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":"swapTokensForExactBNB","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"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b50604051620046d5380380620046d58339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614550620001856000398061015f5280610e08528061111a52806111af5280611223528061171252806118a252806119805280611aac5280611bef5280611c775280611eef5280611f59528061209f528061212752806122aa528061235e52806126c752806127a2528061287c52806129525280612adb5280612b165280612d2a5280612d805280612db45280612e28525080610cb35280610cec5280610de65280610f3b52806110125280611255528061154552806117a0528061195e5280611b3f5280611ca95280611e3f5280611fec52806121595280612432528061262a528061265352806129e05280612c0b5280612d5e528061359652806135d9528061377b52806138f15280613f445280613ffd52806140b052506145506000f3fe60806040526004361061014f5760003560e01c80638dd95002116100b6578063d06ca61f1161006f578063d06ca61f1461099d578063d46d2f8314610a52578063d67b571e14610ae8578063e058848814610b7e578063e8e3370014610bd1578063eaaed44214610c5157610188565b80638dd95002146107ed5780639cf689111461081e578063ad615dec146108a2578063b7e65949146108d8578063baa2abde1461092b578063c45a01551461098857610188565b80635c11d795116101085780635c11d795146104fe5780635d616c5b14610594578063685a0a341461062a5780638332a9631461069d57806385f8c259146107215780638803dbee1461075757610188565b8063054d50d41461018d5780631f00ca74146101d55780632195995c146102da57806334a0772d1461037157806338ed1739146103e457806350e27df31461047a57610188565b3661018857336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018657fe5b005b600080fd5b34801561019957600080fd5b506101c3600480360360608110156101b057600080fd5b5080359060208101359060400135610c97565b60408051918252519081900360200190f35b3480156101e157600080fd5b5061028a600480360360408110156101f857600080fd5b81359190810190604081016020820135600160201b81111561021957600080fd5b82018360208201111561022b57600080fd5b803590602001918460208302840111600160201b8311171561024c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cac945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102c65781810151838201526020016102ae565b505050509050019250505060405180910390f35b3480156102e657600080fd5b5061035860048036036101608110156102fe57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610ce2565b6040805192835260208301919091528051918290030190f35b34801561037d57600080fd5b50610358600480360361014081101561039557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610ddc565b3480156103f057600080fd5b5061028a600480360360a081101561040757600080fd5b813591602081013591810190606081016040820135600160201b81111561042d57600080fd5b82018360208201111561043f57600080fd5b803590602001918460208302840111600160201b8311171561046057600080fd5b91935091506001600160a01b038135169060200135610ef0565b6101866004803603608081101561049057600080fd5b81359190810190604081016020820135600160201b8111156104b157600080fd5b8201836020820111156104c357600080fd5b803590602001918460208302840111600160201b831117156104e457600080fd5b91935091506001600160a01b0381351690602001356110d4565b34801561050a57600080fd5b50610186600480360360a081101561052157600080fd5b813591602081013591810190606081016040820135600160201b81111561054757600080fd5b82018360208201111561055957600080fd5b803590602001918460208302840111600160201b8311171561057a57600080fd5b91935091506001600160a01b0381351690602001356114db565b3480156105a057600080fd5b5061028a600480360360a08110156105b757600080fd5b813591602081013591810190606081016040820135600160201b8111156105dd57600080fd5b8201836020820111156105ef57600080fd5b803590602001918460208302840111600160201b8311171561061057600080fd5b91935091506001600160a01b0381351690602001356116c2565b34801561063657600080fd5b506101c3600480360361014081101561064e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611956565b61028a600480360360808110156106b357600080fd5b81359190810190604081016020820135600160201b8111156106d457600080fd5b8201836020820111156106e657600080fd5b803590602001918460208302840111600160201b8311171561070757600080fd5b91935091506001600160a01b038135169060200135611a64565b34801561072d57600080fd5b506101c36004803603606081101561074457600080fd5b5080359060208101359060400135611de7565b34801561076357600080fd5b5061028a600480360360a081101561077a57600080fd5b813591602081013591810190606081016040820135600160201b8111156107a057600080fd5b8201836020820111156107b257600080fd5b803590602001918460208302840111600160201b831117156107d357600080fd5b91935091506001600160a01b038135169060200135611df4565b3480156107f957600080fd5b50610802611eed565b604080516001600160a01b039092168252519081900360200190f35b61028a6004803603608081101561083457600080fd5b81359190810190604081016020820135600160201b81111561085557600080fd5b82018360208201111561086757600080fd5b803590602001918460208302840111600160201b8311171561088857600080fd5b91935091506001600160a01b038135169060200135611f11565b3480156108ae57600080fd5b506101c3600480360360608110156108c557600080fd5b5080359060208101359060400135612251565b3480156108e457600080fd5b506101c3600480360360c08110156108fb57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561225e565b34801561093757600080fd5b50610358600480360360e081101561094e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356123e4565b34801561099457600080fd5b50610802612628565b3480156109a957600080fd5b5061028a600480360360408110156109c057600080fd5b81359190810190604081016020820135600160201b8111156109e157600080fd5b8201836020820111156109f357600080fd5b803590602001918460208302840111600160201b83111715610a1457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061264c945050505050565b348015610a5e57600080fd5b50610186600480360360a0811015610a7557600080fd5b813591602081013591810190606081016040820135600160201b811115610a9b57600080fd5b820183602082011115610aad57600080fd5b803590602001918460208302840111600160201b83111715610ace57600080fd5b91935091506001600160a01b038135169060200135612679565b348015610af457600080fd5b5061028a600480360360a0811015610b0b57600080fd5b813591602081013591810190606081016040820135600160201b811115610b3157600080fd5b820183602082011115610b4357600080fd5b803590602001918460208302840111600160201b83111715610b6457600080fd5b91935091506001600160a01b038135169060200135612902565b348015610b8a57600080fd5b50610358600480360360c0811015610ba157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612a8e565b348015610bdd57600080fd5b50610c336004803603610100811015610bf557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612ba8565b60408051938452602084019290925282820152519081900360600190f35b610c33600480360360c0811015610c6757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612cdb565b6000610ca4848484612f6e565b949350505050565b6060610cd97f00000000000000000000000000000000000000000000000000000000000000008484613046565b90505b92915050565b6000806000610d127f00000000000000000000000000000000000000000000000000000000000000008f8f613193565b9050600087610d21578c610d25565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b50505050610dc28f8f8f8f8f8f8f6123e4565b809450819550505050509b509b9950505050505050505050565b6000806000610e2c7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613193565b9050600087610e3b578c610e3f565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610eb557600080fd5b505af1158015610ec9573d6000803e3d6000fd5b50505050610edb8e8e8e8e8e8e612a8e565b909f909e509c50505050505050505050505050565b60608142811015610f36576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b610f947f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061325392505050565b91508682600184510381518110610fa757fe5b60200260200101511015610fec5760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b61108a86866000818110610ffc57fe5b905060200201356001600160a01b0316336110707f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061103e57fe5b905060200201356001600160a01b03168b8b600181811061105b57fe5b905060200201356001600160a01b0316613193565b8560008151811061107d57fe5b602002602001015161338a565b6110c9828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506134e7915050565b509695505050505050565b8042811015611118576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585600081811061114f57fe5b905060200201356001600160a01b03166001600160a01b0316146111a8576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561120857600080fd5b505af115801561121c573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61129e7f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b905060200201356001600160a01b03168a8a600181811061105b57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b505161131757fe5b60008686600019810181811061132957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561138557600080fd5b505afa158015611399573d6000803e3d6000fd5b505050506040513d60208110156113af57600080fd5b505160408051602089810282810182019093528982529293506113f19290918a918a918291850190849080828437600092019190915250899250613724915050565b87611494828989600019810181811061140657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561146257600080fd5b505afa158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b505190613a2b565b10156114d15760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b5050505050505050565b804281101561151f576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6115778585600081811061152f57fe5b905060200201356001600160a01b0316336115717f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b8a61338a565b60008585600019810181811061158957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115e557600080fd5b505afa1580156115f9573d6000803e3d6000fd5b505050506040513d602081101561160f57600080fd5b50516040805160208881028281018201909352888252929350611651929091899189918291850190849080828437600092019190915250889250613724915050565b86611494828888600019810181811061166657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561146257600080fd5b60608142811015611708576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061174257fe5b905060200201356001600160a01b03166001600160a01b03161461179b576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b6117f97f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061325392505050565b9150868260018451038151811061180c57fe5b602002602001015110156118515760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b61186186866000818110610ffc57fe5b6118a0828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506134e7915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106118df57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561191d57600080fd5b505af1158015611931573d6000803e3d6000fd5b505050506110c9848360018551038151811061194957fe5b6020026020010151613a7b565b6000806119a47f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613193565b90506000866119b3578b6119b7565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611a2d57600080fd5b505af1158015611a41573d6000803e3d6000fd5b50505050611a538d8d8d8d8d8d61225e565b9d9c50505050505050505050505050565b60608142811015611aaa576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611ae157fe5b905060200201356001600160a01b03166001600160a01b031614611b3a576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b611b987f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061304692505050565b91503482600081518110611ba857fe5b60200260200101511115611bed5760405162461bcd60e51b81526004018080602001828103825260258152602001806143b66025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611c2957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c5c57600080fd5b505af1158015611c70573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611cd57f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b84600081518110611ce257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d3057600080fd5b505af1158015611d44573d6000803e3d6000fd5b505050506040513d6020811015611d5a57600080fd5b5051611d6257fe5b611da1828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506134e7915050565b81600081518110611dae57fe5b6020026020010151341115611ddd57611ddd3383600081518110611dce57fe5b60200260200101513403613a7b565b5095945050505050565b6000610ca4848484613b6e565b60608142811015611e3a576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b611e987f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061304692505050565b91508682600081518110611ea857fe5b60200260200101511115610fec5760405162461bcd60e51b81526004018080602001828103825260258152602001806143b66025913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015611f57576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611f8e57fe5b905060200201356001600160a01b03166001600160a01b031614611fe7576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b6120457f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061325392505050565b9150868260018451038151811061205857fe5b6020026020010151101561209d5760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106120d957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6121857f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b8460008151811061219257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156121e057600080fd5b505af11580156121f4573d6000803e3d6000fd5b505050506040513d602081101561220a57600080fd5b505161221257fe5b611ddd828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506134e7915050565b6000610ca4848484613c46565b600081428110156122a4576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6122d3887f000000000000000000000000000000000000000000000000000000000000000089898930896123e4565b90508092505061235c88858a6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561232b57600080fd5b505afa15801561233f573d6000803e3d6000fd5b505050506040513d602081101561235557600080fd5b5051613cec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156123c257600080fd5b505af11580156123d6573d6000803e3d6000fd5b505050506110c98483613a7b565b600080824281101561242b576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b60006124587f00000000000000000000000000000000000000000000000000000000000000008c8c613193565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156124b357600080fd5b505af11580156124c7573d6000803e3d6000fd5b505050506040513d60208110156124dd57600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561252a57600080fd5b505af115801561253e573d6000803e3d6000fd5b505050506040513d604081101561255457600080fd5b5080516020909101519092509050600061256e8e8e613e56565b509050806001600160a01b03168e6001600160a01b031614612591578183612594565b82825b90975095508a8710156125d85760405162461bcd60e51b81526004018080602001828103825260248152602001806143926024913960400191505060405180910390fd5b898610156126175760405162461bcd60e51b81526004018080602001828103825260248152602001806143fb6024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610cd97f00000000000000000000000000000000000000000000000000000000000000008484613253565b80428110156126bd576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858560001981018181106126f757fe5b905060200201356001600160a01b03166001600160a01b031614612750576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b6127608585600081811061152f57fe5b61279e858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613724915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561280d57600080fd5b505afa158015612821573d6000803e3d6000fd5b505050506040513d602081101561283757600080fd5b505190508681101561287a5760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156128e057600080fd5b505af11580156128f4573d6000803e3d6000fd5b505050506114d18482613a7b565b60608142811015612948576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061298257fe5b905060200201356001600160a01b03166001600160a01b0316146129db576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b612a397f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061304692505050565b91508682600081518110612a4957fe5b602002602001015111156118515760405162461bcd60e51b81526004018080602001828103825260258152602001806143b66025913960400191505060405180910390fd5b6000808242811015612ad5576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b612b04897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6123e4565b9093509150612b14898685613cec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612b7a57600080fd5b505af1158015612b8e573d6000803e3d6000fd5b50505050612b9c8583613a7b565b50965096945050505050565b60008060008342811015612bf1576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b612bff8c8c8c8c8c8c613f34565b90945092506000612c317f00000000000000000000000000000000000000000000000000000000000000008e8e613193565b9050612c3f8d33838861338a565b612c4b8c33838761338a565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050506040513d6020811015612cc457600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015612d24576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b612d528a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613f34565b90945092506000612da47f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613193565b9050612db28b33838861338a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612e9d57600080fd5b505af1158015612eb1573d6000803e3d6000fd5b505050506040513d6020811015612ec757600080fd5b5051612ecf57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612f1e57600080fd5b505af1158015612f32573d6000803e3d6000fd5b505050506040513d6020811015612f4857600080fd5b5051925034841015612f6057612f6033853403613a7b565b505096509650969350505050565b6000808411612fae5760405162461bcd60e51b815260040180806020018281038252602981526020018061433f6029913960400191505060405180910390fd5b600083118015612fbe5750600082115b612ff95760405162461bcd60e51b815260040180806020018281038252602681526020018061441f6026913960400191505060405180910390fd5b6000613007856103e56141c5565b9050600061301582856141c5565b9050600061302f83613029886103e86141c5565b90614228565b905080828161303a57fe5b04979650505050505050565b606060028251101561309f576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156130b757600080fd5b506040519080825280602002602001820160405280156130e1578160200160208202803683370190505b50905082816001835103815181106130f557fe5b60209081029190910101528151600019015b801561318b576000806131448786600186038151811061312357fe5b602002602001015187868151811061313757fe5b6020026020010151614277565b9150915061316684848151811061315757fe5b60200260200101518383613b6e565b84600185038151811061317557fe5b6020908102919091010152505060001901613107565b509392505050565b60008060006131a28585613e56565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527facc1c81cc3e9fb496da555f6bd67c3a095e579b26c1b580070cc6afa8f0a94fa609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b60606002825110156132ac576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156132c457600080fd5b506040519080825280602002602001820160405280156132ee578160200160208202803683370190505b50905082816000815181106132ff57fe5b60200260200101818152505060005b600183510381101561318b576000806133448786858151811061332d57fe5b602002602001015187866001018151811061313757fe5b9150915061336684848151811061335757fe5b60200260200101518383612f6e565b84846001018151811061337557fe5b6020908102919091010152505060010161330e565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061340f5780518252601f1990920191602091820191016133f0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613471576040519150601f19603f3d011682016040523d82523d6000602084013e613476565b606091505b50915091508180156134a45750805115806134a457508080602001905160208110156134a157600080fd5b50515b6134df5760405162461bcd60e51b81526004018080602001828103825260248152602001806144d46024913960400191505060405180910390fd5b505050505050565b60005b600183510381101561371e5760008084838151811061350557fe5b602002602001015185846001018151811061351c57fe5b60200260200101519150915060006135348383613e56565b509050600087856001018151811061354857fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146135765782600061357a565b6000835b91509150600060028a5103881061359157886135d2565b6135d27f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106135c557fe5b6020026020010151613193565b90506135ff7f00000000000000000000000000000000000000000000000000000000000000008888613193565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561363c576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156136a457818101518382015260200161368c565b50505050905090810190601f1680156136d15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156136f357600080fd5b505af1158015613707573d6000803e3d6000fd5b5050600190990198506134ea975050505050505050565b50505050565b60005b6001835103811015613a265760008084838151811061374257fe5b602002602001015185846001018151811061375957fe5b60200260200101519150915060006137718383613e56565b50905060006137a17f00000000000000000000000000000000000000000000000000000000000000008585613193565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156137e257600080fd5b505afa1580156137f6573d6000803e3d6000fd5b505050506040513d606081101561380c57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613842578284613845565b83835b9150915061389a828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561146257600080fd5b95506138a7868383612f6e565b945050505050600080856001600160a01b0316886001600160a01b0316146138d1578260006138d5565b6000835b91509150600060028c51038a106138ec578a613920565b6139207f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106135c557fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156139aa578181015183820152602001613992565b50505050905090810190601f1680156139d75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156139f957600080fd5b505af1158015613a0d573d6000803e3d6000fd5b50506001909b019a506137279950505050505050505050565b505050565b80820382811115610cdc576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613ac75780518252601f199092019160209182019101613aa8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613b29576040519150601f19603f3d011682016040523d82523d6000602084013e613b2e565b606091505b5050905080613a265760405162461bcd60e51b815260040180806020018281038252602381526020018061448e6023913960400191505060405180910390fd5b6000808411613bae5760405162461bcd60e51b815260040180806020018281038252602a815260200180614368602a913960400191505060405180910390fd5b600083118015613bbe5750600082115b613bf95760405162461bcd60e51b815260040180806020018281038252602681526020018061441f6026913960400191505060405180910390fd5b6000613c116103e8613c0b86886141c5565b906141c5565b90506000613c256103e5613c0b8689613a2b565b9050613c3c6001828481613c3557fe5b0490614228565b9695505050505050565b6000808411613c865760405162461bcd60e51b81526004018080602001828103825260238152602001806144f86023913960400191505060405180910390fd5b600083118015613c965750600082115b613cd15760405162461bcd60e51b815260040180806020018281038252602681526020018061441f6026913960400191505060405180910390fd5b82613cdc85846141c5565b81613ce357fe5b04949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310613d695780518252601f199092019160209182019101613d4a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b5091509150818015613dfe575080511580613dfe5750808060200190516020811015613dfb57600080fd5b50515b613e4f576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b600080826001600160a01b0316846001600160a01b03161415613eaa5760405162461bcd60e51b81526004018080602001828103825260238152602001806144b16023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613eca578284613ecd565b83835b90925090506001600160a01b038216613f2d576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b60008060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058a8a6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015613fc057600080fd5b505afa158015613fd4573d6000803e3d6000fd5b505050506040513d6020811015613fea57600080fd5b50516001600160a01b031614156140a8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c9c6539689896040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561407b57600080fd5b505af115801561408f573d6000803e3d6000fd5b505050506040513d60208110156140a557600080fd5b50505b6000806140d67f00000000000000000000000000000000000000000000000000000000000000008b8b614277565b915091508160001480156140e8575080155b156140f8578793508692506141b8565b6000614105898484613c46565b9050878111614158578581101561414d5760405162461bcd60e51b81526004018080602001828103825260248152602001806143fb6024913960400191505060405180910390fd5b8894509250826141b6565b6000614165898486613c46565b90508981111561417157fe5b878110156141b05760405162461bcd60e51b81526004018080602001828103825260248152602001806143926024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806141e0575050808202828282816141dd57fe5b04145b610cdc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015610cdc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142868585613e56565b509050600080614297888888613193565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156142cf57600080fd5b505afa1580156142e3573d6000803e3d6000fd5b505050506040513d60608110156142f957600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b038781169084161461432c57808261432f565b81815b9099909850965050505050505056fe425343737761704c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54425343737761704c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5442534373776170526f757465723a20494e53554646494349454e545f415f414d4f554e5442534373776170526f757465723a204558434553534956455f494e5055545f414d4f554e5442534373776170526f757465723a20494e56414c49445f50415448000000000042534373776170526f757465723a20494e53554646494349454e545f425f414d4f554e54425343737761704c6962726172793a20494e53554646494349454e545f4c495155494449545942534373776170526f757465723a20455850495245440000000000000000000042534373776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a20424e425f5452414e534645525f4641494c4544425343737761704c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544425343737761704c6962726172793a20494e53554646494349454e545f414d4f554e54a2646970667358221220fe0d01180e0e7cd2f08af97af64f20b26dbc946f4c13f4a5d86093ecf36f619464736f6c634300060c0033000000000000000000000000ce8fd65646f2a2a897755a1188c04ace94d2b8d0000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

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

000000000000000000000000ce8fd65646f2a2a897755a1188c04ace94d2b8d0000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Decoded View---------------
Arg [0] : _factory (address): 0xce8fd65646f2a2a897755a1188c04ace94d2b8d0
Arg [1] : _WBNB (address): 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

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


Deployed ByteCode Sourcemap

16785:18461:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17266:10;-1:-1:-1;;;;;17280:4:0;17266:18;;17259:26;;;;16785:18461;;;;;34198:260;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34198:260:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;34992:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34992:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34992:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34992:251:0;;-1:-1:-1;34992:251:0;;-1:-1:-1;;;;;34992:251:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22061:673;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22061:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22740:665;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22740:665:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25755:622::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25755:622:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25755:622:0;;;;;;;;;;;;-1:-1:-1;25755:622:0;-1:-1:-1;;;;;;25755:622:0;;;;;;;;:::i;32252:858::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32252:858:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32252:858:0;;;;;;;;;;;;-1:-1:-1;32252:858:0;-1:-1:-1;;;;;;32252:858:0;;;;;;;;:::i;31522:724::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:724:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:724:0;;;;;;;;;;;;-1:-1:-1;31522:724:0;-1:-1:-1;;;;;;31522:724:0;;;;;;;;:::i;28510:842::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28510:842:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28510:842:0;;;;;;;;;;;;-1:-1:-1;28510:842:0;-1:-1:-1;;;;;;28510:842:0;;;;;;;;:::i;24197:714::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24197:714:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29358:802::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29358:802:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29358:802:0;;;;;;;;;;;;-1:-1:-1;29358:802:0;-1:-1:-1;;;;;;29358:802:0;;;;;;;;:::i;34466:259::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34466:259:0;;;;;;;;;;;;:::i;26383:600::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26383:600:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26383:600:0;;;;;;;;;;;;-1:-1:-1;26383:600:0;-1:-1:-1;;;;;;26383:600:0;;;;;;;;:::i;16922:38::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16922:38:0;;;;;;;;;;;;;;26989:689;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26989:689:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26989:689:0;;;;;;;;;;;;-1:-1:-1;26989:689:0;-1:-1:-1;;;;;;26989:689:0;;;;;;;;:::i;34004:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34004:186:0;;;;;;;;;;;;:::i;23484:707::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23484:707:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20523:853::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20523:853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16874:41::-;;;;;;;;;;;;;:::i;34733:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34733:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34733:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34733:251:0;;-1:-1:-1;34733:251:0;;-1:-1:-1;;;;;34733:251:0:i;33116:844::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33116:844:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33116:844:0;;;;;;;;;;;;-1:-1:-1;33116:844:0;-1:-1:-1;;;;;;33116:844:0;;;;;;;;:::i;27684:820::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27684:820:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27684:820:0;;;;;;;;;;;;-1:-1:-1;27684:820:0;-1:-1:-1;;;;;;27684:820:0;;;;;;;;:::i;21382:673::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21382:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18770:734::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18770:734:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19510:970;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19510:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34198:260::-;34351:14;34390:60;34418:8;34428:9;34439:10;34390:27;:60::i;:::-;34383:67;34198:260;-1:-1:-1;;;;34198:260:0:o;34992:251::-;35136:21;35182:53;35210:7;35219:9;35230:4;35182:27;:53::i;:::-;35175:60;;34992:251;;;;;:::o;22061:673::-;22367:12;22381;22406;22421:47;22444:7;22453:6;22461;22421:22;:47::i;:::-;22406:62;;22479:10;22492;:33;;22516:9;22492:33;;;-1:-1:-1;;22492:33:0;22536:78;;;-1:-1:-1;;;22536:78:0;;22562:10;22536:78;;;;22582:4;22536:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22479:46;;-1:-1:-1;;;;;;22536:25:0;;;;;:78;;;;;-1:-1:-1;;22536:78:0;;;;;;;;-1:-1:-1;22536:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22646:80;22662:6;22670;22678:9;22689:10;22701;22713:2;22717:8;22646:15;:80::i;:::-;22625:101;;;;;;;;22061:673;;;;;;;;;;;;;;;;:::o;22740:665::-;23029:16;23047:14;23074:12;23089:44;23112:7;23121:5;23128:4;23089:22;:44::i;:::-;23074:59;;23144:10;23157;:33;;23181:9;23157:33;;;-1:-1:-1;;23157:33:0;23201:78;;;-1:-1:-1;;;23201:78:0;;23227:10;23201:78;;;;23247:4;23201:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23144:46;;-1:-1:-1;;;;;;23201:25:0;;;;;:78;;;;;-1:-1:-1;;23201:78:0;;;;;;;;-1:-1:-1;23201:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23317:80;23336:5;23343:9;23354:14;23370:12;23384:2;23388:8;23317:18;:80::i;:::-;23290:107;;;;-1:-1:-1;22740:665:0;-1:-1:-1;;;;;;;;;;;;;22740:665:0:o;25755:622::-;25979:21;25960:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;26023:53:::1;26052:7;26061:8;26071:4;;26023:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26023:28:0::1;::::0;-1:-1:-1;;;26023:53:0:i:1;:::-;26013:63;;26126:12;26095:7;26120:1;26103:7;:14;:18;26095:27;;;;;;;;;;;;;;:43;;26087:97;;;;-1:-1:-1::0;;;26087:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26195:139;26241:4;;26246:1;26241:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26241:7:0::1;26250:10;26262:49;26285:7;26294:4;;26299:1;26294:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26294:7:0::1;26303:4;;26308:1;26303:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26303:7:0::1;26262:22;:49::i;:::-;26313:7;26321:1;26313:10;;;;;;;;;;;;;;26195:31;:139::i;:::-;26345:24;26351:7;26360:4;;26345:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26366:2:0;;-1:-1:-1;26345:5:0::1;::::0;-1:-1:-1;;26345:24:0:i:1;:::-;25755:622:::0;;;;;;;;;:::o;32252:858::-;32512:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;32557:4:::1;-1:-1:-1::0;;;;;32546:15:0::1;:4;;32551:1;32546:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32546:7:0::1;-1:-1:-1::0;;;;;32546:15:0::1;;32538:55;;;::::0;;-1:-1:-1;;;32538:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;32538:55:0;;;;;;;;;;;;;::::1;;32604:13;32620:9;32604:25;;32646:4;-1:-1:-1::0;;;;;32640:19:0::1;;32667:8;32640:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;32702:4;-1:-1:-1::0;;;;;32696:20:0::1;;32717:49;32740:7;32749:4;;32754:1;32749:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32749:7:0::1;32758:4;;32763:1;32758:7;;;;;;32717:49;32768:8;32696:81;;;;;;;;;;;;;-1:-1:-1::0;;;;;32696:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32696:81:0;32689:89:::1;;;;32789:18;32824:4:::0;;-1:-1:-1;;32829:15:0;;32824:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32824:21:0::1;-1:-1:-1::0;;;;;32810:46:0::1;;32857:2;32810:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32810:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32810:50:0;32871:44:::1;::::0;;32810:50:::1;32871:44:::0;;::::1;::::0;;;;;;;;;;;32810:50;;-1:-1:-1;32871:44:0::1;::::0;;;32906:4;;;;;;32871:44;::::1;::::0;32906:4;;32871:44;32906:4;32871:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;32912:2:0;;-1:-1:-1;32871:34:0::1;::::0;-1:-1:-1;;32871:44:0:i:1;:::-;33021:12:::0;32948:69:::1;33003:13:::0;32962:4;;-1:-1:-1;;32967:15:0;;32962:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32962:21:0::1;-1:-1:-1::0;;;;;32948:46:0::1;;32995:2;32948:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32948:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32948:50:0;;:54:::1;:69::i;:::-;:85;;32926:176;;;;-1:-1:-1::0;;;32926:176:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17084:1;;32252:858:::0;;;;;;:::o;31522:724::-;31756:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;31777:137:::1;31823:4;;31828:1;31823:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31823:7:0::1;31832:10;31844:49;31867:7;31876:4;;31881:1;31876:7;;;;;;31844:49;31895:8;31777:31;:137::i;:::-;31925:18;31960:4:::0;;-1:-1:-1;;31965:15:0;;31960:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31960:21:0::1;-1:-1:-1::0;;;;;31946:46:0::1;;31993:2;31946:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;31946:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31946:50:0;32007:44:::1;::::0;;31946:50:::1;32007:44:::0;;::::1;::::0;;;;;;;;;;;31946:50;;-1:-1:-1;32007:44:0::1;::::0;;;32042:4;;;;;;32007:44;::::1;::::0;32042:4;;32007:44;32042:4;32007:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;32048:2:0;;-1:-1:-1;32007:34:0::1;::::0;-1:-1:-1;;32007:44:0:i:1;:::-;32157:12:::0;32084:69:::1;32139:13:::0;32098:4;;-1:-1:-1;;32103:15:0;;32098:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32098:21:0::1;-1:-1:-1::0;;;;;32084:46:0::1;;32131:2;32084:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32084:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;28510:842:::0;28724:21;28696:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28796:4:0::1;28771:29;:4:::0;;-1:-1:-1;;28776:15:0;;28771:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28771:21:0::1;-1:-1:-1::0;;;;;28771:29:0::1;;28763:69;;;::::0;;-1:-1:-1;;;28763:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28763:69:0;;;;;;;;;;;;;::::1;;28853:53;28882:7;28891:8;28901:4;;28853:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28853:28:0::1;::::0;-1:-1:-1;;;28853:53:0:i:1;:::-;28843:63;;28956:12;28925:7;28950:1;28933:7;:14;:18;28925:27;;;;;;;;;;;;;;:43;;28917:97;;;;-1:-1:-1::0;;;28917:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29025:139;29071:4;;29076:1;29071:7;;;;;;29025:139;29175:35;29181:7;29190:4;;29175:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29204:4:0::1;::::0;-1:-1:-1;29175:5:0::1;::::0;-1:-1:-1;;29175:35:0:i:1;:::-;29227:4;-1:-1:-1::0;;;;;29221:20:0::1;;29242:7;29267:1;29250:7;:14;:18;29242:27;;;;;;;;;;;;;;29221:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29281:63;29312:2;29316:7;29341:1;29324:7;:14;:18;29316:27;;;;;;;;;;;;;;29281:30;:63::i;24197:714::-:0;24515:14;24542:12;24557:44;24580:7;24589:5;24596:4;24557:22;:44::i;:::-;24542:59;;24612:10;24625;:33;;24649:9;24625:33;;;-1:-1:-1;;24625:33:0;24669:78;;;-1:-1:-1;;;24669:78:0;;24695:10;24669:78;;;;24715:4;24669:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24612:46;;-1:-1:-1;;;;;;24669:25:0;;;;;:78;;;;;-1:-1:-1;;24669:78:0;;;;;;;;-1:-1:-1;24669:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24770:133;24832:5;24839:9;24850:14;24866:12;24880:2;24884:8;24770:47;:133::i;:::-;24758:145;24197:714;-1:-1:-1;;;;;;;;;;;;;24197:714:0:o;29358:802::-;29571:21;29543:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;29629:4:::1;-1:-1:-1::0;;;;;29618:15:0::1;:4;;29623:1;29618:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29618:7:0::1;-1:-1:-1::0;;;;;29618:15:0::1;;29610:55;;;::::0;;-1:-1:-1;;;29610:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;29610:55:0;;;;;;;;;;;;;::::1;;29686:53;29714:7;29723:9;29734:4;;29686:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29686:27:0::1;::::0;-1:-1:-1;;;29686:53:0:i:1;:::-;29676:63;;29772:9;29758:7;29766:1;29758:10;;;;;;;;;;;;;;:23;;29750:73;;;;-1:-1:-1::0;;;29750:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29840:4;-1:-1:-1::0;;;;;29834:19:0::1;;29861:7;29869:1;29861:10;;;;;;;;;;;;;;29834:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;29898:4;-1:-1:-1::0;;;;;29892:20:0::1;;29913:49;29936:7;29945:4;;29950:1;29945:7;;;;;;29913:49;29964:7;29972:1;29964:10;;;;;;;;;;;;;;29892:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;29892:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29892:83:0;29885:91:::1;;;;29987:24;29993:7;30002:4;;29987:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;30008:2:0;;-1:-1:-1;29987:5:0::1;::::0;-1:-1:-1;;29987:24:0:i:1;:::-;30074:7;30082:1;30074:10;;;;;;;;;;;;;;30062:9;:22;30058:94;;;30086:66;30117:10;30141:7;30149:1;30141:10;;;;;;;;;;;;;;30129:9;:22;30086:30;:66::i;:::-;29358:802:::0;;;;;;;;:::o;34466:259::-;34619:13;34657:60;34684:9;34695;34706:10;34657:26;:60::i;26383:600::-;26607:21;26588:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;26651:53:::1;26679:7;26688:9;26699:4;;26651:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26651:27:0::1;::::0;-1:-1:-1;;;26651:53:0:i:1;:::-;26641:63;;26737:11;26723:7;26731:1;26723:10;;;;;;;;;;;;;;:25;;26715:75;;;;-1:-1:-1::0;;;26715:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16922:38:::0;;;:::o;26989:689::-;27205:21;27177:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;27263:4:::1;-1:-1:-1::0;;;;;27252:15:0::1;:4;;27257:1;27252:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;27252:7:0::1;-1:-1:-1::0;;;;;27252:15:0::1;;27244:55;;;::::0;;-1:-1:-1;;;27244:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27244:55:0;;;;;;;;;;;;;::::1;;27320:54;27349:7;27358:9;27369:4;;27320:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27320:28:0::1;::::0;-1:-1:-1;;;27320:54:0:i:1;:::-;27310:64;;27424:12;27393:7;27418:1;27401:7;:14;:18;27393:27;;;;;;;;;;;;;;:43;;27385:97;;;;-1:-1:-1::0;;;27385:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27499:4;-1:-1:-1::0;;;;;27493:19:0::1;;27520:7;27528:1;27520:10;;;;;;;;;;;;;;27493:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;27557:4;-1:-1:-1::0;;;;;27551:20:0::1;;27572:49;27595:7;27604:4;;27609:1;27604:7;;;;;;27572:49;27623:7;27631:1;27623:10;;;;;;;;;;;;;;27551:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;27551:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;27551:83:0;27544:91:::1;;;;27646:24;27652:7;27661:4;;27646:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27667:2:0;;-1:-1:-1;27646:5:0::1;::::0;-1:-1:-1;;27646:24:0:i:1;34004:186::-:0;34101:12;34133:49;34154:7;34163:8;34173;34133:20;:49::i;23484:707::-;23750:14;23731:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;23793:196:::1;23823:5;23843:4;23862:9;23886:14;23915:12;23950:4;23970:8;23793:15;:196::i;:::-;23777:212;;;;;;24000:85;24028:5;24035:2;24053:5;-1:-1:-1::0;;;;;24039:30:0::1;;24078:4;24039:45;;;;;;;;;;;;;-1:-1:-1::0;;;;;24039:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24039:45:0;24000:27:::1;:85::i;:::-;24102:4;-1:-1:-1::0;;;;;24096:20:0::1;;24117:9;24096:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24138:45;24169:2;24173:9;24138:30;:45::i;20523:853::-:0;20777:12;20791;20758:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;20816:12:::1;20831:47;20854:7;20863:6;20871;20831:22;:47::i;:::-;20889:60;::::0;;-1:-1:-1;;;20889:60:0;;20921:10:::1;20889:60;::::0;::::1;::::0;-1:-1:-1;;;;;20889:31:0;::::1;:60:::0;;;;;;;;;;;;;;20816:62;;-1:-1:-1;20889:31:0;;::::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20889:31:0;:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;21017:27:0::1;::::0;;-1:-1:-1;;;21017:27:0;;-1:-1:-1;;;;;21017:27:0;;::::1;;::::0;::::1;::::0;;;20987:12:::1;::::0;;;21017:23;;::::1;::::0;::::1;::::0;:27;;;;;;;;;;;20987:12;21017:23;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21017:27:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;21017:27:0;-1:-1:-1;21056:14:0::1;21075:41;21101:6:::0;21109;21075:25:::1;:41::i;:::-;21055:61;;;21158:6;-1:-1:-1::0;;;;;21148:16:0::1;:6;-1:-1:-1::0;;;;;21148:16:0::1;;:58;;21189:7;21198;21148:58;;;21168:7;21177;21148:58;21127:79:::0;;-1:-1:-1;21127:79:0;-1:-1:-1;21225:21:0;;::::1;;21217:70;;;;-1:-1:-1::0;;;21217:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21317:10;21306:7;:21;;21298:70;;;;-1:-1:-1::0;;;21298:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17084:1;;;;20523:853:::0;;;;;;;;;;;:::o;16874:41::-;;;:::o;34733:251::-;34877:21;34923:53;34952:7;34961:8;34971:4;34923:28;:53::i;33116:844::-;33383:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33442:4:0::1;33417:29;:4:::0;;-1:-1:-1;;33422:15:0;;33417:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33417:21:0::1;-1:-1:-1::0;;;;;33417:29:0::1;;33409:69;;;::::0;;-1:-1:-1;;;33409:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;33409:69:0;;;;;;;;;;;;;::::1;;33489:137;33535:4;;33540:1;33535:7;;;;;;33489:137;33637:55;33672:4;;33637:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;33686:4:0::1;::::0;-1:-1:-1;33637:34:0::1;::::0;-1:-1:-1;;33637:55:0:i:1;:::-;33703:14;33734:4;-1:-1:-1::0;;;;;33720:29:0::1;;33758:4;33720:44;;;;;;;;;;;;;-1:-1:-1::0;;;;;33720:44:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;33720:44:0;;-1:-1:-1;33783:25:0;;::::1;;33775:79;;;;-1:-1:-1::0;;;33775:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33871:4;-1:-1:-1::0;;;;;33865:20:0::1;;33886:9;33865:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33907:45;33938:2;33942:9;33907:30;:45::i;27684:820::-:0;27898:21;27870:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27970:4:0::1;27945:29;:4:::0;;-1:-1:-1;;27950:15:0;;27945:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27945:21:0::1;-1:-1:-1::0;;;;;27945:29:0::1;;27937:69;;;::::0;;-1:-1:-1;;;27937:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27937:69:0;;;;;;;;;;;;;::::1;;28027:53;28055:7;28064:9;28075:4;;28027:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28027:27:0::1;::::0;-1:-1:-1;;;28027:53:0:i:1;:::-;28017:63;;28113:11;28099:7;28107:1;28099:10;;;;;;;;;;;;;;:25;;28091:75;;;;-1:-1:-1::0;;;28091:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21382:673:::0;21619:16;21637:14;21600:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;21691:196:::1;21721:5;21741:4;21760:9;21784:14;21813:12;21848:4;21868:8;21691:15;:196::i;:::-;21664:223:::0;;-1:-1:-1;21664:223:0;-1:-1:-1;21898:51:0::1;21926:5:::0;21933:2;21664:223;21898:27:::1;:51::i;:::-;21966:4;-1:-1:-1::0;;;;;21960:20:0::1;;21981:9;21960:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22002:45;22033:2;22037:9;22002:30;:45::i;:::-;21382:673:::0;;;;;;;;;;:::o;18770:734::-;19058:12;19072;19086:14;19039:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;19134:85:::1;19148:6;19156;19164:14;19180;19196:10;19208;19134:13;:85::i;:::-;19113:106:::0;;-1:-1:-1;19113:106:0;-1:-1:-1;19230:12:0::1;19245:47;19268:7;19277:6:::0;19285;19245:22:::1;:47::i;:::-;19230:62;;19303:66;19335:6;19343:10;19355:4;19361:7;19303:31;:66::i;:::-;19380;19412:6;19420:10;19432:4;19438:7;19380:31;:66::i;:::-;19482:4;-1:-1:-1::0;;;;;19469:23:0::1;;19493:2;19469:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;19469:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19469:27:0;18770:734;;;;-1:-1:-1;19469:27:0;;-1:-1:-1;18770:734:0;;-1:-1:-1;;;;;;;;;18770:734:0:o;19510:970::-;19763:16;19781:14;19797;19744:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;19851:176:::1;19879:5;19899:4;19918:18;19951:9;19975:14;20004:12;19851:13;:176::i;:::-;19824:203:::0;;-1:-1:-1;19824:203:0;-1:-1:-1;20038:12:0::1;20053:44;20076:7;20085:5:::0;20092:4:::1;20053:22;:44::i;:::-;20038:59;;20108:69;20140:5;20147:10;20159:4;20165:11;20108:31;:69::i;:::-;20194:4;-1:-1:-1::0;;;;;20188:19:0::1;;20215:9;20188:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;20251:4;-1:-1:-1::0;;;;;20245:20:0::1;;20266:4;20272:9;20245:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;20245:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20245:37:0;20238:45:::1;;;;20319:4;-1:-1:-1::0;;;;;20306:23:0::1;;20330:2;20306:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;20306:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20306:27:0;;-1:-1:-1;20384:9:0::1;:21:::0;-1:-1:-1;20380:92:0::1;;;20407:65;20438:10;20462:9;20450;:21;20407:30;:65::i;:::-;17084:1;19510:970:::0;;;;;;;;;;;:::o;14143:513::-;14236:14;14282:1;14271:8;:12;14263:66;;;;-1:-1:-1;;;14263:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14360:1;14348:9;:13;:31;;;;;14378:1;14365:10;:14;14348:31;14340:82;;;;-1:-1:-1;;;14340:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14433:20;14456:17;:8;14469:3;14456:12;:17::i;:::-;14433:40;-1:-1:-1;14484:14:0;14501:31;14433:40;14521:10;14501:19;:31::i;:::-;14484:48;-1:-1:-1;14543:16:0;14562:40;14586:15;14562:19;:9;14576:4;14562:13;:19::i;:::-;:23;;:40::i;:::-;14543:59;;14637:11;14625:9;:23;;;;;;;14143:513;-1:-1:-1;;;;;;;14143:513:0:o;15917:530::-;16018:21;16075:1;16060:4;:11;:16;;16052:57;;;;;-1:-1:-1;;;16052:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16141:4;:11;16130:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16130:23:0;;16120:33;;16194:9;16164:7;16189:1;16172:7;:14;:18;16164:27;;;;;;;;;;;;;;;;;:39;16228:11;;-1:-1:-1;;16228:15:0;16214:226;16245:5;;16214:226;;16273:14;16289:15;16308:42;16320:7;16329:4;16338:1;16334;:5;16329:11;;;;;;;;;;;;;;16342:4;16347:1;16342:7;;;;;;;;;;;;;;16308:11;:42::i;:::-;16272:78;;;;16382:46;16394:7;16402:1;16394:10;;;;;;;;;;;;;;16406:9;16417:10;16382:11;:46::i;:::-;16365:7;16377:1;16373;:5;16365:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;16252:3:0;16214:226;;;;15917:530;;;;;:::o;12666:478::-;12755:12;12781:14;12797;12815:26;12826:6;12834;12815:10;:26::i;:::-;12979:32;;;-1:-1:-1;;12979:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12969:43;;;;;;-1:-1:-1;;;;;;12882:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12872:262;;;;;;;;;12666:478;-1:-1:-1;;;;;12666:478:0:o;15327:509::-;15428:21;15485:1;15470:4;:11;:16;;15462:57;;;;;-1:-1:-1;;;15462:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15551:4;:11;15540:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15540:23:0;;15530:33;;15587:8;15574:7;15582:1;15574:10;;;;;;;;;;;;;:21;;;;;15611:6;15606:223;15637:1;15623:4;:11;:15;15619:1;:19;15606:223;;;15661:14;15677:15;15696:42;15708:7;15717:4;15722:1;15717:7;;;;;;;;;;;;;;15726:4;15731:1;15735;15731:5;15726:11;;;;;;;15696:42;15660:78;;;;15770:47;15783:7;15791:1;15783:10;;;;;;;;;;;;;;15795:9;15806:10;15770:12;:47::i;:::-;15753:7;15761:1;15765;15761:5;15753:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;15640:3:0;;15606:223;;10628:402;10853:51;;;-1:-1:-1;;;;;10853:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10853:51:0;-1:-1:-1;;;10853:51:0;;;10842:63;;;;10807:12;;10821:17;;10842:10;;;;10853:51;10842:63;;;10853:51;10842:63;;10853:51;10842:63;;;;;;;;;;-1:-1:-1;;10842:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10806:99;;;;10924:7;:57;;;;-1:-1:-1;10936:11:0;;:16;;:44;;;10967:4;10956:24;;;;;;;;;;;;;;;-1:-1:-1;10956:24:0;10936:44;10916:106;;;;-1:-1:-1;;;10916:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10628:402;;;;;;:::o;25022:727::-;25129:6;25124:618;25155:1;25141:4;:11;:15;25137:1;:19;25124:618;;;25179:13;25194:14;25213:4;25218:1;25213:7;;;;;;;;;;;;;;25222:4;25227:1;25231;25227:5;25222:11;;;;;;;;;;;;;;25178:56;;;;25250:14;25269:40;25295:5;25302:6;25269:25;:40::i;:::-;25249:60;;;25324:14;25341:7;25349:1;25353;25349:5;25341:14;;;;;;;;;;;;;;25324:31;;25371:15;25388;25416:6;-1:-1:-1;;;;;25407:15:0;:5;-1:-1:-1;;;;;25407:15:0;;:61;;25449:9;25465:1;25407:61;;;25431:1;25435:9;25407:61;25370:98;;;;25483:10;25514:1;25500:4;:11;:15;25496:1;:19;:80;;25573:3;25496:80;;;25518:52;25541:7;25550:6;25558:4;25563:1;25567;25563:5;25558:11;;;;;;;;;;;;;;25518:22;:52::i;:::-;25483:93;;25604:46;25627:7;25636:5;25643:6;25604:22;:46::i;:::-;-1:-1:-1;;;;;25591:65:0;;25675:10;25687;25699:2;25713:1;25703:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25703:12:0;;25591:139;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25591:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25158:3:0;;;;;-1:-1:-1;25124:618:0;;-1:-1:-1;;;;;;;;25124:618:0;;;25022:727;;;:::o;30307:1209::-;30420:6;30415:1094;30446:1;30432:4;:11;:15;30428:1;:19;30415:1094;;;30470:13;30485:14;30504:4;30509:1;30504:7;;;;;;;;;;;;;;30513:4;30518:1;30522;30518:5;30513:11;;;;;;;;;;;;;;30469:56;;;;30541:14;30560:40;30586:5;30593:6;30560:25;:40::i;:::-;30540:60;;;30615:17;30648:46;30671:7;30680:5;30687:6;30648:22;:46::i;:::-;30615:80;;30710:16;30741:17;30829:13;30844;30862:4;-1:-1:-1;;;;;30862:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30862:18:0;;;;;;;-1:-1:-1;;;;;30828:52:0;;;;-1:-1:-1;30828:52:0;;-1:-1:-1;30896:17:0;;-1:-1:-1;;;;;30937:15:0;;;;;;;:61;;30979:8;30989;30937:61;;;30956:8;30966;30937:61;30895:103;;;;31027:63;31077:12;31041:5;-1:-1:-1;;;;;31027:30:0;;31066:4;31027:45;;;;;;;;;;;;;-1:-1:-1;;;;;31027:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;:63;31013:77;;31120:69;31148:11;31161:12;31175:13;31120:27;:69::i;:::-;31105:84;;30415:1094;;;;31220:15;31237;31265:6;-1:-1:-1;;;;;31256:15:0;:5;-1:-1:-1;;;;;31256:15:0;;:67;;31301:12;31320:1;31256:67;;;31280:1;31284:12;31256:67;31219:104;;;;31338:10;31369:1;31355:4;:11;:15;31351:1;:19;:80;;31428:3;31351:80;;;31373:52;31396:7;31405:6;31413:4;31418:1;31422;31418:5;31413:11;;;;;;;31373:52;31484:12;;;31494:1;31484:12;;;;;;;;;;-1:-1:-1;;;31446:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;31446:51:0;;;;;;;;;;;;;;;;;;;;;;31338:93;;-1:-1:-1;31446:9:0;;;;;;31456:10;;31468;;31338:93;;31484:12;;31446:51;;;;;;;;31484:12;;31446:51;;;;31484:12;;31446:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30449:3:0;;;;;-1:-1:-1;30415:1094:0;;-1:-1:-1;;;;;;;;;;30415:1094:0;;;30307:1209;;:::o;11602:129::-;11686:5;;;11681:16;;;;11673:50;;;;;-1:-1:-1;;;11673:50:0;;;;;;;;;;;;-1:-1:-1;;;11673:50:0;;;;;;;;;;;;;;11038:195;11146:12;;;11108;11146;;;;;;;;;-1:-1:-1;;;;;11125:7:0;;;11139:5;;11125:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11125:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11107:52;;;11178:7;11170:55;;;;-1:-1:-1;;;11170:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14777:468;14870:13;14916:1;14904:9;:13;14896:68;;;;-1:-1:-1;;;14896:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14995:1;14983:9;:13;:31;;;;;15013:1;15000:10;:14;14983:31;14975:82;;;;-1:-1:-1;;;14975:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15068:14;15085:34;15114:4;15085:24;:9;15099;15085:13;:24::i;:::-;:28;;:34::i;:::-;15068:51;-1:-1:-1;15130:16:0;15149:34;15179:3;15149:25;:10;15164:9;15149:14;:25::i;:34::-;15130:53;;15205:32;15235:1;15218:11;15206:9;:23;;;;;;;15205:29;:32::i;:::-;15194:43;14777:468;-1:-1:-1;;;;;;14777:468:0:o;13704:317::-;13786:12;13829:1;13819:7;:11;13811:59;;;;-1:-1:-1;;;13811:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13900:1;13889:8;:12;:28;;;;;13916:1;13905:8;:12;13889:28;13881:79;;;;-1:-1:-1;;;13881:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14005:8;13981:21;:7;13993:8;13981:11;:21::i;:::-;:32;;;;;;;13704:317;-1:-1:-1;;;;13704:317:0:o;10259:361::-;10454:45;;;-1:-1:-1;;;;;10454:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10454:45:0;-1:-1:-1;;;10454:45:0;;;10443:57;;;;10408:12;;10422:17;;10443:10;;;;10454:45;10443:57;;;10454:45;10443:57;;10454:45;10443:57;;;;;;;;;;-1:-1:-1;;10443:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10407:93;;;;10519:7;:57;;;;-1:-1:-1;10531:11:0;;:16;;:44;;;10562:4;10551:24;;;;;;;;;;;;;;;-1:-1:-1;10551:24:0;10531:44;10511:101;;;;;-1:-1:-1;;;10511:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10259:361;;;;;:::o;12229:345::-;12304:14;12320;12365:6;-1:-1:-1;;;;;12355:16:0;:6;-1:-1:-1;;;;;12355:16:0;;;12347:64;;;;-1:-1:-1;;;12347:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12450:6;-1:-1:-1;;;;;12441:15:0;:6;-1:-1:-1;;;;;12441:15:0;;:53;;12479:6;12487;12441:53;;;12460:6;12468;12441:53;12422:72;;-1:-1:-1;12422:72:0;-1:-1:-1;;;;;;12513:20:0;;12505:61;;;;;-1:-1:-1;;;12505:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12229:345;;;;;:::o;17388:1376::-;17606:12;17620;17761:1;-1:-1:-1;;;;;17701:62:0;17717:7;-1:-1:-1;;;;;17701:32:0;;17734:6;17742;17701:48;;;;;;;;;;;;;-1:-1:-1;;;;;17701:48:0;;;;;;-1:-1:-1;;;;;17701:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17701:48:0;-1:-1:-1;;;;;17701:62:0;;17697:146;;;17796:7;-1:-1:-1;;;;;17780:35:0;;17816:6;17824;17780:51;;;;;;;;;;;;;-1:-1:-1;;;;;17780:51:0;;;;;;-1:-1:-1;;;;;17780:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17697:146:0;17854:13;17869;17886:51;17913:7;17922:6;17930;17886:26;:51::i;:::-;17853:84;;;;17952:8;17964:1;17952:13;:30;;;;-1:-1:-1;17969:13:0;;17952:30;17948:809;;;18021:14;;-1:-1:-1;18037:14:0;;-1:-1:-1;17948:809:0;;;18085:19;18107:56;18128:14;18144:8;18154;18107:20;:56::i;:::-;18085:78;;18200:14;18182;:32;18178:568;;18261:10;18243:14;:28;;18235:77;;;;-1:-1:-1;;;18235:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18353:14;;-1:-1:-1;18369:14:0;-1:-1:-1;18369:14:0;18178:568;;;18425:19;18447:56;18468:14;18484:8;18494;18447:20;:56::i;:::-;18425:78;;18547:14;18529;:32;;18522:40;;;;18607:10;18589:14;:28;;18581:77;;;;-1:-1:-1;;;18581:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18699:14;-1:-1:-1;18715:14:0;;-1:-1:-1;18178:568:0;17948:809;;17388:1376;;;;;;;;;;;:::o;11739:142::-;11791:6;11818;;;:30;;-1:-1:-1;;11833:5:0;;;11847:1;11842;11833:5;11842:1;11828:15;;;;;:20;11818:30;11810:63;;;;;-1:-1:-1;;;11810:63:0;;;;;;;;;;;;-1:-1:-1;;;11810:63:0;;;;;;;;;;;;;;11466:128;11550:5;;;11545:16;;;;11537:49;;;;;-1:-1:-1;;;11537:49:0;;;;;;;;;;;;-1:-1:-1;;;11537:49:0;;;;;;;;;;;;;;13202:389;13295:13;13310;13337:14;13356:26;13367:6;13375;13356:10;:26::i;:::-;13336:46;;;13394:13;13409;13440:32;13448:7;13457:6;13465;13440:7;:32::i;:::-;-1:-1:-1;;;;;13427:58:0;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13427:60:0;;;;;;;-1:-1:-1;;;;;13393:94:0;;;;-1:-1:-1;13393:94:0;;-1:-1:-1;;;;;;13521:16:0;;;;;;;:62;;13564:8;13574;13521:62;;;13541:8;13551;13521:62;13498:85;;;;-1:-1:-1;13202:389:0;-1:-1:-1;;;;;;;13202:389:0:o

Swarm Source

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