Contract 0xb9D8592E16A9c1a3AE6021CDDb324EaC1Cbc70d6

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc4aa2918e5bef7448e392c0f89de2d5c48ec724c6e3e7e6e931797caa990c370Withdraw118717042021-10-18 5:47:357 mins ago0x7526288e5422408ef5a1b17ddd5a537af35869e0 IN  Pera Finance: PERA Token0 BNB0.00207431
0x21f904527adb8728697164e32cf203a6828a06c07d18a2839c08c643037e14c5Deposit L Ptoken118681692021-10-18 2:50:463 hrs 4 mins ago0x2acd2a5b61eb90c506462d8b3a8aa32470b3ebd9 IN  Pera Finance: PERA Token0 BNB0.002055
0xa5cd0b251c1ae983e26ffdd5ae6e98629f09f01e37b71bd15d53a67b7179413eDeposit L Ptoken118679572021-10-18 2:40:103 hrs 15 mins ago0x919b3b01a3c2494d322cd0829601cd630123e437 IN  Pera Finance: PERA Token0 BNB0.00160664
0x65623b6b5d129a4aa291994bec6cb5822bd35a4c78d596fd95062667dbf663fcDeposit L Ptoken118679342021-10-18 2:39:013 hrs 16 mins ago0x919b3b01a3c2494d322cd0829601cd630123e437 IN  Pera Finance: PERA Token0 BNB0.002001
0xbe2d05a0b650414bf402ffdc8496f605c2c83c71ddc982a889b1ebc90ef9a40aDeposit L Ptoken118658352021-10-18 0:54:045 hrs 1 min ago0x4788dec13319e96c90440509541989ddda7ed4e7 IN  Pera Finance: PERA Token0 BNB0.002001
0x9c85cb7e6c03daf4ed7b03e253cb9bc807ecbb14c2597fbc3664001451dfed56Get T Creward118653742021-10-18 0:30:095 hrs 25 mins ago0xab7e415b61416e62e35383c7a55711603bf29c3b IN  Pera Finance: PERA Token0 BNB0.00541189
0x4e7ea3a775c8136ef9364f978760a17c516d119757699bc73ddf24a98a1216deGet T Creward118653682021-10-18 0:29:515 hrs 25 mins ago0x02d5023e9d955183520ed54a200f28a6ec102e86 IN  Pera Finance: PERA Token0 BNB0.00539381
0xa0f0ce7ba101fc542cd371122033a3629a6b7a394ce9f823b25edc504310d3b0Get T Creward118653642021-10-18 0:29:395 hrs 25 mins ago0x05e6a0e11f3710adfe4937ffa885aaee104f663a IN  Pera Finance: PERA Token0 BNB0.005422305
0xe0424f54c09a016b72e2b95ee7f34728f3171a1a4f0b03da62bc9799c5ca32faTransfer118630842021-10-17 22:34:267 hrs 20 mins ago0x0d0707963952f2fba59dd06f2b425ace40b492fe IN  Pera Finance: PERA Token0 BNB0.002908224
0x664243b5a34daab37075bc57f12983469229a513585d811c86e4b9c403860dc3Approve118613502021-10-17 21:07:178 hrs 47 mins ago0xb9951e254c92bae6eb42c6e6e55ebdd224bc8b4d IN  Pera Finance: PERA Token0 BNB0.00022199
0x99c57ed84e5b160464749ff454ddfe647581743e10a43153fe26e8b08bbc522dDeposit L Ptoken118610512021-10-17 20:52:209 hrs 2 mins ago0xe259ee56f5d07b346a9015da08b8de01e31798f5 IN  Pera Finance: PERA Token0 BNB0.00158626
0x324f79e79339568007dffa0141c98591e781cad19a11b4b1f49ccb252ed81b0bDeposit L Ptoken118603092021-10-17 20:15:059 hrs 40 mins ago0xde7d87769d00e6966eb8af01bc0b636daa3cfb17 IN  Pera Finance: PERA Token0 BNB0.002055
0x39730f1073ad0d4620b1bdfa4cf469ccbd18098d71fc5ad4e24d507cbf8b18ebApprove118600962021-10-17 20:04:199 hrs 50 mins ago0x753748790e9660130a5603a5d886bb5112051dad IN  Pera Finance: PERA Token0 BNB0.00022199
0x7f9538a559fd27a66bd1f78ed559f84a67f2b474a18c68ee752fe8cff3a48393Approve118600732021-10-17 20:03:049 hrs 52 mins ago0x753748790e9660130a5603a5d886bb5112051dad IN  Pera Finance: PERA Token0 BNB0.00022199
0xe61297ce20c93eff0964bcdb8298d9af88636c9a537bd78358b9936d22d71f4cDeposit L Ptoken118596162021-10-17 19:40:0810 hrs 15 mins ago0x1afbd70648f9479497b442e261547b85308f6476 IN  Pera Finance: PERA Token0 BNB0.002281245
0x254007a55b676ba4314b60aba5ff7f3632c0172a7179c6e654463173e1606bd4Approve118593982021-10-17 19:29:1410 hrs 26 mins ago0xdd9f47c688610091276a66c683148df61195dbe8 IN  Pera Finance: PERA Token0 BNB0.00022199
0x01f3b6bacaf8f35e55376804c42af1f77535880c887904ac56b7febf3d3fec7eApprove118580292021-10-17 18:20:4011 hrs 34 mins ago0xb1b9b4bbe8a92d535f5df2368e7fd2ecfb3a1950 IN  Pera Finance: PERA Token0 BNB0.00012461
0xc0e70e3e4c90d37cdfc05d4a9a37521c651baa5d251dc6fd0a4d920516601d62Approve118580252021-10-17 18:20:2811 hrs 34 mins ago0xb1b9b4bbe8a92d535f5df2368e7fd2ecfb3a1950 IN  Pera Finance: PERA Token0 BNB0.00022061
0xe03786ebb000e5546a3dd5b40e7d42e62f4a148057c008af0cafd907da38a0ebApprove118570252021-10-17 17:30:2612 hrs 24 mins ago0x2d9229cd8cc7e0e069bc4dc3a26f6dd91c2565be IN  Pera Finance: PERA Token0 BNB0.000072535
0xc822c5df66543c9ed8c454c2100cf1e8209830f3c6084713b076ba1756660c7fDeposit L Ptoken118568732021-10-17 17:22:5012 hrs 32 mins ago0x48765ffe04eac3dd15cfc586f435c669679e7811 IN  Pera Finance: PERA Token0 BNB0.00153226
0x3b1553a2b00426c7b8dada8ed5949b0cca471507ee385c985c1aba15548dd844Withdraw118566292021-10-17 17:10:3812 hrs 44 mins ago0x4b157ae8b39d5bac2cbda7b7bd6ae539cd39dc0b IN  Pera Finance: PERA Token0 BNB0.001659645
0x34adcd548b8a2eadf249b1a0774bdc91e04c80380614e8f59851c1a729662201Deposit L Ptoken118565642021-10-17 17:07:2312 hrs 47 mins ago0x4b157ae8b39d5bac2cbda7b7bd6ae539cd39dc0b IN  Pera Finance: PERA Token0 BNB0.00055635
0x53ed53d75e256d1c25b8390e04bed5cadb37fac7774acf707dfdfbb9f9f46a62Withdraw118564832021-10-17 17:03:2012 hrs 51 mins ago0x4b157ae8b39d5bac2cbda7b7bd6ae539cd39dc0b IN  Pera Finance: PERA Token0 BNB0.002362095
0x726cb677477c5b08825a59fe78898268b150d20dfc6a30aa68374fddd9144d69Approve118564442021-10-17 17:01:2212 hrs 53 mins ago0x826354b0696f15507959e05d9aa1a3f182a648e1 IN  Pera Finance: PERA Token0 BNB0.00022199
0xdd9261eef908ae9e2dce628ae7c1ccd7cc1ba8caf80a8d31955f73c823363175Deposit L Ptoken118564232021-10-17 17:00:1212 hrs 55 mins ago0xd8925eed5440863f75ae7284c34585470a51dff4 IN  Pera Finance: PERA Token0 BNB0.00153226
[ Download CSV Export 

OVERVIEW

Pera Finance is a yield farming platform where PERA traders, liquidity providers and holders can yield farm together. Pera Finance yield farming structure is built around DeFi's decentralized trading.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PERA

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity 0.6.12;
interface tokenRecipient {
    function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external;
}
contract BEP20 {
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    function _transfer(address _from, address _to, uint _value) internal {
        require(_to != address(0x0));
        require(balanceOf[_from] >= _value);
        require(balanceOf[_to] + _value >= balanceOf[_to]);
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(_from, _to, _value);
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        _transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function approveAndCall(address _spender, uint256 _value, bytes memory _extraData)
        public
        returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, address(this), _extraData);
            return true;
        }
    }
}

