Contract 0x51f1aae0d3afe70e3faebb15863441f262d45bac 2

Txn Hash
Block
From
To
Value [Txn Fee]
0x1b82c86b26599798c62a4aea56305b159b34552bf5b56e037e7ca70bfdb106f666225372021-07-20 6:09:218 days 1 hr ago0x9307322322c89a9fdb76783e8479557f731e005f IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000156436
0xd579207023f57838d3be3e44a3c8d5ed2426ccdfba2763706185c331031920f761534132021-07-03 23:12:5524 days 8 hrs ago0xe01f272346b77ef0bc501bc0ae836216e8b29897 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000067044
0x4cdbf4d7c625f330041b5631c3185a7c119c517cfca74ebbe42f4bb22a05575e60762512021-07-01 6:54:4627 days 55 mins ago0xc0f610d89624ef7f52a35fceae7b37fd98223ea9 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000067044
0xe91fef7b3e65d5b3a6ea57e40231c3d06f22ba919772d11adc614f25e40da00d60709642021-07-01 2:30:2527 days 5 hrs ago0xeb4d156e0f2a12651eeaa7ded67d1900ff5b8685 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000067044
0x8488710d2503f3598fb553f259c2650923d21229af226b12e7f6d3b32336ae9158265172021-06-22 14:48:0135 days 17 hrs ago0x18f8a568863c9cbb407c2651d471266792409036 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000626241
0xcfdd8c22b535bd8f0d905e3791499d16dd870d5aff70c30c4ce2ace829dea4e857787602021-06-20 23:00:0837 days 8 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x34117d614eca661bbe683d1f1c0de8f2e578ac4466db2909b4674ad14f1bc54657781612021-06-20 22:30:1137 days 9 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0xa85b0bf514ef2ef537407743030df87e394caa12e571975d3ced6d0b314e614a57775612021-06-20 22:00:1137 days 9 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0xdbfc85d45d7567adad6ad56ab9ba5c0433a4aa9e450c04aaf99d1ba7fd86e98857769612021-06-20 21:30:1137 days 10 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x76b1c66bc8b726ca84d8456d9f5ee56c070ae9d1fc3e33fc6f60bc0c3ff301df57763612021-06-20 21:00:1137 days 10 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x1ccdd77eb4899538da6be895d5a6b4f630df985a298bd4dc2255ffaf8f963e3157757612021-06-20 20:30:1137 days 11 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x362d6b1f0e5e7af412cbe6ddd5f5df54eb237f3d3b461951f4d51e0231a352ea57751602021-06-20 20:00:0837 days 11 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000027552
0xb2e00ea96f3468d6ef7989cb92c17c97473df852bd00501a87b0741119c5c28c57745612021-06-20 19:30:1137 days 12 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x16e8fc1963b7a4e045c9420c0768714d6d5e9e4620691c80d44c1806945b967a57739612021-06-20 19:00:1137 days 12 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x869fd8da2519ec2d316a15ac5e1d6355637cc84d3e7a2ccb50dd6b78d713f36d57733612021-06-20 18:30:1137 days 13 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0xff85a00f1cea7631f9f6b72c66223a127eded7fd6e5320f1ec827930b079aafe57727612021-06-20 18:00:1137 days 13 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000027552
0xd78d11b5aaee9ad237e3cfe8ce93674760ae5be93564efa3af0f26f17635c93357721612021-06-20 17:30:1137 days 14 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.00002754
0x8ee9a587df2dc86051b8f233cf4195e15f5c3d3b74f5b08e816a97ac90fcf72857715612021-06-20 17:00:1137 days 14 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x699fd7e419e4a47d1cabe22a0ba0075f9018b84d78bd849c958e9d0d5b9fdd6e57709612021-06-20 16:30:1137 days 15 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x76e141f58b05a5144de07064b7d4887ed3c5eff08ea0e2d1befabf5fd76d918357703602021-06-20 16:00:0837 days 15 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x36dc63507144e6b89574cfc5a35b928eac53f19eb934c134547b4e067b6557d357697612021-06-20 15:30:1137 days 16 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000027552
0x108e634ae0ee15a777e367b1b68c71ca36f6ba70d9a7816f7efb5afd9841001b57691602021-06-20 15:00:0837 days 16 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x769c0ab30803c12ab87a7bffa8c8a4fe5d95818c8bee8aa9dc3076a48d3fee8057685612021-06-20 14:30:1137 days 17 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x76450f5fabbdfcc84bc4562977d946901e5822e5807f13360cb16f83b4d25f9657679612021-06-20 14:00:1137 days 17 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000023352
0x9afb716a41897b80e620e2f75fab231a00e28cc9571763e69a5aec28be55822f57673602021-06-20 13:30:0837 days 18 hrs ago0x6186ea638c5f085e90b865b81ff2550a78361375 IN  0x51f1aae0d3afe70e3faebb15863441f262d45bac0 HT0.000027552
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KI_NFT

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-05-12
*/

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

pragma solidity ^0.5.8;


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
      * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface ERC721
{
  event Transfer(
    address indexed _from,
    address indexed _to,
    uint256 indexed _tokenId
  );

  event Approval(
    address indexed _owner,
    address indexed _approved,
    uint256 indexed _tokenId
  );


  event ApprovalForAll(
    address indexed _owner,
    address indexed _operator,
    bool _approved
  );

  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes calldata _data
  )
    external;
    
  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    external;
    
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    external;

  function approve(
    address _approved,
    uint256 _tokenId
  )
    external;
    
  function setApprovalForAll(
    address _operator,
    bool _approved
  )
    external;

  function balanceOf(
    address _owner
  )
    external
    view
    returns (uint256);

  function ownerOf(
    uint256 _tokenId
  )
    external
    view
    returns (address);

  function getApproved(
    uint256 _tokenId
  )
    external
    view
    returns (address);

  function isApprovedForAll(
    address _owner,
    address _operator
  )
    external
    view
    returns (bool);

}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeERC20 {
  function safeTransfer(
    IERC20 token,
    address to,
    uint256 value
  )
    internal
  {
    require(token.transfer(to, value));
  }

  function safeTransferFrom(
    IERC20 token,
    address from,
    address to,
    uint256 value
  )
    internal
  {
    require(token.transferFrom(from, to, value));
  }

  function safeApprove(
    IERC20 token,
    address spender,
    uint256 value
  )
    internal
  {
    require(token.approve(spender, value));
  }
}

interface IERC20{
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
}

interface ERC721TokenReceiver{
  function onERC721Received(
    address _operator,
    address _from,
    uint256 _tokenId,
    bytes calldata _data
  )
    external
    returns(bytes4);
}

contract Ownable
{

  /**
   * @dev Error constants.
   */
  string public constant NOT_CURRENT_OWNER = "018001";
  string public constant CANNOT_TRANSFER_TO_ZERO_ADDRESS = "018002";
  string public constant NOT_CURRENT_MANAGER = "018003";

  address public owner;
  mapping(address=>bool) public Manager;


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


  constructor()
    public
  {
    owner = msg.sender;
  }
  modifier onlyOwner()
  {
    require(msg.sender == owner, NOT_CURRENT_OWNER);
    _;
  }
  
  modifier onlyManager()    
  {
    require(Manager[msg.sender], NOT_CURRENT_MANAGER);
    _;
  }

  function addManager(address _maddr) public onlyOwner{
      Manager[_maddr] = true;
  }
  
  function delManager(address _maddr) public onlyOwner{
      Manager[_maddr] = false;
  }
  function transferOwnership(
    address _newOwner
  )
    public
    onlyOwner
  {
    require(_newOwner != address(0), CANNOT_TRANSFER_TO_ZERO_ADDRESS);
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }

}


contract NFToken is
  ERC721
{
  using SafeMath for uint256;
  using Address for address;

 
  string constant ZERO_ADDRESS = "003001";
  string constant NOT_VALID_NFT = "003002";
  string constant NOT_OWNER_OR_OPERATOR = "003003";
  string constant NOT_OWNER_APPROWED_OR_OPERATOR = "003004";
  string constant NOT_ABLE_TO_RECEIVE_NFT = "003005";
  string constant NFT_ALREADY_EXISTS = "003006";
  string constant NOT_OWNER = "003007";
  string constant IS_OWNER = "003008";


  bytes4 internal constant MAGIC_ON_ERC721_RECEIVED = 0x150b7a02;

  
  mapping (uint256 => address) public idToOwner;

  uint256 internal tokenID;
  mapping (uint256 => address) internal idToApproval;

   
  mapping (address => uint256) private ownerToNFTokenCount;

  
  mapping (address => mapping (address => bool)) internal ownerToOperators;

  
  event Transfer(
    address indexed _from,
    address indexed _to,
    uint256 indexed _tokenId
  );

 
  event Approval(
    address indexed _owner,
    address indexed _approved,
    uint256 indexed _tokenId
  );
  

 
  event ApprovalForAll(
    address indexed _owner,
    address indexed _operator,
    bool _approved
  );


  modifier canOperate(
    uint256 _tokenId
  )
  {
    address tokenOwner = idToOwner[_tokenId];
    require(tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender], NOT_OWNER_OR_OPERATOR);
    _;
  }


  modifier canTransfer(
    uint256 _tokenId
  )
  {
    address tokenOwner = idToOwner[_tokenId];
    require(
      tokenOwner == msg.sender
      || idToApproval[_tokenId] == msg.sender
      || ownerToOperators[tokenOwner][msg.sender],
      NOT_OWNER_APPROWED_OR_OPERATOR
    );
    _;
  }


  modifier validNFToken(
    uint256 _tokenId
  )
  {
    require(idToOwner[_tokenId] != address(0), NOT_VALID_NFT);
    _;
  }


  constructor()
    public
  {
    //supportedInterfaces[0x80ac58cd] = true; // ERC721
  }
  
  function viewTokenID() view public returns(uint256 ){
      return tokenID;
  }
  
  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes calldata _data
  )
    external
    //override
  {
    _safeTransferFrom(_from, _to, _tokenId, _data);
  }
  


  function safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    external
    //override
  {
    _safeTransferFrom(_from, _to, _tokenId, "");
  }

 
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    external
    //override
    canTransfer(_tokenId)
    validNFToken(_tokenId)
  {
    address tokenOwner = idToOwner[_tokenId];
    require(tokenOwner == _from, NOT_OWNER);
    require(_to != address(0), ZERO_ADDRESS);

    _transfer(_to, _tokenId);
  }
  
  function transferList(address _to,uint256[] calldata _tokenIdList) external{
        uint256 len = _tokenIdList.length;
        address tokenOwner;// = idToOwner[_tokenId];
        uint256 _tokenId;
        
        for(uint256 i=0;i<len;i++){
            _tokenId = _tokenIdList[i];
            tokenOwner = idToOwner[_tokenId];
            require(tokenOwner != address(0), NOT_VALID_NFT);
            require(
                tokenOwner == msg.sender
                || idToApproval[_tokenId] == msg.sender
                || ownerToOperators[tokenOwner][msg.sender],
                NOT_OWNER_APPROWED_OR_OPERATOR
            );
            _transfer(_to, _tokenId);
        }
  }

  function approve(
    address _approved,
    uint256 _tokenId
  )
    external
    //override
    canOperate(_tokenId)
    validNFToken(_tokenId)
  {
    address tokenOwner = idToOwner[_tokenId];
    require(_approved != tokenOwner, IS_OWNER);

    idToApproval[_tokenId] = _approved;
    emit Approval(tokenOwner, _approved, _tokenId);
  }

 
  function setApprovalForAll(
    address _operator,
    bool _approved
  )
    external
    //override
  {
    ownerToOperators[msg.sender][_operator] = _approved;
    emit ApprovalForAll(msg.sender, _operator, _approved);
  }

 
  function balanceOf(
    address _owner
  )
    external
    //override
    view
    returns (uint256)
  {
    require(_owner != address(0), ZERO_ADDRESS);
    return _getOwnerNFTCount(_owner);
  }

 
  function ownerOf(
    uint256 _tokenId
  )
    external
    //override
    view
    returns (address _owner)
  {
    _owner = idToOwner[_tokenId];
    require(_owner != address(0), NOT_VALID_NFT);
  }


  function getApproved(
    uint256 _tokenId
  )
    external
    //override
    view
    validNFToken(_tokenId)
    returns (address)
  {
    return idToApproval[_tokenId];
  }


  function isApprovedForAll(
    address _owner,
    address _operator
  )
    external
    //override
    view
    returns (bool)
  {
    return ownerToOperators[_owner][_operator];
  }

  function _transfer(
    address _to,
    uint256 _tokenId
  )
    internal
  {
    address from = idToOwner[_tokenId];
    _clearApproval(_tokenId);

    _removeNFToken(from, _tokenId);
    _addNFToken(_to, _tokenId);

    emit Transfer(from, _to, _tokenId);
  }


  function _mint(
    address _to,
    uint256 _tokenId
  )
    internal
    //virtual
  {
    require(_to != address(0), ZERO_ADDRESS);
    require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS);
    //require(_tokenId == tokenID+1,NFT_ALREADY_EXISTS);
    tokenID++;
    _addNFToken(_to, _tokenId);

    emit Transfer(address(0), _to, _tokenId);
  }


  function _burn(
    uint256 _tokenId
  )
    internal
    //virtual
    validNFToken(_tokenId)
  {
    address tokenOwner = idToOwner[_tokenId];
    _clearApproval(_tokenId);
    _removeNFToken(tokenOwner, _tokenId);
    emit Transfer(tokenOwner, address(0), _tokenId);
  }

 
  function _removeNFToken(
    address _from,
    uint256 _tokenId
  )
    internal
    //virtual
  {
    require(idToOwner[_tokenId] == _from, NOT_OWNER);
    ownerToNFTokenCount[_from] = ownerToNFTokenCount[_from] - 1;
    delete idToOwner[_tokenId];
  }

  
  function _addNFToken(
    address _to,
    uint256 _tokenId
  )
    internal
    //virtual
  {
    require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS);

    idToOwner[_tokenId] = _to;
    ownerToNFTokenCount[_to] = ownerToNFTokenCount[_to].add(1);
  }


  function _getOwnerNFTCount(
    address _owner
  )
    internal
    //virtual
    view
    returns (uint256)
  {
    return ownerToNFTokenCount[_owner];
  }



  function _safeTransferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes memory _data
  )
    private
    canTransfer(_tokenId)
    validNFToken(_tokenId)
  {
    address tokenOwner = idToOwner[_tokenId];
    require(tokenOwner == _from, NOT_OWNER);
    require(_to != address(0), ZERO_ADDRESS);

    _transfer(_to, _tokenId);

    if (_to.isContract())
    {
      bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data);
      require(retval == MAGIC_ON_ERC721_RECEIVED, NOT_ABLE_TO_RECEIVE_NFT);
    }
  }

  function _clearApproval(
    uint256 _tokenId
  )
    private
  {
    if (idToApproval[_tokenId] != address(0))
    {
      delete idToApproval[_tokenId];
    }
  }

}

