Contract 0xc936218c17d273207a7c7f2cfe619e764e562186 1

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xb1394cdb6ac6c1c54771a959584a9ab8c2e9014340ce60b6bf6b7a1240072c03Buy Feed145166742022-01-20 1:23:1819 secs ago0x6a706d97e94b1dd85ec450b92e9b1c058cdbdcf0 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000665645
0x97bc3b69335b19b00cbe8d5032ebebe9b37766774b3f7eb0a2672ef56588cd06Harvest145166702022-01-20 1:23:0631 secs ago0x4c5155e25444890aaa973c11f8b56c4b8abf7a9c IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.001904705
0x3ba470db055eb2963cdac69fefb120b4beaf8c3f46e86c9dcd8f131530345b14Buy Feed145166672022-01-20 1:22:5740 secs ago0x971c12f34d0aee8dc91f4582f35816a13f78a330 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000634335
0x248d1830c5d304a6349e96fdf15cbceb91f531aef683a2aed8878d1339c18e80Harvest145166662022-01-20 1:22:5443 secs ago0x6a706d97e94b1dd85ec450b92e9b1c058cdbdcf0 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00162081
0xc630e74b90c019ec943e2780c331dcf426fbec046a93b6b03e9a99167518ebf4Buy Feed145166572022-01-20 1:22:271 min ago0xd6427a7ce23ba8a35a59e05733855fd4f7512946 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00066092
0xd229852a7aba6328dfeb9476da518dd51607887654ea93497230d9401fd44414Harvest145166542022-01-20 1:22:181 min ago0x9f83057edf2d9e604c65e6cc6e7d2ac5e09e7bf3 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.001518385
0xd1de60c053e2a460aae9a9846421c166268fc47e5ec2cba9f8539744501dd9d2Harvest145166532022-01-20 1:22:151 min ago0x4e509310365ef481fa2144f0a6c0c89ee177acd5 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.0018618
0x737db531b93769dcdbf905de6266204092250992de5a87fdaffeba615b04033eHarvest145166522022-01-20 1:22:121 min ago0xd6427a7ce23ba8a35a59e05733855fd4f7512946 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.001749065
0x0557ba6a9911f4c4ada621271fb97d2906a75cb06e3247cf54d91aa2caee49fcBuy Feed145166482022-01-20 1:22:001 min ago0x9499d81f85e0ee4f92fd55c5bcdf3eb88f23c18f IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000824345
0xbe6fd6cdd91f813dc9afef9990842013b533d08a6b2045a79e3da867e8af2429Harvest145166422022-01-20 1:21:421 min ago0x2f065c6315c02ba5e6c352181571d2b3886f21de IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.001518385
0x9ec61b8f6c389b318926adc5a8fec7c45c15e00cda5f860dfefadebddf2a2c68Buy Feed145166352022-01-20 1:21:212 mins ago0x19a9c49e0313f2b12b2b72f1a03536d57f80b6fd IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000824345
0x9736dd2b533ecebe10b886a0265601fd57ad13c5d97d82934f855c376c7266cdBuy Feed145166352022-01-20 1:21:212 mins ago0x993cfccdc15bce4300916da5cab2661a92f91c80 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000634385
0xf997bd29f5448af48b23553c5ef15e9bd4a600a4050e2f803104e0dd5369a569Harvest145166212022-01-20 1:20:392 mins ago0xedf2f4d8f6cff8631e744d231f8981d57936f1a6 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.001518385
0x959c1722e0bb700c0feb9e54ec604e24ed47b1499ebf1470ec84ae408926898aBuy Feed145166182022-01-20 1:20:303 mins ago0xf26aec47f0945282e81f8f7ab1f8bb8af3a63d42 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000674035
0x31aa1b9d745ff1a70c3fa902e48240e6209a4d2444c96158d8dcba36fee6fa8bHarvest145166152022-01-20 1:20:213 mins ago0x3ee8edc4af1f712b055e9819259a64c42498ceaf IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00140782
0xf586cd670fe918ad015a4da4af0c1e53237a1fcede7461ed5502151f6afba8cfHarvest145166122022-01-20 1:20:123 mins ago0xf26aec47f0945282e81f8f7ab1f8bb8af3a63d42 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00143961
0x82762b19d1e1dd16d6db32891f5f7e802cc68d972cc02b7d7ca4c7f2b2e3e2d4Buy Feed145166082022-01-20 1:20:003 mins ago0x4e509310365ef481fa2144f0a6c0c89ee177acd5 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00063906
0x7e8c549fbb81026993a42026243458a8ae4eb26eefc6b527868a03012c10a932Buy Feed145166042022-01-20 1:19:483 mins ago0xa8c74113d3bfd0ad4cda90a1b6013a8f87b79f56 IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00093502
0x06a5305d936d79d33cdee12d739b6131c3a1c42e36eab45403d2d2ed9e5ca9bdBuy Feed145165992022-01-20 1:19:334 mins ago0x3ee8edc4af1f712b055e9819259a64c42498ceaf IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00070317
0x112fc88df1067c27c9be5d21a12b79f76ee5d937bdec1d4f54abad8bfd1e509bBuy Feed145165962022-01-20 1:19:244 mins ago0x09940a3232b7edb6b7316eb97eddee0cc062b8ff IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000634335
0xf342dbea863d86084bf8aa9dd3ece59ce484cdabcc5ebd114a4d6b5c2fa4c680Harvest145165892022-01-20 1:19:034 mins ago0x09940a3232b7edb6b7316eb97eddee0cc062b8ff IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.001411845
0x9f6cd44c0b09e617010fe9ab3d38ce43a057394d1fadfd85528213fb3ecc7d88Buy Feed145165872022-01-20 1:18:574 mins ago0xb1940c1ad017ba8f80c46ffa49e0d598b499aa6d IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000634335
0x671285050ab197ecce9d5e97a727e367c50cb941b95d45576bbb43c779f003d0Harvest145165872022-01-20 1:18:574 mins ago0x292c0c1e49aad5327d6f74544f4f4cd18d8dcfba IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.00140782
0x325aeeda262789ffd99efc3e87b8168d6063dfebe56a1fb39e6e34199c3079b3Buy Feed145165762022-01-20 1:18:245 mins ago0x7e2e8e2e043b2103687c9a72ca34a0fb595ba6cf IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000634335
0x6b279024646e3381a08e361b96824e4030469710cde5fbe2edbb45b67ac7ba9cBuy Feed145165742022-01-20 1:18:185 mins ago0xb1940c1ad017ba8f80c46ffa49e0d598b499aa6d IN  0xc936218c17d273207a7c7f2cfe619e764e5621860 BNB0.000634335
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x150b339a4bedd362b646703d4593f0b01ef27ce83c5b84b9682bcbbdf3b5fcde145155982022-01-20 0:29:3054 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0xe7daf7cb176aebe4540fb96fb84cc2242495bbe2b03d85bc3129bc87458668a5145066612022-01-19 17:02:148 hrs 21 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x3e8cbc66c9a519f543a07fa497422621df6a799a3f2a259d6bbc9d64082ba874145054112022-01-19 15:59:229 hrs 24 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x65c6631a174f1e18aa1f75242e558ed4748379ba5bae512930601a9490320d71145045092022-01-19 15:13:3310 hrs 10 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x5df6cae1df80300f57840d500dbcc311eb1d5e383fd5e5c829cf46b8a9cc7055145022392022-01-19 13:16:1512 hrs 7 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.025 BNB
0x22a0af827e5cc9c9edcec770e30101792ff4ce4a9dbfd1bb0b282f525e09efaa145003262022-01-19 11:40:3113 hrs 43 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x29d2f8d23c0b9b975433b04fe07d3cd2f8222effc74a07327198d7a00b3d6df1144994152022-01-19 10:54:5814 hrs 28 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x0ef153c7ba3b5b44bcefc6cd43fdf90e7c8ce54c955660e38fa85f1b00e5084c144993952022-01-19 10:53:5814 hrs 29 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0xcfaa253540d906680160a1fdc0da3577a540c78b8d6bf18fd86ddbb00b4c5b06144992552022-01-19 10:46:5814 hrs 36 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x697a55d1fac58c3373d01c8d4a15a78e62fe0769cc38079b1ae95badaed56480144992212022-01-19 10:45:1614 hrs 38 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x2e5dcbe9b9c8f1e9431d5b3638fd0441237e9183ff79285eb610ce2155dfe7e5144991922022-01-19 10:43:4914 hrs 39 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x17cab49cba48d991b2fb8a4c80d4d43dfc376919300fbbab407bf5dcdb9ed350144990842022-01-19 10:38:2514 hrs 45 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x1d9b3349221dec6fc9ddbbe47fcd52b53606b0ce62889d2674cbb43c9338d733144990542022-01-19 10:36:5514 hrs 46 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x37fc206b35e30ef0b1a911a60890401d044a2adacc94dee8bbb4db8a4c1eb64a144982652022-01-19 9:57:2815 hrs 26 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0xd004df5c147f345a2044c846617af0fe4377ac7c8426e166a1784ee4225120ab144974632022-01-19 9:17:2016 hrs 6 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.015 BNB
0xc0151c85a79a28d00216fb2860bebbbc7620567e8730ec7ccbc6154613198d0c144974452022-01-19 9:16:2616 hrs 7 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0xde641f47c47a98731ea034769c243407fa81af29e49fa4bd8dd1fcfe5d9cc949144962722022-01-19 8:17:3217 hrs 6 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.015 BNB
0x2604b176df17f470d8b291267eb2218699accc1ce4cd15f1e8fd6c21985c26da144961112022-01-19 8:09:2917 hrs 14 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x4934ec5ff5efc27997212309b16ea549dd640389f0bd2d0ce06710388580db80144960282022-01-19 8:05:1517 hrs 18 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x8c11944d31b9bd300d998c7ec6ef3f797268870868fd059b3f1322d497cc2977144959892022-01-19 8:03:1817 hrs 20 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x230dbb78cdcd5d6d9e65d7c53f0a8d14164ae546f461660bad38e57bcd97cccf144958072022-01-19 7:54:1217 hrs 29 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x51d073d2a4d57f085f93f03c5dfd50d8efa8418fb0e7ad9fa61c3d4ca06fe1d4144956812022-01-19 7:47:5417 hrs 35 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0xb3e68d8dff972129c93ff5b729a161e4bf0d09d06347fc4dd3f869b6708fe717144956352022-01-19 7:45:3617 hrs 38 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0x19fcc9d5bc93d35511894d4b4b84df9887e2bc2cbc43650c42694bdb48d36f06144955962022-01-19 7:43:3917 hrs 39 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
0xd06e727fb21b11e44be3a556684ef312ef724cb0daa9898e802ad4ee32b20e34144922222022-01-19 4:53:2720 hrs 30 mins ago 0xc936218c17d273207a7c7f2cfe619e764e5621860xe88a1fac4234294c79956f8f228974366a9833570.005 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JurassicPeriod

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

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

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    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 a / b;
  }

  /**
  * @dev Subtracts 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);
    return a - b;
  }

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 */
contract Ownable { 
  address public owner;

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

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }
}