library SafeMath {

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

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b > 0);                  // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    /**
    * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        uint256 c = a - b;
        return c;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

    contract PERA {
    string public name;     // Token name
    address public manager; // Contract owner address
    string public symbol;   // Token symbol
    uint256 public decimals = 18;               // Token decimals
    uint256 private LPTokenDecimals = 18;       // Liquidity provider (LP) token decimals
    uint256 public genesisBlock = block.number; // Block number of the contract creation
    uint256 public PERASupply = 44950800 * 10 ** uint256(decimals); // Initial PERA supply
    uint256 public totalSupply;

    // Initial rate for holder reward distribution coefficient (transferRate), used for rebasing holders' balances
    uint256 private constant transferRateInitial = ~uint240(0);
    uint256 public transferRate = (transferRateInitial - (transferRateInitial % PERASupply))/PERASupply;
    // Number of blocks within a day (approximately 28800 blocks for Binance Smart Chain & 6500 blocks for Ethereum Network)
    uint private BlockSizeForTC = 28800;
    // Number of blocks within a week
    uint private oneWeekasBlock = BlockSizeForTC * 7;
    // Number of blocks within 10 years (PERA emission stops after 10 years)
    uint private tenYearsasBlock = oneWeekasBlock * 520;

    // Daily PERA emission reward for trading competition (TC) reward pool
    uint public dailyRewardForTC = 9800 * 10 ** uint256(decimals);
    // Contract deployer can set the reward multiplier (see function updateTCMultiplier)
    // Initial value, 20, sets the trading competition emission reward to 19600 PERA/day
    uint256 public TCRewardMultiplier = 20;
    // Number of users with the highest daily volume who are eligible to win the daily trading competition
    uint8 private totalTCwinners = 10;
    // Contract deployer can set the minimum PERA transaction that is required for the trading competition within the range 10-1000
    // Initial value = min 100 PERA transaction is required  (see function updateminTCamount)
    uint256 public minTCamount = 100 * 10 ** decimals;
    // Record of total transaction fee rewards collected for the trading competition reward pool
    mapping (uint256 => uint256) public totalRewardforTC;

    // Total number of LP tokens staked in the contract
    uint public totalStakedLP = 0;
    // Contract releases 1.75 PERA/block as LP token staker reward
    uint public blockRewardLP = 175 * 10 ** uint256(decimals);
    // Contract deployer can set the reward multiplier (see function updateLPMultiplier)
    // Initial value, 20, sets the LP token staker emission reward to 1.75 PERA/block
    uint256 public LPRewardMultiplier = 20;
    // Initial rate for LP token staker reward distribution coefficient (LPRate)
    uint256 public LPRate = 0;
    // Transaction fee rewards collected specifically for LP token stakers (0.75% of each PERA transaction)
    uint256 public FeeRewPoolLP = 0;
    // Smart contract address of the LP token (should be set by the contract owner, see function addLPToken)
    address lpTokenAddress;
    // Record of staked LP token amount for a given address
    mapping (address => uint256) private userLPamount;
    // Last block number that PERA distribution occurs for LP token stakers
    uint256 private lastRewardBlock = 0;

    // PERA smart contract applies a 2% transaction fee on each on-chain PERA transaction
    uint public tradingCompFee = 50; // Transaction fee rate for trading competition reward pool (0.50% of each PERA transaction)
    uint public holderFee = 75;      // Transaction fee rate for holder rewards (0.75% of each PERA transaction)
    uint public liqproviderFee = 75; // Transaction fee rate for LP token staker rewards (0.75% of each PERA transaction)

    mapping (address => bool) public isNonTaxable;

    address[] public _excluded;
    mapping (address => uint256) private userbalanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    using SafeMath for uint;

    constructor(
        uint256 initialSupply,
        string memory tokenName,
        string memory tokenSymbol

    ) public {
        initialSupply = PERASupply.mul(transferRate);
        tokenName = "PERA";
        tokenSymbol = "PERA";
        manager = msg.sender;
        userbalanceOf[msg.sender] = initialSupply;
        totalSupply =  PERASupply;
        name = tokenName;
        symbol = tokenSymbol;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        _transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function approveAndCall(address _spender, uint256 _value, bytes memory _extraData)
        public
        returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, address(this), _extraData);
            return true;
        }
    }

    // Function can only be used by the contract owner
    // Used for excluding an address as a holder
    // Excluded addresses do not receive holder rewards (0.75% of each on-chain PERA transaction)
    // For the holder rewards to be distributed properly, contract owner should follow these steps after the contract deployment:
    // 1- Exclude the token smart contract address
    // 2- Exclude the contract owner address
    // 3- Exclude the AMM-exchange router contract address
    // 4- Provide the initial liquidity to an AMM-exchange
    // 5- Exclude the pool address where the initial liquidity is provided
    function excludeAccount(address account) external {
        require(msg.sender == manager);
        require(!_isExcluded(account));
        _excluded.push(account);
        userbalanceOf[account] = userbalanceOf[account].div(transferRate);
    }

    // Function can only be used by the contract owner
    // Used for removing an address from the excluded holders list
    function includeAccount(address account) external {
    require(msg.sender == manager);
    require(_isExcluded(account));
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _excluded.pop();
                userbalanceOf[account] = userbalanceOf[account].mul(transferRate);
                break;
            }
        }
    }

    // Function for checking if a given address is in the excluded holders list
    function _isExcluded(address _addr) view public returns (bool) {
        for(uint i=0; i < _excluded.length; i++){
            if(_addr == _excluded[i]){
                return  true;
            }
        }
    return false;
    }

    // Function is used to calculate how many PERA tokens is held by the users who are in the excluded holders list
    function _removeExcludedAmounts() view public returns (uint) {
     uint totalRemoved = 0;
         for(uint i=0; i < _excluded.length; i++){
            totalRemoved += userbalanceOf[_excluded[i]];
         }
    return totalRemoved;
    }

    function excludeFromTax(address _account, uint256 _checkTax) external {
        require(msg.sender == manager);
        if(_checkTax == 0){
            isNonTaxable[_account] = false;
        }else{
            isNonTaxable[_account] = true;
        }
    }

    // Function can only be used by the contract owner
    // It is used to set the transaction fee rate for holders
    //Initial value = 75 (0.75%)
    function updateHolderFee(uint256 newHolderFee) external {
        require(msg.sender == manager);
        require(newHolderFee >= 15 && newHolderFee <= 375);
        holderFee = newHolderFee;
    }

    // Function can only be used by the contract owner
    // It is used to set the transaction fee rate for LP token stakers
    //Initial value = 75 (0.75%)
    function updateLPStakerFee(uint256 newLPStakerFee) external {
        require(msg.sender == manager);
        require(newLPStakerFee >= 15 && newLPStakerFee <= 375);
        liqproviderFee = newLPStakerFee;
    }

    // Function can only be used by the contract owner
    // It is used to set the transaction fee rate for trading competition
    //Initial value = 50
    function updateTCFee(uint256 newTCFee) external {
        require(msg.sender == manager);
        require(newTCFee >= 10 && newTCFee <= 250);
        tradingCompFee = newTCFee;
    }

    // Function can only be used by the contract owner
    // It is used to set the reward multiplier for LP token stakers
    // Initial value is set to 20 (1,75 PERA/block)
    function updateLPMultiplier(uint256 newLPMultiplier) external {
        require(msg.sender == manager);
        require(newLPMultiplier >= 0 && newLPMultiplier <= 200);
        LPRewardMultiplier = newLPMultiplier;
    }

    // Function can only be used by the contract owner
    // It is used to set the reward multiplier for the trading competition reward pool
    // Initial value is set to 20 (19600 PERA/day)
    function updateTCMultiplier(uint256 newTCMultiplier) external {
        require(msg.sender == manager);
        require(newTCMultiplier >= 0 && newTCMultiplier <= 100);
        TCRewardMultiplier = newTCMultiplier;
    }

    // Function can only be used by the contract owner
    // It is used to set the minimum PERA transaction required for the trading competition
    // Initial value is set to 100 tokens
    function updateminTCamount(uint256 newminTCamount) external {
        require(msg.sender == manager);
        require(newminTCamount >= (10 * 10 ** decimals)  && newminTCamount <= (1000 * 10 ** decimals));
        minTCamount = newminTCamount;
    }

    // Function can only be used by the contract owner
    // It is used to add the contract address of the LP token
    function addLPToken(address _addr)  external {
        require(msg.sender == manager);
        lpTokenAddress = _addr;
    }

    // User balances are represented in two different ways:
    // 1- If the address is excluded then the balance remains as it is
    // 2- If the address is not excluded then the balance is weighted with the lastly updated value of the transferRate (see function balanceRebalance)
    function balanceOf(address _addr) public view returns (uint256) {
      if (_isExcluded(_addr)){
          return userbalanceOf[_addr];
      } else{
          return balanceRebalance(userbalanceOf[_addr]);
      }
    }

    function balanceRebalance(uint256 userBalances) private view returns(uint256) {
      return userBalances.div(transferRate);
    }

    function transferOwnership(address newOwner) public{
        require(msg.sender == manager);
        require(newOwner != address(0), 'Address can not be 0x0!');
        require(newOwner != address(this), 'Address can not be contract address!');
        if (newOwner != address(0)) {
            manager = newOwner;
        }
    }

    // Checks if a given address is the contract owner
    function isManager(address _addr) view private returns(bool) {
        bool isManagerCheck = false;
        if(_addr == manager){
            isManagerCheck = true;
        }
    return  isManagerCheck;
    }

    function _transfer(address _from, address _to, uint _value) internal {
        require(_to != address(0x0));

        // Checks if the transaction sender is an excluded address
        // Balance checks should be weighted with the lastly updated value of the transferRate for non-excluded addresses
        if(!_isExcluded(_from)){
            require(userbalanceOf[_from].div(transferRate) >= _value);
            require(userbalanceOf[_to].div(transferRate) + _value >= userbalanceOf[_to].div(transferRate));
        }else{
            require(userbalanceOf[_from] >= _value);
            require(userbalanceOf[_to] + _value >= userbalanceOf[_to]);
        }

        // If the transaction sender is the contract owner or the contract itself then no fee is applied on the transaction
        uint256 tenthousandthofamonut = _value.div(10000);
        if(isNonTaxable[_from] || isNonTaxable[_to]){
            tenthousandthofamonut = 0;
        }

        // How many days have passed since the contract creation
        uint256 _bnum = (block.number - genesisBlock)/BlockSizeForTC;
        // 0.5% of the transacted amount is added to the daily trading competition reward pool
        totalRewardforTC[_bnum]  +=  uint(tenthousandthofamonut.mul(tradingCompFee));
        // 0.75% of the transacted amount is added to the LP token staker rewards
        // If there is no LP token staked in the contract, then the amount is set to zero
        if(totalStakedLP != 0){
            FeeRewPoolLP  +=  uint(tenthousandthofamonut.mul(liqproviderFee));
        }

        // Total amount of tokens taken out as the transaction fee (2% of the transacted amount)
        uint totalOut = uint(tenthousandthofamonut.mul(tradingCompFee)) + uint(tenthousandthofamonut.mul(holderFee)) + uint(tenthousandthofamonut.mul(liqproviderFee));

        // Balance updates should be done by considering whether the transaction sender or the receiver is an excluded address or not
        if ((_isExcluded(_to)) && (_isExcluded(_from))){
            userbalanceOf[_from] -= _value;
            userbalanceOf[_to] +=   (_value).sub(totalOut);
        } else if(_isExcluded(_to)){
            userbalanceOf[_from] -= _value.mul(transferRate);
            userbalanceOf[_to] +=   (_value).sub(totalOut);
        } else if (_isExcluded(_from)){
            userbalanceOf[_from] -= _value;
            uint transferAmount = (_value).sub(totalOut);
            userbalanceOf[_to] +=  transferAmount.mul(transferRate);
        } else{
            userbalanceOf[_from] -= _value.mul(transferRate);
            uint transferAmount = (_value).sub(totalOut);
            userbalanceOf[_to] +=   transferAmount.mul(transferRate);
        }

        // 0.75% of an on-chain transaction is instantly distributed to the token holders
        // Remaining 1.25% of the transaction fee is sent to the smart contract
        uint includedRewards = tenthousandthofamonut.mul(holderFee);
        userbalanceOf[address(this)] += (totalOut - includedRewards);
        // Amount of tokens to be sent to the token holders
        uint transactionStakerFee = includedRewards.mul(transferRate);

        if(PERASupply.sub(_removeExcludedAmounts().add(includedRewards)) < 1){
            userbalanceOf[address(this)] += includedRewards;
        }else{
            uint reduceTransferRate = transactionStakerFee.div(PERASupply.sub(_removeExcludedAmounts()));
            transferRate -= reduceTransferRate;
        }

        // Parameters to be sent to the daily trading competition functions:
        // Transacted amount (_value)
        // Address of the user
            // If the transaction sender is a non-excluded address then the _from address is sent
            // If the transaction sender is an excluded address then the _to address is sent
        // How many days have passed since the contract creation (_bnum)
        tradingComp(_value, _from, _bnum);
        if(_isExcluded(_from) && !isManager(_from) && !_isExcluded(_to)){
                tradingComp(_value, _to, _bnum);
        }
        emit Transfer(_from, _to, uint(_value).sub(totalOut));
    }

    // Checks whether a trading competition winner claimed its competition rewards or not
    mapping (string => bool) public isPaid;
    // Checks if a given address has made an on-chain transaction for a given day
    mapping (string => bool) public isTraderIn;

    // traderAddress: Addresses of Top-10 volume generators for a given day
    // traderVolume: Daily volume of the Top-10 volume generators for a given day
    struct topTraders {
      address traderAddress;
      uint256 traderVolume;
    }
    mapping(uint => topTraders[]) public tTraders;

    // lastTVolume: Daily volume of the user who has the least daily generated volume within the Top-10 traders list (tTraders list)
    // lastTIndex: Index of the trader who has the least volume within the Top-10 traders list (tTraders list)
    struct findTopLast {
      uint256 lastTVolume;
      uint256 lastTIndex;
    }
    mapping(uint256 => findTopLast) public findTLast;
    mapping(string => uint256) public tcdetailz;

    //PERA Sort Algorithm:
    function tradingComp(uint256 _value, address _addr, uint _bnum) internal {
        // Check if the transacted amount is more than 100 PERA tokens and the given address is not in the excluded holders list
        if((_value > minTCamount) && (!_isExcluded(_addr))){
        string memory TCX = nMixAddrandSpBlock(_addr, _bnum);
            // Check if the user address has previously made an on-chain transaction
            if(!isTraderIn[TCX]){
               isTraderIn[TCX] = true;
               // Update user's daily trading volume
               tcdetailz[TCX] = _value;
                // Check if the length of the tTraders list has reached 10
                if(tTraders[_bnum].length < totalTCwinners){
                    // Push user's address and daily volume to the tTraders list
                    tTraders[_bnum].push(topTraders(_addr, _value));
                    // If the tTraders list is full (There should be 10 unique users within the list)
                    // Find the minimum daily volume value within the Top-10 traders list
                    if(tTraders[_bnum].length == totalTCwinners){
                            uint minVolume = tTraders[_bnum][0].traderVolume;
                            uint minIndex = 0;
                        for(uint i=0; i<tTraders[_bnum].length; i++){
                            if(tTraders[_bnum][i].traderVolume < minVolume){
                                minVolume = tTraders[_bnum][i].traderVolume;
                                minIndex = i;
                            }
                        }
                    // lastTVolume: Minimum daily volume within the Top-10 traders list
                    // lastTIndex: Index of the user who has the least volume within the Top-10 traders list
                    findTLast[_bnum].lastTVolume = minVolume;
                    findTLast[_bnum].lastTIndex = minIndex;
                    }
                }
                // When the Top-10 traders list (tTraders) is filled, check if the current user's daily volume is larger than
                // the user who has the least volume within the Top-10 traders
                else{
                    if(tcdetailz[TCX] > findTLast[_bnum].lastTVolume){
                        topTradersList(tcdetailz[TCX], _bnum, _addr);
                    }
                }
            }
            // If the user address has previously made an on-chain transaction
            else{
                // Update user's daily trading volume
                tcdetailz[TCX] += _value;
                // Check if length of the tTraders list has reached 10
                // If not, then find the user's index within the tTraders list and update the volume on the corresponding index point
                if(tTraders[_bnum].length != totalTCwinners){
                    uint256 updateIndex = findTraderIndex(_bnum, _addr);
                    tTraders[_bnum][updateIndex].traderVolume = tcdetailz[TCX];
                // If length of the tTraders list has reached 10
                }else{
                    // Check if the user's volume is larger than the minimum daily volume within the Top-10 traders list
                    if(tcdetailz[TCX] > findTLast[_bnum].lastTVolume){
                        // Check if the current user is already in the Top-10 if not, update tTraders list (see function topTradersList)
                        if(!isTopTrader(_bnum, _addr)){
                            topTradersList(tcdetailz[TCX], _bnum, _addr);
                        // Check if the current user has the least volume in the Top-10 traders list if so, update tTraders list (see function updateLastTrader)
                        }else if(tTraders[_bnum][findTLast[_bnum].lastTIndex].traderAddress == _addr){
                            updateLastTrader(tcdetailz[TCX], _bnum, _addr);
                        // Check if the current user is already in the Top-10 traders list but not the 10th rank if so,
                        // only update the user's daily volume in the tTraders list
                        }else if(isTopTrader(_bnum, _addr) && tTraders[_bnum][findTLast[_bnum].lastTIndex].traderAddress != _addr){
                            uint256 updateIndex = findTraderIndex(_bnum, _addr);
                            tTraders[_bnum][updateIndex].traderVolume = tcdetailz[TCX];
                        }
                    }
                }
            }
        }
    }

    // Function is used if the user who has the least daily volume wtihin the Top-10 traders list makes a transaction
    function updateLastTrader(uint256 _value, uint256 _bnum, address _addr) internal {

        // Check if the updated daily volume of the user can overtake rank 9
        // If not, 10th rank remains in the same spot and its daily volume gets updated
        if(_value < checkUserVolume(sortTraders(_bnum)[8], _bnum)){
            tTraders[_bnum][findTraderIndex(_bnum, _addr)].traderVolume = _value;
            findTLast[_bnum].lastTVolume = _value;
        }
        // If the updated daily volume of the user can overtake rank 9
        // then find the new minimum volume in the Top-10 traders list and the corresponding index point
        else{
            tTraders[_bnum][findTLast[_bnum].lastTIndex].traderVolume = _value;
            uint256 minVolume = tTraders[_bnum][0].traderVolume;
            uint256 minIndex;
            for(uint i=0; i<tTraders[_bnum].length; i++){
                if(tTraders[_bnum][i].traderVolume <= minVolume){
                    minVolume = tTraders[_bnum][i].traderVolume;
                    minIndex = i;
                }
            }
            findTLast[_bnum].lastTVolume = minVolume;
            findTLast[_bnum].lastTIndex = minIndex;
        }
    }

    // Function is used when a user who is not in the Top-10 traders list makes it to the Top-10 traders list
    // New user's address and daily volume are stored on the previous 10th rank's index in the tTraders list
    // Minimum daily volume within the new Top-10 traders list and the corresponding index point is calculated
    function topTradersList(uint256 _value, uint256 _bnum, address _addr) internal {

        uint256 minVolume = _value;
        uint256 minIndex;

        tTraders[_bnum][findTLast[_bnum].lastTIndex].traderAddress = _addr;
        tTraders[_bnum][findTLast[_bnum].lastTIndex].traderVolume = _value;
        for(uint i=0; i<tTraders[_bnum].length; i++){
            if(tTraders[_bnum][i].traderVolume <= minVolume){
                minVolume = tTraders[_bnum][i].traderVolume;
                minIndex = i;
            }
        }
        findTLast[_bnum].lastTVolume = minVolume;
        findTLast[_bnum].lastTIndex = minIndex;
    }

    // Function checks if a given address is in the Top-10 traders list for a given day
    function isTopTrader(uint _bnum, address _addr) view public returns(bool) {
        bool checkTopTrader;
        for(uint i=0; i < tTraders[_bnum].length; i++){
        if(tTraders[_bnum][i].traderAddress == _addr){
            checkTopTrader = true;
        }
      }
      return  checkTopTrader;
   }

    // Function checks the index point of a user within the tTraders list
    function findTraderIndex(uint _bnum, address _addr) view public returns(uint256) {
        uint256 checkIndex;
        for(uint i=0; i < tTraders[_bnum].length; i++){
        if(tTraders[_bnum][i].traderAddress == _addr){
            checkIndex = i;
        }
      }
      return  checkIndex;
   }

    // View function for users to see if they are in the Top-10 traders list
    function checkTopTraderList(uint _bnum, uint _Ranking) view public returns(address) {
      return  tTraders[_bnum][_Ranking].traderAddress;
    }


    // Contract stores the Top-10 trader's daily volume and addresses within the tTraders list however
    // the list is not sorted until someone claims the trading competition rewards
    function sortTraders(uint _bnum) view public returns(address[] memory) {
      uint8 wlistlimit = totalTCwinners;
      address[] memory dailyTCWinners = new address[](wlistlimit);
      uint maxTradedNumber = 0;
      address maxTraderAdd;

      for(uint k=0; k<wlistlimit; k++){
          for(uint j=0; j < tTraders[_bnum].length; j++){
                if(!isUserWinner(dailyTCWinners, tTraders[_bnum][j].traderAddress)){
                    if(tTraders[_bnum][j].traderVolume > maxTradedNumber) {
                        maxTradedNumber = tTraders[_bnum][j].traderVolume;
                        maxTraderAdd = tTraders[_bnum][j].traderAddress;
                        dailyTCWinners[k] = maxTraderAdd;
                    }
                } else {
                   maxTraderAdd = address(0);
                }
          }
          maxTradedNumber = 0;
       }
      return  dailyTCWinners;
      }

    // Function checks if a user's address in the Top-10 traders list is already placed in the proper spot while sorting
    function isUserWinner(address[] memory dailyTCList,address _addr) view private returns (bool) {
        for(uint l=0; l < dailyTCList.length; l++){
            if(_addr == dailyTCList[l]){
                return  true;
            }
        }
    return false;
    }

    // View function for users to check their daily volume for a given day
    function checkUserVolume(address _addr, uint256 bnum)  public view returns(uint) {
         string memory TCX = nMixAddrandSpBlock(_addr, bnum);
         return tcdetailz[TCX];
    }

    // View function for users to check if they already claimed their trading competition rewards
    function checkUserPayment(address _addr, uint256 bnum)  public view returns(bool) {
         return isPaid[nMixAddrandSpBlock(_addr, bnum)];
    }


    // Function checks the placement of a user who wins the trading competition (Returns the rank of the user in the Top-10 traders list)
    function checkUserTCPosition(address[] memory userinTCList,address _addr) view private returns (uint) {
        for(uint l=0; l < userinTCList.length; l++){
            if(_addr == userinTCList[l]){
                return  l;
            }
        }
        return totalTCwinners;
    }

    // Function to calculate the trading competition rewards for each winner
    function calculateUserTCreward(address _addr, uint _bnum)  public view returns(uint256, uint256, uint256, uint256, uint256) {
     if(_addr == address(0x0)) { return (404,404,404,404,404); } else {
     address[] memory getLastWinners = new address[](totalTCwinners);
     // Calculate how many days have passed since the user won the trading competition
     // Claimable trading competition reward for a user is calculated as = User's total reward*(51+(7*Days passed since the user won the trading competition))/100
     // It takes at least 7 days for a winner to be able to claim %100 of all its trading competition rewards
     uint rDayDifference = (block.number.sub(genesisBlock.add(_bnum.mul(BlockSizeForTC)))).div(BlockSizeForTC);
     _bnum = _bnum.sub(1);
     if(rDayDifference > 7){rDayDifference=7;}

     getLastWinners = sortTraders(_bnum);
     if(isUserWinner(getLastWinners, _addr)){
         // Find user's placement in the Top-10 traders list (User's placement when the tTraders list is sorted wrt each user's daily volume)
         uint winnerIndex = checkUserTCPosition(getLastWinners, _addr);
         // Check if a user has already claimed its trading competition rewards
         if(!isPaid[nMixAddrandSpBlock(msg.sender, _bnum)]){
            // Trading competition reward share of a user is calculated as = 19-(2*User's rank in the list)
            // User's index in the Top-10 traders list = User's rank in the Top-10 traders list - 1
            uint256 rewardRate = uint(19).sub(uint(2).mul(winnerIndex));
            // If 10 years have passed since the contract creation, then the emission reward = 0
            uint256 rewardEmission = 0;
            if((_bnum*BlockSizeForTC) < tenYearsasBlock){
                rewardEmission = dailyRewardForTC.mul(TCRewardMultiplier).mul(rewardRate).div(1000); // Total emission reward for the user
            }
            uint256 rewardFee = totalRewardforTC[_bnum];
            rewardFee = rewardFee.mul(rewardRate).div(100);     // Total transaction fee reward for the user
            uint256 traderReward = rewardEmission + rewardFee;  // Total reward for the user

            rewardFee = rewardFee.mul(51+(7*rDayDifference)).div(100);              // Eligible transaction fee rewards
            rewardEmission = rewardEmission.mul(51+(7*rDayDifference)).div(100);    // Eligible emission rewards
            uint256 traderRewardEligible = traderReward.mul(51+(7*rDayDifference)).div(100); // Total eligible rewards
            return (traderReward, traderRewardEligible, winnerIndex, rewardEmission, rewardFee);
         } else {return (404,404,404,404,404);}
     } else {return (404,404,404,404,404);} }
    }

    // Function to calculate the trading competition rewards for each winner
    function pendingTCreward(address _addr, uint _bnum)  external view returns(uint256, uint256, uint256, uint256, uint256) {
     if(_addr == address(0x0)) { return (404,404,404,404,404); } else {
     address[] memory getLastWinners = new address[](totalTCwinners);
     uint _Vbnum = _bnum.add(1);
     uint rDayDifference = (block.number.sub(genesisBlock.add(_Vbnum.mul(BlockSizeForTC)))).div(BlockSizeForTC);
     if(rDayDifference > 7){rDayDifference=7;}
     getLastWinners = sortTraders(_bnum);
     if(isUserWinner(getLastWinners, _addr)){
         uint winnerIndex = checkUserTCPosition(getLastWinners, _addr);
         if(!isPaid[nMixAddrandSpBlock(_addr, _bnum)]){
            uint256 rewardRate = uint(19).sub(uint(2).mul(winnerIndex));
            uint256 rewardEmission = 0;
            if((_bnum*BlockSizeForTC) < tenYearsasBlock){
                rewardEmission = dailyRewardForTC.mul(TCRewardMultiplier).mul(rewardRate).div(1000);
            }
            uint256 rewardFee = totalRewardforTC[_bnum];
            rewardFee = rewardFee.mul(rewardRate).div(100);
            uint256 traderReward = rewardEmission + rewardFee;
            rewardFee = rewardFee.mul(51+(7*rDayDifference)).div(100);
            rewardEmission = rewardEmission.mul(51+(7*rDayDifference)).div(100);
            uint256 traderRewardEligible = traderReward.mul(51+(7*rDayDifference)).div(100);
            return (traderReward, traderRewardEligible, winnerIndex, rewardEmission, rewardFee);
         } else {return (404,404,404,404,404);}
     } else {return (404,404,404,404,404);} }
    }

    // Function for trading competition winners to claim their rewards
    function getTCreward(uint _bnum) external {
         require(_bnum > 0,"Min 1 TC cycle must end.");
         require(_bnum.sub(1) < showBnum(), 'Must wait at least 1 day!');
         (uint256 _traderReward, uint256 _traderRewardEligible, uint _winnerIndex, uint256 _rewardEmission, uint256 _rewardFee) = calculateUserTCreward(msg.sender, _bnum);
         require(_traderRewardEligible > 0, 'No Eligible Reward!');
         require(!isPaid[nMixAddrandSpBlock(msg.sender, _bnum.sub(1))], 'Reward has already claimed');
         if(_winnerIndex != 404) {
         isPaid[nMixAddrandSpBlock(msg.sender, _bnum.sub(1))] = true;
         _mint(msg.sender, _rewardEmission);
         _transfer(address(this), msg.sender, _traderRewardEligible);
         }
    }

    // Function calculates how many days have passed since the contract creation
    function showBnum() public view returns(uint256) {
        return (block.number - genesisBlock)/BlockSizeForTC;
    }

    // Function is used for mixing the data of a user's address and how many days have passed since the contract creation
    // It is used for combining a unique data (address) with a non-unique but necessary data (# of the day) to create a single unique data to be used for indexing
    function nMixAddrandSpBlock(address _addr, uint256 bnum)  public view returns(string memory) {
         return append(uintToString(nAddrHash(_addr)),uintToString(bnum));
    }

    function uintToString(uint256 v) internal pure returns(string memory str) {
        uint maxlength = 100;
        bytes memory reversed = new bytes(maxlength);
        uint i = 0;
        while (v != 0) {
            uint remainder = v % 10;
            v = v / 10;
            reversed[i++] = byte(uint8(48 + remainder));
        }
        bytes memory s = new bytes(i + 1);
        for (uint j = 0; j <= i; j++) {
            s[j] = reversed[i - j];
        }
        str = string(s);
    }

    function nAddrHash(address _address) view private returns (uint256) {
        return uint256(_address) % 10000000000;
    }

    function append(string memory a, string memory b) internal pure returns (string memory) {
        return string(abi.encodePacked(a,"-",b));
    }

    // Returns block rewards over a given _from to _to block number multiplied with the reward multiplier for LP token stakers
    function getDistReward(uint256 _from, uint256 _to) public view returns (uint256) {
        return _to.sub(_from).mul(LPRewardMultiplier);
    }

    struct LPUserInfo {
        uint256 userLPamount;
        uint256 userReflectedLP;
    }

    mapping (address => LPUserInfo) public userInfo;

    // View function for LP token stakers to see pending PERA rewards
    function pendingPERA(address _user) external view returns (uint256) {

        LPUserInfo storage user = userInfo[_user];
        uint256 vLPRate = LPRate;
        uint256 vtotalStakedLP = totalStakedLP;
        if (block.number > lastRewardBlock && vtotalStakedLP != 0) {
            uint256 distance = getDistReward(lastRewardBlock, block.number);
            uint256 PERAEmissionReward = distance.mul(blockRewardLP).div(2000);
            if((block.number - genesisBlock) > tenYearsasBlock){
                PERAEmissionReward = 0;
            }
            uint PERAReward = PERAEmissionReward + FeeRewPoolLP;
            vLPRate = vLPRate.add(PERAReward.mul(1e12).div(vtotalStakedLP));
        }
        return user.userLPamount.mul(vLPRate).div(1e12).sub(user.userReflectedLP);
    }

    // Function for staking LP tokens (min 1 LP token is required)
    function depositLPtoken(uint256 _amount) external {

        LPUserInfo storage user = userInfo[msg.sender];
        updateRate(totalStakedLP);

        if (user.userLPamount > 0) {
            uint256 pendingReward = user.userLPamount.mul(LPRate).div(1e12).sub(user.userReflectedLP);
            if(pendingReward > 0) {
                _transfer(address(this), msg.sender, pendingReward);
            }
        }
        if (_amount > 0) {
            totalStakedLP += _amount;
            user.userLPamount = user.userLPamount.add(_amount);
            BEP20(lpTokenAddress).transferFrom(msg.sender, address(this), _amount);
        }
        user.userReflectedLP = user.userLPamount.mul(LPRate).div(1e12);
    }

    // Function updates variables related to LP token staker reward distribution
    function updateRate(uint256 _totalStakedLP) internal {
        if (block.number <= lastRewardBlock) {
            return;
        }
        if (_totalStakedLP == 0) {
            lastRewardBlock = block.number;
            return;
        }

        uint256 distance = getDistReward(lastRewardBlock, block.number);
        uint256 PERAEmissionReward = distance.mul(blockRewardLP).div(2000);
        if((block.number - genesisBlock) > tenYearsasBlock){
            PERAEmissionReward = 0;
        }
        uint PERAReward = PERAEmissionReward + FeeRewPoolLP;
        FeeRewPoolLP = 0;
        _mint(msg.sender, PERAEmissionReward);
        LPRate = LPRate.add(PERAReward.mul(1e12).div(_totalStakedLP));
        lastRewardBlock = block.number;
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0));

        totalSupply = totalSupply.add(amount);
        PERASupply = PERASupply.add(amount);
        userbalanceOf[address(this)] += amount;
    }

    // Withdraw without receiving LP token staker rewards. EMERGENCY ONLY.
    function emergencyWithdraw(uint256 _exit) external {
        LPUserInfo storage user = userInfo[msg.sender];
        totalStakedLP -= user.userLPamount;
        BEP20(lpTokenAddress).transfer(msg.sender,  user.userLPamount);
        user.userLPamount = 0;
        user.userReflectedLP = 0;
        if(totalStakedLP == 0){
            FeeRewPoolLP = 0;
        }
    }

    // Function is used to withdraw LP tokens from the PERA smart contract
    function withdraw(uint256 _amount) external {

        LPUserInfo storage user = userInfo[msg.sender];
        require(user.userLPamount >= _amount, "Not enough balance!");
        updateRate(totalStakedLP);

        uint256 pendingReward = user.userLPamount.mul(LPRate).div(1e12).sub(user.userReflectedLP);
        if(pendingReward > 0) {
            _transfer(address(this), msg.sender, pendingReward);
        }
        if(_amount > 0) {
            user.userLPamount = user.userLPamount.sub(_amount);
            totalStakedLP -= _amount;
            BEP20(lpTokenAddress).transfer(msg.sender,  _amount);
        }
        if(totalStakedLP == 0){
            FeeRewPoolLP = 0;
        }
        user.userReflectedLP = user.userLPamount.mul(LPRate).div(1e12);
    }
 }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FeeRewPoolLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPRewardMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERASupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TCRewardMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_excluded","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"_isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_removeExcludedAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"addLPToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockRewardLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_bnum","type":"uint256"}],"name":"calculateUserTCreward","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnum","type":"uint256"},{"internalType":"uint256","name":"_Ranking","type":"uint256"}],"name":"checkTopTraderList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"bnum","type":"uint256"}],"name":"checkUserPayment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"bnum","type":"uint256"}],"name":"checkUserVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyRewardForTC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositLPtoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exit","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_checkTax","type":"uint256"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"findTLast","outputs":[{"internalType":"uint256","name":"lastTVolume","type":"uint256"},{"internalType":"uint256","name":"lastTIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnum","type":"uint256"},{"internalType":"address","name":"_addr","type":"address"}],"name":"findTraderIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getDistReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnum","type":"uint256"}],"name":"getTCreward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isNonTaxable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"isPaid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnum","type":"uint256"},{"internalType":"address","name":"_addr","type":"address"}],"name":"isTopTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"isTraderIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqproviderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTCamount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"bnum","type":"uint256"}],"name":"nMixAddrandSpBlock","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingPERA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_bnum","type":"uint256"}],"name":"pendingTCreward","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showBnum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bnum","type":"uint256"}],"name":"sortTraders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tTraders","outputs":[{"internalType":"address","name":"traderAddress","type":"address"},{"internalType":"uint256","name":"traderVolume","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"tcdetailz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalRewardforTC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakedLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingCompFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newHolderFee","type":"uint256"}],"name":"updateHolderFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLPMultiplier","type":"uint256"}],"name":"updateLPMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLPStakerFee","type":"uint256"}],"name":"updateLPStakerFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTCFee","type":"uint256"}],"name":"updateTCFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTCMultiplier","type":"uint256"}],"name":"updateTCMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newminTCamount","type":"uint256"}],"name":"updateminTCamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"userLPamount","type":"uint256"},{"internalType":"uint256","name":"userReflectedLP","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526012600355601260045543600555600354600a0a6302ade510026006556006546006546000197dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16816200005257fe5b066000197dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1603816200007f57fe5b04600855617080600955600760095402600a55610208600a5402600b55600354600a0a61264802600c556014600d55600a600e60006101000a81548160ff021916908360ff160217905550600354600a0a606402600f556000601155600354600a0a60af0260125560146013556000601455600060155560006018556032601955604b601a55604b601b553480156200011757600080fd5b506040516200641138038062006411833981810160405260608110156200013d57600080fd5b8101908080519060200190929190805160405193929190846401000000008211156200016857600080fd5b838201915060208201858111156200017f57600080fd5b82518660018202830111640100000000821117156200019d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001d3578082015181840152602081019050620001b6565b50505050905090810190601f168015620002015780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200022557600080fd5b838201915060208201858111156200023c57600080fd5b82518660018202830111640100000000821117156200025a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200029057808201518184015260208101905062000273565b50505050905090810190601f168015620002be5780820380516001836020036101000a031916815260200191505b50604052505050620002e36008546006546200041e60201b620041d41790919060201c565b92506040518060400160405280600481526020017f504552410000000000000000000000000000000000000000000000000000000081525091506040518060400160405280600481526020017f5045524100000000000000000000000000000000000000000000000000000000815250905033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506006546007819055508160009080519060200190620003fb92919062000459565b5080600290805190602001906200041492919062000459565b50505050620004ff565b60008083141562000433576000905062000453565b60008284029050828482816200044557fe5b04146200044e57fe5b809150505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200049c57805160ff1916838001178555620004cd565b82800160010185558215620004cd579182015b82811115620004cc578251825591602001919060010190620004af565b5b509050620004dc9190620004e0565b5090565b5b80821115620004fb576000816000905550600101620004e1565b5090565b615f02806200050f6000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c80638b5bc4bd116101ff578063cae9ca511161011a578063e1d0e69f116100ad578063f7654c2b1161007c578063f7654c2b14611576578063f84354f1146115d8578063fa5a34321461161c578063fbb72b6b1461163a576103c5565b8063e1d0e69f1461145e578063e3524e911461148c578063f2cc0c18146114ee578063f2fde38b14611532576103c5565b8063d40c6aaa116100e9578063d40c6aaa14611279578063dd62ed3e1461134a578063dd65c642146113c2578063ddd3c9cc146113e0576103c5565b8063cae9ca5114611073578063ce22a28a1461116e578063d14bfc2f146111f1578063d2f6190d1461124b576103c5565b8063a2f5dde311610192578063b214cc0311610161578063b214cc0314610fb1578063b2d3d72e14610ff5578063b6f2e80214611013578063c967c2e314611031576103c5565b8063a2f5dde314610ed3578063a9059cbb14610f01578063aefe92da14610f65578063af1e37f314610f83576103c5565b806395d89b41116101ce57806395d89b4114610db0578063963833b014610e33578063964d159514610e51578063a01aafb414610eb5576103c5565b80638b5bc4bd14610d285780638b8a7b6914610d565780638e131e5d14610d7457806394812dab14610d92576103c5565b80633214f11e116102ef5780634dd306bb1161028257806370a082311161025157806370a0823114610be75780637b4d9ca714610c3f5780637e26162e14610c5d5780638678963414610cc6576103c5565b80634dd306bb14610aa65780635312ea8e14610ad45780635a472d2314610b0257806367da69b414610bc9576103c5565b80634374586d116102be5780634374586d1461092b578063481c6a75146109fc5780634cdc9c6314610a305780634d09deb314610a4e576103c5565b80633214f11e14610814578063331a267f14610860578063371dfd3e146108c45780633b3c1462146108e2576103c5565b8063244d268e116103675780632c4893b2116103365780632c4893b2146106f25780632e1a7d4d1461074a578063313ce567146107785780633179ca4f14610796576103c5565b8063244d268e1461062a57806326386a651461064857806329a041421461067657806329a8ba21146106c4576103c5565b806318160ddd116103a357806318160ddd1461050b5780631959a0021461052957806319d9b2311461058857806323b872dd146105a6576103c5565b806306fdde03146103ca578063095ea7b31461044d5780630b285b1f146104b1575b600080fd5b6103d2611709565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104125780820151818401526020810190506103f7565b50505050905090810190601f16801561043f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104996004803603604081101561046357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a7565b60405180821515815260200191505060405180910390f35b6104f3600480360360208110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611899565b60405180821515815260200191505060405180910390f35b61051361193b565b6040518082815260200191505060405180910390f35b61056b6004803603602081101561053f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611941565b604051808381526020018281526020019250505060405180910390f35b610590611965565b6040518082815260200191505060405180910390f35b610612600480360360608110156105bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061197c565b60405180821515815260200191505060405180910390f35b610632611aa7565b6040518082815260200191505060405180910390f35b6106746004803603602081101561065e57600080fd5b8101908080359060200190929190505050611aad565b005b6106c26004803603604081101561068c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b3b565b005b6106f0600480360360208110156106da57600080fd5b8101908080359060200190929190505050611c58565b005b6107346004803603602081101561070857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd8565b6040518082815260200191505060405180910390f35b6107766004803603602081101561076057600080fd5b8101908080359060200190929190505050611e2a565b005b6107806120aa565b6040518082815260200191505060405180910390f35b6107e2600480360360408110156107ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120b0565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b61084a6004803603604081101561082a57600080fd5b810190808035906020019092919080359060200190929190505050612434565b6040518082815260200191505060405180910390f35b6108ac6004803603604081101561087657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612465565b60405180821515815260200191505060405180910390f35b6108cc612529565b6040518082815260200191505060405180910390f35b61090e600480360360208110156108f857600080fd5b810190808035906020019092919050505061252f565b604051808381526020018281526020019250505060405180910390f35b6109e46004803603602081101561094157600080fd5b810190808035906020019064010000000081111561095e57600080fd5b82018360208201111561097057600080fd5b8035906020019184600183028401116401000000008311171561099257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612553565b60405180821515815260200191505060405180910390f35b610a04612589565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a386125af565b6040518082815260200191505060405180910390f35b610a7a60048036036020811015610a6457600080fd5b81019080803590602001909291905050506125b5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ad260048036036020811015610abc57600080fd5b81019080803590602001909291905050506125f1565b005b610b0060048036036020811015610aea57600080fd5b8101908080359060200190929190505050612670565b005b610b4e60048036036040811015610b1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b8e578082015181840152602081019050610b73565b50505050905090810190601f168015610bbb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610bd16127f2565b6040518082815260200191505060405180910390f35b610c2960048036036020811015610bfd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127f8565b6040518082815260200191505060405180910390f35b610c4761289f565b6040518082815260200191505060405180910390f35b610c9360048036036040811015610c7357600080fd5b8101908080359060200190929190803590602001909291905050506128a5565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b610d1260048036036040811015610cdc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612903565b6040518082815260200191505060405180910390f35b610d5460048036036020811015610d3e57600080fd5b8101908080359060200190929190505050612986565b005b610d5e612a05565b6040518082815260200191505060405180910390f35b610d7c612a0b565b6040518082815260200191505060405180910390f35b610d9a612a11565b6040518082815260200191505060405180910390f35b610db8612a17565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df8578082015181840152602081019050610ddd565b50505050905090810190601f168015610e255780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e3b612ab5565b6040518082815260200191505060405180910390f35b610e9d60048036036040811015610e6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612abb565b60405180821515815260200191505060405180910390f35b610ebd612b45565b6040518082815260200191505060405180910390f35b610eff60048036036020811015610ee957600080fd5b8101908080359060200190929190505050612bec565b005b610f4d60048036036040811015610f1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6c565b60405180821515815260200191505060405180910390f35b610f6d612c83565b6040518082815260200191505060405180910390f35b610faf60048036036020811015610f9957600080fd5b8101908080359060200190929190505050612c89565b005b610ff360048036036020811015610fc757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612feb565b005b610ffd613089565b6040518082815260200191505060405180910390f35b61101b61308f565b6040518082815260200191505060405180910390f35b61105d6004803603602081101561104757600080fd5b8101908080359060200190929190505050613095565b6040518082815260200191505060405180910390f35b6111566004803603606081101561108957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156110d057600080fd5b8201836020820111156110e257600080fd5b8035906020019184600183028401116401000000008311171561110457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506130ad565b60405180821515815260200191505060405180910390f35b61119a6004803603602081101561118457600080fd5b81019080803590602001909291905050506131e9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156111dd5780820151818401526020810190506111c2565b505050509050019250505060405180910390f35b6112336004803603602081101561120757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613418565b60405180821515815260200191505060405180910390f35b6112776004803603602081101561126157600080fd5b8101908080359060200190929190505050613438565b005b6113326004803603602081101561128f57600080fd5b81019080803590602001906401000000008111156112ac57600080fd5b8201836020820111156112be57600080fd5b803590602001918460018302840111640100000000831117156112e057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506134b7565b60405180821515815260200191505060405180910390f35b6113ac6004803603604081101561136057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134ed565b6040518082815260200191505060405180910390f35b6113ca613512565b6040518082815260200191505060405180910390f35b61142c600480360360408110156113f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613518565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b61148a6004803603602081101561147457600080fd5b8101908080359060200190929190505050613897565b005b6114d8600480360360408110156114a257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ab5565b6040518082815260200191505060405180910390f35b6115306004803603602081101561150457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b78565b005b6115746004803603602081101561154857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ce2565b005b6115ac6004803603604081101561158c57600080fd5b810190808035906020019092919080359060200190929190505050613edd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61161a600480360360208110156115ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f37565b005b6116246141a0565b6040518082815260200191505060405180910390f35b6116f36004803603602081101561165057600080fd5b810190808035906020019064010000000081111561166d57600080fd5b82018360208201111561167f57600080fd5b803590602001918460018302840111640100000000831117156116a157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506141a6565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179f5780601f106117745761010080835404028352916020019161179f565b820191906000526020600020905b81548152906001019060200180831161178257829003601f168201915b505050505081565b600081601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600090505b601d8054905081101561193057601d81815481106118bb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611923576001915050611936565b80806001019150506118a1565b50600090505b919050565b60075481565b60256020528060005260406000206000915090508060000154908060010154905082565b600060095460055443038161197657fe5b04905090565b6000601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611a0757600080fd5b81601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550611a9c84848461420b565b600190509392505050565b601b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b0757600080fd5b600354600a0a600a028110158015611b285750600354600a0a6103e8028111155b611b3157600080fd5b80600f8190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b9557600080fd5b6000811415611bfb576000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c54565b6001601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cb257600080fd5b600f8110158015611cc557506101778111155b611cce57600080fd5b80601a8190555050565b600080602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060145490506000601154905060185443118015611d3c575060008114155b15611ddc576000611d4f60185443612434565b90506000611d7c6107d0611d6e601254856141d490919063ffffffff16565b614b3790919063ffffffff16565b9050600b5460055443031115611d9157600090505b600060155482019050611dd6611dc785611db964e8d4a51000856141d490919063ffffffff16565b614b3790919063ffffffff16565b86614b5a90919063ffffffff16565b94505050505b611e208360010154611e1264e8d4a51000611e048688600001546141d490919063ffffffff16565b614b3790919063ffffffff16565b614b7690919063ffffffff16565b9350505050919050565b6000602560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508181600001541015611ee7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f7567682062616c616e6365210000000000000000000000000081525060200191505060405180910390fd5b611ef2601154614b93565b6000611f3a8260010154611f2c64e8d4a51000611f1e60145487600001546141d490919063ffffffff16565b614b3790919063ffffffff16565b614b7690919063ffffffff16565b90506000811115611f5157611f5030338361420b565b5b600083111561205957611f71838360000154614b7690919063ffffffff16565b826000018190555082601160008282540392505081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561201c57600080fd5b505af1158015612030573d6000803e3d6000fd5b505050506040513d602081101561204657600080fd5b8101908080519060200190929190505050505b6000601154141561206d5760006015819055505b61209d64e8d4a5100061208f60145485600001546141d490919063ffffffff16565b614b3790919063ffffffff16565b8260010181905550505050565b60035481565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156121065761019480610194806101949450945094509450945061242a565b6060600e60009054906101000a900460ff1660ff1667ffffffffffffffff8111801561213157600080fd5b506040519080825280602002602001820160405280156121605781602001602082028036833780820191505090505b5090506000612179600189614b5a90919063ffffffff16565b905060006121cc6009546121be6121af61219e600954876141d490919063ffffffff16565b600554614b5a90919063ffffffff16565b43614b7690919063ffffffff16565b614b3790919063ffffffff16565b905060078111156121dc57600790505b6121e5896131e9565b92506121f1838b614c73565b15612411576000612202848c614cee565b905060206122108c8c6127c6565b6040518082805190602001908083835b602083106122435780518252602082019150602081019050602083039250612220565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff166123f35760006122b16122a18360026141d490919063ffffffff16565b6013614b7690919063ffffffff16565b90506000600b546009548d021015612303576123006103e86122f2846122e4600d54600c546141d490919063ffffffff16565b6141d490919063ffffffff16565b614b3790919063ffffffff16565b90505b6000601060008e8152602001908152602001600020549050612341606461233385846141d490919063ffffffff16565b614b3790919063ffffffff16565b905060008183019050612376606461236888600702603301856141d490919063ffffffff16565b614b3790919063ffffffff16565b91506123a4606461239688600702603301866141d490919063ffffffff16565b614b3790919063ffffffff16565b925060006123d460646123c689600702603301856141d490919063ffffffff16565b614b3790919063ffffffff16565b905081818786869d509d509d509d509d5050505050505050505061242a565b6101948061019480610194985098509850985098505050505061242a565b6101948061019480610194975097509750975097505050505b9295509295909350565b600061245d60135461244f8585614b7690919063ffffffff16565b6141d490919063ffffffff16565b905092915050565b60008060005b602260008681526020019081526020016000208054905081101561251e578373ffffffffffffffffffffffffffffffffffffffff166022600087815260200190815260200160002082815481106124be57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561251157600191505b808060010191505061246b565b508091505092915050565b60145481565b60236020528060005260406000206000915090508060000154908060010154905082565b6021818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b601d81815481106125c257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461264b57600080fd5b600a811015801561265d575060fa8111155b61266657600080fd5b8060198190555050565b6000602560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154601160008282540392505081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3383600001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561275e57600080fd5b505af1158015612772573d6000803e3d6000fd5b505050506040513d602081101561278857600080fd5b8101908080519060200190929190505050506000816000018190555060008160010181905550600060115414156127c25760006015819055505b5050565b60606127ea6127dc6127d785614d79565b614da7565b6127e584614da7565b614f3d565b905092915050565b60195481565b600061280382611899565b1561284f57601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061289a565b612897601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461502d565b90505b919050565b600f5481565b602260205281600052604060002081815481106128be57fe5b9060005260206000209060020201600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000606061291184846127c6565b90506024816040518082805190602001908083835b602083106129495780518252602082019150602081019050602083039250612926565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205491505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129e057600080fd5b600081101580156129f2575060648111155b6129fb57600080fd5b80600d8190555050565b60155481565b60085481565b60115481565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aad5780601f10612a8257610100808354040283529160200191612aad565b820191906000526020600020905b815481529060010190602001808311612a9057829003601f168201915b505050505081565b600c5481565b60006020612ac984846127c6565b6040518082805190602001908083835b60208310612afc5780518252602082019150602081019050602083039250612ad9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff16905092915050565b6000806000905060005b601d80549050811015612be457601e6000601d8381548110612b6d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054820191508080600101915050612b4f565b508091505090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c4657600080fd5b600f8110158015612c5957506101778111155b612c6257600080fd5b80601b8190555050565b6000612c7933848461420b565b6001905092915050565b60125481565b60008111612cff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d696e2031205443206379636c65206d75737420656e642e000000000000000081525060200191505060405180910390fd5b612d07611965565b612d1b600183614b7690919063ffffffff16565b10612d8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4d7573742077616974206174206c65617374203120646179210000000000000081525060200191505060405180910390fd5b6000806000806000612da03387613518565b9450945094509450945060008411612e20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f20456c696769626c6520526577617264210000000000000000000000000081525060200191505060405180910390fd5b6020612e3f33612e3a60018a614b7690919063ffffffff16565b6127c6565b6040518082805190602001908083835b60208310612e725780518252602082019150602081019050602083039250612e4f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff1615612f26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5265776172642068617320616c726561647920636c61696d656400000000000081525060200191505060405180910390fd5b6101948314612fe35760016020612f5033612f4b60018b614b7690919063ffffffff16565b6127c6565b6040518082805190602001908083835b60208310612f835780518252602082019150602081019050602083039250612f60565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff021916908315150217905550612fd7338361504b565b612fe230338661420b565b5b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461304557600080fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b601a5481565b60106020528060005260406000206000915090505481565b6000808490506130bd85856117a7565b156131e0578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561316f578082015181840152602081019050613154565b50505050905090810190601f16801561319c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156131be57600080fd5b505af11580156131d2573d6000803e3d6000fd5b5050505060019150506131e2565b505b9392505050565b60606000600e60009054906101000a900460ff16905060608160ff1667ffffffffffffffff8111801561321b57600080fd5b5060405190808252806020026020018201604052801561324a5781602001602082028036833780820191505090505b50905060008080600090505b8460ff1681101561340b5760005b60226000898152602001908152602001600020805490508110156133f9576132db85602260008b815260200190815260200160002083815481106132a457fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614c73565b6133e75783602260008a815260200190815260200160002082815481106132fe57fe5b90600052602060002090600202016001015411156133e25760226000898152602001908152602001600020818154811061333457fe5b906000526020600020906002020160010154935060226000898152602001908152602001600020818154811061336657fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250828583815181106133a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b6133ec565b600092505b8080600101915050613264565b50600092508080600101915050613256565b5082945050505050919050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461349257600080fd5b600081101580156134a4575060c88111155b6134ad57600080fd5b8060138190555050565b6020818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b601f602052816000526040600020602052806000526040600020600091509150505481565b600d5481565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561356e5761019480610194806101949450945094509450945061388d565b6060600e60009054906101000a900460ff1660ff1667ffffffffffffffff8111801561359957600080fd5b506040519080825280602002602001820160405280156135c85781602001602082028036833780820191505090505b509050600061361c60095461360e6135ff6135ee6009548d6141d490919063ffffffff16565b600554614b5a90919063ffffffff16565b43614b7690919063ffffffff16565b614b3790919063ffffffff16565b9050613632600189614b7690919063ffffffff16565b9750600781111561364257600790505b61364b886131e9565b9150613657828a614c73565b15613875576000613668838b614cee565b90506020613676338b6127c6565b6040518082805190602001908083835b602083106136a95780518252602082019150602081019050602083039250613686565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff166138585760006137176137078360026141d490919063ffffffff16565b6013614b7690919063ffffffff16565b90506000600b546009548c021015613769576137666103e86137588461374a600d54600c546141d490919063ffffffff16565b6141d490919063ffffffff16565b614b3790919063ffffffff16565b90505b6000601060008d81526020019081526020016000205490506137a7606461379985846141d490919063ffffffff16565b614b3790919063ffffffff16565b9050600081830190506137dc60646137ce88600702603301856141d490919063ffffffff16565b614b3790919063ffffffff16565b915061380a60646137fc88600702603301866141d490919063ffffffff16565b614b3790919063ffffffff16565b9250600061383a606461382c89600702603301856141d490919063ffffffff16565b614b3790919063ffffffff16565b905081818786869c509c509c509c509c50505050505050505061388d565b61019480610194806101949750975097509750975050505061388d565b61019480610194806101949650965096509650965050505b9295509295909350565b6000602560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506138e5601154614b93565b60008160000154111561395357600061393a826001015461392c64e8d4a5100061391e60145487600001546141d490919063ffffffff16565b614b3790919063ffffffff16565b614b7690919063ffffffff16565b905060008111156139515761395030338361420b565b5b505b6000821115613a795781601160008282540192505081905550613983828260000154614b5a90919063ffffffff16565b8160000181905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015613a3c57600080fd5b505af1158015613a50573d6000803e3d6000fd5b505050506040513d6020811015613a6657600080fd5b8101908080519060200190929190505050505b613aa964e8d4a51000613a9b60145484600001546141d490919063ffffffff16565b614b3790919063ffffffff16565b81600101819055505050565b60008060005b6022600086815260200190815260200160002080549050811015613b6d578373ffffffffffffffffffffffffffffffffffffffff16602260008781526020019081526020016000208281548110613b0e57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613b60578091505b8080600101915050613abb565b508091505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613bd257600080fd5b613bdb81611899565b15613be557600080fd5b601d819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613c9c600854601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b3790919063ffffffff16565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613d3c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613ddf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f416464726573732063616e206e6f74206265203078302100000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615ea96024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613eda5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000602260008481526020019081526020016000208281548110613efd57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613f9157600080fd5b613f9a81611899565b613fa357600080fd5b60005b601d8054905081101561419c578173ffffffffffffffffffffffffffffffffffffffff16601d8281548110613fd757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561418f57601d6001601d80549050038154811061403357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d828154811061406b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d8054806140be57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055614147600854601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141d490919063ffffffff16565b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061419c565b8080600101915050613fa6565b5050565b60135481565b6024818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6000808314156141e75760009050614205565b60008284029050828482816141f857fe5b041461420057fe5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561424557600080fd5b61424e83611899565b61436c57806142a7600854601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b3790919063ffffffff16565b10156142b257600080fd5b614306600854601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b3790919063ffffffff16565b8161435b600854601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614b3790919063ffffffff16565b01101561436757600080fd5b614446565b80601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156143b857600080fd5b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401101561444557600080fd5b5b600061445d61271083614b3790919063ffffffff16565b9050601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806145005750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561450a57600090505b600060095460055443038161451b57fe5b049050614533601954836141d490919063ffffffff16565b601060008381526020019081526020016000206000828254019250508190555060006011541461458257614572601b54836141d490919063ffffffff16565b6015600082825401925050819055505b6000614599601b54846141d490919063ffffffff16565b6145ae601a54856141d490919063ffffffff16565b6145c3601954866141d490919063ffffffff16565b010190506145d085611899565b80156145e157506145e086611899565b5b156146975783601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506146468185614b7690919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550614920565b6146a085611899565b1561476a576146ba600854856141d490919063ffffffff16565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506147198185614b7690919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061491f565b61477386611899565b156148435783601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006147da8286614b7690919063ffffffff16565b90506147f1600854826141d490919063ffffffff16565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505061491e565b614858600854856141d490919063ffffffff16565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006148b98286614b7690919063ffffffff16565b90506148d0600854826141d490919063ffffffff16565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505b5b5b6000614937601a54856141d490919063ffffffff16565b9050808203601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600061499f600854836141d490919063ffffffff16565b905060016149d16149c0846149b2612b45565b614b5a90919063ffffffff16565b600654614b7690919063ffffffff16565b1015614a295781601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550614a6d565b6000614a59614a4a614a39612b45565b600654614b7690919063ffffffff16565b83614b3790919063ffffffff16565b905080600860008282540392505081905550505b614a7886898661510c565b614a8188611899565b8015614a935750614a9188615aa9565b155b8015614aa55750614aa387611899565b155b15614ab657614ab586888661510c565b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614b18868a614b7690919063ffffffff16565b6040518082815260200191505060405180910390a35050505050505050565b6000808211614b4257fe5b6000828481614b4d57fe5b0490508091505092915050565b600080828401905083811015614b6c57fe5b8091505092915050565b600082821115614b8257fe5b600082840390508091505092915050565b6018544311614ba157614c70565b6000811415614bb65743601881905550614c70565b6000614bc460185443612434565b90506000614bf16107d0614be3601254856141d490919063ffffffff16565b614b3790919063ffffffff16565b9050600b5460055443031115614c0657600090505b6000601554820190506000601581905550614c21338361504b565b614c5f614c4e85614c4064e8d4a51000856141d490919063ffffffff16565b614b3790919063ffffffff16565b601454614b5a90919063ffffffff16565b601481905550436018819055505050505b50565b600080600090505b8351811015614ce257838181518110614c9057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614cd5576001915050614ce8565b8080600101915050614c7b565b50600090505b92915050565b600080600090505b8351811015614d5c57838181518110614d0b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614d4f5780915050614d73565b8080600101915050614cf6565b50600e60009054906101000a900460ff1660ff1690505b92915050565b60006402540be4008273ffffffffffffffffffffffffffffffffffffffff1681614d9f57fe5b069050919050565b606060006064905060608167ffffffffffffffff81118015614dc857600080fd5b506040519080825280601f01601f191660200182016040528015614dfb5781602001600182028036833780820191505090505b50905060005b60008514614e73576000600a8681614e1557fe5b069050600a8681614e2257fe5b0495508060300160f81b838380600101945081518110614e3e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050614e01565b60606001820167ffffffffffffffff81118015614e8f57600080fd5b506040519080825280601f01601f191660200182016040528015614ec25781602001600182028036833780820191505090505b50905060005b828111614f30578381840381518110614edd57fe5b602001015160f81c60f81b828281518110614ef457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050614ec8565b5080945050505050919050565b606082826040516020018083805190602001908083835b60208310614f775780518252602082019150602081019050602083039250614f54565b6001836020036101000a038019825116818451168082178552505050505050905001807f2d0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310614ff05780518252602082019150602081019050602083039250614fcd565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b600061504460085483614b3790919063ffffffff16565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561508557600080fd5b61509a81600754614b5a90919063ffffffff16565b6007819055506150b581600654614b5a90919063ffffffff16565b60068190555080601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505050565b600f5483118015615123575061512182611899565b155b15615aa457606061513483836127c6565b90506021816040518082805190602001908083835b6020831061516c5780518252602082019150602081019050602083039250615149565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff166155cd5760016021826040518082805190602001908083835b602083106151e957805182526020820191506020810190506020830392506151c6565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff021916908315150217905550836024826040518082805190602001908083835b6020831061526a5780518252602082019150602081019050602083039250615247565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902081905550600e60009054906101000a900460ff1660ff16602260008481526020019081526020016000208054905010156154cb576022600083815260200190815260200160002060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200186815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101555050600e60009054906101000a900460ff1660ff16602260008481526020019081526020016000208054905014156154c6576000602260008481526020019081526020016000206000815481106153dc57fe5b90600052602060002090600202016001015490506000805b602260008681526020019081526020016000208054905081101561548c578260226000878152602001908152602001600020828154811061543157fe5b906000526020600020906002020160010154101561547f5760226000868152602001908152602001600020818154811061546757fe5b90600052602060002090600202016001015492508091505b80806001019150506153f4565b5081602360008681526020019081526020016000206000018190555080602360008681526020019081526020016000206001018190555050505b6155c8565b60236000838152602001908152602001600020600001546024826040518082805190602001908083835b6020831061551857805182526020820191506020810190506020830392506154f5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205411156155c7576155c66024826040518082805190602001908083835b6020831061558b5780518252602082019150602081019050602083039250615568565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548385615b14565b5b5b615aa2565b836024826040518082805190602001908083835b6020831061560457805182526020820191506020810190506020830392506155e1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008282540192505081905550600e60009054906101000a900460ff1660ff1660226000848152602001908152602001600020805490501461572457600061567f8385613ab5565b90506024826040518082805190602001908083835b602083106156b75780518252602082019150602081019050602083039250615694565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205460226000858152602001908152602001600020828154811061570957fe5b90600052602060002090600202016001018190555050615aa1565b60236000838152602001908152602001600020600001546024826040518082805190602001908083835b60208310615771578051825260208201915060208101905060208303925061574e565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020541115615aa0576157b58284612465565b6158325761582d6024826040518082805190602001908083835b602083106157f257805182526020820191506020810190506020830392506157cf565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548385615b14565b615a9f565b8273ffffffffffffffffffffffffffffffffffffffff166022600084815260200190815260200160002060236000858152602001908152602001600020600101548154811061587d57fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156159445761593f6024826040518082805190602001908083835b6020831061590457805182526020820191506020810190506020830392506158e1565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548385615cc1565b615a9e565b61594e8284612465565b80156159eb57508273ffffffffffffffffffffffffffffffffffffffff16602260008481526020019081526020016000206023600085815260200190815260200160002060010154815481106159a057fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15615a9d5760006159fc8385613ab5565b90506024826040518082805190602001908083835b60208310615a345780518252602082019150602081019050602083039250615a11565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054602260008581526020019081526020016000208281548110615a8657fe5b906000526020600020906002020160010181905550505b5b5b5b5b5b505b505050565b60008060009050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615b0b57600190505b80915050919050565b600083905060008260226000868152602001908152602001600020602360008781526020019081526020016000206001015481548110615b5057fe5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460226000868152602001908152602001600020602360008781526020019081526020016000206001015481548110615bd457fe5b90600052602060002090600202016001018190555060005b6022600086815260200190815260200160002080549050811015615c835782602260008781526020019081526020016000208281548110615c2957fe5b90600052602060002090600202016001015411615c7657602260008681526020019081526020016000208181548110615c5e57fe5b90600052602060002090600202016001015492508091505b8080600101915050615bec565b508160236000868152602001908152602001600020600001819055508060236000868152602001908152602001600020600101819055505050505050565b615ce7615ccd836131e9565b600881518110615cd957fe5b602002602001015183612903565b831015615d4b578260226000848152602001908152602001600020615d0c8484613ab5565b81548110615d1657fe5b906000526020600020906002020160010181905550826023600084815260200190815260200160002060000181905550615ea3565b8260226000848152602001908152602001600020602360008581526020019081526020016000206001015481548110615d8057fe5b906000526020600020906002020160010181905550600060226000848152602001908152602001600020600081548110615db657fe5b9060005260206000209060020201600101549050600080600090505b6022600086815260200190815260200160002080549050811015615e695782602260008781526020019081526020016000208281548110615e0f57fe5b90600052602060002090600202016001015411615e5c57602260008681526020019081526020016000208181548110615e4457fe5b90600052602060002090600202016001015492508091505b8080600101915050615dd2565b5081602360008681526020019081526020016000206000018190555080602360008681526020019081526020016000206001018190555050505b50505056fe416464726573732063616e206e6f7420626520636f6e7472616374206164647265737321a26469706673582212207fc7f1c92fddb6ce456783dded2c7e5db1835eea18be2244d4fb5ca824e4512a64736f6c634300060c00330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004504552410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045045524100000000000000000000000000000000000000000000000000000000

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004504552410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045045524100000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 0
Arg [1] : tokenName (string): PERA
Arg [2] : tokenSymbol (string): PERA

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 5045524100000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 5045524100000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

3150:39078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3171:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8200:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10371:238;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3654:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38039:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;36258:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7896:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6757:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13388:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10988:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11413:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38166:804;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41437:787;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3314:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33720:1604;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37787:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27390:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5865:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20299:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;19609:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3214:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3472:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6936:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12165:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40977:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36672:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6512:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14189:226;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5121:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19911:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;29937:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12965:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6006:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3870:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5393:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3269:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30229:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10734:246;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11784:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7736:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5497:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35404:764;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13768:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3562:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6643:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5275:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8433:363;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28522:928;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6882:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12537:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19481:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7026:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4700:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30905:2729;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39046:731;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27784:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9434:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14563:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28176:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9816:466;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5738:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20354:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3171:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8200:225::-;8276:12;8335:6;8301:9;:21;8311:10;8301:21;;;;;;;;;;;;;;;:31;8323:8;8301:31;;;;;;;;;;;;;;;:40;;;;8378:8;8357:38;;8366:10;8357:38;;;8388:6;8357:38;;;;;;;;;;;;;;;;;;8413:4;8406:11;;8200:225;;;;:::o;10371:238::-;10428:4;10449:6;10456:1;10449:8;;10445:138;10463:9;:16;;;;10459:1;:20;10445:138;;;10512:9;10522:1;10512:12;;;;;;;;;;;;;;;;;;;;;;;;;10503:21;;:5;:21;;;10500:72;;;10552:4;10544:12;;;;;10500:72;10481:3;;;;;;;10445:138;;;;10596:5;10589:12;;10371:238;;;;:::o;3654:26::-;;;;:::o;38039:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36258:119::-;36298:7;36355:14;;36341:12;;36326;:27;36325:44;;;;;;36318:51;;36258:119;:::o;7896:296::-;7978:12;8021:9;:16;8031:5;8021:16;;;;;;;;;;;;;;;:28;8038:10;8021:28;;;;;;;;;;;;;;;;8011:6;:38;;8003:47;;;;;;8116:6;8084:9;:16;8094:5;8084:16;;;;;;;;;;;;;;;:28;8101:10;8084:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;8133:29;8143:5;8150:3;8155:6;8133:9;:29::i;:::-;8180:4;8173:11;;7896:296;;;;;:::o;6757:31::-;;;;:::o;13388:253::-;13481:7;;;;;;;;;;;13467:21;;:10;:21;;;13459:30;;;;;;13538:8;;13532:2;:14;13527:2;:19;13508:14;:39;;:85;;;;;13584:8;;13578:2;:14;13571:4;:21;13552:14;:41;;13508:85;13500:94;;;;;;13619:14;13605:11;:28;;;;13388:253;:::o;10988:264::-;11091:7;;;;;;;;;;;11077:21;;:10;:21;;;11069:30;;;;;;11126:1;11113:9;:14;11110:135;;;11168:5;11143:12;:22;11156:8;11143:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11110:135;;;11229:4;11204:12;:22;11217:8;11204:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11110:135;10988:264;;:::o;11413:201::-;11502:7;;;;;;;;;;;11488:21;;:10;:21;;;11480:30;;;;;;11545:2;11529:12;:18;;:41;;;;;11567:3;11551:12;:19;;11529:41;11521:50;;;;;;11594:12;11582:9;:24;;;;11413:201;:::o;38166:804::-;38225:7;38247:23;38273:8;:15;38282:5;38273:15;;;;;;;;;;;;;;;38247:41;;38299:15;38317:6;;38299:24;;38334:22;38359:13;;38334:38;;38402:15;;38387:12;:30;:53;;;;;38439:1;38421:14;:19;;38387:53;38383:496;;;38457:16;38476:44;38490:15;;38507:12;38476:13;:44::i;:::-;38457:63;;38535:26;38564:37;38596:4;38564:27;38577:13;;38564:8;:12;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;38535:66;;38651:15;;38635:12;;38620;:27;38619:47;38616:108;;;38707:1;38686:22;;38616:108;38738:15;38777:12;;38756:18;:33;38738:51;;38814:53;38826:40;38851:14;38826:20;38841:4;38826:10;:14;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;38814:7;:11;;:53;;;;:::i;:::-;38804:63;;38383:496;;;;38896:66;38941:4;:20;;;38896:40;38931:4;38896:30;38918:7;38896:4;:17;;;:21;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;:44;;:66;;;;:::i;:::-;38889:73;;;;;38166:804;;;:::o;41437:787::-;41494:23;41520:8;:20;41529:10;41520:20;;;;;;;;;;;;;;;41494:46;;41580:7;41559:4;:17;;;:28;;41551:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41622:25;41633:13;;41622:10;:25::i;:::-;41660:21;41684:65;41728:4;:20;;;41684:39;41718:4;41684:29;41706:6;;41684:4;:17;;;:21;;:29;;;;:::i;:::-;:33;;:39;;;;:::i;:::-;:43;;:65;;;;:::i;:::-;41660:89;;41779:1;41763:13;:17;41760:100;;;41797:51;41815:4;41822:10;41834:13;41797:9;:51::i;:::-;41760:100;41883:1;41873:7;:11;41870:199;;;41921:30;41943:7;41921:4;:17;;;:21;;:30;;;;:::i;:::-;41901:4;:17;;:50;;;;41983:7;41966:13;;:24;;;;;;;;;;;42011:14;;;;;;;;;;;42005:30;;;42036:10;42049:7;42005:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41870:199;42099:1;42082:13;;:18;42079:65;;;42131:1;42116:12;:16;;;;42079:65;42177:39;42211:4;42177:29;42199:6;;42177:4;:17;;;:21;;:29;;;;:::i;:::-;:33;;:39;;;;:::i;:::-;42154:4;:20;;:62;;;;41437:787;;;:::o;3314:28::-;;;;:::o;33720:1604::-;33795:7;33804;33813;33822;33831;33868:3;33851:21;;:5;:21;;;33848:1469;;;33884:3;33888;33892;33896;33900;33876:28;;;;;;;;;;;;33848:1469;33921:31;33969:14;;;;;;;;;;;33955:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33921:63;;33992:11;34006:12;34016:1;34006:5;:9;;:12;;;;:::i;:::-;33992:26;;34026:19;34048:84;34117:14;;34049:62;34066:44;34083:26;34094:14;;34083:6;:10;;:26;;;;:::i;:::-;34066:12;;:16;;:44;;;;:::i;:::-;34049:12;:16;;:62;;;;:::i;:::-;34048:68;;:84;;;;:::i;:::-;34026:106;;34160:1;34143:14;:18;34140:41;;;34178:1;34163:16;;34140:41;34205:18;34217:5;34205:11;:18::i;:::-;34188:35;;34234;34247:14;34263:5;34234:12;:35::i;:::-;34231:1084;;;34282:16;34301:42;34321:14;34337:5;34301:19;:42::i;:::-;34282:61;;34359:6;34366:32;34385:5;34392;34366:18;:32::i;:::-;34359:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34355:915;;34415:18;34436:38;34449:24;34461:11;34454:1;34449:11;;:24;;;;:::i;:::-;34441:2;34436:12;;:38;;;;:::i;:::-;34415:59;;34489:22;34558:15;;34540:14;;34534:5;:20;34533:40;34530:162;;;34610:66;34671:4;34610:56;34655:10;34610:40;34631:18;;34610:16;;:20;;:40;;;;:::i;:::-;:44;;:56;;;;:::i;:::-;:60;;:66;;;;:::i;:::-;34593:83;;34530:162;34706:17;34726:16;:23;34743:5;34726:23;;;;;;;;;;;;34706:43;;34776:34;34806:3;34776:25;34790:10;34776:9;:13;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;34764:46;;34825:20;34865:9;34848:14;:26;34825:49;;34901:45;34942:3;34901:36;34921:14;34919:1;:16;34915:2;:21;34901:9;:13;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;34889:57;;34978:50;35024:3;34978:41;35003:14;35001:1;:16;34997:2;:21;34978:14;:18;;:41;;;;:::i;:::-;:45;;:50;;;;:::i;:::-;34961:67;;35043:28;35074:48;35118:3;35074:39;35097:14;35095:1;:16;35091:2;:21;35074:12;:16;;:39;;;;:::i;:::-;:43;;:48;;;;:::i;:::-;35043:79;;35145:12;35159:20;35181:11;35194:14;35210:9;35137:83;;;;;;;;;;;;;;;;;;;;;34355:915;35248:3;35252;35256;35260;35264;35240:28;;;;;;;;;;;;;;;;34231:1084;35293:3;35297;35301;35305;35309;35285:28;;;;;;;;;;;;;33720:1604;;;;;;;;;:::o;37787:145::-;37859:7;37886:38;37905:18;;37886:14;37894:5;37886:3;:7;;:14;;;;:::i;:::-;:18;;:38;;;;:::i;:::-;37879:45;;37787:145;;;;:::o;27390:311::-;27458:4;27475:19;27509:6;27505:159;27523:8;:15;27532:5;27523:15;;;;;;;;;;;:22;;;;27519:1;:26;27505:159;;;27601:5;27565:41;;:8;:15;27574:5;27565:15;;;;;;;;;;;27581:1;27565:18;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;:41;;;27562:93;;;27639:4;27622:21;;27562:93;27547:3;;;;;;;27505:159;;;;27680:14;27672:22;;;27390:311;;;;:::o;5865:25::-;;;;:::o;20299:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19609:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3214:22::-;;;;;;;;;;;;;:::o;3472:42::-;;;;:::o;6936:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12165:186::-;12246:7;;;;;;;;;;;12232:21;;:10;:21;;;12224:30;;;;;;12285:2;12273:8;:14;;:33;;;;;12303:3;12291:8;:15;;12273:33;12265:42;;;;;;12335:8;12318:14;:25;;;;12165:186;:::o;40977:376::-;41039:23;41065:8;:20;41074:10;41065:20;;;;;;;;;;;;;;;41039:46;;41113:4;:17;;;41096:13;;:34;;;;;;;;;;;41147:14;;;;;;;;;;;41141:30;;;41172:10;41185:4;:17;;;41141:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41234:1;41214:4;:17;;:21;;;;41269:1;41246:4;:20;;:24;;;;41301:1;41284:13;;:18;41281:65;;;41333:1;41318:12;:16;;;;41281:65;40977:376;;:::o;36672:177::-;36750:13;36784:57;36791:30;36804:16;36814:5;36804:9;:16::i;:::-;36791:12;:30::i;:::-;36822:18;36835:4;36822:12;:18::i;:::-;36784:6;:57::i;:::-;36777:64;;36672:177;;;;:::o;6512:31::-;;;;:::o;14189:226::-;14244:7;14266:18;14278:5;14266:11;:18::i;:::-;14262:146;;;14305:13;:20;14319:5;14305:20;;;;;;;;;;;;;;;;14298:27;;;;14262:146;14360:38;14377:13;:20;14391:5;14377:20;;;;;;;;;;;;;;;;14360:16;:38::i;:::-;14353:45;;14189:226;;;;:::o;5121:49::-;;;;:::o;19911:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29937:185::-;30012:4;30030:17;30050:31;30069:5;30076:4;30050:18;:31::i;:::-;30030:51;;30100:9;30110:3;30100:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30093:21;;;29937:185;;;;:::o;12965:224::-;13060:7;;;;;;;;;;;13046:21;;:10;:21;;;13038:30;;;;;;13106:1;13087:15;:20;;:46;;;;;13130:3;13111:15;:22;;13087:46;13079:55;;;;;;13166:15;13145:18;:36;;;;12965:224;:::o;6006:31::-;;;;:::o;3870:99::-;;;;:::o;5393:29::-;;;;:::o;3269:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4452:61::-;;;;:::o;30229:148::-;30305:4;30330:6;30337:31;30356:5;30363:4;30337:18;:31::i;:::-;30330:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30323:46;;30229:148;;;;:::o;10734:246::-;10789:4;10803:17;10823:1;10803:21;;10840:6;10836:111;10854:9;:16;;;;10850:1;:20;10836:111;;;10907:13;:27;10921:9;10931:1;10921:12;;;;;;;;;;;;;;;;;;;;;;;;;10907:27;;;;;;;;;;;;;;;;10891:43;;;;10872:3;;;;;;;10836:111;;;;10960:12;10953:19;;;10734:246;:::o;11784:216::-;11877:7;;;;;;;;;;;11863:21;;:10;:21;;;11855:30;;;;;;11922:2;11904:14;:20;;:45;;;;;11946:3;11928:14;:21;;11904:45;11896:54;;;;;;11978:14;11961;:31;;;;11784:216;:::o;7736:152::-;7799:12;7824:34;7834:10;7846:3;7851:6;7824:9;:34::i;:::-;7876:4;7869:11;;7736:152;;;;:::o;5497:57::-;;;;:::o;35404:764::-;35474:1;35466:5;:9;35458:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35538:10;:8;:10::i;:::-;35523:12;35533:1;35523:5;:9;;:12;;;;:::i;:::-;:25;35515:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35591:21;35614:29;35645:17;35664:23;35689:18;35711:40;35733:10;35745:5;35711:21;:40::i;:::-;35590:161;;;;;;;;;;35795:1;35771:21;:25;35763:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35841:6;35848:44;35867:10;35879:12;35889:1;35879:5;:9;;:12;;;;:::i;:::-;35848:18;:44::i;:::-;35841:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35840:53;35832:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35955:3;35939:12;:19;35936:225;;36027:4;35972:6;35979:44;35998:10;36010:12;36020:1;36010:5;:9;;:12;;;;:::i;:::-;35979:18;:44::i;:::-;35972:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;36043:34;36049:10;36061:15;36043:5;:34::i;:::-;36089:59;36107:4;36114:10;36126:21;36089:9;:59::i;:::-;35936:225;35404:764;;;;;;:::o;13768:127::-;13846:7;;;;;;;;;;;13832:21;;:10;:21;;;13824:30;;;;;;13882:5;13865:14;;:22;;;;;;;;;;;;;;;;;;13768:127;:::o;3562:62::-;;;;:::o;6643:26::-;;;;:::o;5275:52::-;;;;;;;;;;;;;;;;;:::o;8433:363::-;8550:12;8575:22;8615:8;8575:49;;8639:25;8647:8;8657:6;8639:7;:25::i;:::-;8635:154;;;8681:7;:23;;;8705:10;8717:6;8733:4;8740:10;8681:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8773:4;8766:11;;;;;8635:154;8433:363;;;;;;;:::o;28522:928::-;28575:16;28602;28621:14;;;;;;;;;;;28602:33;;28644:31;28692:10;28678:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28644:59;;28712:20;28745;28780:6;28787:1;28780:8;;28776:634;28792:10;28790:12;;:1;:12;28776:634;;;28825:6;28821:547;28839:8;:15;28848:5;28839:15;;;;;;;;;;;:22;;;;28835:1;:26;28821:547;;;28890:62;28903:14;28919:8;:15;28928:5;28919:15;;;;;;;;;;;28935:1;28919:18;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;28890:12;:62::i;:::-;28886:469;;29013:15;28979:8;:15;28988:5;28979:15;;;;;;;;;;;28995:1;28979:18;;;;;;;;;;;;;;;;;;:31;;;:49;28976:287;;;29075:8;:15;29084:5;29075:15;;;;;;;;;;;29091:1;29075:18;;;;;;;;;;;;;;;;;;:31;;;29057:49;;29148:8;:15;29157:5;29148:15;;;;;;;;;;;29164:1;29148:18;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;29133:47;;29227:12;29207:14;29222:1;29207:17;;;;;;;;;;;;;:32;;;;;;;;;;;28976:287;28886:469;;;29333:1;29310:25;;28886:469;28863:3;;;;;;;28821:547;;;;29398:1;29380:19;;28804:3;;;;;;;28776:634;;;;29426:14;29418:22;;;;;;28522:928;;;:::o;6882:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;12537:224::-;12632:7;;;;;;;;;;;12618:21;;:10;:21;;;12610:30;;;;;;12678:1;12659:15;:20;;:46;;;;;12702:3;12683:15;:22;;12659:46;12651:55;;;;;;12738:15;12717:18;:36;;;;12537:224;:::o;19481:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7026:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4700:38::-;;;;:::o;30905:2729::-;30984:7;30993;31002;31011;31020;31057:3;31040:21;;:5;:21;;;31037:2590;;;31073:3;31077;31081;31085;31089;31065:28;;;;;;;;;;;;31037:2590;31110:31;31158:14;;;;;;;;;;;31144:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31110:63;;31544:19;31566:83;31634:14;;31567:61;31584:43;31601:25;31611:14;;31601:5;:9;;:25;;;;:::i;:::-;31584:12;;:16;;:43;;;;:::i;:::-;31567:12;:16;;:61;;;;:::i;:::-;31566:67;;:83;;;;:::i;:::-;31544:105;;31665:12;31675:1;31665:5;:9;;:12;;;;:::i;:::-;31657:20;;31705:1;31688:14;:18;31685:41;;;31723:1;31708:16;;31685:41;31752:18;31764:5;31752:11;:18::i;:::-;31735:35;;31781;31794:14;31810:5;31781:12;:35::i;:::-;31778:1847;;;31972:16;31991:42;32011:14;32027:5;31991:19;:42::i;:::-;31972:61;;32130:6;32137:37;32156:10;32168:5;32137:18;:37::i;:::-;32130:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32126:1454;;32401:18;32422:38;32435:24;32447:11;32440:1;32435:11;;:24;;;;:::i;:::-;32427:2;32422:12;;:38;;;;:::i;:::-;32401:59;;32573:22;32642:15;;32624:14;;32618:5;:20;32617:40;32614:200;;;32694:66;32755:4;32694:56;32739:10;32694:40;32715:18;;32694:16;;:20;;:40;;;;:::i;:::-;:44;;:56;;;;:::i;:::-;:60;;:66;;;;:::i;:::-;32677:83;;32614:200;32828:17;32848:16;:23;32865:5;32848:23;;;;;;;;;;;;32828:43;;32898:34;32928:3;32898:25;32912:10;32898:9;:13;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;32886:46;;32996:20;33036:9;33019:14;:26;32996:49;;33104:45;33145:3;33104:36;33124:14;33122:1;:16;33118:2;:21;33104:9;:13;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;33092:57;;33230:50;33276:3;33230:41;33255:14;33253:1;:16;33249:2;:21;33230:14;:18;;:41;;;;:::i;:::-;:45;;:50;;;;:::i;:::-;33213:67;;33327:28;33358:48;33402:3;33358:39;33381:14;33379:1;:16;33375:2;:21;33358:12;:16;;:39;;;;:::i;:::-;:43;;:48;;;;:::i;:::-;33327:79;;33455:12;33469:20;33491:11;33504:14;33520:9;33447:83;;;;;;;;;;;;;;;;;;;;32126:1454;33558:3;33562;33566;33570;33574;33550:28;;;;;;;;;;;;;;;31778:1847;33603:3;33607;33611;33615;33619;33595:28;;;;;;;;;;;;30905:2729;;;;;;;;;:::o;39046:731::-;39109:23;39135:8;:20;39144:10;39135:20;;;;;;;;;;;;;;;39109:46;;39166:25;39177:13;;39166:10;:25::i;:::-;39228:1;39208:4;:17;;;:21;39204:265;;;39246:21;39270:65;39314:4;:20;;;39270:39;39304:4;39270:29;39292:6;;39270:4;:17;;;:21;;:29;;;;:::i;:::-;:33;;:39;;;;:::i;:::-;:43;;:65;;;;:::i;:::-;39246:89;;39369:1;39353:13;:17;39350:108;;;39391:51;39409:4;39416:10;39428:13;39391:9;:51::i;:::-;39350:108;39204:265;;39493:1;39483:7;:11;39479:218;;;39528:7;39511:13;;:24;;;;;;;;;;;39570:30;39592:7;39570:4;:17;;;:21;;:30;;;;:::i;:::-;39550:4;:17;;:50;;;;39621:14;;;;;;;;;;;39615:34;;;39650:10;39670:4;39677:7;39615:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39479:218;39730:39;39764:4;39730:29;39752:6;;39730:4;:17;;;:21;;:29;;;;:::i;:::-;:33;;:39;;;;:::i;:::-;39707:4;:20;;:62;;;;39046:731;;:::o;27784:306::-;27856:7;27876:18;27909:6;27905:152;27923:8;:15;27932:5;27923:15;;;;;;;;;;;:22;;;;27919:1;:26;27905:152;;;28001:5;27965:41;;:8;:15;27974:5;27965:15;;;;;;;;;;;27981:1;27965:18;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;:41;;;27962:86;;;28035:1;28022:14;;27962:86;27947:3;;;;;;;27905:152;;;;28073:10;28065:18;;;27784:306;;;;:::o;9434:250::-;9517:7;;;;;;;;;;;9503:21;;:10;:21;;;9495:30;;;;;;9545:20;9557:7;9545:11;:20::i;:::-;9544:21;9536:30;;;;;;9577:9;9592:7;9577:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9636:40;9663:12;;9636:13;:22;9650:7;9636:22;;;;;;;;;;;;;;;;:26;;:40;;;;:::i;:::-;9611:13;:22;9625:7;9611:22;;;;;;;;;;;;;;;:65;;;;9434:250;:::o;14563:337::-;14647:7;;;;;;;;;;;14633:21;;:10;:21;;;14625:30;;;;;;14694:1;14674:22;;:8;:22;;;;14666:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14763:4;14743:25;;:8;:25;;;;14735:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14844:1;14824:22;;:8;:22;;;14820:73;;14873:8;14863:7;;:18;;;;;;;;;;;;;;;;;;14820:73;14563:337;:::o;28176:148::-;28251:7;28277:8;:15;28286:5;28277:15;;;;;;;;;;;28293:8;28277:25;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;28269:47;;28176:148;;;;:::o;9816:466::-;9895:7;;;;;;;;;;;9881:21;;:10;:21;;;9873:30;;;;;;9918:20;9930:7;9918:11;:20::i;:::-;9910:29;;;;;;9955:9;9950:325;9974:9;:16;;;;9970:1;:20;9950:325;;;10032:7;10016:23;;:9;10026:1;10016:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;10012:252;;;10075:9;10104:1;10085:9;:16;;;;:20;10075:31;;;;;;;;;;;;;;;;;;;;;;;;;10060:9;10070:1;10060:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;10125:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10184:40;10211:12;;10184:13;:22;10198:7;10184:22;;;;;;;;;;;;;;;;:26;;:40;;;;:::i;:::-;10159:13;:22;10173:7;10159:22;;;;;;;;;;;;;;;:65;;;;10243:5;;10012:252;9992:3;;;;;;;9950:325;;;;9816:466;:::o;5738:38::-;;;;:::o;20354:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2039:208::-;2097:7;2126:1;2121;:6;2117:47;;;2151:1;2144:8;;;;2117:47;2174:9;2190:1;2186;:5;2174:17;;2218:1;2213;2209;:5;;;;;;:10;2202:18;;;;2238:1;2231:8;;;2039:208;;;;;:::o;15186:4196::-;15289:3;15274:19;;:3;:19;;;;15266:28;;;;;;15502:18;15514:5;15502:11;:18::i;:::-;15498:359;;15586:6;15544:38;15569:12;;15544:13;:20;15558:5;15544:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;:48;;15536:57;;;;;;15665:36;15688:12;;15665:13;:18;15679:3;15665:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;15655:6;15616:36;15639:12;;15616:13;:18;15630:3;15616:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;:45;:85;;15608:94;;;;;;15498:359;;;15765:6;15741:13;:20;15755:5;15741:20;;;;;;;;;;;;;;;;:30;;15733:39;;;;;;15826:13;:18;15840:3;15826:18;;;;;;;;;;;;;;;;15816:6;15795:13;:18;15809:3;15795:18;;;;;;;;;;;;;;;;:27;:49;;15787:58;;;;;;15498:359;15994:29;16026:17;16037:5;16026:6;:10;;:17;;;;:::i;:::-;15994:49;;16057:12;:19;16070:5;16057:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;16080:12;:17;16093:3;16080:17;;;;;;;;;;;;;;;;;;;;;;;;;16057:40;16054:96;;;16137:1;16113:25;;16054:96;16228:13;16274:14;;16260:12;;16245;:27;16244:44;;;;;;16228:60;;16429:41;16455:14;;16429:21;:25;;:41;;;;:::i;:::-;16395:16;:23;16412:5;16395:23;;;;;;;;;;;;:76;;;;;;;;;;;16676:1;16659:13;;:18;16656:114;;16716:41;16742:14;;16716:21;:25;;:41;;;;:::i;:::-;16693:12;;:65;;;;;;;;;;;16656:114;16880:13;16996:41;17022:14;;16996:21;:25;;:41;;;;:::i;:::-;16951:36;16977:9;;16951:21;:25;;:36;;;;:::i;:::-;16901:41;16927:14;;16901:21;:25;;:41;;;;:::i;:::-;16896:92;:142;16880:158;;17191:16;17203:3;17191:11;:16::i;:::-;17190:42;;;;;17213:18;17225:5;17213:11;:18::i;:::-;17190:42;17186:752;;;17272:6;17248:13;:20;17262:5;17248:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;17317:22;17330:8;17318:6;17317:12;;:22;;;;:::i;:::-;17293:13;:18;17307:3;17293:18;;;;;;;;;;;;;;;;:46;;;;;;;;;;;17186:752;;;17360:16;17372:3;17360:11;:16::i;:::-;17357:581;;;17416:24;17427:12;;17416:6;:10;;:24;;;;:::i;:::-;17392:13;:20;17406:5;17392:20;;;;;;;;;;;;;;;;:48;;;;;;;;;;;17479:22;17492:8;17480:6;17479:12;;:22;;;;:::i;:::-;17455:13;:18;17469:3;17455:18;;;;;;;;;;;;;;;;:46;;;;;;;;;;;17357:581;;;17523:18;17535:5;17523:11;:18::i;:::-;17519:419;;;17581:6;17557:13;:20;17571:5;17557:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;17602:19;17624:22;17637:8;17625:6;17624:12;;:22;;;;:::i;:::-;17602:44;;17684:32;17703:12;;17684:14;:18;;:32;;;;:::i;:::-;17661:13;:18;17675:3;17661:18;;;;;;;;;;;;;;;;:55;;;;;;;;;;;17519:419;;;;17772:24;17783:12;;17772:6;:10;;:24;;;;:::i;:::-;17748:13;:20;17762:5;17748:20;;;;;;;;;;;;;;;;:48;;;;;;;;;;;17811:19;17833:22;17846:8;17834:6;17833:12;;:22;;;;:::i;:::-;17811:44;;17894:32;17913:12;;17894:14;:18;;:32;;;;:::i;:::-;17870:13;:18;17884:3;17870:18;;;;;;;;;;;;;;;;:56;;;;;;;;;;;17519:419;;17357:581;17186:752;18122:20;18145:36;18171:9;;18145:21;:25;;:36;;;;:::i;:::-;18122:59;;18236:15;18225:8;:26;18192:13;:28;18214:4;18192:28;;;;;;;;;;;;;;;;:60;;;;;;;;;;;18324:25;18352:33;18372:12;;18352:15;:19;;:33;;;;:::i;:::-;18324:61;;18465:1;18401:61;18416:45;18445:15;18416:24;:22;:24::i;:::-;:28;;:45;;;;:::i;:::-;18401:10;;:14;;:61;;;;:::i;:::-;:65;18398:315;;;18514:15;18482:13;:28;18504:4;18482:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;18398:315;;;18560:23;18586:66;18611:40;18626:24;:22;:24::i;:::-;18611:10;;:14;;:40;;;;:::i;:::-;18586:20;:24;;:66;;;;:::i;:::-;18560:92;;18683:18;18667:12;;:34;;;;;;;;;;;18398:315;;19141:33;19153:6;19161:5;19168;19141:11;:33::i;:::-;19188:18;19200:5;19188:11;:18::i;:::-;:39;;;;;19211:16;19221:5;19211:9;:16::i;:::-;19210:17;19188:39;:60;;;;;19232:16;19244:3;19232:11;:16::i;:::-;19231:17;19188:60;19185:126;;;19268:31;19280:6;19288:3;19293:5;19268:11;:31::i;:::-;19185:126;19342:3;19326:48;;19335:5;19326:48;;;19347:26;19364:8;19352:6;19347:16;;:26;;;;:::i;:::-;19326:48;;;;;;;;;;;;;;;;;;15186:4196;;;;;;;;:::o;2342:302::-;2400:7;2431:1;2427;:5;2420:13;;;;2513:9;2529:1;2525;:5;;;;;;2513:17;;2635:1;2628:8;;;2342:302;;;;:::o;2992:147::-;3050:7;3070:9;3086:1;3082;:5;3070:17;;3110:1;3105;:6;;3098:14;;;;3130:1;3123:8;;;2992:147;;;;:::o;2770:::-;2828:7;2860:1;2855;:6;;2848:14;;;;2873:9;2889:1;2885;:5;2873:17;;2908:1;2901:8;;;2770:147;;;;:::o;39867:767::-;39951:15;;39935:12;:31;39931:70;;39983:7;;39931:70;40033:1;40015:14;:19;40011:103;;;40069:12;40051:15;:30;;;;40096:7;;40011:103;40126:16;40145:44;40159:15;;40176:12;40145:13;:44::i;:::-;40126:63;;40200:26;40229:37;40261:4;40229:27;40242:13;;40229:8;:12;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;40200:66;;40312:15;;40296:12;;40281;:27;40280:47;40277:100;;;40364:1;40343:22;;40277:100;40387:15;40426:12;;40405:18;:33;40387:51;;40464:1;40449:12;:16;;;;40476:37;40482:10;40494:18;40476:5;:37::i;:::-;40533:52;40544:40;40569:14;40544:20;40559:4;40544:10;:14;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;40533:6;;:10;;:52;;;;:::i;:::-;40524:6;:61;;;;40614:12;40596:15;:30;;;;39867:767;;;;;:::o;29580:273::-;29668:4;29689:6;29696:1;29689:8;;29685:142;29703:11;:18;29699:1;:22;29685:142;;;29754:11;29766:1;29754:14;;;;;;;;;;;;;;29745:23;;:5;:23;;;29742:74;;;29796:4;29788:12;;;;;29742:74;29723:3;;;;;;;29685:142;;;;29840:5;29833:12;;29580:273;;;;;:::o;30526:293::-;30622:4;30643:6;30650:1;30643:8;;30639:141;30657:12;:19;30653:1;:23;30639:141;;;30709:12;30722:1;30709:15;;;;;;;;;;;;;;30700:24;;:5;:24;;;30697:72;;;30752:1;30744:9;;;;;30697:72;30678:3;;;;;;;30639:141;;;;30797:14;;;;;;;;;;;30790:21;;;;30526:293;;;;;:::o;37371:125::-;37430:7;37477:11;37465:8;37457:17;;:31;;;;;;37450:38;;37371:125;;;:::o;36857:506::-;36912:17;36942:14;36959:3;36942:20;;36973:21;37007:9;36997:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36973:44;;37028:6;37049:148;37061:1;37056;:6;37049:148;;37079:14;37100:2;37096:1;:6;;;;;;37079:23;;37125:2;37121:1;:6;;;;;;37117:10;;37174:9;37169:2;:14;37158:27;;37142:8;37151:3;;;;;;37142:13;;;;;;;;;;;:43;;;;;;;;;;;37049:148;;;;37207:14;37238:1;37234;:5;37224:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37207:33;;37256:6;37251:79;37273:1;37268;:6;37251:79;;37303:8;37316:1;37312;:5;37303:15;;;;;;;;;;;;;;;;37296:1;37298;37296:4;;;;;;;;;;;:22;;;;;;;;;;;37276:3;;;;;;;37251:79;;;;37353:1;37340:15;;36857:506;;;;;;;:::o;37504:147::-;37577:13;37634:1;37640;37617:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37603:40;;37504:147;;;;:::o;14423:132::-;14492:7;14517:30;14534:12;;14517;:16;;:30;;;;:::i;:::-;14510:37;;14423:132;;;:::o;40642:251::-;40737:1;40718:21;;:7;:21;;;;40710:30;;;;;;40767:23;40783:6;40767:11;;:15;;:23;;;;:::i;:::-;40753:11;:37;;;;40814:22;40829:6;40814:10;;:14;;:22;;;;:::i;:::-;40801:10;:35;;;;40879:6;40847:13;:28;40869:4;40847:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;40642:251;;:::o;20434:4521::-;20661:11;;20652:6;:20;20651:47;;;;;20679:18;20691:5;20679:11;:18::i;:::-;20678:19;20651:47;20648:4300;;;20710:17;20730:32;20749:5;20756;20730:18;:32::i;:::-;20710:52;;20867:10;20878:3;20867:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20863:4074;;20919:4;20901:10;20912:3;20901:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;21012:6;20995:9;21005:3;20995:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;21141:14;;;;;;;;;;;21116:39;;:8;:15;21125:5;21116:15;;;;;;;;;;;:22;;;;:39;21113:1696;;;21261:8;:15;21270:5;21261:15;;;;;;;;;;;21282:25;;;;;;;;21293:5;21282:25;;;;;;21300:6;21282:25;;;21261:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21554:14;;;;;;;;;;;21528:40;;:8;:15;21537:5;21528:15;;;;;;;;;;;:22;;;;:40;21525:850;;;21600:14;21617:8;:15;21626:5;21617:15;;;;;;;;;;;21633:1;21617:18;;;;;;;;;;;;;;;;;;:31;;;21600:48;;21679:13;21727:6;21723:306;21739:8;:15;21748:5;21739:15;;;;;;;;;;;:22;;;;21737:1;:24;21723:306;;;21835:9;21801:8;:15;21810:5;21801:15;;;;;;;;;;;21817:1;21801:18;;;;;;;;;;;;;;;;;;:31;;;:43;21798:204;;;21892:8;:15;21901:5;21892:15;;;;;;;;;;;21908:1;21892:18;;;;;;;;;;;;;;;;;;:31;;;21880:43;;21969:1;21958:12;;21798:204;21763:3;;;;;;;21723:306;;;;22281:9;22250;:16;22260:5;22250:16;;;;;;;;;;;:28;;:40;;;;22343:8;22313:9;:16;22323:5;22313:16;;;;;;;;;;;:27;;:38;;;;21525:850;;;21113:1696;;;22666:9;:16;22676:5;22666:16;;;;;;;;;;;:28;;;22649:9;22659:3;22649:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:45;22646:144;;;22722:44;22737:9;22747:3;22737:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22753:5;22760;22722:14;:44::i;:::-;22646:144;21113:1696;20863:4074;;;23014:6;22996:9;23006:3;22996:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;23275:14;;;;;;;;;;;23249:40;;:8;:15;23258:5;23249:15;;;;;;;;;;;:22;;;;:40;23246:1676;;23313:19;23335:29;23351:5;23358;23335:15;:29::i;:::-;23313:51;;23431:9;23441:3;23431:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23387:8;:15;23396:5;23387:15;;;;;;;;;;;23403:11;23387:28;;;;;;;;;;;;;;;;;;:41;;:58;;;;23246:1676;;;;23700:9;:16;23710:5;23700:16;;;;;;;;;;;:28;;;23683:9;23693:3;23683:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:45;23680:1223;;;23898:25;23910:5;23917;23898:11;:25::i;:::-;23894:986;;23955:44;23970:9;23980:3;23970:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23986:5;23993;23955:14;:44::i;:::-;23894:986;;;24259:5;24197:67;;:8;:15;24206:5;24197:15;;;;;;;;;;;24213:9;:16;24223:5;24213:16;;;;;;;;;;;:27;;;24197:44;;;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;:67;;;24194:686;;;24296:46;24313:9;24323:3;24313:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24329:5;24336;24296:16;:46::i;:::-;24194:686;;;24584:25;24596:5;24603;24584:11;:25::i;:::-;:96;;;;;24675:5;24613:67;;:8;:15;24622:5;24613:15;;;;;;;;;;;24629:9;:16;24639:5;24629:16;;;;;;;;;;;:27;;;24613:44;;;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;:67;;;;24584:96;24581:299;;;24712:19;24734:29;24750:5;24757;24734:15;:29::i;:::-;24712:51;;24838:9;24848:3;24838:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24794:8;:15;24803:5;24794:15;;;;;;;;;;;24810:11;24794:28;;;;;;;;;;;;;;;;;;:41;;:58;;;;24581:299;;24194:686;23894:986;23680:1223;23246:1676;20863:4074;20648:4300;;20434:4521;;;:::o;14964:214::-;15019:4;15036:19;15058:5;15036:27;;15086:7;;;;;;;;;;;15077:16;;:5;:16;;;15074:68;;;15126:4;15109:21;;15074:68;15156:14;15148:22;;;14964:214;;;:::o;26647:646::-;26739:17;26759:6;26739:26;;26776:16;26866:5;26805:8;:15;26814:5;26805:15;;;;;;;;;;;26821:9;:16;26831:5;26821:16;;;;;;;;;;;:27;;;26805:44;;;;;;;;;;;;;;;;;;:58;;;:66;;;;;;;;;;;;;;;;;;26942:6;26882:8;:15;26891:5;26882:15;;;;;;;;;;;26898:9;:16;26908:5;26898:16;;;;;;;;;;;:27;;;26882:44;;;;;;;;;;;;;;;;;;:57;;:66;;;;26963:6;26959:227;26975:8;:15;26984:5;26975:15;;;;;;;;;;;:22;;;;26973:1;:24;26959:227;;;27056:9;27021:8;:15;27030:5;27021:15;;;;;;;;;;;27037:1;27021:18;;;;;;;;;;;;;;;;;;:31;;;:44;27018:157;;27097:8;:15;27106:5;27097:15;;;;;;;;;;;27113:1;27097:18;;;;;;;;;;;;;;;;;;:31;;;27085:43;;27158:1;27147:12;;27018:157;26999:3;;;;;;;26959:227;;;;27227:9;27196;:16;27206:5;27196:16;;;;;;;;;;;:28;;:40;;;;27277:8;27247:9;:16;27257:5;27247:16;;;;;;;;;;;:27;;:38;;;;26647:646;;;;;:::o;25082:1224::-;25355:45;25371:18;25383:5;25371:11;:18::i;:::-;25390:1;25371:21;;;;;;;;;;;;;;25394:5;25355:15;:45::i;:::-;25346:6;:54;25343:956;;;25478:6;25416:8;:15;25425:5;25416:15;;;;;;;;;;;25432:29;25448:5;25455;25432:15;:29::i;:::-;25416:46;;;;;;;;;;;;;;;;;;:59;;:68;;;;25530:6;25499:9;:16;25509:5;25499:16;;;;;;;;;;;:28;;:37;;;;25343:956;;;25815:6;25755:8;:15;25764:5;25755:15;;;;;;;;;;;25771:9;:16;25781:5;25771:16;;;;;;;;;;;:27;;;25755:44;;;;;;;;;;;;;;;;;;:57;;:66;;;;25836:17;25856:8;:15;25865:5;25856:15;;;;;;;;;;;25872:1;25856:18;;;;;;;;;;;;;;;;;;:31;;;25836:51;;25902:16;25937:6;25944:1;25937:8;;25933:247;25949:8;:15;25958:5;25949:15;;;;;;;;;;;:22;;;;25947:1;:24;25933:247;;;26034:9;25999:8;:15;26008:5;25999:15;;;;;;;;;;;26015:1;25999:18;;;;;;;;;;;;;;;;;;:31;;;:44;25996:169;;26079:8;:15;26088:5;26079:15;;;;;;;;;;;26095:1;26079:18;;;;;;;;;;;;;;;;;;:31;;;26067:43;;26144:1;26133:12;;25996:169;25973:3;;;;;;;25933:247;;;;26225:9;26194;:16;26204:5;26194:16;;;;;;;;;;;:28;;:40;;;;26279:8;26249:9;:16;26259:5;26249:16;;;;;;;;;;;:27;;:38;;;;25343:956;;;25082:1224;;;:::o

Swarm Source

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