contract KIMdate is NFToken {
    using SafeMath for uint256;
    string internal nftName;
    string internal nftSymbol;
    enum starType {st_nil,st1,st2,st3,st4,st5,st6,st7,st8,st9,st10,st11,st12,st13,st14,st15,st16,st17,st18,st19,st20}
    enum teamType {t_nil,t1,t2,t3,t4,t5,t6,t7,t8}

    string constant INVALID_INDEX = "005007";

    uint256[] public tokens;
    mapping(uint256 => uint256) public idToIndex;
    mapping(address => uint256[]) public ownerToIds;
    mapping(uint256 => uint256) public idToOwnerIndex;

    mapping (uint256 => string) public idToUri;

    mapping (uint256 => bool) public old_number;
    mapping(uint256 => starAttributesStruct) public starAttributes;

    //weapon
    mapping(address=>mapping(uint256=>uint256)) public weaponBalance;//ply -> weapon->number
    mapping(uint256 => uint256) public weaponTotal;
    mapping(address =>mapping(address =>mapping(uint256=>uint256))) public weaponApprove;
    mapping(uint256 => uint8) public weaponTeam; //weaponTeam


    event ADD_DEL_ToNFT(uint256 _tokenId,uint256 _newPower,bool isInstall );

    struct starAttributesStruct{
      teamType  ttype;//Team1 ,team2
      starType stype;//ABCDEF
      uint256 power; // power
      uint256 tpye1; // weapon
      uint256 tpye2; // picture;
      uint256 weapon_tokenId;
      uint256 weapon_power;
      uint256 defaultpower;
      uint256 tpye6;
      uint256 tpye7;
      uint256 isWeaponInUse;
      bool isCard;
    }

    function indexToID(uint256 _index) public view returns (uint256){
        return tokens[_index];
    }
    
    function installWeaponToNFT(uint256 _tokenId,uint256 _weapon_tokenId) public validNFToken(_tokenId) validNFToken(_weapon_tokenId) canTransfer(_tokenId) canTransfer(_weapon_tokenId){
        require(starAttributes[_tokenId].isCard,"Need Card");
        require(starAttributes[_tokenId].weapon_tokenId == 0,"Only One Skill Per Card");
        require(!starAttributes[_weapon_tokenId].isCard,"Need Skill");
        require(starAttributes[_weapon_tokenId].isWeaponInUse == 0,"Need Unused Skill");
        // set card weapon/skill
        _setTokenTypeAttributes(_tokenId,4,_weapon_tokenId);
        // calc new card power
        uint256 _defaultpower = starAttributes[_tokenId].defaultpower;
        uint256 _newPower_add_on = starAttributes[_weapon_tokenId].weapon_power.mul(_defaultpower).div(100);
        uint256 _newPower = _defaultpower.add(_newPower_add_on);
        // set new card power
        _setTokenTypeAttributes(_tokenId,3,_newPower);
        // set skill as used
        _setTokenTypeAttributes(_weapon_tokenId,8,1);
        emit ADD_DEL_ToNFT( _tokenId, _newPower, true );
    }

    function unInstalWeaponToNFT(uint256 _tokenId ) public validNFToken(_tokenId) canTransfer(_tokenId){
        require(starAttributes[_tokenId].isCard,"Need Card");
        uint256 _weapon_tokenId = starAttributes[_tokenId].weapon_tokenId;
        require(_weapon_tokenId != 0, "Card need to have skill");
        require(idToOwner[_weapon_tokenId] == msg.sender,"Need own weapon");
        //set card power to default
        uint256 _defaultpower = starAttributes[_tokenId].defaultpower;
        _setTokenTypeAttributes(_tokenId,3,_defaultpower);
        //set card weapon_tokenId to 0
        _setTokenTypeAttributes(_tokenId,4,0);
        //set weapon/skill as Unused
        _setTokenTypeAttributes(_weapon_tokenId,8,0);
        emit ADD_DEL_ToNFT( _tokenId, _defaultpower, false );
    }

    function totalSupply() external view returns (uint256) {
        return tokens.length;
    }

    function tokenByIndex(uint256 _index) external view returns (uint256){
        require(_index < tokens.length, INVALID_INDEX);
        return tokens[_index];
    }

    function tokenOfOwnerByIndex(address _owner,uint256 _index) external view returns (uint256){
        require(_index < ownerToIds[_owner].length, INVALID_INDEX);
        return ownerToIds[_owner][_index];
    }

    function _mint(address _to,uint256 _tokenId) internal {
        super._mint(_to, _tokenId);
        tokens.push(_tokenId);
        idToIndex[_tokenId] = tokens.length - 1;

    }
    
    // /function multiApprove(address )

    function _burn(uint256 _tokenId) internal {
        super._burn(_tokenId);

        uint256 tokenIndex = idToIndex[_tokenId];
        uint256 lastTokenIndex = tokens.length - 1;
        uint256 lastToken = tokens[lastTokenIndex];

        tokens[tokenIndex] = lastToken;

        tokens.pop();
        // This wastes gas if you are burning the last token but saves a little gas if you are not.
        idToIndex[lastToken] = tokenIndex;
        idToIndex[_tokenId] = 0;
    }


    function _removeNFToken(address _from,uint256 _tokenId) internal {
        require(idToOwner[_tokenId] == _from, NOT_OWNER);
        delete idToOwner[_tokenId];

        uint256 tokenToRemoveIndex = idToOwnerIndex[_tokenId];
        uint256 lastTokenIndex = ownerToIds[_from].length - 1;

        if (lastTokenIndex != tokenToRemoveIndex){
            uint256 lastToken = ownerToIds[_from][lastTokenIndex];
            ownerToIds[_from][tokenToRemoveIndex] = lastToken;
            idToOwnerIndex[lastToken] = tokenToRemoveIndex;
        }

        ownerToIds[_from].pop();
    }


    function _addNFToken(address _to,uint256 _tokenId) internal {
        require(idToOwner[_tokenId] == address(0), NFT_ALREADY_EXISTS);
        idToOwner[_tokenId] = _to;

        ownerToIds[_to].push(_tokenId);
        idToOwnerIndex[_tokenId] = ownerToIds[_to].length - 1;
    }

    function _getOwnerNFTCount(address _owner) internal view returns (uint256){
        return ownerToIds[_owner].length;

    }

    function _setTokenUri(uint256 _tokenId, string memory _uri) public validNFToken(_tokenId) {
        idToUri[_tokenId] = _uri;
    }


    function _setTokenAttributes(uint256 _tokenId, starType  _stype, teamType _ttpye,uint256 _power,bool _isCard)
    public validNFToken(_tokenId) {
        require(_stype > starType.st_nil && _stype <= starType.st20);
        require(_ttpye > teamType.t_nil && _ttpye <= teamType.t2);
        if(_isCard){
            starAttributes[_tokenId] =  starAttributesStruct(_ttpye,_stype,_power,0,0,0,0,_power,0,0,0,_isCard);
        }
        else{
            starAttributes[_tokenId] =  starAttributesStruct(_ttpye,_stype,0,0,0,0,_power,0,0,0,0,_isCard);
        }
    }

    function _setTokenAttributes(uint256[] memory _tokenId, starType[] memory  _stype, teamType[] memory _ttpye,uint256[] memory _power,bool _isCard)
    public  {
       for(uint256 i=0;i<_tokenId.length;i++){
           _setTokenAttributes(_tokenId[i],_stype[i],_ttpye[i],_power[i],_isCard);
       }
    }

    function _setTokenTypeAttributes(uint256 _tokenId,uint8 _typeAttributes,uint256 _tvalue)
    internal validNFToken(_tokenId) {
        if(_typeAttributes == 1){
            starAttributes[_tokenId].tpye1 = _tvalue;
        }else if(_typeAttributes == 2){
            starAttributes[_tokenId].tpye2 = _tvalue; // picture;
        }else if(_typeAttributes == 3){
            starAttributes[_tokenId].power = _tvalue;
        }else if(_typeAttributes == 4){
            starAttributes[_tokenId].weapon_tokenId= _tvalue;
        }else if(_typeAttributes == 5){
            starAttributes[_tokenId].defaultpower = _tvalue;
        }else if(_typeAttributes == 6){
            starAttributes[_tokenId].tpye6 = _tvalue;
        }else if(_typeAttributes == 7){
            starAttributes[_tokenId].tpye7 = _tvalue;
        }else if(_typeAttributes == 8){
            starAttributes[_tokenId].isWeaponInUse = _tvalue;
        }
    }

}


interface getCard{
    function drawCard() external returns(uint,string memory,uint,bool);
    function upCard(uint,uint,bool) external returns(uint,string memory,uint,bool);
}