/*
* @title  Jurassic Period System, build in BSC Network
* @dev    A Blockchain Game system built on smart contract technology. Open to all, transparent to all.
*         The worlds first decentralized, community support fund
*/
contract JurassicPeriod is Ownable {
    
    IERC20 public investToken;
    using SafeMath for uint256;

    /* Player base data struct define */
    struct Player {
        address referral;
        uint256 level_id;
        uint256 dividends;
        uint256 referral_bonus;
        uint256 total_dividends;
        uint256 total_referral_bonus;
        uint256 last_payout;
        address[] referrals;
    }

    /* Player animal object struct define */
    struct PlayerAnimal {
        uint256 id;
        uint256 status;
        uint256 time;
        uint256 expire;
        uint256 ended;
        uint256 payout;
        uint256 eggs;
        uint256 referral_eggs;
        uint256 total_eggs;
        uint256 total_referral_eggs;
        uint256 total_dividends;
        uint256 total_referral_bonus;
        uint256 last_payout;
        address referral;
        address[] referrals;
    }
    
    /* Deposit smart contract address */
    address public invest_token_address = 0x59cC61BF9fd75368e8c06CE17E43C6aC59F516C3;
    uint256 public invest_token_decimal = 8;
    
    /* Platform official address */
    address payable public platform_address = 0xE88a1fAC4234294c79956f8F228974366A983357;
    
    uint256 public total_dividends;
    uint256 public total_referral_bonus;
    
    /* Animal defined data */
    uint256[] public animal_ids =       [1,2,3,4,5,6];
    uint256[] public animal_prices =    [100,5000000,10000000,20000000,40000000,100000000];
    uint256[] public animal_pays =      [1,2,2,2,2,2];//1 for BNB,2 for JRSP
    uint256[] public animal_daily_yields =  [120,120,120,120,120,120];
    uint256[] public animal_opentimes =     [1640534400,1640534400,1641873600,1642737600,1643601600,1644465600];
    uint256[] public animal_exchange_rates1 =   [6,1,1,1,1,1];
    uint256[] public animal_exchange_rates2 =   [1,1,2,4,8,15];
    uint256[] public animal_total_nums =        [0,0,0,0,0,0];

    /* Animal feed defined data */
    uint256[] public animal_feed_ids =    [1,2,3,4,5,6];
    uint256[] public animal_feed_prices = [50,300000,600000,1200000,2400000,4800000];

    /* Referral bonuses data define */
    uint256[] public referral_bonuses = [5,10,15,20,25,30];

    /* Yield section config data */
    uint256[] public yield_section_limits = [5000,8000,15000,20000,25000,30000];
    uint256[] public yield_section_reduces = [50,50,50,50,50,50];
    uint256[] public yield_section1_feed_prices = [50,150000,300000,600000,1200000,2400000];
    uint256[] public yield_section2_feed_prices = [30,75000, 150000,300000,600000, 1200000];
    uint256[] public yield_section3_feed_prices = [20,37500, 75000, 150000,300000, 600000];
    uint256[] public yield_section4_feed_prices = [10,19000, 37500, 75000, 150000, 300000];
    uint256[] public yield_section5_feed_prices = [10,9500,  19000, 37500, 75000,  150000];
    uint256[] public yield_section6_feed_prices = [10,4750,  9500,  19000, 37500,  75000];

    /*Animal daily sell limit number*/
    uint256 constant public animal_daily_sell_limit = 1000;
    uint256 public animal_next_opentime = 1640404800;  //initial date: 2021-12-25 12:00
    uint256[] public animal_daily_nums = [0,0,0,0,0,0];

    /* Mapping data list define */
    mapping(address => Player) public players;
    mapping(address => PlayerAnimal) public animal1s;
    mapping(address => PlayerAnimal) public animal2s;
    mapping(address => PlayerAnimal) public animal3s;
    mapping(address => PlayerAnimal) public animal4s;
    mapping(address => PlayerAnimal) public animal5s;
    mapping(address => PlayerAnimal) public animal6s;

    event BuyAnimal(address indexed addr,uint256 animal_id);
    event BuyFeed(address indexed addr,uint256 animal_id,uint256 quantity);
    event Harvest(address indexed addr);
    event Exchange(address indexed addr);
    event SetReferral(address indexed addr,address refferal,uint256 animal_id);
	
    constructor() public {
        /* Create invest token instance  */
        investToken = IERC20(invest_token_address);
    }
    
    /* Function to receive Ether. msg.data must be empty */
    receive() external payable {}

    /* Fallback function is called when msg.data is not empty */ 
    fallback() external payable {}

    function getBalance() public view returns (uint) {
        return address(this).balance;
    }
        
    /*
    * @dev format token amount with token decimal
    */
    function _getTokenAmount(uint256 _amount,uint256 _token_decimal) 
        pure
        private
        returns(uint256 token_amount)
    {
        uint256 token_decimals = 10 ** _token_decimal;
        token_amount = _amount * token_decimals;   
        return token_amount;
    }

    /*
    * @dev get animal price
    */
    function _getAnimalFeedPrice(uint256 id)
        view
        private
        returns(uint256 _price)
    {
        uint256 animal_id = id-1;
        uint256 _total_num = animal_total_nums[animal_id];
        _price = animal_feed_prices[animal_id];
        if(_total_num > yield_section_limits[0]){
            _price = yield_section1_feed_prices[animal_id];
        }
        if(_total_num > yield_section_limits[1]){
            _price = yield_section2_feed_prices[animal_id];
        }
        if(_total_num > yield_section_limits[2]){
            _price = yield_section3_feed_prices[animal_id];
        }
        if(_total_num > yield_section_limits[3]){
            _price = yield_section4_feed_prices[animal_id];
        }
        if(_total_num > yield_section_limits[4]){
            _price = yield_section5_feed_prices[animal_id];
        }
        if(_total_num > yield_section_limits[5]){
            _price = yield_section6_feed_prices[animal_id];
        }
        return _price;
    }
    
    /*
    * @dev get animal feed prices
    */
    function _getAnimalFeedPrices()
        view
        private
        returns(uint256[] memory prices)
    {
        uint256[] memory _feed_prices = new uint256[](6);
        _feed_prices[0] = _getAnimalFeedPrice(1);
        _feed_prices[1] = _getAnimalFeedPrice(2);
        _feed_prices[2] = _getAnimalFeedPrice(3);
        _feed_prices[3] = _getAnimalFeedPrice(4);
        _feed_prices[4] = _getAnimalFeedPrice(5);
        _feed_prices[5] = _getAnimalFeedPrice(6);
        return _feed_prices;
    }

     /*
    * @dev get the animal day payout profit, if total yield reached reduce limit, invest day rate will be reduce
    */
    function _getAnimalDayPayoutOf(uint256 animal_id)
        view
        private
        returns(uint256 daily_yield)
    {
        uint256 _total_num = animal_total_nums[animal_id-1];
        uint256 _daily_yield = animal_daily_yields[animal_id-1];
        //format daily payout amount
        _daily_yield = _getTokenAmount(_daily_yield, invest_token_decimal);
        if(_total_num > yield_section_limits[0]){
            _daily_yield = _daily_yield / yield_section_reduces[0] / 100;
        }
        if(_total_num > yield_section_limits[1]){
            _daily_yield = _daily_yield / yield_section_reduces[1] / 100;
        }
        if(_total_num > yield_section_limits[2]){
            _daily_yield = _daily_yield / yield_section_reduces[2] / 100;
        }
        if(_total_num > yield_section_limits[3]){
            _daily_yield = _daily_yield / yield_section_reduces[3] / 100;
        }
        if(_total_num > yield_section_limits[4]){
            _daily_yield = _daily_yield / yield_section_reduces[4] / 100;
        }
        if(_total_num > yield_section_limits[5]){
            _daily_yield = _daily_yield / yield_section_reduces[5] / 100;
        }
        return _daily_yield;
    }

    /*
    * @dev get animal next sell opentime
    */
    function _getAnimalNextOpentime()
        view
        private
        returns(uint256 opentime)
    {
       uint256 _opentime = animal_next_opentime;
       uint256 blocktime = uint256(block.timestamp);
       while(_opentime < blocktime){
           _opentime = _opentime.add(86400);
       }
       return _opentime;
    }
    
    /*
    * @dev get animal daily stock quantity
    */
    function _getAnimalDailyStocks()
        view
        private
        returns(uint256[] memory stocks)
    {
        uint256[] memory _stocks = new uint256[](6);
        uint256 blocktime = uint256(block.timestamp);
        uint256 _limit = animal_daily_sell_limit;
        if(animal_next_opentime < blocktime){
            _stocks[0] = _limit;
            _stocks[1] = _limit;
            _stocks[2] = _limit;
            _stocks[3] = _limit;
            _stocks[4] = _limit;
            _stocks[5] = _limit;
        } else {
            _stocks[0] = _limit - animal_daily_nums[0];
            _stocks[1] = _limit - animal_daily_nums[1];
            _stocks[2] = _limit - animal_daily_nums[2];
            _stocks[3] = _limit - animal_daily_nums[3];
            _stocks[4] = _limit - animal_daily_nums[4];
            _stocks[5] = _limit - animal_daily_nums[5];
        }
        return _stocks;
    }

    /*
    * @dev get animal open status
    */
    function _getAnimalStatus(uint256 _animal_id)
        view
        private
        returns(uint256 status)
    {
        uint256 blocktime = uint256(block.timestamp);
        uint256 _status = 1;
        if(blocktime <= animal_opentimes[_animal_id-1]) {
            _status = 0;
        }
        return _status;
    }

    /*
    * @dev get all animal open status
    */
    function _getAnimalStatuses()
        view
        private
        returns(uint256[] memory statuses)
    {
        uint256[] memory _statuses = new uint256[](6);
        _statuses[0] = _getAnimalStatus(1);
        _statuses[1] = _getAnimalStatus(2);
        _statuses[2] = _getAnimalStatus(3);
        _statuses[3] = _getAnimalStatus(4);
        _statuses[4] = _getAnimalStatus(5);
        _statuses[5] = _getAnimalStatus(6);
        return _statuses;
    }

    /*
    * @dev update animal next sell opentime & reset animal daily sell quantity
    */
    function _updateAnimalNextOpentime()
        private
    {
        uint256 blocktime = uint256(block.timestamp);
        if(animal_next_opentime < blocktime){
            animal_next_opentime = _getAnimalNextOpentime();
            animal_daily_nums = [0,0,0,0,0,0];
        }
    }

    /*
    * @dev get animal daily nums
    */
    function _getAnimalDailyNums()
        view
        private
        returns(uint256[] memory daily_nums)
    {
        uint256[] memory _daily_nums = new uint256[](6);
        uint256 blocktime = uint256(block.timestamp);
        if(animal_next_opentime < blocktime){
            _daily_nums[0] = 0;
            _daily_nums[1] = 0;
            _daily_nums[2] = 0;
            _daily_nums[3] = 0;
            _daily_nums[4] = 0;
            _daily_nums[5] = 0;
        } else {
            _daily_nums[0] = animal_daily_nums[0];
            _daily_nums[1] = animal_daily_nums[1];
            _daily_nums[2] = animal_daily_nums[2];
            _daily_nums[3] = animal_daily_nums[3];
            _daily_nums[4] = animal_daily_nums[4];
            _daily_nums[5] = animal_daily_nums[5];
        }
        return _daily_nums;
    }
    
    /*
    * @dev get user animal list
    */
    function _getUserAnimalList(address _addr)
        view
        private
        returns(PlayerAnimal[] memory animals)
    {
        PlayerAnimal[] memory _animals = new PlayerAnimal[](6);
        _animals[0] = _getUserAnimalInfo(_addr,1);
        _animals[1] = _getUserAnimalInfo(_addr,2);
        _animals[2] = _getUserAnimalInfo(_addr,3);
        _animals[3] = _getUserAnimalInfo(_addr,4);
        _animals[4] = _getUserAnimalInfo(_addr,5);
        _animals[5] = _getUserAnimalInfo(_addr,6);
        return _animals;
    }

    /*
    * @dev get user animal status
    */
    function _getUserAnimalInfo(address _addr,uint256 _animal_id)
        view
        private
        returns(PlayerAnimal memory animal)
    {
        PlayerAnimal memory _animal = animal1s[_addr];
        if(_animal_id == 2) _animal = animal2s[_addr];
        if(_animal_id == 3) _animal = animal3s[_addr];
        if(_animal_id == 4) _animal = animal4s[_addr];
        if(_animal_id == 5) _animal = animal5s[_addr];
        if(_animal_id == 6) _animal = animal6s[_addr];
        
        /* get animal status,verify the animal is ended or not */
        if(_animal.status == 1 && _animal.ended < uint256(block.timestamp)) {
            _animal.status = 3;
        }
        //get animal current payout total
        _animal.payout = _payoutOf(_addr,_animal_id);
        
        return _animal;
    }

    /*
    * @dev get user animal data with storage way
    */
    function _getStorageAnimal(address _addr,uint256 _animal_id)
        view
        private
        returns(PlayerAnimal storage animal)
    {
        PlayerAnimal storage _animal = animal1s[_addr];
        if(_animal_id == 2) _animal = animal2s[_addr];
        if(_animal_id == 3) _animal = animal3s[_addr];
        if(_animal_id == 4) _animal = animal4s[_addr];
        if(_animal_id == 5) _animal = animal5s[_addr];
        if(_animal_id == 6) _animal = animal6s[_addr];
        return _animal;
    }

        
    /*
    * @dev update user referral data
    */
    function _setReferral(address _addr, address _referral, uint256 _animal_id) 
        private 
    {
        Player storage player = players[_addr];
        if(player.referral != address(0)) {  _referral = player.referral; }
        PlayerAnimal storage animal = _getStorageAnimal(_addr,_animal_id);

        if(_referral != _addr && _referral != address(0)) {

            /* Set player referral data */
            if(player.referral == address(0)){
                Player storage ref_player = players[_referral];
                if(ref_player.referral != address(0) || _referral == platform_address){
                    player.referral = _referral;
                    ref_player.referrals.push(_addr);
                }
            }
            
            /* Set player animal referral data */
            if(animal.referral == address(0)) {
                animal.referral = _referral;
                /* update user referral address list*/
                PlayerAnimal storage ref_animal = _getStorageAnimal(_referral,_animal_id);
                ref_animal.referrals.push(_addr);
            }
        }
    }
    
    
    /*
    * @dev Grant user referral bonus in user havest
    */
    function _referralPayout(address _addr, uint256 _amount, uint256 _animal_id) 
        private
    {
        address ref = players[_addr].referral;
        if(ref == address(0)) return;

        PlayerAnimal storage ref_animal = _getStorageAnimal(ref, _animal_id);
        uint256 blocktime = uint256(block.timestamp);

        // verify the referral animal feed is expired or not
        if(ref_animal.expire < blocktime) return;

        uint256 bonus_index = ref_animal.referrals.length;
        if(bonus_index==0) return;
        if(bonus_index > referral_bonuses.length) {
            bonus_index = referral_bonuses.length;
        }
        uint256 _bonus_rate = referral_bonuses[bonus_index-1];
        uint256 _bonus_eggs = _amount * _bonus_rate / 100;

        //update referral player bonus data
        ref_animal.referral_eggs += _bonus_eggs;
    }

    
    /*
    * @dev get user animal current total pending profit
    * @return user animal pending payout amount
    */
    function _payoutOf(address _addr,uint256 _animal_id)
        view
        private 
        returns(uint256 value)
    {
        PlayerAnimal storage _animal = _getStorageAnimal(_addr,_animal_id);
        if(_animal.id > 0) {
            uint256 _day_payout = _getAnimalDayPayoutOf(_animal.id);
            uint256 blocktime = uint256(block.timestamp);
            uint256 from = _animal.last_payout > _animal.time ? _animal.last_payout : _animal.time;
            uint256 to = blocktime > _animal.expire ? _animal.expire : blocktime;
            if(from < to) {
                value = _day_payout * (to - from) / 86400;
            }
        }
        return value;
    }
    

    /*
    * @dev get animal list
    */
    function getAnimalList()
        view 
        external 
        returns(
            uint256[] memory ids,uint256[] memory prices,uint256[] memory pays, 
            uint256[] memory total_nums,uint256[] memory statuses, uint256[] memory stocks, 
            uint256[] memory daily_nums
        )
    {
        uint256[] memory _statuses = _getAnimalStatuses();
        uint256[] memory _stocks = _getAnimalDailyStocks();
        uint256[] memory _daily_nums = _getAnimalDailyNums();
        return (
            animal_ids,
            animal_prices,
            animal_pays,
            animal_total_nums,
            _statuses,
            _stocks,
            _daily_nums
        );
    }
    
    /*
    * @dev get user animal frame list
    */
    function getUserAnimalList(address _addr)
        view 
        external 
        returns(
            uint256[] memory ids,uint256[] memory payouts,uint256[] memory statuses,
            uint256[] memory expires,uint256[] memory referral_nums,uint256[] memory referral_eggs
        )
    {
        //user animal list
        PlayerAnimal[] memory _animals = _getUserAnimalList(_addr);
        uint256[] memory _payouts = new uint256[](6);
        uint256[] memory _statuses = new uint256[](6);
        uint256[] memory _expires = new uint256[](6);
        uint256[] memory _referral_nums = new uint256[](6);
        uint256[] memory _referral_eggs = new uint256[](6);
        
        for(uint256 i = 0; i < 6; i++){
            _payouts[i] = _animals[i].payout + _animals[i].eggs;
            _statuses[i] = _animals[i].status;
            _expires[i] = _animals[i].expire;
            _referral_nums[i] = _animals[i].referrals.length;
            _referral_eggs[i] = _animals[i].referral_eggs;
        }
        return (
            animal_ids,
            _payouts,
            _statuses,
            _expires,
            _referral_nums,
            _referral_eggs
        );
    }

    /*
    * @dev get user animal frame list
    */
    function getUserAnimalDatas(address _addr)
        view 
        external 
        returns(
            uint256[] memory ids,uint256[] memory statuses,uint256[] memory referral_nums,
            uint256[] memory eggs,uint256[] memory referral_eggs,
            uint256[] memory dividends,uint256[] memory referral_bonus
        )
    {
        //user animal list
        PlayerAnimal[] memory _animals = _getUserAnimalList(_addr);
        uint256[] memory _statuses = new uint256[](6);
        uint256[] memory _referral_nums = new uint256[](6);
        uint256[] memory _total_eggs = new uint256[](6);
        uint256[] memory _total_referral_eggs = new uint256[](6);
        uint256[] memory _total_dividends = new uint256[](6);
        uint256[] memory _total_referral_bonus = new uint256[](6);
        
        for(uint256 i = 0; i < 6; i++){
            uint256 _dividends = _animals[i].total_eggs / animal_exchange_rates1[i] * animal_exchange_rates2[i];
            uint256 _referral_bonus = _animals[i].total_referral_eggs / animal_exchange_rates1[i] * animal_exchange_rates2[i];

            _statuses[i] = _animals[i].status;
            _referral_nums[i] = _animals[i].referrals.length;
            _total_eggs[i] = _animals[i].total_eggs;
            _total_referral_eggs[i] = _animals[i].total_referral_eggs;
            _total_dividends[i] = _dividends;
            _total_referral_bonus[i] = _referral_bonus;
        }
        return (
            animal_ids,
            _statuses,
            _referral_nums,
            _total_eggs,
            _total_referral_eggs,
            _total_dividends,
            _total_referral_bonus
        );
    }

    /*
    * @dev get invest period list
    */
    function getAnimalFeedList()
        view 
        external 
        returns(uint256[] memory ids,uint256[] memory prices,uint256[] memory pays,uint256[] memory statuses)
    {
        uint256[] memory _feed_prices = _getAnimalFeedPrices();
        uint256[] memory _statuses = _getAnimalStatuses();
        return (
            animal_feed_ids,
            _feed_prices,
            animal_pays,
            _statuses
        );
    }

    /*
    * @dev user do set refferal action
    */
    function setReferral(address _referral,uint256 _animal_id)
        payable
        external 
    {
        require(_animal_id >= 1 && _animal_id <= 6 , "Invalid animal Id");

        PlayerAnimal memory player = _getUserAnimalInfo(msg.sender,_animal_id-1);
        require(player.referral == address(0), "Referral has been set");
        require(_referral != address(0), "Invalid Referral address");
        
        PlayerAnimal memory ref_player = _getUserAnimalInfo(player.referral,_animal_id-1);
        require(ref_player.referral != address(0) || _referral == platform_address, "Referral address not activated yet");

        _setReferral(msg.sender,_referral,_animal_id);
        emit SetReferral(msg.sender,_referral,_animal_id);
    }
    
    /*
    * @dev user do buy animal action, update user animal data
    */
    function buyAnimal(address _referral, uint256 _animal_id) 
        external
        payable
    {
        require(_animal_id >= 1 && _animal_id <= 6 , "Invalid Animal Id");

        //verify the animal opening status
        uint256 _animal_status = _getAnimalStatus(_animal_id);
        require(_animal_status == 1, "Animal purchase opensoon");
        //verify animal daily sell limit status
        require(animal_daily_sell_limit >= animal_daily_nums[_animal_id-1], "Animal sold out today");

        PlayerAnimal memory _animal = _getUserAnimalInfo(msg.sender, _animal_id);
        PlayerAnimal storage animal = _getStorageAnimal(msg.sender, _animal_id);

        //Animal must be dided or not actived
        require(_animal.status != 1, "Animal is actived now");

        //get animal pay method
        uint256 _payMethod = animal_pays[_animal_id-1];
        uint256 blocktime = uint256(block.timestamp);

        //BNB pay to buy animal
        if(_payMethod == 1) {
            uint256 _amount = _getTokenAmount(animal_prices[_animal_id-1], 14);
            require(msg.value == _amount, "Invalid animal price");
            
            //Transfer BNB to platform address
            platform_address.transfer(msg.value);
        }
        //JRSP pay to buy animal
        else {
            uint256 _decimal = invest_token_decimal - 4;
            uint256 _token_amount = _getTokenAmount(animal_prices[_animal_id-1], _decimal);
            require(investToken.balanceOf(msg.sender) >= _token_amount, "Insufficient funds");

            /* Transfer user address token to contract address*/
            require(investToken.transferFrom(msg.sender, address(this), _token_amount), "transferFrom failed");
        }

        //update animal next open time
        _updateAnimalNextOpentime();

        //update animal total buy number
        animal_total_nums[_animal_id-1] += 1;
        animal_daily_nums[_animal_id-1] += 1;

        //update player animal data
        if(animal.id==0){
            animal.id = _animal_id;
        }
        animal.status = 1;
        animal.time = blocktime;
        animal.expire = blocktime.add(86400); //expire of 1 day
        animal.ended = animal.expire.add(86400*3); //ended of 3 day
        
        //update player referral data
        _setReferral(msg.sender, _referral, _animal_id);
        
        emit BuyAnimal(msg.sender, _animal_id);
    }

    /*
    * @dev user do buy animal action,update user animal data
    */
    function buyFeed(uint256 _animal_id,uint256 _quantity) 
        external
        payable
    {
        require(_animal_id >= 1 && _animal_id <= 6 , "Invalid Animal Id");
        require(_quantity > 0, "Invalid quantity number");

        PlayerAnimal memory _animal = _getUserAnimalInfo(msg.sender, _animal_id);
        PlayerAnimal storage animal = _getStorageAnimal(msg.sender, _animal_id);
        
        //Animal must be dided or not actived
        require(_animal.status == 1, "Animal is not active now");

        //get animal pay method
        uint256 _payMethod = animal_pays[_animal_id-1];
        uint256 blocktime = uint256(block.timestamp);
        uint256 _feed_price = _getAnimalFeedPrice(_animal_id).mul(_quantity);

        // BNB pay to buy animal feed
        if(_payMethod == 1) {
            uint256 _amount = _getTokenAmount(_feed_price, 14);
            require(msg.value == _amount, "Invalid animal price");
            //Transfer BNB to platform address
            platform_address.transfer(msg.value);
        }
        // JRSP pay to buy animal feed
        else {
            uint256 _decimal = invest_token_decimal - 4;
            uint256 _token_amount = _getTokenAmount(_feed_price, _decimal);
            require(investToken.balanceOf(msg.sender) >= _token_amount, "Insufficient funds");
            /* Transfer user address token to contract address*/
            require(investToken.transferFrom(msg.sender, address(this), _token_amount), "transferFrom failed");
        }
        //verify the animal is expired or not
        if(animal.expire > blocktime){
            //update feed expire time
            animal.expire = animal.expire.add(86400*_quantity);
            animal.ended = animal.expire.add(86400*3); //ended of 3 day
        }
        else {

            uint256 _profit_eggs = _animal.payout;
            animal.eggs += _profit_eggs;

            //update referral payout data
            _referralPayout(msg.sender,_profit_eggs,_animal_id);

            //update feed expire time
            animal.last_payout = blocktime;
            animal.expire = blocktime.add(86400*_quantity);
            animal.ended = animal.expire.add(86400*3); //ended of 3 day
        }
        emit BuyFeed(msg.sender, _animal_id, _quantity);
    }
    
    
    /*
    * @dev user do havest action, update user total havest data, grant rereferral bonus
    */
    function harvest() 
        payable 
        external 
    {
        //Player storage player = players[msg.sender];
        uint256 _total_dividends = 0;
        uint256 _total_referral_bonus = 0;

        for (uint8 _animal_id=1;_animal_id <= 6;_animal_id++) 
        {
            PlayerAnimal memory _animal = _getUserAnimalInfo(msg.sender, _animal_id);
            PlayerAnimal storage animal = _getStorageAnimal(msg.sender, _animal_id);
            uint256 _profit_eggs = _animal.payout;

            animal.eggs += _profit_eggs;
            uint256 total_eggs = animal.eggs + animal.referral_eggs;
            if(total_eggs > 0) {
                //update referral payout data
                _referralPayout(msg.sender,_profit_eggs,_animal_id);

                //calculate egg exchange data
                uint256 _dividends = animal.eggs / animal_exchange_rates1[_animal_id-1] * animal_exchange_rates2[_animal_id-1];
                uint256 _referral_bonus = animal.referral_eggs / animal_exchange_rates1[_animal_id-1] * animal_exchange_rates2[_animal_id-1];
                
                //update batch total withdraw token
                _total_dividends += _dividends;
                _total_referral_bonus += _referral_bonus;

                //update total eggs number
                animal.total_eggs += animal.eggs;
                animal.total_referral_eggs += animal.referral_eggs;

                //reset animal yield eggs
                animal.eggs = 0;
                animal.referral_eggs = 0;

                //update last payout time
                animal.last_payout = uint256(block.timestamp);
            }
        }

        //update user total data
        //player.total_dividends += _total_dividends;
        //player.total_referral_bonus += _total_referral_bonus;

        total_dividends += _total_dividends;
        total_referral_bonus += _total_referral_bonus;

        uint256 _token_amount = _total_dividends + _total_referral_bonus;
        /* process token transfer action */
        require(investToken.approve(address(this), _token_amount), "approve failed");
        require(investToken.transferFrom(address(this), msg.sender, _token_amount), "transferFrom failed");

        emit Harvest(msg.sender);
    }
    
    /*
    * @dev get contract data info 
    * @return total invested,total investor number,total withdraw,total referral bonus
    */
    function contractInfo() 
        view 
        external 
        returns(
            uint256 _animal_next_opentime, uint256 _total_dividends, uint256 _total_referral_bonus
        ) 
    {
        uint256 _next_opentime = _getAnimalNextOpentime();
        return (
            _next_opentime, 
            total_dividends,
            total_referral_bonus
        );
    }
    
    /*
    * @dev get user info
    * @return pending withdraw amount,referral,rreferral num etc.
    */
    function userInfo(address _addr)
        view 
        external 
        returns
        (
            address _referral, uint256 _referral_num, 
            uint256 _dividends, uint256 _referral_bonus,
            uint256 _total_dividends, uint256 _total_referral_bonus
        )
    {
        Player storage player = players[_addr];
        uint256 _devidends_;
        uint256 _referral_bonus_;
        PlayerAnimal[] memory animals = _getUserAnimalList(_addr);
        for(uint8 i=0;i<animals.length;i++){
            PlayerAnimal memory animal = animals[0];
            _devidends_ += animal.eggs / animal_exchange_rates1[i] * animal_exchange_rates2[i];
            _referral_bonus_ += animal.referral_eggs / animal_exchange_rates1[i] * animal_exchange_rates2[i];
        }
        return (
            player.referral,
            player.referrals.length,
            player.dividends,
            player.referral_bonus,
            _devidends_,
            _referral_bonus_
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"animal_id","type":"uint256"}],"name":"BuyAnimal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"animal_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"BuyFeed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"Exchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"address","name":"refferal","type":"address"},{"indexed":false,"internalType":"uint256","name":"animal_id","type":"uint256"}],"name":"SetReferral","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"animal1s","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"expire","type":"uint256"},{"internalType":"uint256","name":"ended","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_eggs","type":"uint256"},{"internalType":"uint256","name":"total_referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"animal2s","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"expire","type":"uint256"},{"internalType":"uint256","name":"ended","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_eggs","type":"uint256"},{"internalType":"uint256","name":"total_referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"animal3s","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"expire","type":"uint256"},{"internalType":"uint256","name":"ended","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_eggs","type":"uint256"},{"internalType":"uint256","name":"total_referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"animal4s","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"expire","type":"uint256"},{"internalType":"uint256","name":"ended","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_eggs","type":"uint256"},{"internalType":"uint256","name":"total_referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"animal5s","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"expire","type":"uint256"},{"internalType":"uint256","name":"ended","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_eggs","type":"uint256"},{"internalType":"uint256","name":"total_referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"animal6s","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"expire","type":"uint256"},{"internalType":"uint256","name":"ended","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_eggs","type":"uint256"},{"internalType":"uint256","name":"total_referral_eggs","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_daily_nums","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"animal_daily_sell_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_daily_yields","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_exchange_rates1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_exchange_rates2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_feed_ids","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_ids","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"animal_next_opentime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_opentimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_pays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"animal_total_nums","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referral","type":"address"},{"internalType":"uint256","name":"_animal_id","type":"uint256"}],"name":"buyAnimal","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_animal_id","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"buyFeed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"contractInfo","outputs":[{"internalType":"uint256","name":"_animal_next_opentime","type":"uint256"},{"internalType":"uint256","name":"_total_dividends","type":"uint256"},{"internalType":"uint256","name":"_total_referral_bonus","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAnimalFeedList","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"},{"internalType":"uint256[]","name":"pays","type":"uint256[]"},{"internalType":"uint256[]","name":"statuses","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAnimalList","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"},{"internalType":"uint256[]","name":"pays","type":"uint256[]"},{"internalType":"uint256[]","name":"total_nums","type":"uint256[]"},{"internalType":"uint256[]","name":"statuses","type":"uint256[]"},{"internalType":"uint256[]","name":"stocks","type":"uint256[]"},{"internalType":"uint256[]","name":"daily_nums","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getUserAnimalDatas","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"statuses","type":"uint256[]"},{"internalType":"uint256[]","name":"referral_nums","type":"uint256[]"},{"internalType":"uint256[]","name":"eggs","type":"uint256[]"},{"internalType":"uint256[]","name":"referral_eggs","type":"uint256[]"},{"internalType":"uint256[]","name":"dividends","type":"uint256[]"},{"internalType":"uint256[]","name":"referral_bonus","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getUserAnimalList","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"payouts","type":"uint256[]"},{"internalType":"uint256[]","name":"statuses","type":"uint256[]"},{"internalType":"uint256[]","name":"expires","type":"uint256[]"},{"internalType":"uint256[]","name":"referral_nums","type":"uint256[]"},{"internalType":"uint256[]","name":"referral_eggs","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"investToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invest_token_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invest_token_decimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platform_address","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"address","name":"referral","type":"address"},{"internalType":"uint256","name":"level_id","type":"uint256"},{"internalType":"uint256","name":"dividends","type":"uint256"},{"internalType":"uint256","name":"referral_bonus","type":"uint256"},{"internalType":"uint256","name":"total_dividends","type":"uint256"},{"internalType":"uint256","name":"total_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"last_payout","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"referral_bonuses","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referral","type":"address"},{"internalType":"uint256","name":"_animal_id","type":"uint256"}],"name":"setReferral","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"total_dividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_referral_bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"userInfo","outputs":[{"internalType":"address","name":"_referral","type":"address"},{"internalType":"uint256","name":"_referral_num","type":"uint256"},{"internalType":"uint256","name":"_dividends","type":"uint256"},{"internalType":"uint256","name":"_referral_bonus","type":"uint256"},{"internalType":"uint256","name":"_total_dividends","type":"uint256"},{"internalType":"uint256","name":"_total_referral_bonus","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section1_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section2_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section3_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section4_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section5_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section6_feed_prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section_limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"yield_section_reduces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600280546001600160a01b03199081167359cc61bf9fd75368e8c06ce17e43c6ac59f516c3178255600860039081556004805490921673e88a1fac4234294c79956f8f228974366a9833571782556101406040526001608090815260a09390935260c05260e0526005610100526006610120819052620000829160079162000631565b506040805160c08101825260648152624c4b40602082015262989680918101919091526301312d0060608201526302625a0060808201526305f5e10060a0820152620000d390600890600662000686565b506040805160c08101825260018152600260208201819052918101829052606081018290526080810182905260a08101919091526200011790600990600662000631565b506040805160c081018252607880825260208201819052918101829052606081018290526080810182905260a08101919091526200015a90600a90600662000631565b506040805160c0810182526361c8918080825260208201526361dd00c0918101919091526361ea2fc060608201526361f75ec060808201526362048dc060a0820152620001ac90600b90600662000686565b506040805160c0810182526006808252600160208301819052928201839052606082018390526080820183905260a0820192909252620001f091600c919062000631565b506040805160c081018252600180825260208201526002918101919091526004606082015260086080820152600f60a08201526200023390600d90600662000631565b506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526200027690600e90600662000631565b506040805160c08101825260018152600260208201526003918101919091526004606082015260056080820152600660a08201819052620002ba91600f9162000631565b506040805160c08101825260328152620493e06020820152620927c09181019190915262124f80606082015262249f00608082015262493e0060a082015262000308906010906006620006cc565b506040805160c08101825260058152600a6020820152600f918101919091526014606082015260196080820152601e60a08201526200034c90601190600662000631565b506040805160c0810182526113888152611f406020820152613a9891810191909152614e2060608201526161a8608082015261753060a08201526200039690601290600662000711565b506040805160c081018252603280825260208201819052918101829052606081018290526080810182905260a0810191909152620003d990601390600662000631565b506040805160c08101825260328152620249f06020820152620493e091810191909152620927c0606082015262124f80608082015262249f0060a082015262000427906014906006620006cc565b506040805160c081018252601e8152620124f86020820152620249f091810191909152620493e06060820152620927c0608082015262124f8060a082015262000475906015906006620006cc565b506040805160c0810182526014815261927c6020820152620124f891810191909152620249f06060820152620493e06080820152620927c060a0820152620004c2906016906006620006cc565b506040805160c081018252600a8152614a38602082015261927c91810191909152620124f86060820152620249f06080820152620493e060a08201526200050e906017906006620006cc565b506040805160c081018252600a815261251c6020820152614a389181019190915261927c6060820152620124f86080820152620249f060a082015262000559906018906006620006cc565b506040805160c081018252600a815261128e602082015261251c91810191909152614a38606082015261927c6080820152620124f860a0820152620005a3906019906006620006cc565b506361c69740601a556040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152620005ee90601b90600662000631565b50348015620005fc57600080fd5b50600080546001600160a01b03199081163317909155600254600180549092166001600160a01b03919091161790556200076c565b82805482825590600052602060002090810192821562000674579160200282015b8281111562000674578251829060ff1690559160200191906001019062000652565b506200068292915062000755565b5090565b82805482825590600052602060002090810192821562000674579160200282015b8281111562000674578251829063ffffffff16905591602001919060010190620006a7565b82805482825590600052602060002090810192821562000674579160200282015b8281111562000674578251829062ffffff16905591602001919060010190620006ed565b82805482825590600052602060002090810192821562000674579160200282015b8281111562000674578251829061ffff1690559160200191906001019062000732565b5b8082111562000682576000815560010162000756565b61435e806200077c6000396000f3fe60806040526004361061028c5760003560e01c8063796aacd71161015a578063ae5e6406116100c1578063e3d074f71161007a578063e3d074f714610cbb578063e69267ab14610ee0578063ebdd986d14610f0a578063ee64db3814610f1f578063ef1671ae14610f34578063f8feba0614610f4957610293565b8063ae5e640614610b87578063badf822b14610bb3578063c0c9a4a014610bc8578063c929360f14610bf2578063db015ae814610c1c578063e2eb41ff14610c4657610293565b80638da5cb5b116101135780638da5cb5b14610aac5780639c47dcb814610ac15780639ec3cc8f14610ad65780639f0db68914610b005780639fcee9b214610b2a578063ab35dd4b14610b5457610293565b8063796aacd7146109b157806379d3b033146109db5780637a2c265a14610a05578063853ef4b614610a38578063883fa91f14610a6b57806388d2786c14610a9757610293565b806344d0c009116101fe578063599b21cf116101b7578063599b21cf146107c857806363a1bc79146107dd5780636923d56c146108075780636f33a2131461093f578063744a51631461096957806374a172fc1461099c57610293565b806344d0c009146106e557806344d1d3241461070f5780634641257d14610742578063479295951461074a5780635034ec0f146107745780635255d07a1461079e57610293565b806315c43aaf1161025057806315c43aaf146105935780631959a002146105c657806334cd58dd146106365780633cf2e893146106675780633f43b2971461069157806343bbc903146106bb57610293565b806302a44b3d146102955780630366036c146102b85780630eb522641461036257806312065fe01461039e57806314dae853146103b357610293565b3661029357005b005b610293600480360360408110156102ab57600080fd5b5080359060200135610f73565b3480156102c457600080fd5b506102eb600480360360208110156102db57600080fd5b50356001600160a01b03166113e6565b604080519e8f5260208f019d909d528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401526001600160a01b03166101a083015251908190036101c00190f35b34801561036e57600080fd5b5061038c6004803603602081101561038557600080fd5b503561145c565b60408051918252519081900360200190f35b3480156103aa57600080fd5b5061038c61147a565b3480156103bf57600080fd5b506103e6600480360360208110156103d657600080fd5b50356001600160a01b031661147e565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b8381101561043a578181015183820152602001610422565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b83811015610479578181015183820152602001610461565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b838110156104b85781810151838201526020016104a0565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b838110156104f75781810151838201526020016104df565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561053657818101518382015260200161051e565b50505050905001878103825288818151815260200191508051906020019060200280838360005b8381101561057557818101518382015260200161055d565b505050509050019c5050505050505050505050505060405180910390f35b34801561059f57600080fd5b506105a86116dc565b60408051938452602084019290925282820152519081900360600190f35b3480156105d257600080fd5b506105f9600480360360208110156105e957600080fd5b50356001600160a01b03166116fd565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561064257600080fd5b5061064b611828565b604080516001600160a01b039092168252519081900360200190f35b34801561067357600080fd5b5061038c6004803603602081101561068a57600080fd5b5035611837565b34801561069d57600080fd5b5061038c600480360360208110156106b457600080fd5b5035611844565b3480156106c757600080fd5b5061038c600480360360208110156106de57600080fd5b5035611851565b3480156106f157600080fd5b5061038c6004803603602081101561070857600080fd5b503561185e565b34801561071b57600080fd5b506102eb6004803603602081101561073257600080fd5b50356001600160a01b031661186b565b6102936118e0565b34801561075657600080fd5b5061038c6004803603602081101561076d57600080fd5b5035611c03565b34801561078057600080fd5b5061038c6004803603602081101561079757600080fd5b5035611c10565b3480156107aa57600080fd5b5061038c600480360360208110156107c157600080fd5b5035611c1d565b3480156107d457600080fd5b5061038c611c2a565b3480156107e957600080fd5b5061038c6004803603602081101561080057600080fd5b5035611c30565b34801561081357600080fd5b5061081c611c3d565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b83811015610868578181015183820152602001610850565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156108a757818101518382015260200161088f565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156108e65781810151838201526020016108ce565b50505050905001858103825286818151815260200191508051906020019060200280838360005b8381101561092557818101518382015260200161090d565b505050509050019850505050505050505060405180910390f35b34801561094b57600080fd5b5061038c6004803603602081101561096257600080fd5b5035611d15565b34801561097557600080fd5b506102eb6004803603602081101561098c57600080fd5b50356001600160a01b0316611d22565b3480156109a857600080fd5b5061064b611d98565b3480156109bd57600080fd5b5061038c600480360360208110156109d457600080fd5b5035611da7565b3480156109e757600080fd5b5061038c600480360360208110156109fe57600080fd5b5035611db4565b348015610a1157600080fd5b506102eb60048036036020811015610a2857600080fd5b50356001600160a01b0316611dc1565b348015610a4457600080fd5b506102eb60048036036020811015610a5b57600080fd5b50356001600160a01b0316611e37565b61029360048036036040811015610a8157600080fd5b506001600160a01b038135169060200135611ead565b348015610aa357600080fd5b5061038c6123c1565b348015610ab857600080fd5b5061064b6123c7565b348015610acd57600080fd5b5061038c6123d6565b348015610ae257600080fd5b5061038c60048036036020811015610af957600080fd5b50356123dc565b348015610b0c57600080fd5b5061038c60048036036020811015610b2357600080fd5b50356123e9565b348015610b3657600080fd5b5061038c60048036036020811015610b4d57600080fd5b50356123f6565b348015610b6057600080fd5b506102eb60048036036020811015610b7757600080fd5b50356001600160a01b0316612403565b61029360048036036040811015610b9d57600080fd5b506001600160a01b038135169060200135612479565b348015610bbf57600080fd5b5061064b612671565b348015610bd457600080fd5b5061038c60048036036020811015610beb57600080fd5b5035612680565b348015610bfe57600080fd5b5061038c60048036036020811015610c1557600080fd5b503561268d565b348015610c2857600080fd5b5061038c60048036036020811015610c3f57600080fd5b503561269a565b348015610c5257600080fd5b50610c7960048036036020811015610c6957600080fd5b50356001600160a01b03166126a7565b604080516001600160a01b0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610cc757600080fd5b50610cee60048036036020811015610cde57600080fd5b50356001600160a01b03166126ee565b604051808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019060200280838360005b83811015610d46578181015183820152602001610d2e565b5050505090500188810387528e818151815260200191508051906020019060200280838360005b83811015610d85578181015183820152602001610d6d565b5050505090500188810386528d818151815260200191508051906020019060200280838360005b83811015610dc4578181015183820152602001610dac565b5050505090500188810385528c818151815260200191508051906020019060200280838360005b83811015610e03578181015183820152602001610deb565b5050505090500188810384528b818151815260200191508051906020019060200280838360005b83811015610e42578181015183820152602001610e2a565b5050505090500188810383528a818151815260200191508051906020019060200280838360005b83811015610e81578181015183820152602001610e69565b50505050905001888103825289818151815260200191508051906020019060200280838360005b83811015610ec0578181015183820152602001610ea8565b505050509050019e50505050505050505050505050505060405180910390f35b348015610eec57600080fd5b5061038c60048036036020811015610f0357600080fd5b5035612a10565b348015610f1657600080fd5b50610cee612a1d565b348015610f2b57600080fd5b5061038c612bb8565b348015610f4057600080fd5b5061038c612bbe565b348015610f5557600080fd5b5061038c60048036036020811015610f6c57600080fd5b5035612bc4565b60018210158015610f85575060068211155b610fca576040805162461bcd60e51b8152602060048201526011602482015270125b9d985b1a5908105b9a5b585b081259607a1b604482015290519081900360640190fd5b6000811161101f576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964207175616e74697479206e756d626572000000000000000000604482015290519081900360640190fd5b611027614222565b6110313384612bd1565b9050600061103f33856132d7565b9050816020015160011461109a576040805162461bcd60e51b815260206004820152601860248201527f416e696d616c206973206e6f7420616374697665206e6f770000000000000000604482015290519081900360640190fd5b6000600960018603815481106110ac57fe5b6000918252602082200154915042906110ce866110c8896133a4565b9061354c565b905082600114156111735760006110e682600e613571565b9050803414611133576040805162461bcd60e51b8152602060048201526014602482015273496e76616c696420616e696d616c20707269636560601b604482015290519081900360640190fd5b6004546040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801561116c573d6000803e3d6000fd5b505061131a565b6003546003190160006111868383613571565b600154604080516370a0823160e01b8152336004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156111d657600080fd5b505afa1580156111ea573d6000803e3d6000fd5b505050506040513d602081101561120057600080fd5b5051101561124a576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b505050506040513d60208110156112ce57600080fd5b5051611317576040805162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b604482015290519081900360640190fd5b50505b818460030154111561135857600384015461133a90620151808802613578565b6003850181905561134e906203f480613578565b60048501556113a3565b60a08501516006850180548201905561137233828a613585565b600c850183905561138883620151808902613578565b6003860181905561139c906203f480613578565b6004860155505b6040805188815260208101889052815133927f45158cd6fc53ccabadbf82f22c45fc1cef46c3c91cdf23662c94cd892ce55d85928290030190a250505050505050565b602160205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a9899979896979596949593949293919290916001600160a01b03168e565b600c818154811061146957fe5b600091825260209091200154905081565b4790565b606080606080606080606061149288613632565b60408051600680825260e08201909252919250606091906020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c08036833701905050905060005b60068110156116675786818151811061156157fe5b602002602001015160c0015187828151811061157957fe5b602002602001015160a001510186828151811061159257fe5b6020026020010181815250508681815181106115aa57fe5b6020026020010151602001518582815181106115c257fe5b6020026020010181815250508681815181106115da57fe5b6020026020010151606001518482815181106115f257fe5b60200260200101818152505086818151811061160a57fe5b60200260200101516101c001515183828151811061162457fe5b60200260200101818152505086818151811061163c57fe5b602002602001015160e0015182828151811061165457fe5b602090810291909101015260010161154c565b5060078585858585858054806020026020016040519081016040528092919081815260200182805480156116ba57602002820191906000526020600020905b8154815260200190600101908083116116a6575b505050505095509b509b509b509b509b509b5050505050505091939550919395565b6000806000806116ea613742565b6005546006549195509350915050909192565b6001600160a01b0381166000908152601c60205260408120819081908190819081908180606061172c8b613632565b905060005b81518160ff1610156117f657611745614222565b8260008151811061175257fe5b60200260200101519050600d8260ff168154811061176c57fe5b9060005260206000200154600c8360ff168154811061178757fe5b90600052602060002001548260c001518161179e57fe5b040285019450600d8260ff16815481106117b457fe5b9060005260206000200154600c8360ff16815481106117cf57fe5b90600052602060002001548260e00151816117e657fe5b0402939093019250600101611731565b50508254600784015460028501546003909501546001600160a01b039092169c909b5093995097509095509350915050565b6004546001600160a01b031681565b6012818154811061146957fe5b600f818154811061146957fe5b6009818154811061146957fe5b6016818154811061146957fe5b6020805260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a9899979896979596949593949293919290916001600160a01b03168e565b60008060015b60068160ff1611611a30576118f9614222565b611906338360ff16612bd1565b90506000611917338460ff166132d7565b60a083015160068201805482019081905560078301549293509091018015611a205761194733838760ff16613585565b6000600d6001870360ff168154811061195c57fe5b9060005260206000200154600c6001880360ff168154811061197a57fe5b906000526020600020015485600601548161199157fe5b040290506000600d6001880360ff16815481106119aa57fe5b9060005260206000200154600c6001890360ff16815481106119c857fe5b90600052602060002001548660070154816119df57fe5b60068801805460088a018054909101905560078901805460098b01805490910190556000918290555542600c89015593909a01999092049091029690960195505b5050600190920191506118e69050565b50600580548301905560068054820190556001546040805163095ea7b360e01b815230600482015283850160248201819052915191926001600160a01b03169163095ea7b3916044808201926020929091908290030181600087803b158015611a9857600080fd5b505af1158015611aac573d6000803e3d6000fd5b505050506040513d6020811015611ac257600080fd5b5051611b06576040805162461bcd60e51b815260206004820152600e60248201526d185c1c1c9bdd994819985a5b195960921b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523060048201523360248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015611b6057600080fd5b505af1158015611b74573d6000803e3d6000fd5b505050506040513d6020811015611b8a57600080fd5b5051611bd3576040805162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b604482015290519081900360640190fd5b60405133907f188a622567eeca997c3d494fd65f76ca910b90a50a0c44d5e37b2ea5539e027b90600090a2505050565b600d818154811061146957fe5b6017818154811061146957fe5b600e818154811061146957fe5b60055481565b6019818154811061146957fe5b6060806060806060611c4d61376c565b90506060611c59613868565b9050600f8260098383805480602002602001604051908101604052809291908181526020018280548015611cac57602002820191906000526020600020905b815481526020019060010190808311611c98575b5050505050935081805480602002602001604051908101604052809291908181526020018280548015611cfe57602002820191906000526020600020905b815481526020019060010190808311611cea575b505050505091509550955095509550505090919293565b6010818154811061146957fe5b601f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a9899979896979596949593949293919290916001600160a01b03168e565b6002546001600160a01b031681565b6018818154811061146957fe5b600a818154811061146957fe5b602260205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a9899979896979596949593949293919290916001600160a01b03168e565b601d60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a9899979896979596949593949293919290916001600160a01b03168e565b60018110158015611ebf575060068111155b611f04576040805162461bcd60e51b8152602060048201526011602482015270125b9d985b1a5908105b9a5b585b081259607a1b604482015290519081900360640190fd5b6000611f0f82613943565b905080600114611f66576040805162461bcd60e51b815260206004820152601860248201527f416e696d616c207075726368617365206f70656e736f6f6e0000000000000000604482015290519081900360640190fd5b601b6001830381548110611f7657fe5b90600052602060002001546103e81015611fcf576040805162461bcd60e51b8152602060048201526015602482015274416e696d616c20736f6c64206f757420746f64617960581b604482015290519081900360640190fd5b611fd7614222565b611fe13384612bd1565b90506000611fef33856132d7565b9050816020015160011415612043576040805162461bcd60e51b8152602060048201526015602482015274416e696d616c2069732061637469766564206e6f7760581b604482015290519081900360640190fd5b60006009600186038154811061205557fe5b60009182526020909120015490504260018214156121215760006120946008600189038154811061208257fe5b9060005260206000200154600e613571565b90508034146120e1576040805162461bcd60e51b8152602060048201526014602482015273496e76616c696420616e696d616c20707269636560601b604482015290519081900360640190fd5b6004546040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801561211a573d6000803e3d6000fd5b50506122e5565b600060046003540390506000612151600860018a038154811061214057fe5b906000526020600020015483613571565b600154604080516370a0823160e01b8152336004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156121a157600080fd5b505afa1580156121b5573d6000803e3d6000fd5b505050506040513d60208110156121cb57600080fd5b50511015612215576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561226f57600080fd5b505af1158015612283573d6000803e3d6000fd5b505050506040513d602081101561229957600080fd5b50516122e2576040805162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b604482015290519081900360640190fd5b50505b6122ed613979565b6001600e60018803815481106122ff57fe5b90600052602060002001600082825401925050819055506001601b600188038154811061232857fe5b6000918252602090912001805490910190558254612344578583555b6001838101556002830181905561235e8162015180613578565b60038401819055612372906203f480613578565b60048401556123823388886139d5565b60408051878152905133917f8df5ac04e61fb7f845a1d2dbb3d515215d2eb128fd6e54abcc0b0dc471c68946919081900360200190a250505050505050565b60065481565b6000546001600160a01b031681565b6103e881565b6007818154811061146957fe5b601b818154811061146957fe5b6015818154811061146957fe5b601e60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01549b9c9a9b999a9899979896979596949593949293919290916001600160a01b03168e565b6001811015801561248b575060068111155b6124d0576040805162461bcd60e51b8152602060048201526011602482015270125b9d985b1a5908185b9a5b585b081259607a1b604482015290519081900360640190fd5b6124d8614222565b6124e53360018403612bd1565b6101a08101519091506001600160a01b031615612541576040805162461bcd60e51b8152602060048201526015602482015274149959995c9c985b081a185cc81899595b881cd95d605a1b604482015290519081900360640190fd5b6001600160a01b03831661259c576040805162461bcd60e51b815260206004820152601860248201527f496e76616c696420526566657272616c20616464726573730000000000000000604482015290519081900360640190fd5b6125a4614222565b6125b6826101a0015160018503612bd1565b6101a08101519091506001600160a01b03161515806125e257506004546001600160a01b038581169116145b61261d5760405162461bcd60e51b81526004018080602001828103825260228152602001806143076022913960400191505060405180910390fd5b6126283385856139d5565b604080516001600160a01b038616815260208101859052815133927f74200900880723e841dfee3f2dd346c9e8a911a684eb3767b4408745e697c43e928290030190a250505050565b6001546001600160a01b031681565b6011818154811061146957fe5b600b818154811061146957fe5b6014818154811061146957fe5b601c6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601546001600160a01b039095169593949293919290919087565b60608060608060608060608061270389613632565b60408051600680825260e08201909252919250606091906020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c080368337505060408051600680825260e0820190925292935060609291506020820160c08036833701905050905060005b6006811015612995576000600d82815481106127f957fe5b9060005260206000200154600c838154811061281157fe5b90600052602060002001548a848151811061282857fe5b602002602001015161010001518161283c57fe5b040290506000600d838154811061284f57fe5b9060005260206000200154600c848154811061286757fe5b90600052602060002001548b858151811061287e57fe5b602002602001015161012001518161289257fe5b040290508983815181106128a257fe5b6020026020010151602001518984815181106128ba57fe5b6020026020010181815250508983815181106128d257fe5b60200260200101516101c00151518884815181106128ec57fe5b60200260200101818152505089838151811061290457fe5b6020026020010151610100015187848151811061291d57fe5b60200260200101818152505089838151811061293557fe5b6020026020010151610120015186848151811061294e57fe5b6020026020010181815250508185848151811061296757fe5b6020026020010181815250508084848151811061298057fe5b602090810291909101015250506001016127e1565b506007868686868686868054806020026020016040519081016040528092919081815260200182805480156129e957602002820191906000526020600020905b8154815260200190600101908083116129d5575b505050505096509d509d509d509d509d509d509d5050505050505050919395979092949650565b6008818154811061146957fe5b606080606080606080606080612a31613868565b90506060612a3d613b44565b90506060612a49613d5c565b9050600760086009600e86868686805480602002602001604051908101604052809291908181526020018280548015612aa157602002820191906000526020600020905b815481526020019060010190808311612a8d575b5050505050965085805480602002602001604051908101604052809291908181526020018280548015612af357602002820191906000526020600020905b815481526020019060010190808311612adf575b5050505050955084805480602002602001604051908101604052809291908181526020018280548015612b4557602002820191906000526020600020905b815481526020019060010190808311612b31575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015612b9757602002820191906000526020600020905b815481526020019060010190808311612b83575b50505050509350995099509950995099509950995050505090919293949596565b60035481565b601a5481565b6013818154811061146957fe5b612bd9614222565b612be1614222565b6001600160a01b038085166000908152601d602090815260409182902082516101e081018452815481526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201549094166101a0850152600e8101805484518185028101850190955280855291936101c0860193909290830182828015612ced57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612ccf575b50505050508152505090508260021415612e19576001600160a01b038085166000908152601e602090815260409182902082516101e081018452815481526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201549094166101a0850152600e8101805484518185028101850190955280855291936101c0860193909290830182828015612e0d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612def575b50505050508152505090505b8260031415612f3a576001600160a01b038085166000908152601f602090815260409182902082516101e081018452815481526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201549094166101a0850152600e8101805484518185028101850190955280855291936101c0860193909290830182828015612f2e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612f10575b50505050508152505090505b8260041415613059576001600160a01b038085166000908152602080805260409182902082516101e081018452815481526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201549094166101a0850152600e8101805484518185028101850190955280855291936101c086019390929083018282801561304d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161302f575b50505050508152505090505b826005141561317a576001600160a01b0380851660009081526021602090815260409182902082516101e081018452815481526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201549094166101a0850152600e8101805484518185028101850190955280855291936101c086019390929083018282801561316e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613150575b50505050508152505090505b826006141561329b576001600160a01b0380851660009081526022602090815260409182902082516101e081018452815481526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b820154610160820152600c820154610180820152600d8201549094166101a0850152600e8101805484518185028101850190955280855291936101c086019390929083018282801561328f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613271575b50505050508152505090505b806020015160011480156132b25750428160800151105b156132bf57600360208201525b6132c98484613f6a565b60a082015290505b92915050565b6001600160a01b0382166000908152601d60205260408120600283141561331257506001600160a01b0383166000908152601e602052604090205b826003141561333557506001600160a01b0383166000908152601f602052604090205b826004141561335757506001600160a01b038316600090815260208052604090205b826005141561337a57506001600160a01b03831660009081526021602052604090205b826006141561339d57506001600160a01b03831660009081526022602052604090205b9392505050565b6000806001830390506000600e82815481106133bc57fe5b90600052602060002001549050601082815481106133d657fe5b9060005260206000200154925060126000815481106133f157fe5b906000526020600020015481111561341e576014828154811061341057fe5b906000526020600020015492505b601260018154811061342c57fe5b9060005260206000200154811115613459576015828154811061344b57fe5b906000526020600020015492505b601260028154811061346757fe5b9060005260206000200154811115613494576016828154811061348657fe5b906000526020600020015492505b60126003815481106134a257fe5b90600052602060002001548111156134cf57601782815481106134c157fe5b906000526020600020015492505b60126004815481106134dd57fe5b906000526020600020015481111561350a57601882815481106134fc57fe5b906000526020600020015492505b601260058154811061351857fe5b9060005260206000200154811115613545576019828154811061353757fe5b906000526020600020015492505b5050919050565b60008261355b575060006132d1565b508181028183828161356957fe5b04146132d157fe5b600a0a0290565b818101828110156132d157fe5b6001600160a01b038084166000908152601c602052604090205416806135ab575061362d565b60006135b782846132d7565b9050600042905080826003015410156135d25750505061362d565b600e820154806135e5575050505061362d565b6011548111156135f457506011545b60006011600183038154811061360657fe5b60009182526020822001549150606488830260079096018054919096040190945550505050505b505050565b60408051600680825260e08201909252606091829190816020015b613655614222565b81526020019060019003908161364d579050509050613675836001612bd1565b8160008151811061368257fe5b6020026020010181905250613698836002612bd1565b816001815181106136a557fe5b60200260200101819052506136bb836003612bd1565b816002815181106136c857fe5b60200260200101819052506136de836004612bd1565b816003815181106136eb57fe5b6020026020010181905250613701836005612bd1565b8160048151811061370e57fe5b6020026020010181905250613724836006612bd1565b8160058151811061373157fe5b602090810291909101015292915050565b601a54600090425b808210156137665761375f8262015180613578565b915061374a565b50905090565b60408051600680825260e082019092526060918291906020820160c08036833701905050905061379c60016133a4565b816000815181106137a957fe5b6020026020010181815250506137bf60026133a4565b816001815181106137cc57fe5b6020026020010181815250506137e260036133a4565b816002815181106137ef57fe5b60200260200101818152505061380560046133a4565b8160038151811061381257fe5b60200260200101818152505061382860056133a4565b8160048151811061383557fe5b60200260200101818152505061384b60066133a4565b8160058151811061385857fe5b6020908102919091010152905090565b60408051600680825260e082019092526060918291906020820160c0803683370190505090506138986001613943565b816000815181106138a557fe5b6020026020010181815250506138bb6002613943565b816001815181106138c857fe5b6020026020010181815250506138de6003613943565b816002815181106138eb57fe5b6020026020010181815250506139016004613943565b8160038151811061390e57fe5b6020026020010181815250506139246005613943565b8160048151811061393157fe5b60200260200101818152505061384b60065b600b8054600091429160019190600019860190811061395e57fe5b9060005260206000200154821161339d575060009392505050565b601a5442908111156139d25761398d613742565b601a556040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526139d090601b9060066142a1565b505b50565b6001600160a01b038084166000908152601c60205260409020805490911615613a065780546001600160a01b031692505b6000613a1285846132d7565b9050846001600160a01b0316846001600160a01b031614158015613a3e57506001600160a01b03841615155b15613b3d5781546001600160a01b0316613ad1576001600160a01b038085166000908152601c602052604090208054909116151580613a8a57506004546001600160a01b038681169116145b15613acf5782546001600160a01b038087166001600160a01b031992831617855560078301805460018101825560009182526020909120018054918916919092161790555b505b600d8101546001600160a01b0316613b3d57600d810180546001600160a01b0319166001600160a01b0386161790556000613b0c85856132d7565b600e018054600181018255600091825260209091200180546001600160a01b0319166001600160a01b038816179055505b5050505050565b60408051600680825260e082019092526060918291906020820160c0803683375050601a5491925042916103e89150821115613c1b578083600081518110613b8857fe5b6020026020010181815250508083600181518110613ba257fe5b6020026020010181815250508083600281518110613bbc57fe5b6020026020010181815250508083600381518110613bd657fe5b6020026020010181815250508083600481518110613bf057fe5b6020026020010181815250508083600581518110613c0a57fe5b602002602001018181525050613d54565b601b600081548110613c2957fe5b9060005260206000200154810383600081518110613c4357fe5b602002602001018181525050601b600181548110613c5d57fe5b9060005260206000200154810383600181518110613c7757fe5b602002602001018181525050601b600281548110613c9157fe5b9060005260206000200154810383600281518110613cab57fe5b602002602001018181525050601b600381548110613cc557fe5b9060005260206000200154810383600381518110613cdf57fe5b602002602001018181525050601b600481548110613cf957fe5b9060005260206000200154810383600481518110613d1357fe5b602002602001018181525050601b600581548110613d2d57fe5b9060005260206000200154810383600581518110613d4757fe5b6020026020010181815250505b509091505090565b60408051600680825260e082019092526060918291906020820160c080368337019050509050600042905080601a541015613e3857600082600081518110613da057fe5b602002602001018181525050600082600181518110613dbb57fe5b602002602001018181525050600082600281518110613dd657fe5b602002602001018181525050600082600381518110613df157fe5b602002602001018181525050600082600481518110613e0c57fe5b602002602001018181525050600082600581518110613e2757fe5b602002602001018181525050613766565b601b600081548110613e4657fe5b906000526020600020015482600081518110613e5e57fe5b602002602001018181525050601b600181548110613e7857fe5b906000526020600020015482600181518110613e9057fe5b602002602001018181525050601b600281548110613eaa57fe5b906000526020600020015482600281518110613ec257fe5b602002602001018181525050601b600381548110613edc57fe5b906000526020600020015482600381518110613ef457fe5b602002602001018181525050601b600481548110613f0e57fe5b906000526020600020015482600481518110613f2657fe5b602002602001018181525050601b600581548110613f4057fe5b906000526020600020015482600581518110613f5857fe5b60200260200101818152505050905090565b600080613f7784846132d7565b805490915015613fef576000613f908260000154613ff6565b905060004290506000836002015484600c015411613fb2578360020154613fb8565b83600c01545b9050600084600301548311613fcd5782613fd3565b84600301545b905080821015613fea576201518082820385020495505b505050505b5092915050565b600080600e600184038154811061400957fe5b906000526020600020015490506000600a600185038154811061402857fe5b9060005260206000200154905061404181600354613571565b9050601260008154811061405157fe5b9060005260206000200154821115614092576064601360008154811061407357fe5b9060005260206000200154828161408657fe5b048161408e57fe5b0490505b60126001815481106140a057fe5b90600052602060002001548211156140e157606460136001815481106140c257fe5b906000526020600020015482816140d557fe5b04816140dd57fe5b0490505b60126002815481106140ef57fe5b9060005260206000200154821115614130576064601360028154811061411157fe5b9060005260206000200154828161412457fe5b048161412c57fe5b0490505b601260038154811061413e57fe5b906000526020600020015482111561417f576064601360038154811061416057fe5b9060005260206000200154828161417357fe5b048161417b57fe5b0490505b601260048154811061418d57fe5b90600052602060002001548211156141ce57606460136004815481106141af57fe5b906000526020600020015482816141c257fe5b04816141ca57fe5b0490505b60126005815481106141dc57fe5b906000526020600020015482111561339d57606460136005815481106141fe57fe5b9060005260206000200154828161421157fe5b048161421957fe5b04949350505050565b604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b8280548282559060005260206000209081019282156142e1579160200282015b828111156142e1578251829060ff169055916020019190600101906142c1565b506142ed9291506142f1565b5090565b5b808211156142ed57600081556001016142f256fe526566657272616c2061646472657373206e6f742061637469766174656420796574a264697066735822122088eb10c9f62bad7ad764bfbaa93dec586268509549b308bf7d40bcdc2cec7c1064736f6c634300060c0033

Deployed ByteCode Sourcemap

3230:30764:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27535:2336;;;;;;;;;;;;;;;;-1:-1:-1;27535:2336:0;;;;;;;:::i;6801:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6801:48:0;-1:-1:-1;;;;;6801:48:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6801:48:0;;;;;;;;;;;;;;5020:57;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5020:57:0;;:::i;:::-;;;;;;;;;;;;;;;;7563:96;;;;;;;;;;;;;:::i;20586:1217::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20586:1217:0;-1:-1:-1;;;;;20586:1217:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32460:386;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;32967:1024;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32967:1024:0;-1:-1:-1;;;;;32967:1024:0;;:::i;:::-;;;;-1:-1:-1;;;;;32967:1024:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4394:84;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;4394:84:0;;;;;;;;;;;;;;5538:75;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5538:75:0;;:::i;5251:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5251:51:0;;:::i;4756:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4756:49:0;;:::i;5875:86::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5875:86:0;;:::i;6746:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6746:48:0;-1:-1:-1;;;;;6746:48:0;;:::i;29994:2314::-;;;:::i;5084:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5084:58:0;;:::i;5968:86::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5968:86:0;;:::i;5149:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5149:57:0;;:::i;4491:30::-;;;;;;;;;;;;;:::i;6154:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6154:85:0;;:::i;23627:448::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5309:80;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5309:80:0;;:::i;6691:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6691:48:0;-1:-1:-1;;;;;6691:48:0;;:::i;4218:80::-;;;;;;;;;;;;;:::i;6061:86::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6061:86:0;;:::i;4834:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4834:65:0;;:::i;6856:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6856:48:0;-1:-1:-1;;;;;6856:48:0;;:::i;6581:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6581:48:0;-1:-1:-1;;;;;6581:48:0;;:::i;24988:2461::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24988:2461:0;;;;;;;;:::i;4528:35::-;;;;;;;;;;;;;:::i;2463:20::-;;;;;;;;;;;;;:::i;6288:54::-;;;;;;;;;;;;;:::i;4607:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4607:49:0;;:::i;6438:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6438:50:0;;:::i;5781:87::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5781:87:0;;:::i;6636:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6636:48:0;-1:-1:-1;;;;;6636:48:0;;:::i;24139:758::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24139:758:0;;;;;;;;:::i;3278:25::-;;;;;;;;;;;;;:::i;5438:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5438:54:0;;:::i;4906:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4906:107:0;;:::i;5687:87::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5687:87:0;;:::i;6533:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6533:41:0;-1:-1:-1;;;;;6533:41:0;;:::i;:::-;;;;-1:-1:-1;;;;;6533:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21866:1702;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21866:1702:0;-1:-1:-1;;;;;21866:1702:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:86;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4663:86:0;;:::i;19805:714::-;;;;;;;;;;;;;:::i;4305:39::-;;;;;;;;;;;;;:::i;6349:48::-;;;;;;;;;;;;;:::i;5620:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5620:60:0;;:::i;27535:2336::-;27664:1;27650:10;:15;;:34;;;;;27683:1;27669:10;:15;;27650:34;27642:65;;;;;-1:-1:-1;;;27642:65:0;;;;;;;;;;;;-1:-1:-1;;;27642:65:0;;;;;;;;;;;;;;;27738:1;27726:9;:13;27718:49;;;;;-1:-1:-1;;;27718:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27780:27;;:::i;:::-;27810:42;27829:10;27841;27810:18;:42::i;:::-;27780:72;;27863:27;27893:41;27911:10;27923;27893:17;:41::i;:::-;27863:71;;28010:7;:14;;;28028:1;28010:19;28002:56;;;;;-1:-1:-1;;;28002:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28104:18;28125:11;28148:1;28137:10;:12;28125:25;;;;;;;;;;;;;;;;;;-1:-1:-1;28189:15:0;;28238:46;28274:9;28238:31;28258:10;28238:19;:31::i;:::-;:35;;:46::i;:::-;28216:68;;28339:10;28353:1;28339:15;28336:741;;;28371:15;28389:32;28405:11;28418:2;28389:15;:32::i;:::-;28371:50;;28457:7;28444:9;:20;28436:53;;;;;-1:-1:-1;;;28436:53:0;;;;;;;;;;;;-1:-1:-1;;;28436:53:0;;;;;;;;;;;;;;;28552:16;;:36;;-1:-1:-1;;;;;28552:16:0;;;;28578:9;28552:36;;;;;:16;:36;:16;:36;28578:9;28552:16;:36;;;;;;;;;;;;;;;;;;;;;28336:741;;;;28689:20;;-1:-1:-1;;28689:24:0;28670:16;28752:38;28768:11;28689:24;28752:15;:38::i;:::-;28813:11;;:33;;;-1:-1:-1;;;28813:33:0;;28835:10;28813:33;;;;;;28728:62;;-1:-1:-1;28728:62:0;;-1:-1:-1;;;;;28813:11:0;;;;:21;;:33;;;;;;;;;;;;;;;:11;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28813:33:0;:50;;28805:81;;;;;-1:-1:-1;;;28805:81:0;;;;;;;;;;;;-1:-1:-1;;;28805:81:0;;;;;;;;;;;;;;;28975:11;;:66;;;-1:-1:-1;;;28975:66:0;;29000:10;28975:66;;;;29020:4;28975:66;;;;;;;;;;;;-1:-1:-1;;;;;28975:11:0;;;;:24;;:66;;;;;;;;;;;;;;;:11;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28975:66:0;28967:98;;;;;-1:-1:-1;;;28967:98:0;;;;;;;;;;;;-1:-1:-1;;;28967:98:0;;;;;;;;;;;;;;;28336:741;;;29153:9;29137:6;:13;;;:25;29134:672;;;29233:13;;;;:34;;29251:5;:15;;29233:17;:34::i;:::-;29217:13;;;:50;;;29297:26;;29315:7;29297:17;:26::i;:::-;29282:12;;;:41;29134:672;;;29407:14;;;;29436:11;;;:27;;;;;;29523:51;29539:10;29407:14;29563:10;29523:15;:51::i;:::-;29630:18;;;:30;;;29691;29651:9;29705:5;:15;;29691:13;:30::i;:::-;29675:13;;;:46;;;29751:26;;29769:7;29751:17;:26::i;:::-;29736:12;;;:41;-1:-1:-1;29134:672:0;29821:42;;;;;;;;;;;;;;29829:10;;29821:42;;;;;;;;27535:2336;;;;;;;:::o;6801:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6801:48:0;;:::o;5020:57::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5020:57:0;:::o;7563:96::-;7630:21;7563:96;:::o;20586:1217::-;20693:20;20714:24;20739:25;20779:24;20804:30;20835;20921;20954:25;20973:5;20954:18;:25::i;:::-;21018:16;;;21032:1;21018:16;;;;;;;;;20921:58;;-1:-1:-1;20990:25:0;;21018:16;;;;;;;;;-1:-1:-1;;21074:16:0;;;21088:1;21074:16;;;;;;;;;20990:44;;-1:-1:-1;21045:26:0;;21074:16;-1:-1:-1;21074:16:0;;;;;;;;-1:-1:-1;;21129:16:0;;;21143:1;21129:16;;;;;;;;;21045:45;;-1:-1:-1;21101:25:0;;21129:16;-1:-1:-1;21129:16:0;;;;;;;;-1:-1:-1;;21190:16:0;;;21204:1;21190:16;;;;;;;;;21101:44;;-1:-1:-1;21156:31:0;;21190:16;-1:-1:-1;21190:16:0;;;;;;;;-1:-1:-1;;21251:16:0;;;21265:1;21251:16;;;;;;;;;21156:50;;-1:-1:-1;21217:31:0;;21251:16;-1:-1:-1;21251:16:0;;;;;;;;;;-1:-1:-1;21251:16:0;21217:50;;21292:9;21288:326;21311:1;21307;:5;21288:326;;;21368:8;21377:1;21368:11;;;;;;;;;;;;;;:16;;;21347:8;21356:1;21347:11;;;;;;;;;;;;;;:18;;;:37;21333:8;21342:1;21333:11;;;;;;;;;;;;;:51;;;;;21414:8;21423:1;21414:11;;;;;;;;;;;;;;:18;;;21399:9;21409:1;21399:12;;;;;;;;;;;;;:33;;;;;21461:8;21470:1;21461:11;;;;;;;;;;;;;;:18;;;21447:8;21456:1;21447:11;;;;;;;;;;;;;:32;;;;;21514:8;21523:1;21514:11;;;;;;;;;;;;;;:21;;;:28;21494:14;21509:1;21494:17;;;;;;;;;;;;;:48;;;;;21577:8;21586:1;21577:11;;;;;;;;;;;;;;:25;;;21557:14;21572:1;21557:17;;;;;;;;;;;;;;;;;:45;21314:3;;21288:326;;;;21646:10;21671:8;21694:9;21718:8;21741:14;21770;21624:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20586:1217;;;;;;;:::o;32460:386::-;32550:29;32581:24;32607:29;32665:22;32690:24;:22;:24::i;:::-;32777:15;;32807:20;;32665:49;;-1:-1:-1;32777:15:0;-1:-1:-1;32807:20:0;-1:-1:-1;;32460:386:0;;;:::o;32967:1024::-;-1:-1:-1;;;;;33296:14:0;;33075:17;33296:14;;;:7;:14;;;;;33075:17;;;;;;;;;;;;33386:29;33418:25;33304:5;33418:18;:25::i;:::-;33386:57;;33458:7;33454:309;33470:7;:14;33468:1;:16;;;33454:309;;;33504:26;;:::i;:::-;33533:7;33541:1;33533:10;;;;;;;;;;;;;;33504:39;;33615:22;33638:1;33615:25;;;;;;;;;;;;;;;;;;33587:22;33610:1;33587:25;;;;;;;;;;;;;;;;;;33573:6;:11;;;:39;;;;;;:67;33558:82;;;;33726:22;33749:1;33726:25;;;;;;;;;;;;;;;;;;33698:22;33721:1;33698:25;;;;;;;;;;;;;;;;;;33675:6;:20;;;:48;;;;;;:76;33655:96;;;;;-1:-1:-1;33485:3:0;;33454:309;;;-1:-1:-1;;33795:15:0;;33825:16;;;:23;33863:16;;;;33894:21;;;;;-1:-1:-1;;;;;33795:15:0;;;;33825:23;;-1:-1:-1;33863:16:0;;-1:-1:-1;33894:21:0;-1:-1:-1;33930:11:0;;-1:-1:-1;33894:21:0;-1:-1:-1;32967:1024:0;-1:-1:-1;;32967:1024:0:o;4394:84::-;;;-1:-1:-1;;;;;4394:84:0;;:::o;5538:75::-;;;;;;;;;;5251:51;;;;;;;;;;4756:49;;;;;;;;;;5875:86;;;;;;;;;;6746:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6746:48:0;;:::o;29994:2314::-;30123:24;;30230:1;30208:1478;30246:1;30232:10;:15;;;30208:1478;;30287:27;;:::i;:::-;30317:42;30336:10;30348;30317:42;;:18;:42::i;:::-;30287:72;;30374:27;30404:41;30422:10;30434;30404:41;;:17;:41::i;:::-;30483:14;;;;30514:11;;;:27;;;;;;;;30591:20;;;;30374:71;;-1:-1:-1;30483:14:0;;30577:34;30629:14;;30626:1049;;30711:51;30727:10;30738:12;30751:10;30711:51;;:15;:51::i;:::-;30830:18;30904:22;30938:1;30927:10;:12;30904:36;;;;;;;;;;;;;;;;;;30865:22;30899:1;30888:10;:12;30865:36;;;;;;;;;;;;;;;;;;30851:6;:11;;;:50;;;;;;:89;30830:110;;30959:23;31047:22;31081:1;31070:10;:12;31047:36;;;;;;;;;;;;;;;;;;31008:22;31042:1;31031:10;:12;31008:36;;;;;;;;;;;;;;;;;;30985:6;:20;;;:59;;;;;31348:11;;;;;31327:17;;;:32;;;;;;;31408:20;;;;;31378:26;;;:50;;;;;;;-1:-1:-1;31492:15:0;;;;31526:24;31643:15;31614:18;;;:45;31173:30;;;;;30985:59;;;:98;;;31222:40;;;;;-1:-1:-1;30626:1049:0;-1:-1:-1;;30248:12:0;;;;;-1:-1:-1;30208:1478:0;;-1:-1:-1;30208:1478:0;;-1:-1:-1;31854:15:0;:35;;;;;;31900:20;:45;;;;;;-1:-1:-1;32086:11:0;:49;;;-1:-1:-1;;;32086:49:0;;32114:4;32086:49;;;;31982:40;;;32086:49;;;;;;;;31982:40;;-1:-1:-1;;;;;32086:11:0;;:19;;:49;;;;;;;;;;;;;;;31854:15;32086:11;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32086:49:0;32078:76;;;;;-1:-1:-1;;;32078:76:0;;;;;;;;;;;;-1:-1:-1;;;32078:76:0;;;;;;;;;;;;;;;32173:11;;:66;;;-1:-1:-1;;;32173:66:0;;32206:4;32173:66;;;;32213:10;32173:66;;;;;;;;;;;;-1:-1:-1;;;;;32173:11:0;;;;:24;;:66;;;;;;;;;;;;;;;:11;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32173:66:0;32165:98;;;;;-1:-1:-1;;;32165:98:0;;;;;;;;;;;;-1:-1:-1;;;32165:98:0;;;;;;;;;;;;;;;32281:19;;32289:10;;32281:19;;;;;29994:2314;;;:::o;5084:58::-;;;;;;;;;;5968:86;;;;;;;;;;5149:57;;;;;;;;;;4491:30;;;;:::o;6154:85::-;;;;;;;;;;23627:448;23707:20;23728:23;23752:21;23774:25;23817:29;23849:22;:20;:22::i;:::-;23817:54;;23882:26;23911:20;:18;:20::i;:::-;23882:49;;23964:15;23994:12;24021:11;24047:9;23942:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23627:448;;;;:::o;5309:80::-;;;;;;;;;;6691:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6691:48:0;;:::o;4218:80::-;;;-1:-1:-1;;;;;4218:80:0;;:::o;6061:86::-;;;;;;;;;;4834:65;;;;;;;;;;6856:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6856:48:0;;:::o;6581:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6581:48:0;;:::o;24988:2461::-;25120:1;25106:10;:15;;:34;;;;;25139:1;25125:10;:15;;25106:34;25098:65;;;;;-1:-1:-1;;;25098:65:0;;;;;;;;;;;;-1:-1:-1;;;25098:65:0;;;;;;;;;;;;;;;25220:22;25245:28;25262:10;25245:16;:28::i;:::-;25220:53;;25292:14;25310:1;25292:19;25284:56;;;;;-1:-1:-1;;;25284:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25435:17;25464:1;25453:10;:12;25435:31;;;;;;;;;;;;;;;;6338:4;25408:58;;25400:92;;;;;-1:-1:-1;;;25400:92:0;;;;;;;;;;;;-1:-1:-1;;;25400:92:0;;;;;;;;;;;;;;;25505:27;;:::i;:::-;25535:42;25554:10;25566;25535:18;:42::i;:::-;25505:72;;25588:27;25618:41;25636:10;25648;25618:17;:41::i;:::-;25588:71;;25727:7;:14;;;25745:1;25727:19;;25719:53;;;;;-1:-1:-1;;;25719:53:0;;;;;;;;;;;;-1:-1:-1;;;25719:53:0;;;;;;;;;;;;;;;25818:18;25839:11;25862:1;25851:10;:12;25839:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;25903:15:0;25982:1;25968:15;;25965:783;;;26000:15;26018:48;26034:13;26059:1;26048:10;:12;26034:27;;;;;;;;;;;;;;;;26063:2;26018:15;:48::i;:::-;26000:66;;26102:7;26089:9;:20;26081:53;;;;;-1:-1:-1;;;26081:53:0;;;;;;;;;;;;-1:-1:-1;;;26081:53:0;;;;;;;;;;;;;;;26211:16;;:36;;-1:-1:-1;;;;;26211:16:0;;;;26237:9;26211:36;;;;;:16;:36;:16;:36;26237:9;26211:16;:36;;;;;;;;;;;;;;;;;;;;;25965:783;;;;26323:16;26365:1;26342:20;;:24;26323:43;;26381:21;26405:54;26421:13;26446:1;26435:10;:12;26421:27;;;;;;;;;;;;;;;;26450:8;26405:15;:54::i;:::-;26482:11;;:33;;;-1:-1:-1;;;26482:33:0;;26504:10;26482:33;;;;;;26381:78;;-1:-1:-1;26381:78:0;;-1:-1:-1;;;;;26482:11:0;;;;:21;;:33;;;;;;;;;;;;;;;:11;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26482:33:0;:50;;26474:81;;;;;-1:-1:-1;;;26474:81:0;;;;;;;;;;;;-1:-1:-1;;;26474:81:0;;;;;;;;;;;;;;;26646:11;;:66;;;-1:-1:-1;;;26646:66:0;;26671:10;26646:66;;;;26691:4;26646:66;;;;;;;;;;;;-1:-1:-1;;;;;26646:11:0;;;;:24;;:66;;;;;;;;;;;;;;;:11;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26646:66:0;26638:98;;;;;-1:-1:-1;;;26638:98:0;;;;;;;;;;;;-1:-1:-1;;;26638:98:0;;;;;;;;;;;;;;;25965:783;;;26800:27;:25;:27::i;:::-;26917:1;26882:17;26911:1;26900:10;:12;26882:31;;;;;;;;;;;;;;;;:36;;;;;;;;;;;26964:1;26929:17;26958:1;26947:10;:12;26929:31;;;;;;;;;;;;;;;;;:36;;;;;;;27018:9;;27015:65;;27046:22;;;27015:65;27106:1;27090:13;;;:17;27118:11;;;:23;;;27168:20;27132:9;27182:5;27168:13;:20::i;:::-;27152:13;;;:36;;;27232:26;;27250:7;27232:17;:26::i;:::-;27217:12;;;:41;27335:47;27348:10;27360:9;27371:10;27335:12;:47::i;:::-;27408:33;;;;;;;;27418:10;;27408:33;;;;;;;;;;24988:2461;;;;;;;:::o;4528:35::-;;;;:::o;2463:20::-;;;-1:-1:-1;;;;;2463:20:0;;:::o;6288:54::-;6338:4;6288:54;:::o;4607:49::-;;;;;;;;;;6438:50;;;;;;;;;;5781:87;;;;;;;;;;6636:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6636:48:0;;:::o;24139:758::-;24272:1;24258:10;:15;;:34;;;;;24291:1;24277:10;:15;;24258:34;24250:65;;;;;-1:-1:-1;;;24250:65:0;;;;;;;;;;;;-1:-1:-1;;;24250:65:0;;;;;;;;;;;;;;;24328:26;;:::i;:::-;24357:43;24376:10;24398:1;24387:10;:12;24357:18;:43::i;:::-;24419:15;;;;24328:72;;-1:-1:-1;;;;;;24419:29:0;;24411:63;;;;;-1:-1:-1;;;24411:63:0;;;;;;;;;;;;-1:-1:-1;;;24411:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24493:23:0;;24485:60;;;;;-1:-1:-1;;;24485:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24566:30;;:::i;:::-;24599:48;24618:6;:15;;;24645:1;24634:10;:12;24599:18;:48::i;:::-;24666:19;;;;24566:81;;-1:-1:-1;;;;;;24666:33:0;;;;:66;;-1:-1:-1;24716:16:0;;-1:-1:-1;;;;;24703:29:0;;;24716:16;;24703:29;24666:66;24658:113;;;;-1:-1:-1;;;24658:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24784:45;24797:10;24808:9;24818:10;24784:12;:45::i;:::-;24845:44;;;-1:-1:-1;;;;;24845:44:0;;;;;;;;;;;;24857:10;;24845:44;;;;;;;;24139:758;;;;:::o;3278:25::-;;;-1:-1:-1;;;;;3278:25:0;;:::o;5438:54::-;;;;;;;;;;4906:107;;;;;;;;;;5687:87;;;;;;;;;;6533:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6533:41:0;;;;;;;;;;;;;;:::o;21866:1702::-;21974:20;21995:25;22021:30;22066:21;22088:30;22133:26;22160:31;22247:30;22280:25;22299:5;22280:18;:25::i;:::-;22345:16;;;22359:1;22345:16;;;;;;;;;22247:58;;-1:-1:-1;22316:26:0;;22345:16;;;;;;;;;-1:-1:-1;;22406:16:0;;;22420:1;22406:16;;;;;;;;;22316:45;;-1:-1:-1;22372:31:0;;22406:16;-1:-1:-1;22406:16:0;;;;;;;;-1:-1:-1;;22464:16:0;;;22478:1;22464:16;;;;;;;;;22372:50;;-1:-1:-1;22433:28:0;;22464:16;-1:-1:-1;22464:16:0;;;;;;;;-1:-1:-1;;22531:16:0;;;22545:1;22531:16;;;;;;;;;22433:47;;-1:-1:-1;22491:37:0;;22531:16;-1:-1:-1;22531:16:0;;;;;;;;-1:-1:-1;;22594:16:0;;;22608:1;22594:16;;;;;;;;;22491:56;;-1:-1:-1;22558:33:0;;22594:16;-1:-1:-1;22594:16:0;;;;;;;;-1:-1:-1;;22662:16:0;;;22676:1;22662:16;;;;;;;;;22558:52;;-1:-1:-1;22621:38:0;;22662:16;-1:-1:-1;22662:16:0;;;;;;;;;;-1:-1:-1;22662:16:0;22621:57;;22703:9;22699:627;22722:1;22718;:5;22699:627;;;22744:18;22818:22;22841:1;22818:25;;;;;;;;;;;;;;;;22790:22;22813:1;22790:25;;;;;;;;;;;;;;;;22765:8;22774:1;22765:11;;;;;;;;;;;;;;:22;;;:50;;;;;;:78;22744:99;;22858:23;22946:22;22969:1;22946:25;;;;;;;;;;;;;;;;22918:22;22941:1;22918:25;;;;;;;;;;;;;;;;22884:8;22893:1;22884:11;;;;;;;;;;;;;;:31;;;:59;;;;;;:87;22858:113;;23003:8;23012:1;23003:11;;;;;;;;;;;;;;:18;;;22988:9;22998:1;22988:12;;;;;;;;;;;;;:33;;;;;23056:8;23065:1;23056:11;;;;;;;;;;;;;;:21;;;:28;23036:14;23051:1;23036:17;;;;;;;;;;;;;:48;;;;;23116:8;23125:1;23116:11;;;;;;;;;;;;;;:22;;;23099:11;23111:1;23099:14;;;;;;;;;;;;;:39;;;;;23179:8;23188:1;23179:11;;;;;;;;;;;;;;:31;;;23153:20;23174:1;23153:23;;;;;;;;;;;;;:57;;;;;23247:10;23225:16;23242:1;23225:19;;;;;;;;;;;;;:32;;;;;23299:15;23272:21;23294:1;23272:24;;;;;;;;;;;;;;;;;:42;-1:-1:-1;;22725:3:0;;22699:627;;;;23358:10;23383:9;23407:14;23436:11;23462:20;23497:16;23528:21;23336:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21866:1702;;;;;;;;;:::o;4663:86::-;;;;;;;;;;19805:714;19895:20;19916:23;19940:21;19977:27;20005:25;20032:23;20071:27;20126:26;20155:20;:18;:20::i;:::-;20126:49;;20186:24;20213:23;:21;:23::i;:::-;20186:50;;20247:28;20278:21;:19;:21::i;:::-;20247:52;;20332:10;20357:13;20385:11;20411:17;20443:9;20467:7;20489:11;20310:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19805:714;;;;;;;:::o;4305:39::-;;;;:::o;6349:48::-;;;;:::o;5620:60::-;;;;;;;;;;15331:820;15441:26;;:::i;:::-;15485:27;;:::i;:::-;-1:-1:-1;;;;;15515:15:0;;;;;;;:8;:15;;;;;;;;;15485:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15515:15;;15485:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15485:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15544:10;15558:1;15544:15;15541:45;;;-1:-1:-1;;;;;15571:15:0;;;;;;;:8;:15;;;;;;;;;15561:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15571:15;;15561:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15561:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15541:45;15600:10;15614:1;15600:15;15597:45;;;-1:-1:-1;;;;;15627:15:0;;;;;;;:8;:15;;;;;;;;;15617:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15627:15;;15617:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15617:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15597:45;15656:10;15670:1;15656:15;15653:45;;;-1:-1:-1;;;;;15683:15:0;;;;;;;:8;:15;;;;;;;;15673:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15683:15;;15673:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15673:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15653:45;15712:10;15726:1;15712:15;15709:45;;;-1:-1:-1;;;;;15739:15:0;;;;;;;:8;:15;;;;;;;;;15729:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15739:15;;15729:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15729:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15709:45;15768:10;15782:1;15768:15;15765:45;;;-1:-1:-1;;;;;15795:15:0;;;;;;;:8;:15;;;;;;;;;15785:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15795:15;;15785:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15785:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15765:45;15901:7;:14;;;15919:1;15901:19;:63;;;;;15948:15;15924:7;:13;;;:40;15901:63;15898:113;;;15998:1;15981:14;;;:18;15898:113;16081:27;16091:5;16097:10;16081:9;:27::i;:::-;16064:14;;;:44;:7;-1:-1:-1;15331:820:0;;;;;:::o;16225:513::-;-1:-1:-1;;;;;16410:15:0;;16334:27;16410:15;;;:8;:15;;;;;16453:1;16439:15;;16436:45;;;-1:-1:-1;;;;;;16466:15:0;;;;;;:8;:15;;;;;16436:45;16495:10;16509:1;16495:15;16492:45;;;-1:-1:-1;;;;;;16522:15:0;;;;;;:8;:15;;;;;16492:45;16551:10;16565:1;16551:15;16548:45;;;-1:-1:-1;;;;;;16578:15:0;;;;;;:8;:15;;;;;16548:45;16607:10;16621:1;16607:15;16604:45;;;-1:-1:-1;;;;;;16634:15:0;;;;;;:8;:15;;;;;16604:45;16663:10;16677:1;16663:15;16660:45;;;-1:-1:-1;;;;;;16690:15:0;;;;;;:8;:15;;;;;16660:45;16723:7;16225:513;-1:-1:-1;;;16225:513:0:o;8083:1024::-;8172:14;8204:17;8227:1;8224:2;:4;8204:24;;8239:18;8260:17;8278:9;8260:28;;;;;;;;;;;;;;;;8239:49;;8308:18;8327:9;8308:29;;;;;;;;;;;;;;;;8299:38;;8364:20;8385:1;8364:23;;;;;;;;;;;;;;;;8351:10;:36;8348:113;;;8412:26;8439:9;8412:37;;;;;;;;;;;;;;;;8403:46;;8348:113;8487:20;8508:1;8487:23;;;;;;;;;;;;;;;;8474:10;:36;8471:113;;;8535:26;8562:9;8535:37;;;;;;;;;;;;;;;;8526:46;;8471:113;8610:20;8631:1;8610:23;;;;;;;;;;;;;;;;8597:10;:36;8594:113;;;8658:26;8685:9;8658:37;;;;;;;;;;;;;;;;8649:46;;8594:113;8733:20;8754:1;8733:23;;;;;;;;;;;;;;;;8720:10;:36;8717:113;;;8781:26;8808:9;8781:37;;;;;;;;;;;;;;;;8772:46;;8717:113;8856:20;8877:1;8856:23;;;;;;;;;;;;;;;;8843:10;:36;8840:113;;;8904:26;8931:9;8904:37;;;;;;;;;;;;;;;;8895:46;;8840:113;8979:20;9000:1;8979:23;;;;;;;;;;;;;;;;8966:10;:36;8963:113;;;9027:26;9054:9;9027:37;;;;;;;;;;;;;;;;9018:46;;8963:113;9086:13;;8083:1024;;;:::o;1281:175::-;1339:9;1361:6;1357:37;;-1:-1:-1;1385:1:0;1378:8;;1357:37;-1:-1:-1;1404:5:0;;;1408:1;1404;:5;:1;1423:5;;;;;:10;1416:18;;;7742:288;7919:2;:20;7965:24;;7742:288::o;2117:127::-;2197:5;;;2216:6;;;;2209:14;;;18042:881;-1:-1:-1;;;;;18167:14:0;;;18153:11;18167:14;;;:7;:14;;;;;:23;;18204:17;18201:29;;18223:7;;;18201:29;18242:31;18276:34;18294:3;18299:10;18276:17;:34::i;:::-;18242:68;;18321:17;18349:15;18321:44;;18463:9;18443:10;:17;;;:29;18440:41;;;18474:7;;;;;18440:41;18515:20;;;:27;18556:14;18553:26;;18572:7;;;;;;18553:26;18606:16;:23;18592:37;;18589:106;;;-1:-1:-1;18660:16:0;:23;18589:106;18705:19;18727:16;18756:1;18744:11;:13;18727:31;;;;;;;;;;;;;;;;;;-1:-1:-1;18815:3:0;18791:21;;;18876:24;;;;:39;;18791:27;;;;18876:39;;;;-1:-1:-1;;;;;18042:881:0;;;;:::o;14734:538::-;14905:21;;;14924:1;14905:21;;;;;;;;;14825:29;;;;14905:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14872:54;;14951:27;14970:5;14976:1;14951:18;:27::i;:::-;14937:8;14946:1;14937:11;;;;;;;;;;;;;:41;;;;15003:27;15022:5;15028:1;15003:18;:27::i;:::-;14989:8;14998:1;14989:11;;;;;;;;;;;;;:41;;;;15055:27;15074:5;15080:1;15055:18;:27::i;:::-;15041:8;15050:1;15041:11;;;;;;;;;;;;;:41;;;;15107:27;15126:5;15132:1;15107:18;:27::i;:::-;15093:8;15102:1;15093:11;;;;;;;;;;;;;:41;;;;15159:27;15178:5;15184:1;15159:18;:27::i;:::-;15145:8;15154:1;15145:11;;;;;;;;;;;;;:41;;;;15211:27;15230:5;15236:1;15211:18;:27::i;:::-;15197:8;15206:1;15197:11;;;;;;;;;;;;;;;;;:41;15256:8;14734:538;-1:-1:-1;;14734:538:0:o;11115:337::-;11250:20;;11197:16;;11308:15;11334:85;11352:9;11340;:21;11334:85;;;11388:20;:9;11402:5;11388:13;:20::i;:::-;11376:32;;11334:85;;;-1:-1:-1;11435:9:0;-1:-1:-1;11115:337:0;:::o;9170:513::-;9323:16;;;9337:1;9323:16;;;;;;;;;9250:23;;;;9323:16;;;;;;;;;;;-1:-1:-1;9323:16:0;9291:48;;9368:22;9388:1;9368:19;:22::i;:::-;9350:12;9363:1;9350:15;;;;;;;;;;;;;:40;;;;;9419:22;9439:1;9419:19;:22::i;:::-;9401:12;9414:1;9401:15;;;;;;;;;;;;;:40;;;;;9470:22;9490:1;9470:19;:22::i;:::-;9452:12;9465:1;9452:15;;;;;;;;;;;;;:40;;;;;9521:22;9541:1;9521:19;:22::i;:::-;9503:12;9516:1;9503:15;;;;;;;;;;;;;:40;;;;;9572:22;9592:1;9572:19;:22::i;:::-;9554:12;9567:1;9554:15;;;;;;;;;;;;;:40;;;;;9623:22;9643:1;9623:19;:22::i;:::-;9605:12;9618:1;9605:15;;;;;;;;;;;;;;;;;:40;9663:12;-1:-1:-1;9170:513:0;:::o;12901:471::-;13051:16;;;13065:1;13051:16;;;;;;;;;12979:25;;;;13051:16;;;;;;;;;;;-1:-1:-1;13051:16:0;13022:45;;13093:19;13110:1;13093:16;:19::i;:::-;13078:9;13088:1;13078:12;;;;;;;;;;;;;:34;;;;;13138:19;13155:1;13138:16;:19::i;:::-;13123:9;13133:1;13123:12;;;;;;;;;;;;;:34;;;;;13183:19;13200:1;13183:16;:19::i;:::-;13168:9;13178:1;13168:12;;;;;;;;;;;;;:34;;;;;13228:19;13245:1;13228:16;:19::i;:::-;13213:9;13223:1;13213:12;;;;;;;;;;;;;:34;;;;;13273:19;13290:1;13273:16;:19::i;:::-;13258:9;13268:1;13258:12;;;;;;;;;;;;;:34;;;;;13318:19;13335:1;12509:329;12736:16;:30;;12603:14;;12663:15;;12708:1;;12736:16;-1:-1:-1;;12753:12:0;;;12736:30;;;;;;;;;;;;;;12723:9;:43;12720:86;;-1:-1:-1;12793:1:0;12823:7;12509:329;-1:-1:-1;;;12509:329:0:o;13476:290::-;13604:20;;13574:15;;13604:32;-1:-1:-1;13601:158:0;;;13675:24;:22;:24::i;:::-;13652:20;:47;13714:33;;;;;;;;-1:-1:-1;13714:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;:33;;:::i;:::-;;13601:158;13476:290;:::o;16810:1145::-;-1:-1:-1;;;;;16945:14:0;;;16921:21;16945:14;;;:7;:14;;;;;16973:15;;16945:14;;16973:15;:29;16970:67;;17019:15;;-1:-1:-1;;;;;17019:15:0;;-1:-1:-1;16970:67:0;17047:27;17077:35;17095:5;17101:10;17077:17;:35::i;:::-;17047:65;;17141:5;-1:-1:-1;;;;;17128:18:0;:9;-1:-1:-1;;;;;17128:18:0;;;:45;;;;-1:-1:-1;;;;;;17150:23:0;;;;17128:45;17125:823;;;17239:15;;-1:-1:-1;;;;;17239:15:0;17236:327;;-1:-1:-1;;;;;17316:18:0;;;17288:25;17316:18;;;:7;:18;;;;;17356:19;;17316:18;;17356:19;:33;;;:66;;-1:-1:-1;17406:16:0;;-1:-1:-1;;;;;17393:29:0;;;17406:16;;17393:29;17356:66;17353:195;;;17446:27;;-1:-1:-1;;;;;17446:27:0;;;-1:-1:-1;;;;;;17446:27:0;;;;;;17496:20;;;:32;;17446:27;17496:32;;;;17446:15;17496:32;;;;;;;;;;;;;;;;;;;;17353:195;17236:327;;17645:15;;;;-1:-1:-1;;;;;17645:15:0;17642:295;;17695:15;;;:27;;-1:-1:-1;;;;;;17695:27:0;-1:-1:-1;;;;;17695:27:0;;;;;-1:-1:-1;17831:39:0;17695:27;17859:10;17831:17;:39::i;:::-;17889:20;;:32;;;;;;;-1:-1:-1;17889:32:0;;;;;;;;;;-1:-1:-1;;;;;;17889:32:0;-1:-1:-1;;;;;17889:32:0;;;;;-1:-1:-1;17642:295:0;16810:1145;;;;;:::o;11524:926::-;11673:16;;;11687:1;11673:16;;;;;;;;;11605:23;;;;11673:16;;;;;;;;;-1:-1:-1;;11809:20:0;;11646:43;;-1:-1:-1;11728:15:0;;6338:4;;-1:-1:-1;;;11806:612:0;;;11870:6;11857:7;11865:1;11857:10;;;;;;;;;;;;;:19;;;;;11904:6;11891:7;11899:1;11891:10;;;;;;;;;;;;;:19;;;;;11938:6;11925:7;11933:1;11925:10;;;;;;;;;;;;;:19;;;;;11972:6;11959:7;11967:1;11959:10;;;;;;;;;;;;;:19;;;;;12006:6;11993:7;12001:1;11993:10;;;;;;;;;;;;;:19;;;;;12040:6;12027:7;12035:1;12027:10;;;;;;;;;;;;;:19;;;;;11806:612;;;12101:17;12119:1;12101:20;;;;;;;;;;;;;;;;12092:6;:29;12079:7;12087:1;12079:10;;;;;;;;;;;;;:42;;;;;12158:17;12176:1;12158:20;;;;;;;;;;;;;;;;12149:6;:29;12136:7;12144:1;12136:10;;;;;;;;;;;;;:42;;;;;12215:17;12233:1;12215:20;;;;;;;;;;;;;;;;12206:6;:29;12193:7;12201:1;12193:10;;;;;;;;;;;;;:42;;;;;12272:17;12290:1;12272:20;;;;;;;;;;;;;;;;12263:6;:29;12250:7;12258:1;12250:10;;;;;;;;;;;;;:42;;;;;12329:17;12347:1;12329:20;;;;;;;;;;;;;;;;12320:6;:29;12307:7;12315:1;12307:10;;;;;;;;;;;;;:42;;;;;12386:17;12404:1;12386:20;;;;;;;;;;;;;;;;12377:6;:29;12364:7;12372:1;12364:10;;;;;;;;;;;;;:42;;;;;11806:612;-1:-1:-1;12435:7:0;;-1:-1:-1;;11524:926:0;:::o;13824:849::-;13979:16;;;13993:1;13979:16;;;;;;;;;13903:27;;;;13979:16;;;;;;;;;;;-1:-1:-1;13979:16:0;13948:47;;14006:17;14034:15;14006:44;;14087:9;14064:20;;:32;14061:576;;;14129:1;14112:11;14124:1;14112:14;;;;;;;;;;;;;:18;;;;;14162:1;14145:11;14157:1;14145:14;;;;;;;;;;;;;:18;;;;;14195:1;14178:11;14190:1;14178:14;;;;;;;;;;;;;:18;;;;;14228:1;14211:11;14223:1;14211:14;;;;;;;;;;;;;:18;;;;;14261:1;14244:11;14256:1;14244:14;;;;;;;;;;;;;:18;;;;;14294:1;14277:11;14289:1;14277:14;;;;;;;;;;;;;:18;;;;;14061:576;;;14345:17;14363:1;14345:20;;;;;;;;;;;;;;;;14328:11;14340:1;14328:14;;;;;;;;;;;;;:37;;;;;14397:17;14415:1;14397:20;;;;;;;;;;;;;;;;14380:11;14392:1;14380:14;;;;;;;;;;;;;:37;;;;;14449:17;14467:1;14449:20;;;;;;;;;;;;;;;;14432:11;14444:1;14432:14;;;;;;;;;;;;;:37;;;;;14501:17;14519:1;14501:20;;;;;;;;;;;;;;;;14484:11;14496:1;14484:14;;;;;;;;;;;;;:37;;;;;14553:17;14571:1;14553:20;;;;;;;;;;;;;;;;14536:11;14548:1;14536:14;;;;;;;;;;;;;:37;;;;;14605:17;14623:1;14605:20;;;;;;;;;;;;;;;;14588:11;14600:1;14588:14;;;;;;;;;;;;;:37;;;;;-1:-1:-1;14654:11:0;-1:-1:-1;13824:849:0;:::o;19059:688::-;19161:13;19192:28;19223:35;19241:5;19247:10;19223:17;:35::i;:::-;19272:10;;19192:66;;-1:-1:-1;19272:14:0;19269:448;;19303:19;19325:33;19347:7;:10;;;19325:21;:33::i;:::-;19303:55;;19373:17;19401:15;19373:44;;19432:12;19469:7;:12;;;19447:7;:19;;;:34;:71;;19506:7;:12;;;19447:71;;;19484:7;:19;;;19447:71;19432:86;;19533:10;19558:7;:14;;;19546:9;:26;:55;;19592:9;19546:55;;;19575:7;:14;;;19546:55;19533:68;;19626:2;19619:4;:9;19616:90;;;19685:5;19672:9;;;19657:25;;:33;19649:41;;19616:90;19269:448;;;;;19727:12;19059:688;;;;:::o;9822:1227::-;9920:19;9957:18;9978:17;10006:1;9996:9;:11;9978:30;;;;;;;;;;;;;;;;9957:51;;10019:20;10042:19;10072:1;10062:9;:11;10042:32;;;;;;;;;;;;;;;;10019:55;;10138:51;10154:12;10168:20;;10138:15;:51::i;:::-;10123:66;;10216:20;10237:1;10216:23;;;;;;;;;;;;;;;;10203:10;:36;10200:127;;;10312:3;10285:21;10307:1;10285:24;;;;;;;;;;;;;;;;10270:12;:39;;;;;;:45;;;;;;10255:60;;10200:127;10353:20;10374:1;10353:23;;;;;;;;;;;;;;;;10340:10;:36;10337:127;;;10449:3;10422:21;10444:1;10422:24;;;;;;;;;;;;;;;;10407:12;:39;;;;;;:45;;;;;;10392:60;;10337:127;10490:20;10511:1;10490:23;;;;;;;;;;;;;;;;10477:10;:36;10474:127;;;10586:3;10559:21;10581:1;10559:24;;;;;;;;;;;;;;;;10544:12;:39;;;;;;:45;;;;;;10529:60;;10474:127;10627:20;10648:1;10627:23;;;;;;;;;;;;;;;;10614:10;:36;10611:127;;;10723:3;10696:21;10718:1;10696:24;;;;;;;;;;;;;;;;10681:12;:39;;;;;;:45;;;;;;10666:60;;10611:127;10764:20;10785:1;10764:23;;;;;;;;;;;;;;;;10751:10;:36;10748:127;;;10860:3;10833:21;10855:1;10833:24;;;;;;;;;;;;;;;;10818:12;:39;;;;;;:45;;;;;;10803:60;;10748:127;10901:20;10922:1;10901:23;;;;;;;;;;;;;;;;10888:10;:36;10885:127;;;10997:3;10970:21;10992:1;10970:24;;;;;;;;;;;;;;;;10955:12;:39;;;;;;:45;;;;;;;9822:1227;-1:-1:-1;;;;9822:1227:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;

Swarm Source

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