contract KI_NFT is KIMdate,Ownable{
    uint256 tid = 0;
    using SafeMath for uint256;
    using SafeERC20 for IERC20;
    address payable internal cardfeeaddress = 0xb07c1B3Cd13245e5351FD29CbB3995eB7D083044;
    address payable internal updateFeeaddress = 0x9D3ce3454a1B720117180aD4Ae789884872cf732;
    address payable internal USDT_TOKEN = 0xa71EdC38d189767582C38A3145b5873052c3e47a;
    address public cardaddr = 0x2C181EC73ccA00A41be871a2D1B35D05B50e69A5;
    address payable internal KI_TOKEN;
    uint256 public itemUnitPrice = 20 *10**18;
    uint256 public updateFee = 200 *10**18;
    uint256 public KiUintPrice = 20 *10**18;
    

    constructor(string memory _name,string memory _symbol) public {
        nftName = _name;
        nftSymbol = _symbol;
    }

    event Transfer(
      address indexed _from,
      address indexed _to,
      uint256 indexed numTokens
    );


    event Approval(
      address indexed _from,
      address indexed _to,
      uint256 indexed numTokens
    );

    function mint(
        address _to,
        uint256 _power,
        uint _stype,
        string calldata _url,
        bool _isCard
    )
        external
        onlyManager
    {
        tid++;
        super._mint(_to,tid);
        super._setTokenUri(tid, _url);
        super._setTokenAttributes(tid,starType(_stype),teamType.t1,_power,_isCard);
    }

    function burn(uint256 _tokenId) external onlyManager {
        super._burn(_tokenId);
    }
    
    function setTokenTypeAttributes(uint256 _tokenId,uint8 _typeAttributes,uint256 _tvalue) external onlyManager{
        super._setTokenTypeAttributes(_tokenId,_typeAttributes,_tvalue);
    }
    
    function setUpdateFee(uint256 _UpdateFee) external onlyManager {
        updateFee = _UpdateFee;
    }
    
    function setKiUnitPrice(uint256 _KiUintPrice) external onlyManager {
        KiUintPrice = _KiUintPrice;
    }
    
    function setcardfeeaddr(address payable _cardaddr) external onlyManager {
        cardfeeaddress = _cardaddr;
    }
    
    
    function setcardpooladdr(address _cardfee) external onlyManager {
        cardaddr = _cardfee;
    }
    
    function setkiaddr(address payable _kiaddr) external onlyManager {
        KI_TOKEN = _kiaddr;
    }
    
    function setItemUnitPrice(uint256 _unitprice) external onlyManager {
        itemUnitPrice = _unitprice;
    }
    function setTidIndex(uint256 _tid) external onlyManager {
        tid = _tid;
    }
    
    function upnft(uint256[] memory cardIds) public returns (bool){
        IERC20 token = IERC20(KI_TOKEN);
        token.transferFrom(msg.sender,updateFeeaddress,updateFee);
        emit Transfer(msg.sender, updateFeeaddress, updateFee);
        uint256 cardpower = starAttributes[cardIds[0]].power;
        uint256 stype  = uint(starAttributes[cardIds[0]].stype);
        bool isSameStype = true;
        for (uint8 i = 0; i < cardIds.length; i++) {
            require(starAttributes[cardIds[i]].power < 40000, "could not update ur");
            require(starAttributes[cardIds[i]].weapon_tokenId == 0, 'could not upgrade card with weapon');
            require(cardIds.length == 4, 'only  4 cards');
            require(msg.sender == idToOwner[cardIds[i]], 'not card owner');
            require(starAttributes[cardIds[i]].power == cardpower, 'not same level');
            if (uint(starAttributes[cardIds[i]].stype) != stype){
                isSameStype = false;
            }
        }
        
        for (uint8 i = 0; i < cardIds.length; i++) {
            super._burn(cardIds[i]);
        }
        //create new card
        tid ++;
        getCard r = getCard(cardaddr);
        (uint256 _power, string memory _url,uint _stype, bool _isCard)  = r.upCard(cardpower,stype,isSameStype);
        super._mint(msg.sender,tid);
        super._setTokenUri(tid, _url);
        super._setTokenAttributes(tid,starType(_stype),teamType.t1,_power,_isCard);
        return true;
    }

    function getNFTbyUSDT(uint256 _item_amount) public returns(bool){
        IERC20 token = IERC20(USDT_TOKEN);
        getCard r = getCard(cardaddr);
        uint256 numTokens = itemUnitPrice.mul(_item_amount);
        token.transferFrom(msg.sender,cardfeeaddress,numTokens);
        emit Transfer(msg.sender, cardfeeaddress, numTokens);
        if (_item_amount == 30){
            _item_amount = _item_amount + 5;
        }
        if (_item_amount == 10){
            _item_amount ++;
        }
        for (uint i=0; i<_item_amount; i++){
            (uint256 _power, string memory _url,uint _stype, bool _isCard)  = r.drawCard();
            tid ++;
            if(_isCard){
                super._mint(msg.sender,tid);
                super._setTokenUri(tid, _url);
                super._setTokenAttributes(tokenID,starType(_stype),teamType.t1,_power,_isCard);
            }
            else{
                super._mint(msg.sender,tid);
                super._setTokenUri(tid, _url);
                super._setTokenAttributes(tid,starType(_stype),teamType.t1,_power,_isCard);
            }
        }
        return true;
    }

    function getNFTbyKI(uint256 _item_amount) public returns(bool){
        IERC20 token = IERC20(KI_TOKEN);
        getCard r = getCard(cardaddr);
        uint256 numTokens = itemUnitPrice.mul(_item_amount);
        token.transferFrom(msg.sender,cardfeeaddress,numTokens);
        emit Transfer(msg.sender, cardfeeaddress, numTokens);
        if (_item_amount == 30){
            _item_amount = _item_amount + 5;
        }
        if (_item_amount == 10){
            _item_amount ++;
        }
        for (uint i=0; i<_item_amount; i++){
            (uint256 _power, string memory _url,uint _stype, bool _isCard)  = r.drawCard();
            tid ++;
            if(_isCard){
                super._mint(msg.sender,tid);
                super._setTokenUri(tid, _url);
                super._setTokenAttributes(tokenID,starType(_stype),teamType.t1,_power,_isCard);
            }
            else{
                super._mint(msg.sender,tid);
                super._setTokenUri(tid, _url);
                super._setTokenAttributes(tid,starType(_stype),teamType.t1,_power,_isCard);
            }
        }
        return true;
    }
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newPower","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isInstall","type":"bool"}],"name":"ADD_DEL_ToNFT","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","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":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"CANNOT_TRANSFER_TO_ZERO_ADDRESS","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KiUintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Manager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NOT_CURRENT_MANAGER","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NOT_CURRENT_OWNER","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"enum KIMdate.starType","name":"_stype","type":"uint8"},{"internalType":"enum KIMdate.teamType","name":"_ttpye","type":"uint8"},{"internalType":"uint256","name":"_power","type":"uint256"},{"internalType":"bool","name":"_isCard","type":"bool"}],"name":"_setTokenAttributes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"enum KIMdate.starType[]","name":"_stype","type":"uint8[]"},{"internalType":"enum KIMdate.teamType[]","name":"_ttpye","type":"uint8[]"},{"internalType":"uint256[]","name":"_power","type":"uint256[]"},{"internalType":"bool","name":"_isCard","type":"bool"}],"name":"_setTokenAttributes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_uri","type":"string"}],"name":"_setTokenUri","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_maddr","type":"address"}],"name":"addManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cardaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_maddr","type":"address"}],"name":"delManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_item_amount","type":"uint256"}],"name":"getNFTbyKI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_item_amount","type":"uint256"}],"name":"getNFTbyUSDT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToOwnerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToUri","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"indexToID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_weapon_tokenId","type":"uint256"}],"name":"installWeaponToNFT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"itemUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_power","type":"uint256"},{"internalType":"uint256","name":"_stype","type":"uint256"},{"internalType":"string","name":"_url","type":"string"},{"internalType":"bool","name":"_isCard","type":"bool"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"old_number","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerToIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_unitprice","type":"uint256"}],"name":"setItemUnitPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_KiUintPrice","type":"uint256"}],"name":"setKiUnitPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tid","type":"uint256"}],"name":"setTidIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint8","name":"_typeAttributes","type":"uint8"},{"internalType":"uint256","name":"_tvalue","type":"uint256"}],"name":"setTokenTypeAttributes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_UpdateFee","type":"uint256"}],"name":"setUpdateFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_cardaddr","type":"address"}],"name":"setcardfeeaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_cardfee","type":"address"}],"name":"setcardpooladdr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_kiaddr","type":"address"}],"name":"setkiaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"starAttributes","outputs":[{"internalType":"enum KIMdate.teamType","name":"ttype","type":"uint8"},{"internalType":"enum KIMdate.starType","name":"stype","type":"uint8"},{"internalType":"uint256","name":"power","type":"uint256"},{"internalType":"uint256","name":"tpye1","type":"uint256"},{"internalType":"uint256","name":"tpye2","type":"uint256"},{"internalType":"uint256","name":"weapon_tokenId","type":"uint256"},{"internalType":"uint256","name":"weapon_power","type":"uint256"},{"internalType":"uint256","name":"defaultpower","type":"uint256"},{"internalType":"uint256","name":"tpye6","type":"uint256"},{"internalType":"uint256","name":"tpye7","type":"uint256"},{"internalType":"uint256","name":"isWeaponInUse","type":"uint256"},{"internalType":"bool","name":"isCard","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_tokenIdList","type":"uint256[]"}],"name":"transferList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unInstalWeaponToNFT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"updateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"cardIds","type":"uint256[]"}],"name":"upnft","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"viewTokenID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"weaponApprove","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"weaponBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"weaponTeam","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"weaponTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526000601455601580546001600160a01b031990811673b07c1b3cd13245e5351fd29cbb3995eb7d08304417909155601680548216739d3ce3454a1b720117180ad4ae789884872cf73217905560178054821673a71edc38d189767582c38a3145b5873052c3e47a17905560188054909116732c181ec73cca00a41be871a2d1b35d05b50e69a51790556801158e460913d00000601a819055680ad78ebc5ac6200000601b55601c55348015620000b957600080fd5b5060405162004efe38038062004efe83398181016040526040811015620000df57600080fd5b81019080805160405193929190846401000000008211156200010057600080fd5b9083019060208201858111156200011657600080fd5b82516401000000008111828201881017156200013157600080fd5b82525081516020918201929091019080838360005b838110156200016057818101518382015260200162000146565b50505050905090810190601f1680156200018e5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001b257600080fd5b908301906020820185811115620001c857600080fd5b8251640100000000811182820188101715620001e357600080fd5b82525081516020918201929091019080838360005b8381101562000212578181015183820152602001620001f8565b50505050905090810190601f168015620002405780820380516001836020036101000a031916815260200191505b506040525050601280546001600160a01b031916331790555081516200026e9060059060208501906200028d565b508051620002849060069060208401906200028d565b50505062000332565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d057805160ff191683800117855562000300565b8280016001018555821562000300579182015b8281111562000300578251825591602001919060010190620002e3565b506200030e92915062000312565b5090565b6200032f91905b808211156200030e576000815560010162000319565b90565b614bbc80620003426000396000f3fe608060405234801561001057600080fd5b50600436106103825760003560e01c80636352211e116101de578063b24e46241161010f578063e184bad0116100ad578063f3fe3bc31161007c578063f3fe3bc314610fa9578063f46f6e3d14610fb1578063f4c0abb214610fb9578063feb3d3d614610fd657610382565b8063e184bad014610eac578063e6fb9e9414610f38578063e985e9c514610f55578063f2fde38b14610f8357610382565b8063bfc206ed116100e9578063bfc206ed14610d98578063c85cf95514610db5578063d37d87c414610dd8578063e0449f1114610e0b57610382565b8063b24e462414610cc7578063b88d4fde14610ced578063bcce727d14610d7b57610382565b8063860d248a1161017c578063a22cb46511610156578063a22cb46514610c4e578063a65eacdc14610c7c578063ade74c0614610ca2578063ae90119d14610cbf57610382565b8063860d248a14610bac578063885dc46e14610c295780638da5cb5b14610c4657610382565b806370a08231116101b857806370a0823114610ac15780637567a6f014610ae7578063758cdcf014610b87578063763bd94d14610b8f57610382565b80636352211e1461085e5780636a2e770f1461087b5780636b02f4091461089857610382565b80633bfaee34116102b85780634b0697e411610256578063505d162411610230578063505d16241461078f578063568d4d9d1461079757806357438a8214610815578063583c38d21461083257610382565b80634b0697e41461072f5780634f64b2be146107555780634f6ccce71461077257610382565b8063426a87f511610292578063426a87f51461069957806342842e0e146106b657806342966c68146106ec57806343af5c161461070957610382565b80633bfaee341461062e5780633df6db721461065f57806340adac5f1461067c57610382565b806323b872dd116103255780632f745c59116102ff5780632f745c591461050e578063303402141461053a5780633086719a14610557578063324dc1261461060257610382565b806323b872dd1461047c578063242bc643146104b25780632d06177a146104e857610382565b8063081812fc11610361578063081812fc14610407578063095ea7b31461044057806315b377071461046c57806318160ddd1461047457610382565b806251c1f71461038757806301e435ca146103c757806307718f91146103e1575b600080fd5b6103c5600480360360a081101561039d57600080fd5b5080359060ff6020820135811691604081013590911690606081013590608001351515611002565b005b6103cf6113bc565b60408051918252519081900360200190f35b6103c5600480360360208110156103f757600080fd5b50356001600160a01b03166113c2565b6104246004803603602081101561041d57600080fd5b5035611464565b604080516001600160a01b039092168252519081900360200190f35b6103c56004803603604081101561045657600080fd5b506001600160a01b038135169060200135611509565b6103cf611731565b6103cf611737565b6103c56004803603606081101561049257600080fd5b506001600160a01b0381358116916020810135909116906040013561173e565b6103cf600480360360608110156104c857600080fd5b506001600160a01b038135811691602081013590911690604001356119ad565b6103c5600480360360208110156104fe57600080fd5b50356001600160a01b03166119d0565b6103cf6004803603604081101561052457600080fd5b506001600160a01b038135169060200135611a6c565b6103cf6004803603602081101561055057600080fd5b5035611b2c565b6103c56004803603604081101561056d57600080fd5b81359190810190604081016020820135600160201b81111561058e57600080fd5b8201836020820111156105a057600080fd5b803590602001918460018302840111600160201b831117156105c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b4d945050505050565b6103cf6004803603604081101561061857600080fd5b506001600160a01b038135169060200135611bf8565b61064b6004803603602081101561064457600080fd5b5035611c15565b604080519115158252519081900360200190f35b6103cf6004803603602081101561067557600080fd5b5035611ef6565b6103cf6004803603602081101561069257600080fd5b5035611f08565b6103cf600480360360208110156106af57600080fd5b5035611f1a565b6103c5600480360360608110156106cc57600080fd5b506001600160a01b03813581169160208101359091169060400135611f2c565b6103c56004803603602081101561070257600080fd5b5035611f4c565b6103c56004803603602081101561071f57600080fd5b50356001600160a01b0316611fd8565b61064b6004803603602081101561074557600080fd5b50356001600160a01b031661207a565b6103cf6004803603602081101561076b57600080fd5b503561208f565b6103cf6004803603602081101561078857600080fd5b50356120ad565b6103cf61212b565b6103c5600480360360408110156107ad57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107d757600080fd5b8201836020820111156107e957600080fd5b803590602001918460208302840111600160201b8311171561080a57600080fd5b509092509050612131565b61064b6004803603602081101561082b57600080fd5b50356122b7565b6103c56004803603606081101561084857600080fd5b5080359060ff6020820135169060400135612583565b6104246004803603602081101561087457600080fd5b503561260e565b6103c56004803603602081101561089157600080fd5b5035612692565b6103c5600480360360a08110156108ae57600080fd5b810190602081018135600160201b8111156108c857600080fd5b8201836020820111156108da57600080fd5b803590602001918460208302840111600160201b831117156108fb57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561094a57600080fd5b82018360208201111561095c57600080fd5b803590602001918460208302840111600160201b8311171561097d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156109cc57600080fd5b8201836020820111156109de57600080fd5b803590602001918460208302840111600160201b831117156109ff57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610a4e57600080fd5b820183602082011115610a6057600080fd5b803590602001918460208302840111600160201b83111715610a8157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050503515159050612717565b6103cf60048036036020811015610ad757600080fd5b50356001600160a01b0316612784565b610b0460048036036020811015610afd57600080fd5b5035612803565b604051808d6008811115610b1457fe5b60ff1681526020018c6014811115610b2857fe5b60ff168152602081019b909b52506040808b019990995260608a0197909752608089019590955260a088019390935260c087019190915260e0860152610100850152610120840152151561014083015251908190036101600192509050f35b6103cf61285a565b6103c560048036036020811015610ba557600080fd5b5035612860565b610bb46128e5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610bee578181015183820152602001610bd6565b50505050905090810190601f168015610c1b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103c560048036036020811015610c3f57600080fd5b5035612907565b61042461298c565b6103c560048036036040811015610c6457600080fd5b506001600160a01b038135169060200135151561299b565b6103c560048036036020811015610c9257600080fd5b50356001600160a01b0316612a09565b6103c560048036036020811015610cb857600080fd5b5035612aa2565b610424612d93565b6103c560048036036020811015610cdd57600080fd5b50356001600160a01b0316612da2565b6103c560048036036080811015610d0357600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610d3d57600080fd5b820183602082011115610d4f57600080fd5b803590602001918460018302840111600160201b83111715610d7057600080fd5b509092509050612e44565b61064b60048036036020811015610d9157600080fd5b5035612e8d565b61042460048036036020811015610dae57600080fd5b5035612ea2565b6103c560048036036040811015610dcb57600080fd5b5080359060200135612ebd565b610df560048036036020811015610dee57600080fd5b50356133a6565b6040805160ff9092168252519081900360200190f35b61064b60048036036020811015610e2157600080fd5b810190602081018135600160201b811115610e3b57600080fd5b820183602082011115610e4d57600080fd5b803590602001918460208302840111600160201b83111715610e6e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506133bb945050505050565b6103c5600480360360a0811015610ec257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b811115610ef857600080fd5b820183602082011115610f0a57600080fd5b803590602001918460018302840111600160201b83111715610f2b57600080fd5b9193509150351515613956565b610bb460048036036020811015610f4e57600080fd5b5035613a49565b61064b60048036036040811015610f6b57600080fd5b506001600160a01b0381358116916020013516613ae4565b6103c560048036036020811015610f9957600080fd5b50356001600160a01b0316613b12565b610bb4613c59565b610bb4613c7b565b6103c560048036036020811015610fcf57600080fd5b5035613c9d565b6103cf60048036036040811015610fec57600080fd5b506001600160a01b038135169060200135613d22565b60008581526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528691906001600160a01b03166110c45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611089578181015183820152602001611071565b50505050905090810190601f1680156110b65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008560148111156110d357fe5b1180156110ec575060148560148111156110e957fe5b11155b6110f557600080fd5b600084600881111561110357fe5b11801561111c5750600284600881111561111957fe5b11155b61112557600080fd5b81156112775760405180610180016040528085600881111561114357fe5b815260200186601481111561115457fe5b815260200184815260200160008152602001600081526020016000815260200160008152602001848152602001600081526020016000815260200160008152602001831515815250600d600088815260200190815260200160002060008201518160000160006101000a81548160ff021916908360088111156111d357fe5b021790555060208201518154829061ff0019166101008360148111156111f557fe5b021790555060408201516001820155606082015160028201556080820151600382015560a0820151600482015560c0820151600582015560e0820151600682015561010082015160078201556101208201516008820155610140820151600982015561016090910151600a909101805460ff19169115159190911790556113b4565b60405180610180016040528085600881111561128f57fe5b81526020018660148111156112a057fe5b8152600060208083018290526040808401839052606084018390526080840183905260a0840188905260c0840183905260e084018390526101008401839052610120840183905286151561014090940193909352898252600d90522081518154829060ff1916600183600881111561131457fe5b021790555060208201518154829061ff00191661010083601481111561133657fe5b021790555060408201516001820155606082015160028201556080820151600382015560a0820151600482015560c0820151600582015560e0820151600682015561010082015160078201556101208201516008820155610140820151600982015561016090910151600a909101805460ff19169115159190911790555b505050505050565b601a5481565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166114415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601880546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260208181526040808320548151808301909252600682526518181998181960d11b9282019290925283916001600160a01b03166114e75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506000838152600260205260409020546001600160a01b031691505b50919050565b60008181526020819052604090205481906001600160a01b03163381148061155457506001600160a01b038116600090815260046020908152604080832033845290915290205460ff165b6040518060400160405280600681526020016530303330303360d01b815250906115bf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008381526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528491906001600160a01b03166116455760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008481526020818152604091829020548251808401909352600683526506060666060760d31b918301919091526001600160a01b03908116919087168214156116d15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008581526002602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050505050565b601c5481565b6007545b90565b60008181526020819052604090205481906001600160a01b03163381148061177c57506000828152600260205260409020546001600160a01b031633145b806117aa57506001600160a01b038116600090815260046020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0ccc0c0d60d21b815250906118155760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008381526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528491906001600160a01b031661189b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008481526020818152604091829020548251808401909352600683526530303330303760d01b918301919091526001600160a01b039081169190881682146119265760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060408051808201909152600681526530303330303160d01b60208201526001600160a01b0387166119995760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506119a48686613d50565b50505050505050565b601060209081526000938452604080852082529284528284209052825290205481565b60125460408051808201909152600681526530313830303160d01b6020820152906001600160a01b03163314611a475760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506001600160a01b03166000908152601360205260409020805460ff19166001179055565b6001600160a01b0382166000908152600960209081526040808320548151808301909252600682526530303530303760d01b92820192909252908310611af35760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506001600160a01b0383166000908152600960205260409020805483908110611b1857fe5b906000526020600020015490505b92915050565b600060078281548110611b3b57fe5b90600052602060002001549050919050565b60008281526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528391906001600160a01b0316611bd25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506000838152600b602090815260409091208351611bf292850190614a8c565b50505050565b600e60209081526000928352604080842090915290825290205481565b601754601854601a546000926001600160a01b039081169216908390611c41908663ffffffff613db916565b601554604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051929350908516916323b872dd916064808201926020929091908290030181600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d6020811015611cca57600080fd5b505060155460405182916001600160a01b0316903390600080516020614b6883398151915290600090a484601e1415611d04578460050194505b84600a1415611d14576001909401935b60005b85811015611eea5760006060600080866001600160a01b0316632f5be23e6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d6157600080fd5b505af1158015611d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526080811015611d9e57600080fd5b815160208301805160405192949293830192919084600160201b821115611dc457600080fd5b908301906020820185811115611dd957600080fd5b8251600160201b811182820188101715611df257600080fd5b82525081516020918201929091019080838360005b83811015611e1f578181015183820152602001611e07565b50505050905090810190601f168015611e4c5780820380516001836020036101000a031916815260200191505b50604090815260208201519101516014805460010190559498509296509194509192505081159050611eb057611e8433601454613e19565b611e9060145484611b4d565b611eab600154836014811115611ea257fe5b60018785611002565b611eda565b611ebc33601454613e19565b611ec860145484611b4d565b611eda601454836014811115611ea257fe5b505060019092019150611d179050565b50600195945050505050565b60086020526000908152604090205481565b600a6020526000908152604090205481565b600f6020526000908152604090205481565b611f4783838360405180602001604052806000815250613e6d565b505050565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff16611fcb5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50611fd58161426b565b50565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166120575760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601980546001600160a01b0319166001600160a01b0392909216919091179055565b60136020526000908152604090205460ff1681565b6007818154811061209c57fe5b600091825260209091200154905081565b60075460408051808201909152600681526530303530303760d01b6020820152600091831061211d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060078281548110611b3b57fe5b60015490565b80600080805b838110156119a45785858281811061214b57fe5b602090810292909201356000818152808452604090819020548151808301909252600682526518181998181960d11b948201949094526001600160a01b039093169550935050836121dd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506001600160a01b03831633148061220b57506000828152600260205260409020546001600160a01b031633145b8061223957506001600160a01b038316600090815260046020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0ccc0c0d60d21b815250906122a45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506122af8783613d50565b600101612137565b601954601854601a546000926001600160a01b0390811692169083906122e3908663ffffffff613db916565b601554604080516323b872dd60e01b81523360048201526001600160a01b039283166024820152604481018490529051929350908516916323b872dd916064808201926020929091908290030181600087803b15801561234257600080fd5b505af1158015612356573d6000803e3d6000fd5b505050506040513d602081101561236c57600080fd5b505060155460405182916001600160a01b0316903390600080516020614b6883398151915290600090a484601e14156123a6578460050194505b84600a14156123b6576001909401935b60005b85811015611eea5760006060600080866001600160a01b0316632f5be23e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561240357600080fd5b505af1158015612417573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561244057600080fd5b815160208301805160405192949293830192919084600160201b82111561246657600080fd5b90830190602082018581111561247b57600080fd5b8251600160201b81118282018810171561249457600080fd5b82525081516020918201929091019080838360005b838110156124c15781810151838201526020016124a9565b50505050905090810190601f1680156124ee5780820380516001836020036101000a031916815260200191505b506040908152602082015191015160148054600101905594985092965091945091925050811590506125495761252633601454613e19565b61253260145484611b4d565b612544600154836014811115611ea257fe5b612573565b61255533601454613e19565b61256160145484611b4d565b612573601454836014811115611ea257fe5b5050600190920191506123b99050565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166126025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50611f47838383614303565b60008181526020818152604091829020548251808401909352600683526518181998181960d11b918301919091526001600160a01b031690816115035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166127115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601b55565b60005b85518110156113b45761277c86828151811061273257fe5b602002602001015186838151811061274657fe5b602002602001015186848151811061275a57fe5b602002602001015186858151811061276e57fe5b602002602001015186611002565b60010161271a565b60408051808201909152600681526530303330303160d01b60208201526000906001600160a01b0383166127f95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50611b26826144b2565b600d60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015460ff808b169b610100909b0481169a91168c565b601b5481565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166128df5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601455565b6040518060400160405280600681526020016518189c18181960d11b81525081565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166129865760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601c55565b6012546001600160a01b031681565b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60125460408051808201909152600681526530313830303160d01b6020820152906001600160a01b03163314612a805760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506001600160a01b03166000908152601360205260409020805460ff19169055565b60008181526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528291906001600160a01b0316612b275760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008281526020819052604090205482906001600160a01b031633811480612b6657506000828152600260205260409020546001600160a01b031633145b80612b9457506001600160a01b038116600090815260046020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0ccc0c0d60d21b81525090612bff5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506000848152600d60205260409020600a015460ff16612c52576040805162461bcd60e51b8152602060048201526009602482015268139959590810d85c9960ba1b604482015290519081900360640190fd5b6000848152600d602052604090206004015480612cb6576040805162461bcd60e51b815260206004820152601760248201527f43617264206e65656420746f206861766520736b696c6c000000000000000000604482015290519081900360640190fd5b6000818152602081905260409020546001600160a01b03163314612d13576040805162461bcd60e51b815260206004820152600f60248201526e2732b2b21037bbb7103bb2b0b837b760891b604482015290519081900360640190fd5b6000858152600d6020526040902060060154612d3186600383614303565b612d3e8660046000614303565b612d4b8260086000614303565b604080518781526020810183905260008183015290517f7805dac2bef3de1ea6e3462684cd9bb7898d5e21a0a7dd6a0a3f8d89dffd606b9181900360600190a1505050505050565b6018546001600160a01b031681565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff16612e215760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601580546001600160a01b0319166001600160a01b0392909216919091179055565b612e8685858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e6d92505050565b5050505050565b600c6020526000908152604090205460ff1681565b6000602081905290815260409020546001600160a01b031681565b60008281526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528391906001600160a01b0316612f425760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008281526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528391906001600160a01b0316612fc85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008481526020819052604090205484906001600160a01b03163381148061300757506000828152600260205260409020546001600160a01b031633145b8061303557506001600160a01b038116600090815260046020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0ccc0c0d60d21b815250906130a05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008581526020819052604090205485906001600160a01b0316338114806130df57506000828152600260205260409020546001600160a01b031633145b8061310d57506001600160a01b038116600090815260046020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0ccc0c0d60d21b815250906131785760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506000888152600d60205260409020600a015460ff166131cb576040805162461bcd60e51b8152602060048201526009602482015268139959590810d85c9960ba1b604482015290519081900360640190fd5b6000888152600d60205260409020600401541561322f576040805162461bcd60e51b815260206004820152601760248201527f4f6e6c79204f6e6520536b696c6c205065722043617264000000000000000000604482015290519081900360640190fd5b6000878152600d60205260409020600a015460ff1615613283576040805162461bcd60e51b815260206004820152600a602482015269139959590814dada5b1b60b21b604482015290519081900360640190fd5b6000878152600d6020526040902060090154156132db576040805162461bcd60e51b81526020600482015260116024820152701399595908155b9d5cd9590814dada5b1b607a1b604482015290519081900360640190fd5b6132e788600489614303565b6000888152600d6020526040808220600601548983529082206005015490919061332a9060649061331e908563ffffffff613db916565b9063ffffffff6144cd16565b9050600061333e838363ffffffff61450f16565b905061334c8b600383614303565b6133598a60086001614303565b604080518c81526020810183905260018183015290517f7805dac2bef3de1ea6e3462684cd9bb7898d5e21a0a7dd6a0a3f8d89dffd606b9181900360600190a15050505050505050505050565b60116020526000908152604090205460ff1681565b601954601654601b54604080516323b872dd60e01b81523360048201526001600160a01b039384166024820152604481019290925251600093929092169182916323b872dd91606480830192602092919082900301818887803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b5050601b546016546040516001600160a01b03909116903390600080516020614b6883398151915290600090a46000600d60008560008151811061348b57fe5b602002602001015181526020019081526020016000206001015490506000600d6000866000815181106134ba57fe5b6020026020010151815260200190815260200160002060000160019054906101000a900460ff1660148111156134ec57fe5b9050600160005b86518160ff16101561376b57619c40600d6000898460ff168151811061351557fe5b602002602001015181526020019081526020016000206001015410613577576040805162461bcd60e51b815260206004820152601360248201527231b7bab632103737ba103ab83230ba32903ab960691b604482015290519081900360640190fd5b600d6000888360ff168151811061358a57fe5b60200260200101518152602001908152602001600020600401546000146135e25760405162461bcd60e51b8152600401808060200182810382526022815260200180614b256022913960400191505060405180910390fd5b8651600414613628576040805162461bcd60e51b815260206004820152600d60248201526c6f6e6c7920203420636172647360981b604482015290519081900360640190fd5b600080888360ff168151811061363a57fe5b6020908102919091018101518252810191909152604001600020546001600160a01b031633146136a2576040805162461bcd60e51b815260206004820152600e60248201526d3737ba1031b0b9321037bbb732b960911b604482015290519081900360640190fd5b83600d6000898460ff16815181106136b657fe5b602002602001015181526020019081526020016000206001015414613713576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd081cd85b59481b195d995b60921b604482015290519081900360640190fd5b82600d6000898460ff168151811061372757fe5b6020026020010151815260200190815260200160002060000160019054906101000a900460ff16601481111561375957fe5b1461376357600091505b6001016134f3565b5060005b86518160ff1610156137a25761379a878260ff168151811061378d57fe5b602002602001015161426b565b60010161376f565b506014805460010190556018546040805163149c3a0d60e21b81526004810186905260248101859052831515604482015290516001600160a01b0390921691600091606091839182918691635270e834916064808301928692919082900301818387803b15801561381257600080fd5b505af1158015613826573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561384f57600080fd5b815160208301805160405192949293830192919084600160201b82111561387557600080fd5b90830190602082018581111561388a57600080fd5b8251600160201b8111828201881017156138a357600080fd5b82525081516020918201929091019080838360005b838110156138d05781810151838201526020016138b8565b50505050905090810190601f1680156138fd5780820380516001836020036101000a031916815260200191505b50604090815260208201519101516014549599509397509550919350613927923392509050613e19565b61393360145484611b4d565b613945601454836014811115611ea257fe5b5060019a9950505050505050505050565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff166139d55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060148054600101908190556139ec908790613e19565b613a2e60145484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b4d92505050565b6113b4601454856014811115613a4057fe5b60018885611002565b600b6020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015613adc5780601f10613ab157610100808354040283529160200191613adc565b820191906000526020600020905b815481529060010190602001808311613abf57829003601f168201915b505050505081565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b60125460408051808201909152600681526530313830303160d01b6020820152906001600160a01b03163314613b895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060408051808201909152600681526518189c18181960d11b60208201526001600160a01b038216613bfc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506012546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601280546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060400160405280600681526020016530313830303160d01b81525081565b6040518060400160405280600681526020016530313830303360d01b81525081565b33600090815260136020908152604091829020548251808401909352600683526530313830303360d01b9183019190915260ff16613d1c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50601a55565b60096020528160005260406000208181548110613d3b57fe5b90600052602060002001600091509150505481565b6000818152602081905260409020546001600160a01b0316613d7182614569565b613d7b81836145a4565b613d858383614730565b81836001600160a01b0316826001600160a01b0316600080516020614b6883398151915260405160405180910390a4505050565b600082613dc857506000611b26565b82820282848281613dd557fe5b0414613e125760405162461bcd60e51b8152600401808060200182810382526021815260200180614b476021913960400191505060405180910390fd5b9392505050565b613e238282614812565b600780546001810182557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880182905554600091825260086020526040909120600019909101905550565b60008281526020819052604090205482906001600160a01b031633811480613eab57506000828152600260205260409020546001600160a01b031633145b80613ed957506001600160a01b038116600090815260046020908152604080832033845290915290205460ff165b604051806040016040528060068152602001650c0c0ccc0c0d60d21b81525090613f445760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008481526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528591906001600160a01b0316613fca5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008581526020818152604091829020548251808401909352600683526530303330303760d01b918301919091526001600160a01b039081169190891682146140555760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060408051808201909152600681526530303330303160d01b60208201526001600160a01b0388166140c85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506140d38787613d50565b6140e5876001600160a01b0316614945565b1561426157604051630a85bd0160e11b815233600482018181526001600160a01b038b81166024850152604484018a9052608060648501908152895160848601528951600095928d169463150b7a029490938f938e938e939260a4019060208501908083838e5b8381101561416457818101518382015260200161414c565b50505050905090810190601f1680156141915780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156141b357600080fd5b505af11580156141c7573d6000803e3d6000fd5b505050506040513d60208110156141dd57600080fd5b505160408051808201909152600681526530303330303560d01b60208201529091506001600160e01b03198216630a85bd0160e11b1461425e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50505b5050505050505050565b6142748161494b565b6000818152600860205260408120546007805491926000198301929091908390811061429c57fe5b9060005260206000200154905080600784815481106142b757fe5b60009182526020909120015560078054806142ce57fe5b600082815260208082208301600019908101839055909201909255918152600890915260408082209390935592835250812055565b60008381526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528491906001600160a01b03166143885760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b508260ff16600114156143ae576000848152600d60205260409020600201829055611bf2565b8260ff16600214156143d3576000848152600d60205260409020600301829055611bf2565b8260ff16600314156143f8576000848152600d60205260409020600101829055611bf2565b8260ff166004141561441d576000848152600d60205260409020600401829055611bf2565b8260ff1660051415614442576000848152600d60205260409020600601829055611bf2565b8260ff1660061415614467576000848152600d60205260409020600701829055611bf2565b8260ff166007141561448c576000848152600d60205260409020600801829055611bf2565b8260ff1660081415611bf2576000848152600d6020526040902060090182905550505050565b6001600160a01b031660009081526009602052604090205490565b6000613e1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a27565b600082820183811015613e12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818152600260205260409020546001600160a01b031615611fd557600090815260026020526040902080546001600160a01b0319169055565b60008181526020818152604091829020548251808401909352600683526530303330303760d01b918301919091526001600160a01b0384811691161461462b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008181526020818152604080832080546001600160a01b0319169055600a8252808320546001600160a01b0386168452600990925290912054600019018082146146f3576001600160a01b038416600090815260096020526040812080548390811061469557fe5b906000526020600020015490508060096000876001600160a01b03166001600160a01b0316815260200190815260200160002084815481106146d357fe5b6000918252602080832090910192909255918252600a9052604090208290555b6001600160a01b038416600090815260096020526040902080548061471457fe5b6001900381819060005260206000200160009055905550505050565b60008181526020818152604091829020548251808401909352600683526518181998181b60d11b918301919091526001600160a01b0316156147b35760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008181526020818152604080832080546001600160a01b0319166001600160a01b039690961695861790559382526009815283822080546001810182558184528284200184905554928252600a9052919091206000199091019055565b60408051808201909152600681526530303330303160d01b60208201526001600160a01b0383166148845760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b5060008181526020818152604091829020548251808401909352600683526518181998181b60d11b918301919091526001600160a01b0316156149085760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b50600180548101905561491b8282614730565b60405181906001600160a01b03841690600090600080516020614b68833981519152908290a45050565b3b151590565b60008181526020818152604091829020548251808401909352600683526518181998181960d11b918301919091528291906001600160a01b03166149d05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506000828152602081905260409020546001600160a01b03166149f283614569565b6149fc81846145a4565b60405183906000906001600160a01b03841690600080516020614b68833981519152908390a4505050565b60008183614a765760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611089578181015183820152602001611071565b506000838581614a8257fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614acd57805160ff1916838001178555614afa565b82800160010185558215614afa579182015b82811115614afa578251825591602001919060010190614adf565b50614b06929150614b0a565b5090565b61173b91905b80821115614b065760008155600101614b1056fe636f756c64206e6f7420757067726164652063617264207769746820776561706f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158206dc4457e86a30229b649ba00ed8081609021cd1bd214542f3e1870d21f5fd4a664736f6c6343000511003200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d447261676f6e42616c6c4e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544424e4654000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d447261676f6e42616c6c4e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000544424e4654000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [3] : 447261676f6e42616c6c4e465400000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 44424e4654000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

26798:6384:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26798:6384:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24763:574;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24763:574:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27313:41;;;:::i;:::-;;;;;;;;;;;;;;;;28898:102;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28898:102:0;-1:-1:-1;;;;;28898:102:0;;:::i;15950:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15950:185:0;;:::i;:::-;;;;-1:-1:-1;;;;;15950:185:0;;;;;;;;;;;;;;14911:354;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14911:354:0;;;;;;;;:::i;27406:39::-;;;:::i;22358:94::-;;;:::i;13841:355::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13841:355:0;;;;;;;;;;;;;;;;;:::i;19683:84::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19683:84:0;;;;;;;;;;;;;;;;;:::i;10904:89::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10904:89:0;-1:-1:-1;;;;;10904:89:0;;:::i;22634:212::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22634:212:0;;;;;;;;:::i;20313:104::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20313:104:0;;:::i;24620:133::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24620:133:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24620:133:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24620:133:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;24620:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;24620:133:0;;-1:-1:-1;24620:133:0;;-1:-1:-1;;;;;24620:133:0:i;19536:64::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19536:64:0;;;;;;;;:::i;30857:1159::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30857:1159:0;;:::i;:::-;;;;;;;;;;;;;;;;;;19187:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19187:44:0;;:::i;19292:49::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19292:49:0;;:::i;19630:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19630:46:0;;:::i;13651:181::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13651:181:0;;;;;;;;;;;;;;;;;:::i;28216:93::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28216:93:0;;:::i;29012:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29012:102:0;-1:-1:-1;;;;;29012:102:0;;:::i;10481:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10481:37:0;-1:-1:-1;;;;;10481:37:0;;:::i;19157:23::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19157:23:0;;:::i;22460:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22460:166:0;;:::i;13339:81::-;;;:::i;14204:701::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;14204:701:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14204:701:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14204:701:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;14204:701:0;;-1:-1:-1;14204:701:0;-1:-1:-1;14204:701:0;:::i;32024:1155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32024:1155:0;;:::i;28321:190::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28321:190:0;;;;;;;;;;;;;;:::i;15732:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15732:210:0;;:::i;28523:104::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28523:104:0;;:::i;25345:309::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;25345:309:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25345:309:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25345:309:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25345:309:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;25345:309:0;;;;;;;;-1:-1:-1;25345:309:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;25345:309:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25345:309:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25345:309:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;25345:309:0;;;;;;;;-1:-1:-1;25345:309:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;25345:309:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25345:309:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25345:309:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;25345:309:0;;;;;;;;-1:-1:-1;25345:309:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;25345:309:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25345:309:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25345:309:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;25345:309:0;;-1:-1:-1;;;;25345:309:0;;;;-1:-1:-1;25345:309:0;:::i;15517:206::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15517:206:0;-1:-1:-1;;;;;15517:206:0;;:::i;19451:62::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19451:62:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19451:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19451:62:0;-1:-1:-1;19451:62:0;27361:38;;;:::i;29244:85::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29244:85:0;;:::i;10326:65::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10326:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28639:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28639:112:0;;:::i;10456:20::-;;;:::i;15274:234::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15274:234:0;;;;;;;;;;:::i;11001:90::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11001:90:0;-1:-1:-1;;;;;11001:90:0;;:::i;21546:804::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21546:804:0;;:::i;27198:68::-;;;:::i;28763:117::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28763:117:0;-1:-1:-1;;;;;28763:117:0;;:::i;13428:211::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;13428:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13428:211:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13428:211:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;13428:211:0;;-1:-1:-1;13428:211:0;-1:-1:-1;13428:211:0;:::i;19401:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19401:43:0;;:::i;11913:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11913:45:0;;:::i;20429:1109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20429:1109:0;;;;;;;:::i;19774:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19774:43:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;29341:1508;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29341:1508:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;29341:1508:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;29341:1508:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29341:1508:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;29341:1508:0;;-1:-1:-1;29341:1508:0;;-1:-1:-1;;;;;29341:1508:0:i;27840:368::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;27840:368:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;27840:368:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27840:368:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;27840:368:0;;-1:-1:-1;27840:368:0;-1:-1:-1;27840:368:0;;;;:::i;19350:42::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19350:42:0;;:::i;16143:194::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16143:194:0;;;;;;;;;;:::i;11095:238::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11095:238:0;-1:-1:-1;;;;;11095:238:0;;:::i;10270:51::-;;;:::i;10396:53::-;;;:::i;29126:112::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29126:112:0;;:::i;19238:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19238:47:0;;;;;;;;:::i;24763:574::-;13199:1;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;24898:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24936:15:0;24927:6;:24;;;;;;;;;:51;;;;-1:-1:-1;24965:13:0;24955:6;:23;;;;;;;;;;24927:51;24919:60;;;;;;25007:14;24998:6;:23;;;;;;;;;:48;;;;-1:-1:-1;25035:11:0;25025:6;:21;;;;;;;;;;24998:48;24990:57;;;;;;25061:7;25058:272;;;25112:71;;;;;;;;25133:6;25112:71;;;;;;;;;;;;25140:6;25112:71;;;;;;;;;;;;25147:6;25112:71;;;;25154:1;25112:71;;;;25156:1;25112:71;;;;25158:1;25112:71;;;;25160:1;25112:71;;;;25162:6;25112:71;;;;25169:1;25112:71;;;;25171:1;25112:71;;;;25173:1;25112:71;;;;25175:7;25112:71;;;;;25084:14;:24;25099:8;25084:24;;;;;;;;;;;:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25084:99:0;;;;;;;;-1:-1:-1;;25084:99:0;;;;;;;;;;;;;;;-1:-1:-1;25084:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25084:99:0;;;;;;;;;;25058:272;;;25252:66;;;;;;;;25273:6;25252:66;;;;;;;;;;;;25280:6;25252:66;;;;;;;;;;25287:1;25252:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25224:24;;;:14;:24;;;:94;;;;:24;;-1:-1:-1;;25224:94:0;;;;;;;;;;;;;;;-1:-1:-1;25224:94:0;;;;;;;;-1:-1:-1;;25224:94:0;;;;;;;;;;;;;;;-1:-1:-1;25224:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25224:94:0;;;;;;;;;;25058:272;24763:574;;;;;;:::o;27313:41::-;;;;:::o;28898:102::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;28973:8:0;:19;;-1:-1:-1;;;;;;28973:19:0;-1:-1:-1;;;;;28973:19:0;;;;;;;;;;28898:102::o;15950:185::-;16081:7;13168:19;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;16057:8;;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;16107:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;16107:22:0;;-1:-1:-1;13224:1:0;15950:185;;;;:::o;14911:354::-;12619:18;12640:19;;;;;;;;;;;15026:8;;-1:-1:-1;;;;;12640:19:0;12688:10;12674:24;;;:68;;-1:-1:-1;;;;;;12702:28:0;;;;;;:16;:28;;;;;;;;12731:10;12702:40;;;;;;;;;;12674:68;12744:21;;;;;;;;;;;;;-1:-1:-1;;;12744:21:0;;;12666:100;;;;;-1:-1:-1;;;12666:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12666::0;-1:-1:-1;13199:1:0;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;15054:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;15074:18:0;15095:19;;;;;;;;;;;;;15154:8;;;;;;;;;;;-1:-1:-1;;;15154:8:0;;;;;;;-1:-1:-1;;;;;15095:19:0;;;;15154:8;15129:23;;;;;15121:42;;;;-1:-1:-1;;;15121:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15121:42:0;-1:-1:-1;15172:22:0;;;;:12;:22;;;;;;:34;;-1:-1:-1;;;;;;15172:34:0;-1:-1:-1;;;;;15172:34:0;;;;;;;;;15218:41;;15172:22;;15218:41;;;;;;;13224:1;12773;14911:354;;;;:::o;27406:39::-;;;;:::o;22358:94::-;22431:6;:13;22358:94;;:::o;13841:355::-;12847:18;12868:19;;;;;;;;;;;13976:8;;-1:-1:-1;;;;;12868:19:0;12924:10;12910:24;;;:71;;-1:-1:-1;12945:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;12945:22:0;12971:10;12945:36;12910:71;:122;;;-1:-1:-1;;;;;;12992:28:0;;;;;;:16;:28;;;;;;;;13021:10;12992:40;;;;;;;;;;12910:122;13041:30;;;;;;;;;;;;;-1:-1:-1;;;13041:30:0;;;12894:184;;;;;-1:-1:-1;;;12894:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12894:184:0;-1:-1:-1;13199:1:0;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;14004:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;14024:18:0;14045:19;;;;;;;;;;;;;14100:9;;;;;;;;;;;-1:-1:-1;;;14100:9:0;;;;;;;-1:-1:-1;;;;;14045:19:0;;;;14100:9;14079:19;;;;14071:39;;;;-1:-1:-1;;;14071:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14071:39:0;-1:-1:-1;14144:12:0;;;;;;;;;;;;-1:-1:-1;;;14144:12:0;;;;-1:-1:-1;;;;;14125:17:0;;14117:40;;;;-1:-1:-1;;;14117:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14117:40:0;;14166:24;14176:3;14181:8;14166:9;:24::i;:::-;13224:1;13085;13841:355;;;;;:::o;19683:84::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10904:89::-;10751:5;;10758:17;;;;;;;;;;;;-1:-1:-1;;;10758:17:0;;;;;-1:-1:-1;;;;;10751:5:0;10737:10;:19;10729:47;;;;-1:-1:-1;;;10729:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10729:47:0;-1:-1:-1;;;;;;10965:15:0;;;;;:7;:15;;;;;:22;;-1:-1:-1;;10965:22:0;10983:4;10965:22;;;10904:89::o;22634:212::-;-1:-1:-1;;;;;22753:18:0;;22717:7;22753:18;;;:10;:18;;;;;;;;:25;22780:13;;;;;;;;;;;-1:-1:-1;;;22780:13:0;;;;;;;;22744:34;;22736:58;;;;-1:-1:-1;;;22736:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;22736:58:0;-1:-1:-1;;;;;;22812:18:0;;;;;;:10;:18;;;;;:26;;22831:6;;22812:26;;;;;;;;;;;;;;22805:33;;22634:212;;;;;:::o;20313:104::-;20369:7;20395:6;20402;20395:14;;;;;;;;;;;;;;;;20388:21;;20313:104;;;:::o;24620:133::-;13199:1;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;24700:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;24721:17:0;;;;:7;:17;;;;;;;;:24;;;;;;;;:::i;:::-;;24620:133;;;:::o;19536:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;30857:1159::-;30954:10;;30996:8;;31036:13;;30916:4;;-1:-1:-1;;;;;30954:10:0;;;;30996:8;;30916:4;;31036:31;;31054:12;31036:31;:17;:31;:::i;:::-;31108:14;;31078:55;;;-1:-1:-1;;;31078:55:0;;31097:10;31078:55;;;;-1:-1:-1;;;;;31108:14:0;;;31078:55;;;;;;;;;;;;31016:51;;-1:-1:-1;31078:18:0;;;;;;:55;;;;;;;;;;;;;;;31108:14;31078:18;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;31078:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31078:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;31170:14:0;;31149:47;;31186:9;;-1:-1:-1;;;;;31170:14:0;;31158:10;;-1:-1:-1;;;;;;;;;;;31149:47:0;31170:14;;31149:47;31211:12;31227:2;31211:18;31207:81;;;31260:12;31275:1;31260:16;31245:31;;31207:81;31302:12;31318:2;31302:18;31298:65;;;31336:15;;;;;31298:65;31378:6;31373:614;31390:12;31388:1;:14;31373:614;;;31424:14;31440:18;31459:11;31472:12;31489:1;-1:-1:-1;;;;;31489:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31489:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31489:12:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;31489:12:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;31489:12:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;31489:12:0;;420:4:-1;411:14;;;;31489:12:0;;;;;411:14:-1;31489:12:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;31489:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31489:12:0;;;;;;;;;;;31516:3;:6;;;;;;31423:78;;-1:-1:-1;31423:78:0;;-1:-1:-1;31489:12:0;;-1:-1:-1;31489:12:0;;-1:-1:-1;;31537:439:0;;;-1:-1:-1;31537:439:0;;31567:27;31579:10;31590:3;;31567:11;:27::i;:::-;31613:29;31632:3;;31637:4;31613:18;:29::i;:::-;31661:78;31687:7;;31704:6;31695:16;;;;;;;;31712:11;31724:6;31731:7;31661:25;:78::i;:::-;31537:439;;;31792:27;31804:10;31815:3;;31792:11;:27::i;:::-;31838:29;31857:3;;31862:4;31838:18;:29::i;:::-;31886:74;31912:3;;31925:6;31916:16;;;;;;;31886:74;-1:-1:-1;;31404:3:0;;;;;-1:-1:-1;31373:614:0;;-1:-1:-1;31373:614:0;;-1:-1:-1;32004:4:0;;30857:1159;-1:-1:-1;;;;;30857:1159:0:o;19187:44::-;;;;;;;;;;;;;:::o;19292:49::-;;;;;;;;;;;;;:::o;19630:46::-;;;;;;;;;;;;;:::o;13651:181::-;13783:43;13801:5;13808:3;13813:8;13783:43;;;;;;;;;;;;:17;:43::i;:::-;13651:181;;;:::o;28216:93::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;;28280:21;28292:8;28280:11;:21::i;:::-;28216:93;:::o;29012:102::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;29088:8:0;:18;;-1:-1:-1;;;;;;29088:18:0;-1:-1:-1;;;;;29088:18:0;;;;;;;;;;29012:102::o;10481:37::-;;;;;;;;;;;;;;;:::o;19157:23::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19157:23:0;:::o;22460:166::-;22557:6;:13;22572;;;;;;;;;;;;-1:-1:-1;;;22572:13:0;;;;22521:7;;22548:22;;22540:46;;;;-1:-1:-1;;;22540:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;22540:46:0;;22604:6;22611;22604:14;;;;;;;13339:81;13407:7;;13339:81;:::o;14204:701::-;14304:12;14290:11;;;14425:475;14443:3;14441:1;:5;14425:475;;;14477:12;;14490:1;14477:15;;;;;;;;;;;;;;;;14520:9;:19;;;;;;;;;;;;14588:13;;;;;;;;;;;-1:-1:-1;;;14588:13:0;;;;;;;-1:-1:-1;;;;;14520:19:0;;;;-1:-1:-1;14477:15:0;-1:-1:-1;;14562:24:0;14554:48;;;;-1:-1:-1;;;14554:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14554:48:0;-1:-1:-1;;;;;;14643:24:0;;14657:10;14643:24;;:81;;-1:-1:-1;14688:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;14688:22:0;14714:10;14688:36;14643:81;:142;;;-1:-1:-1;;;;;;14745:28:0;;;;;;:16;:28;;;;;;;;14774:10;14745:40;;;;;;;;;;14643:142;14804:30;;;;;;;;;;;;;-1:-1:-1;;;14804:30:0;;;14617:232;;;;;-1:-1:-1;;;14617:232:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14617:232:0;;14864:24;14874:3;14879:8;14864:9;:24::i;:::-;14447:3;;14425:475;;32024:1155;32119:8;;32159;;32199:13;;32081:4;;-1:-1:-1;;;;;32119:8:0;;;;32159;;32081:4;;32199:31;;32217:12;32199:31;:17;:31;:::i;:::-;32271:14;;32241:55;;;-1:-1:-1;;;32241:55:0;;32260:10;32241:55;;;;-1:-1:-1;;;;;32271:14:0;;;32241:55;;;;;;;;;;;;32179:51;;-1:-1:-1;32241:18:0;;;;;;:55;;;;;;;;;;;;;;;32271:14;32241:18;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;32241:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32241:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;32333:14:0;;32312:47;;32349:9;;-1:-1:-1;;;;;32333:14:0;;32321:10;;-1:-1:-1;;;;;;;;;;;32312:47:0;32333:14;;32312:47;32374:12;32390:2;32374:18;32370:81;;;32423:12;32438:1;32423:16;32408:31;;32370:81;32465:12;32481:2;32465:18;32461:65;;;32499:15;;;;;32461:65;32541:6;32536:614;32553:12;32551:1;:14;32536:614;;;32587:14;32603:18;32622:11;32635:12;32652:1;-1:-1:-1;;;;;32652:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32652:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32652:12:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;32652:12:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;32652:12:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;32652:12:0;;420:4:-1;411:14;;;;32652:12:0;;;;;411:14:-1;32652:12:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;32652:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32652:12:0;;;;;;;;;;;32679:3;:6;;;;;;32586:78;;-1:-1:-1;32586:78:0;;-1:-1:-1;32652:12:0;;-1:-1:-1;32652:12:0;;-1:-1:-1;;32700:439:0;;;-1:-1:-1;32700:439:0;;32730:27;32742:10;32753:3;;32730:11;:27::i;:::-;32776:29;32795:3;;32800:4;32776:18;:29::i;:::-;32824:78;32850:7;;32867:6;32858:16;;;;;;;32824:78;32700:439;;;32955:27;32967:10;32978:3;;32955:11;:27::i;:::-;33001:29;33020:3;;33025:4;33001:18;:29::i;:::-;33049:74;33075:3;;33088:6;33079:16;;;;;;;33049:74;-1:-1:-1;;32567:3:0;;;;;-1:-1:-1;32536:614:0;;-1:-1:-1;32536:614:0;28321:190;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;;28440:63;28470:8;28479:15;28495:7;28440:29;:63::i;15732:210::-;15831:14;15866:19;;;;;;;;;;;;;15922:13;;;;;;;;;;;-1:-1:-1;;;15922:13:0;;;;;;;-1:-1:-1;;;;;15866:19:0;;15900:20;15892:44;;;;-1:-1:-1;;;15892:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;28523:104:0;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;28597:9:0;:22;28523:104::o;25345:309::-;25518:9;25514:133;25532:8;:15;25530:1;:17;25514:133;;;25566:70;25586:8;25595:1;25586:11;;;;;;;;;;;;;;25598:6;25605:1;25598:9;;;;;;;;;;;;;;25608:6;25615:1;25608:9;;;;;;;;;;;;;;25618:6;25625:1;25618:9;;;;;;;;;;;;;;25628:7;25566:19;:70::i;:::-;25548:3;;25514:133;;15517:206;15665:12;;;;;;;;;;;;-1:-1:-1;;;15665:12:0;;;;15616:7;;-1:-1:-1;;;;;15643:20:0;;15635:43;;;;-1:-1:-1;;;15635:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;15635:43:0;;15692:25;15710:6;15692:17;:25::i;19451:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27361:38::-;;;;:::o;29244:85::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;29311:3:0;:10;29244:85::o;10326:65::-;;;;;;;;;;;;;;-1:-1:-1;;;10326:65:0;;;;:::o;28639:112::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;28717:11:0;:26;28639:112::o;10456:20::-;;;-1:-1:-1;;;;;10456:20:0;;:::o;15274:234::-;15408:10;15391:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;15391:39:0;;;;;;;;;;;;:51;;-1:-1:-1;;15391:51:0;;;;;;;;;;15454:48;;;;;;;15391:39;;15408:10;15454:48;;;;;;;;;;;15274:234;;:::o;11001:90::-;10751:5;;10758:17;;;;;;;;;;;;-1:-1:-1;;;10758:17:0;;;;;-1:-1:-1;;;;;10751:5:0;10737:10;:19;10729:47;;;;-1:-1:-1;;;10729:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10729:47:0;-1:-1:-1;;;;;;11062:15:0;11080:5;11062:15;;;:7;:15;;;;;:23;;-1:-1:-1;;11062:23:0;;;11001:90::o;21546:804::-;13199:1;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;21614:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;12847:18:0;12868:19;;;;;;;;;;;21636:8;;-1:-1:-1;;;;;12868:19:0;12924:10;12910:24;;;:71;;-1:-1:-1;12945:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;12945:22:0;12971:10;12945:36;12910:71;:122;;;-1:-1:-1;;;;;;12992:28:0;;;;;;:16;:28;;;;;;;;13021:10;12992:40;;;;;;;;;;12910:122;13041:30;;;;;;;;;;;;;-1:-1:-1;;;13041:30:0;;;12894:184;;;;;-1:-1:-1;;;12894:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12894:184:0;-1:-1:-1;21664:24:0;;;;:14;:24;;;;;:31;;;;;21656:52;;;;;-1:-1:-1;;;21656:52:0;;;;;;;;;;;;-1:-1:-1;;;21656:52:0;;;;;;;;;;;;;;;21719:23;21745:24;;;:14;:24;;;;;:39;;;21803:20;21795:56;;;;;-1:-1:-1;;;21795:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21870:9;:26;;;;;;;;;;;-1:-1:-1;;;;;21870:26:0;21900:10;21870:40;21862:67;;;;;-1:-1:-1;;;21862:67:0;;;;;;;;;;;;-1:-1:-1;;;21862:67:0;;;;;;;;;;;;;;;21977:21;22001:24;;;:14;:24;;;;;:37;;;22049:49;22016:8;22082:1;22001:37;22049:23;:49::i;:::-;22149:37;22173:8;22182:1;22184;22149:23;:37::i;:::-;22235:44;22259:15;22275:1;22277;22235:23;:44::i;:::-;22295:47;;;;;;;;;;;;22335:5;22295:47;;;;;;;;;;;;;;;13085:1;;13224;;21546:804;;:::o;27198:68::-;;;-1:-1:-1;;;;;27198:68:0;;:::o;28763:117::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;28846:14:0;:26;;-1:-1:-1;;;;;;28846:26:0;-1:-1:-1;;;;;28846:26:0;;;;;;;;;;28763:117::o;13428:211::-;13587:46;13605:5;13612:3;13617:8;13627:5;;13587:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13587:17:0;;-1:-1:-1;;;13587:46:0:i;:::-;13428:211;;;;;:::o;19401:43::-;;;;;;;;;;;;;;;:::o;11913:45::-;;;;;;;;;;;;;-1:-1:-1;;;;;11913:45:0;;:::o;20429:1109::-;13199:1;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;20519:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;13199:1:0;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;20542:15;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;12847:18:0;12868:19;;;;;;;;;;;20571:8;;-1:-1:-1;;;;;12868:19:0;12924:10;12910:24;;;:71;;-1:-1:-1;12945:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;12945:22:0;12971:10;12945:36;12910:71;:122;;;-1:-1:-1;;;;;;12992:28:0;;;;;;:16;:28;;;;;;;;13021:10;12992:40;;;;;;;;;;12910:122;13041:30;;;;;;;;;;;;;-1:-1:-1;;;13041:30:0;;;12894:184;;;;;-1:-1:-1;;;12894:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12894:184:0;-1:-1:-1;12847:18:0;12868:19;;;;;;;;;;;20593:15;;-1:-1:-1;;;;;12868:19:0;12924:10;12910:24;;;:71;;-1:-1:-1;12945:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;12945:22:0;12971:10;12945:36;12910:71;:122;;;-1:-1:-1;;;;;;12992:28:0;;;;;;:16;:28;;;;;;;;13021:10;12992:40;;;;;;;;;;12910:122;13041:30;;;;;;;;;;;;;-1:-1:-1;;;13041:30:0;;;12894:184;;;;;-1:-1:-1;;;12894:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12894:184:0;-1:-1:-1;20628:24:0;;;;:14;:24;;;;;:31;;;;;20620:52;;;;;-1:-1:-1;;;20620:52:0;;;;;;;;;;;;-1:-1:-1;;;20620:52:0;;;;;;;;;;;;;;;20691:24;;;;:14;:24;;;;;:39;;;:44;20683:79;;;;;-1:-1:-1;;;20683:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20782:31;;;;:14;:31;;;;;:38;;;;;20781:39;20773:61;;;;;-1:-1:-1;;;20773:61:0;;;;;;;;;;;;-1:-1:-1;;;20773:61:0;;;;;;;;;;;;;;;20853:31;;;;:14;:31;;;;;:45;;;:50;20845:79;;;;;-1:-1:-1;;;20845:79:0;;;;;;;;;;;;-1:-1:-1;;;20845:79:0;;;;;;;;;;;;;;;20969:51;20993:8;21002:1;21004:15;20969:23;:51::i;:::-;21063:21;21087:24;;;:14;:24;;;;;;:37;;;21162:31;;;;;;:44;;;21087:37;;21063:21;21162:72;;21230:3;;21162:63;;21087:37;21162:63;:48;:63;:::i;:::-;:67;:72;:67;:72;:::i;:::-;21135:99;-1:-1:-1;21245:17:0;21265:35;:13;21135:99;21265:35;:17;:35;:::i;:::-;21245:55;;21342:45;21366:8;21375:1;21377:9;21342:23;:45::i;:::-;21428:44;21452:15;21468:1;21470;21428:23;:44::i;:::-;21488:42;;;;;;;;;;;;21524:4;21488:42;;;;;;;;;;;;;;;13085:1;;;;;13224;;;20429:1109;;;:::o;19774:43::-;;;;;;;;;;;;;;;:::o;29341:1508::-;29436:8;;29486:16;;29503:9;;29456:57;;;-1:-1:-1;;;29456:57:0;;29475:10;29456:57;;;;-1:-1:-1;;;;;29486:16:0;;;29456:57;;;;;;;;;;;;29398:4;;29436:8;;;;;;;29456:18;;:57;;;;;;;;;;;;;;29398:4;29436:8;29456:57;;;5:2:-1;;;;30:1;27;20:12;5:2;29456:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29456:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;29568:9:0;;29550:16;;29529:49;;-1:-1:-1;;;;;29550:16:0;;;;29538:10;;-1:-1:-1;;;;;;;;;;;29529:49:0;29550:16;;29529:49;29589:17;29609:14;:26;29624:7;29632:1;29624:10;;;;;;;;;;;;;;29609:26;;;;;;;;;;;:32;;;29589:52;;29652:13;29674:14;:26;29689:7;29697:1;29689:10;;;;;;;;;;;;;;29674:26;;;;;;;;;;;:32;;;;;;;;;;;;29669:38;;;;;;;;29652:55;-1:-1:-1;29737:4:0;29718:16;29752:594;29774:7;:14;29770:1;:18;;;29752:594;;;29853:5;29818:14;:26;29833:7;29841:1;29833:10;;;;;;;;;;;;;;;;29818:26;;;;;;;;;;;:32;;;:40;29810:72;;;;;-1:-1:-1;;;29810:72:0;;;;;;;;;;;;-1:-1:-1;;;29810:72:0;;;;;;;;;;;;;;;29905:14;:26;29920:7;29928:1;29920:10;;;;;;;;;;;;;;;;29905:26;;;;;;;;;;;:41;;;29950:1;29905:46;29897:93;;;;-1:-1:-1;;;29897:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30013:7;:14;30031:1;30013:19;30005:45;;;;;-1:-1:-1;;;30005:45:0;;;;;;;;;;;;-1:-1:-1;;;30005:45:0;;;;;;;;;;;;;;;30087:9;:21;30097:7;30105:1;30097:10;;;;;;;;;;;;;;;;;;;;;30087:21;;;;;;;;;;-1:-1:-1;30087:21:0;;-1:-1:-1;;;;;30087:21:0;30073:10;:35;30065:62;;;;;-1:-1:-1;;;30065:62:0;;;;;;;;;;;;-1:-1:-1;;;30065:62:0;;;;;;;;;;;;;;;30186:9;30150:14;:26;30165:7;30173:1;30165:10;;;;;;;;;;;;;;;;30150:26;;;;;;;;;;;:32;;;:45;30142:72;;;;;-1:-1:-1;;;30142:72:0;;;;;;;;;;;;-1:-1:-1;;;30142:72:0;;;;;;;;;;;;;;;30275:5;30238:14;:26;30253:7;30261:1;30253:10;;;;;;;;;;;;;;;;30238:26;;;;;;;;;;;:32;;;;;;;;;;;;30233:38;;;;;;;;:47;30229:106;;30314:5;30300:19;;30229:106;29790:3;;29752:594;;;-1:-1:-1;30371:7:0;30366:93;30388:7;:14;30384:1;:18;;;30366:93;;;30424:23;30436:7;30444:1;30436:10;;;;;;;;;;;;;;;;30424:11;:23::i;:::-;30404:3;;30366:93;;;-1:-1:-1;30496:3:0;:6;;;;;;30533:8;;30619:37;;;-1:-1:-1;;;30619:37:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30533:8:0;;;;30496:3;;30570:18;;30496:3;;;;30533:8;;30619;;:37;;;;;30496:3;;30619:37;;;;;;;30496:3;30533:8;30619:37;;;5:2:-1;;;;30:1;27;20:12;5:2;30619:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30619:37:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30619:37:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;30619:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;30619:37:0;;420:4:-1;411:14;;;;30619:37:0;;;;;411:14:-1;30619:37:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30619:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30619:37:0;;;;;;;;;;;30690:3;;30553:103;;-1:-1:-1;30553:103:0;;-1:-1:-1;30619:37:0;-1:-1:-1;30619:37:0;;-1:-1:-1;30667:27:0;;30679:10;;-1:-1:-1;30690:3:0;-1:-1:-1;30667:11:0;:27::i;:::-;30705:29;30724:3;;30729:4;30705:18;:29::i;:::-;30745:74;30771:3;;30784:6;30775:16;;;;;;;30745:74;-1:-1:-1;30837:4:0;;29341:1508;-1:-1:-1;;;;;;;;;;29341:1508:0:o;27840:368::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;28039:3:0;:5;;;;;;;;28055:20;;28067:3;;28055:11;:20::i;:::-;28086:29;28105:3;;28110:4;;28086:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28086:18:0;;-1:-1:-1;;;28086:29:0:i;:::-;28126:74;28152:3;;28165:6;28156:16;;;;;;;;28173:11;28185:6;28192:7;28126:25;:74::i;19350:42::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19350:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16143:194::-;-1:-1:-1;;;;;16296:24:0;;;16273:4;16296:24;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;;;16143:194::o;11095:238::-;10751:5;;10758:17;;;;;;;;;;;;-1:-1:-1;;;10758:17:0;;;;;-1:-1:-1;;;;;10751:5:0;10737:10;:19;10729:47;;;;-1:-1:-1;;;10729:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10729:47:0;-1:-1:-1;11221:31:0;;;;;;;;;;;;-1:-1:-1;;;11221:31:0;;;;-1:-1:-1;;;;;11196:23:0;;11188:65;;;;-1:-1:-1;;;11188:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11188:65:0;-1:-1:-1;11286:5:0;;11265:38;;-1:-1:-1;;;;;11265:38:0;;;;11286:5;;11265:38;;11286:5;;11265:38;11310:5;:17;;-1:-1:-1;;;;;;11310:17:0;-1:-1:-1;;;;;11310:17:0;;;;;;;;;;11095:238::o;10270:51::-;;;;;;;;;;;;;;-1:-1:-1;;;10270:51:0;;;;:::o;10396:53::-;;;;;;;;;;;;;;-1:-1:-1;;;10396:53:0;;;;:::o;29126:112::-;10851:10;10843:19;;;;:7;:19;;;;;;;;;;10864;;;;;;;;;;;-1:-1:-1;;;10864:19:0;;;;;;;10843;;10835:49;;;;-1:-1:-1;;;10835:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;10835:49:0;-1:-1:-1;29204:13:0;:26;29126:112::o;19238:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16343:275::-;16432:12;16447:19;;;;;;;;;;;-1:-1:-1;;;;;16447:19:0;16473:24;16457:8;16473:14;:24::i;:::-;16506:30;16521:4;16527:8;16506:14;:30::i;:::-;16543:26;16555:3;16560:8;16543:11;:26::i;:::-;16603:8;16598:3;-1:-1:-1;;;;;16583:29:0;16592:4;-1:-1:-1;;;;;16583:29:0;-1:-1:-1;;;;;;;;;;;16583:29:0;;;;;;;;;16343:275;;;:::o;1686:471::-;1744:7;1989:6;1985:47;;-1:-1:-1;2019:1:0;2012:8;;1985:47;2056:5;;;2060:1;2056;:5;:1;2080:5;;;;;:10;2072:56;;;;-1:-1:-1;;;2072:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2148:1;1686:471;-1:-1:-1;;;1686:471:0:o;22854:183::-;22919:26;22931:3;22936:8;22919:11;:26::i;:::-;22956:6;27:10:-1;;39:1;23:18;;45:23;;22956:21:0;;;;;23010:13;-1:-1:-1;22988:19:0;;;:9;22956:21;22988:19;;;;;-1:-1:-1;;23010:17:0;;;22988:39;;-1:-1:-1;22854:183:0:o;18028:590::-;12847:18;12868:19;;;;;;;;;;;18176:8;;-1:-1:-1;;;;;12868:19:0;12924:10;12910:24;;;:71;;-1:-1:-1;12945:22:0;;;;:12;:22;;;;;;-1:-1:-1;;;;;12945:22:0;12971:10;12945:36;12910:71;:122;;;-1:-1:-1;;;;;;12992:28:0;;;;;;:16;:28;;;;;;;;13021:10;12992:40;;;;;;;;;;12910:122;13041:30;;;;;;;;;;;;;-1:-1:-1;;;13041:30:0;;;12894:184;;;;;-1:-1:-1;;;12894:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12894:184:0;-1:-1:-1;13199:1:0;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;18204:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;18224:18:0;18245:19;;;;;;;;;;;;;18300:9;;;;;;;;;;;-1:-1:-1;;;18300:9:0;;;;;;;-1:-1:-1;;;;;18245:19:0;;;;18300:9;18279:19;;;;18271:39;;;;-1:-1:-1;;;18271:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;18271:39:0;-1:-1:-1;18344:12:0;;;;;;;;;;;;-1:-1:-1;;;18344:12:0;;;;-1:-1:-1;;;;;18325:17:0;;18317:40;;;;-1:-1:-1;;;18317:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;18317:40:0;;18366:24;18376:3;18381:8;18366:9;:24::i;:::-;18403:16;:3;-1:-1:-1;;;;;18403:14:0;;:16::i;:::-;18399:214;;;18451:77;;-1:-1:-1;;;18451:77:0;;18493:10;18451:77;;;;;;-1:-1:-1;;;;;18451:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18435:13;;18451:41;;;;;;18493:10;;18505:5;;18512:8;;18522:5;;18451:77;;;;;;;;;;;18435:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18451:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18451:77:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18451:77:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18451:77:0;18581:23;;;;;;;;;;;;-1:-1:-1;;;18451:77:0;18581:23;;;18451:77;;-1:-1:-1;;;;;;;18545:34:0;;-1:-1:-1;;;18545:34:0;18537:68;;;;-1:-1:-1;;;18537:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;18537:68:0;;18399:214;;13224:1;13085;18028:590;;;;;;:::o;23092:488::-;23145:21;23157:8;23145:11;:21::i;:::-;23179:18;23200:19;;;:9;:19;;;;;;23255:6;:13;;23200:19;;-1:-1:-1;;23255:17:0;;;23179:18;;23255:6;:17;;23303:22;;;;;;;;;;;;;;23283:42;;23359:9;23338:6;23345:10;23338:18;;;;;;;;;;;;;;;;;:30;23381:6;:12;;;;;;;;;;;;;;;;;-1:-1:-1;;23381:12:0;;;;;;;;;;;;23505:20;;;:9;:20;;;;;;;:33;;;;23549:19;;;-1:-1:-1;23549:19:0;;:23;23092:488::o;25662:942::-;13199:1;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;25778:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;;25802:15;:20;;25821:1;25802:20;25799:798;;;25838:24;;;;:14;:24;;;;;:30;;:40;;;25799:798;;;25898:15;:20;;25917:1;25898:20;25895:702;;;25934:24;;;;:14;:24;;;;;:30;;:40;;;25895:702;;;26006:15;:20;;26025:1;26006:20;26003:594;;;26042:24;;;;:14;:24;;;;;:30;;:40;;;26003:594;;;26102:15;:20;;26121:1;26102:20;26099:498;;;26138:24;;;;:14;:24;;;;;:39;;:48;;;26099:498;;;26206:15;:20;;26225:1;26206:20;26203:394;;;26242:24;;;;:14;:24;;;;;:37;;:47;;;26203:394;;;26309:15;:20;;26328:1;26309:20;26306:291;;;26345:24;;;;:14;:24;;;;;:30;;:40;;;26306:291;;;26405:15;:20;;26424:1;26405:20;26402:195;;;26441:24;;;;:14;:24;;;;;:30;;:40;;;26402:195;;;26501:15;:20;;26520:1;26501:20;26498:99;;;26537:24;;;;:14;:24;;;;;:38;;:48;;;25662:942;;;;:::o;24485:127::-;-1:-1:-1;;;;;24577:18:0;24551:7;24577:18;;;:10;:18;;;;;:25;;24485:127::o;2625:132::-;2683:7;2710:39;2714:1;2717;2710:39;;;;;;;;;;;;;;;;;:3;:39::i;355:181::-;413:7;445:5;;;469:6;;;;461:46;;;;;-1:-1:-1;;;461:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18624:173;18737:1;18703:22;;;:12;:22;;;;;;-1:-1:-1;;;;;18703:22:0;:36;18699:93;;18762:22;;;;:12;:22;;;;;18755:29;;-1:-1:-1;;;;;;18755:29:0;;;18624:173::o;23590:593::-;23674:9;:19;;;;;;;;;;;;;23704:9;;;;;;;;;;;-1:-1:-1;;;23704:9:0;;;;;;;-1:-1:-1;;;;;23674:28:0;;;:19;;:28;23666:48;;;;-1:-1:-1;;;23666:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;23666:48:0;-1:-1:-1;23732:9:0;:19;;;;;;;;;;;23725:26;;-1:-1:-1;;;;;;23725:26:0;;;23793:14;:24;;;;;;-1:-1:-1;;;;;23853:17:0;;;;:10;:17;;;;;;:24;-1:-1:-1;;23853:28:0;23898:36;;;23894:246;;-1:-1:-1;;;;;23970:17:0;;23950;23970;;;:10;:17;;;;;:33;;23988:14;;23970:33;;;;;;;;;;;;;;23950:53;;24058:9;24018:10;:17;24029:5;-1:-1:-1;;;;;24018:17:0;-1:-1:-1;;;;;24018:17:0;;;;;;;;;;;;24036:18;24018:37;;;;;;;;;;;;;;;;;;;:49;;;;24082:25;;;:14;:25;;;;;:46;;;23894:246;-1:-1:-1;;;;;24152:17:0;;;;;;:10;:17;;;;;:23;;;;;;;;;;;;;;;;;;;;;;;;23590:593;;;;:::o;24193:284::-;24303:1;24272:19;;;;;;;;;;;;;24307:18;;;;;;;;;;;-1:-1:-1;;;24307:18:0;;;;;;;-1:-1:-1;;;;;24272:19:0;:33;24264:62;;;;-1:-1:-1;;;24264:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;24264:62:0;-1:-1:-1;24337:9:0;:19;;;;;;;;;;;:25;;-1:-1:-1;;;;;;24337:25:0;-1:-1:-1;;;;;24337:25:0;;;;;;;;;24375:15;;;:10;:15;;;;;27:10:-1;;-1:-1;23:18;;45:23;;24375:30:0;;;;;;;;;;24443:22;24416:24;;;:14;:24;;;;;;-1:-1:-1;;24443:26:0;;;24416:53;;24193:284::o;16626:371::-;16753:12;;;;;;;;;;;;-1:-1:-1;;;16753:12:0;;;;-1:-1:-1;;;;;16734:17:0;;16726:40;;;;-1:-1:-1;;;16726:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;16726:40:0;-1:-1:-1;16812:1:0;16781:19;;;;;;;;;;;;;16816:18;;;;;;;;;;;-1:-1:-1;;;16816:18:0;;;;;;;-1:-1:-1;;;;;16781:19:0;:33;16773:62;;;;-1:-1:-1;;;16773:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;16773:62:0;-1:-1:-1;16900:7:0;:9;;;;;;16916:26;16928:3;16933:8;16916:11;:26::i;:::-;16956:35;;16982:8;;-1:-1:-1;;;;;16956:35:0;;;16973:1;;-1:-1:-1;;;;;;;;;;;16956:35:0;16973:1;;16956:35;16626:371;;:::o;6202:231::-;6378:20;6417:8;;;6202:231::o;17005:284::-;13199:1;13168:19;;;;;;;;;;;;;13203:13;;;;;;;;;;;-1:-1:-1;;;13203:13:0;;;;;;;17095:8;;13203:13;-1:-1:-1;;;;;13168:19:0;13160:57;;;;-1:-1:-1;;;13160:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13160:57:0;-1:-1:-1;17115:18:0;17136:19;;;;;;;;;;;-1:-1:-1;;;;;17136:19:0;17162:24;17146:8;17162:14;:24::i;:::-;17193:36;17208:10;17220:8;17193:14;:36::i;:::-;17241:42;;17274:8;;17270:1;;-1:-1:-1;;;;;17241:42:0;;;-1:-1:-1;;;;;;;;;;;17241:42:0;17270:1;;17241:42;13224:1;17005:284;;:::o;3245:345::-;3331:7;3433:12;3426:5;3418:28;;;;-1:-1:-1;;;3418:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3418:28:0;;3457:9;3473:1;3469;:5;;;;;;;3245:345;-1:-1:-1;;;;;3245:345:0:o;26798:6384::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26798:6384:0;;;-1:-1:-1;26798:6384:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://6dc4457e86a30229b649ba00ed8081609021cd1bd214542f3e1870d21f5fd4a6
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading