Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
320 BFHL
Holders
39
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 BFHLLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BFHLandTerritory
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-06-01 */ // Copyright (c) 2018-2020 double jump.tokyo inc. pragma solidity 0.5.17; interface IERC721Metadata /* is ERC721 */ { /// @notice A descriptive name for a collection of NFTs in this contract function name() external view returns (string memory _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external view returns (string memory _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string memory); } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } function toHex(address account) internal pure returns (string memory) { bytes32 value = bytes32(uint256(account)); bytes memory alphabet = "0123456789abcdef"; bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint i = 0; i < 20; i++) { str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))]; str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))]; } return string(str); } } interface IERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. Return of other than the magic value MUST result in the /// transaction being reverted. /// Note: the contract address is always the message sender. /// @param _operator The address which called `safeTransferFrom` function /// @param _from The address which previously owned the token /// @param _tokenId The NFT identifier which is being transferred /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` /// unless throwing function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data ) external returns(bytes4); } library Roles { struct Role { mapping (address => bool) bearer; } function add(Role storage role, address account) internal { require(!has(role, account), "role already has the account"); role.bearer[account] = true; } function remove(Role storage role, address account) internal { require(has(role, account), "role dosen't have the account"); role.bearer[account] = false; } function has(Role storage role, address account) internal view returns (bool) { return role.bearer[account]; } } interface IApprovalProxy { function setApprovalForAll(address _owner, address _spender, bool _approved) external; function isApprovedForAll(address _owner, address _spender, bool _original) external view returns (bool); } library String { function compare(string memory _a, string memory _b) public pure returns (bool) { return (keccak256(abi.encodePacked(_a)) == keccak256(abi.encodePacked(_b))); } function cut(string memory _s, uint256 _from, uint256 _range) public pure returns (string memory) { bytes memory s = bytes(_s); require(s.length >= _from + _range, "_s length must be longer than _from + _range"); bytes memory ret = new bytes(_range); for (uint256 i = 0; i < _range; i++) { ret[i] = s[_from+i]; } return string(ret); } function concat(string memory _a, string memory _b) internal pure returns (string memory) { return string(abi.encodePacked(_a, _b)); } } interface IERC721 /* is ERC165 */ { 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 balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; function transferFrom(address _from, address _to, uint256 _tokenId) external payable; function approve(address _approved, uint256 _tokenId) external payable; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); } interface IERC165 { function supportsInterface(bytes4 interfaceID) external view returns (bool); } /// @title ERC-165 Standard Interface Detection /// @dev See https://eips.ethereum.org/EIPS/eip-165 contract ERC165 is IERC165 { bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; mapping(bytes4 => bool) private _supportedInterfaces; constructor () internal { _registerInterface(_INTERFACE_ID_ERC165); } function supportsInterface(bytes4 interfaceId) external view returns (bool) { return _supportedInterfaces[interfaceId]; } function _registerInterface(bytes4 interfaceId) internal { require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); _supportedInterfaces[interfaceId] = true; } } library Uint32 { function add(uint32 a, uint32 b) internal pure returns (uint32) { uint32 c = a + b; require(c >= a, "addition overflow"); return c; } function sub(uint32 a, uint32 b) internal pure returns (uint32) { require(a >= b, "subtraction overflow"); return a - b; } function mul(uint32 a, uint32 b) internal pure returns (uint32) { if (a == 0) { return 0; } uint32 c = a * b; require(c / a == b, "multiplication overflow"); return c; } function div(uint32 a, uint32 b) internal pure returns (uint32) { require(b != 0, "division by 0"); return a / b; } function mod(uint32 a, uint32 b) internal pure returns (uint32) { require(b != 0, "modulo by 0"); return a % b; } } library Uint256 { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(a >= b, "subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "division by 0"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "modulo by 0"); return a % b; } function toString(uint256 a) internal pure returns (string memory) { bytes32 retBytes32; uint256 len = 0; if (a == 0) { retBytes32 = "0"; len++; } else { uint256 value = a; while (value > 0) { retBytes32 = bytes32(uint256(retBytes32) / (2 ** 8)); retBytes32 |= bytes32(((value % 10) + 48) * 2 ** (8 * 31)); value /= 10; len++; } } bytes memory ret = new bytes(len); uint256 i; for (i = 0; i < len; i++) { ret[i] = retBytes32[i]; } return string(ret); } } contract ERC721 is IERC721, ERC165 { using Uint256 for uint256; using Address for address; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; bytes4 private constant _InterfaceId_ERC721 = 0x80ac58cd; mapping (uint256 => address) private _tokenOwner; mapping (address => uint256) private _balance; mapping (uint256 => address) private _tokenApproved; mapping (address => mapping (address => bool)) private _operatorApprovals; constructor () public { _registerInterface(_InterfaceId_ERC721); } function balanceOf(address _owner) public view returns (uint256) { return _balance[_owner]; } function ownerOf(uint256 _tokenId) public view returns (address) { require(_exist(_tokenId), "`_tokenId` is not a valid NFT."); return _tokenOwner[_tokenId]; } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) public payable { require(_data.length == 0, "data is not implemented"); safeTransferFrom(_from, _to, _tokenId); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) public payable { require(_checkOnERC721Received(_from, _to, _tokenId, ""), "`_to` is a smart contract and onERC721Received is invalid"); transferFrom(_from, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) public payable { require(_transferable(msg.sender, _tokenId), "Unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT."); // solhint-disable-line require(ownerOf(_tokenId) == _from, "`_from` is not the current owner."); require(_to != address(0), "`_to` is the zero address."); require(_exist(_tokenId), "`_tokenId` is not a valid NFT."); _transfer(_from, _to, _tokenId); } function approve(address _approved, uint256 _tokenId) public payable { address owner = ownerOf(_tokenId); require(msg.sender == owner || isApprovedForAll(owner, msg.sender), "Unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner."); _tokenApproved[_tokenId] = _approved; emit Approval(msg.sender, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) public { _setApprovalForAll(msg.sender, _operator, _approved); } function _setApprovalForAll(address _owner, address _operator, bool _approved) internal { _operatorApprovals[_owner][_operator] = _approved; emit ApprovalForAll(_owner, _operator, _approved); } function getApproved(uint256 _tokenId) public view returns (address) { require(_exist(_tokenId), "`_tokenId` is not a valid NFT."); return _tokenApproved[_tokenId]; } function isApprovedForAll(address _owner, address _operator) public view returns (bool) { return _isApprovedForAll(_owner, _operator); } function _isApprovedForAll(address _owner, address _operator) internal view returns (bool) { return _operatorApprovals[_owner][_operator]; } function _transferable(address _spender, uint256 _tokenId) internal view returns (bool){ address owner = ownerOf(_tokenId); return (_spender == owner || getApproved(_tokenId) == _spender || isApprovedForAll(owner, _spender)); } function _transfer(address _from, address _to, uint256 _tokenId) internal { _clearApproval(_tokenId); _tokenOwner[_tokenId] = _to; _balance[_from] = _balance[_from].sub(1); _balance[_to] = _balance[_to].add(1); emit Transfer(_from, _to, _tokenId); } function _mint(address _to, uint256 _tokenId) internal { require(!_exist(_tokenId), "mint token already exists"); _tokenOwner[_tokenId] = _to; _balance[_to] = _balance[_to].add(1); emit Transfer(address(0), _to, _tokenId); } function _burn(uint256 _tokenId) internal { require(_exist(_tokenId), "burn token does not already exists"); address owner = ownerOf(_tokenId); _clearApproval(_tokenId); _tokenOwner[_tokenId] = address(0); _balance[owner] = _balance[owner].sub(1); emit Transfer(owner, address(0), _tokenId); } function _exist(uint256 _tokenId) internal view returns (bool) { address owner = _tokenOwner[_tokenId]; return owner != address(0); } function _checkOnERC721Received( address _from, address _to, uint256 _tokenId, bytes memory _data ) internal returns (bool) { if (!_to.isContract()) { return true; } bytes4 retval = IERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); return (retval == _ERC721_RECEIVED); } function _clearApproval(uint256 tokenId) internal { if (_tokenApproved[tokenId] != address(0)) { _tokenApproved[tokenId] = address(0); } } } interface IERC173 /* is ERC165 */ { /// @dev This emits when ownership of a contract changes. event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @notice Get the address of the owner /// @return The address of the owner. function owner() external view returns (address); /// @notice Set the address of the new owner of the contract /// @param _newOwner The address of the new owner of the contract function transferOwnership(address _newOwner) external; } contract ERC173 is IERC173, ERC165 { address private _owner; constructor() public { _registerInterface(0x7f5828d0); _transferOwnership(msg.sender); } modifier onlyOwner() { require(msg.sender == owner(), "Must be owner"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address _newOwner) public onlyOwner() { _transferOwnership(_newOwner); } function _transferOwnership(address _newOwner) internal { address previousOwner = owner(); _owner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } } contract Operatable is ERC173 { using Roles for Roles.Role; event OperatorAdded(address indexed account); event OperatorRemoved(address indexed account); event Paused(address account); event Unpaused(address account); bool private _paused; Roles.Role private operators; constructor() public { operators.add(msg.sender); _paused = false; } modifier onlyOperator() { require(isOperator(msg.sender), "Must be operator"); _; } modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } function transferOwnership(address _newOwner) public onlyOperator() { _transferOwnership(_newOwner); } function isOperator(address account) public view returns (bool) { return operators.has(account); } function addOperator(address account) public onlyOperator() { operators.add(account); emit OperatorAdded(account); } function removeOperator(address account) public onlyOperator() { operators.remove(account); emit OperatorRemoved(account); } function paused() public view returns (bool) { return _paused; } function pause() public onlyOperator() whenNotPaused() { _paused = true; emit Paused(msg.sender); } function unpause() public onlyOperator() whenPaused() { _paused = false; emit Unpaused(msg.sender); } function withdrawEther() public onlyOperator() { msg.sender.transfer(address(this).balance); } } contract ERC721Metadata is IERC721Metadata, ERC721, Operatable { using Uint256 for uint256; using String for string; event UpdateTokenURIPrefix( string tokenUriPrefix ); // Metadata string private __name; string private __symbol; string private __tokenUriPrefix; constructor(string memory _name, string memory _symbol, string memory _tokenUriPrefix) public { // ERC721Metadata __name = _name; __symbol = _symbol; setTokenURIPrefix(_tokenUriPrefix); } function setTokenURIPrefix(string memory _tokenUriPrefix) public onlyOperator() { __tokenUriPrefix = _tokenUriPrefix; emit UpdateTokenURIPrefix(_tokenUriPrefix); } function name() public view returns (string memory) { return __name; } function symbol() public view returns (string memory) { return __symbol; } function tokenURI(uint256 _tokenId) public view returns (string memory) { return __tokenUriPrefix.concat(_tokenId.toString()); } } interface IERC721Mintable { event MinterAdded(address indexed account); event MinterRemoved(address indexed account); function exist(uint256 _tokenId) external view returns (bool); function mint(address _to, uint256 _tokenId) external; function isMinter(address account) external view returns (bool); function addMinter(address account) external; function removeMinter(address account) external; } contract ERC721Mintable is ERC721, IERC721Mintable, Operatable { using Roles for Roles.Role; Roles.Role private minters; constructor() public { addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender), "Must be minter"); _; } function isMinter(address account) public view returns (bool) { return minters.has(account); } function addMinter(address account) public onlyOperator() { minters.add(account); emit MinterAdded(account); } function removeMinter(address account) public onlyOperator() { minters.remove(account); emit MinterRemoved(account); } function exist(uint256 tokenId) public view returns (bool) { return _exist(tokenId); } function mint(address to, uint256 tokenId) public onlyMinter() { _mint(to, tokenId); } } interface IERC721CappedSupply /* IERC721Mintable, IERC721 */ { event SetUnitCap(uint32 _assetType, uint32 _unitCap); event SetTypeCap(uint256 _typeCap); function totalSupply() external view returns (uint256); function getTypeOffset() external view returns (uint256); function getTypeCap() external view returns (uint256); function setTypeCap(uint32 _newTypeCap) external; function getTypeCount() external view returns (uint256); function existingType(uint32 _assetType) external view returns (bool); function getUnitCap(uint32 _assetType) external view returns (uint32); function setUnitCap(uint32 _assetType, uint32 _newUnitCap) external; function mint(address _to, uint256 _tokenId) external; } /// @title ERC-721 Capped Supply /// @author double jump.tokyo inc. /// @dev see https://medium.com/@makzent/the-2x2-matrix-for-blockchain-game-ecosystems-2645be502704 contract ERC721CappedSupply is IERC721CappedSupply, ERC721Mintable { using Uint256 for uint256; using Uint32 for uint32; uint32 private assetTypeOffset; mapping(uint32 => uint32) private unitCap; mapping(uint32 => uint32) private unitCount; mapping(uint32 => bool) private unitCapIsSet; uint256 private assetTypeCap = 2**256-1; uint256 private assetTypeCount = 0; uint256 private totalCount = 0; constructor(uint32 _assetTypeOffset) public { setTypeOffset(_assetTypeOffset); } function isValidOffset(uint32 _offset) private pure returns (bool) { for (uint32 i = _offset; i > 0; i = i.div(10)) { if (i == 10) { return true; } if (i.mod(10) != 0) { return false; } } return false; } function totalSupply() public view returns (uint256) { return totalCount; } function setTypeOffset(uint32 _assetTypeOffset) private { require(isValidOffset(_assetTypeOffset), "Offset is invalid"); assetTypeCap = assetTypeCap / _assetTypeOffset; assetTypeOffset = _assetTypeOffset; } function getTypeOffset() public view returns (uint256) { return assetTypeOffset; } function setTypeCap(uint32 _newTypeCap) public onlyMinter() { require(_newTypeCap < assetTypeCap, "New type cap cannot be less than existing type cap"); require(_newTypeCap >= assetTypeCount, "New type cap must be more than current type count"); assetTypeCap = _newTypeCap; emit SetTypeCap(_newTypeCap); } function getTypeCap() public view returns (uint256) { return assetTypeCap; } function getTypeCount() public view returns (uint256) { return assetTypeCount; } function existingType(uint32 _assetType) public view returns (bool) { return unitCapIsSet[_assetType]; } function setUnitCap(uint32 _assetType, uint32 _newUnitCap) public onlyMinter() { require(_assetType != 0, "Asset Type must not be 0"); require(_newUnitCap < assetTypeOffset, "New unit cap must be less than asset type offset"); if (!existingType(_assetType)) { unitCapIsSet[_assetType] = true; assetTypeCount = assetTypeCount.add(1); require(assetTypeCount <= assetTypeCap, "Asset type cap is exceeded"); } else { require(_newUnitCap < getUnitCap(_assetType), "New unit cap must be less than previous unit cap"); require(_newUnitCap >= getUnitCount(_assetType), "New unit cap must be more than current unit count"); } unitCap[_assetType] = _newUnitCap; emit SetUnitCap(_assetType, _newUnitCap); } function getUnitCap(uint32 _assetType) public view returns (uint32) { require(existingType(_assetType), "Asset type does not exist"); return unitCap[_assetType]; } function getUnitCount(uint32 _assetType) public view returns (uint32) { return unitCount[_assetType]; } function mint(address _to, uint256 _tokenId) public onlyMinter() { require(_tokenId.mod(assetTypeOffset) != 0, "Index must not be 0"); uint32 assetType = uint32(_tokenId.div(assetTypeOffset)); unitCount[assetType] = unitCount[assetType].add(1); totalCount = totalCount.add(1); require(unitCount[assetType] <= getUnitCap(assetType), "Asset unit cap is exceed"); super.mint(_to, _tokenId); } } contract ERC721TokenPausable is ERC721,Operatable { using Roles for Roles.Role; Roles.Role private tokenPauser; event TokenPauserAdded(address indexed account); event TokenPauserRemoved(address indexed account); event TokenPaused(uint256 indexed tokenId); event TokenUnpaused(uint256 indexed tokenId); mapping (uint256 => bool) private _tokenPaused; constructor() public { tokenPauser.add(msg.sender); } modifier onlyTokenPauser() { require(isTokenPauser(msg.sender), "Only token pauser can call this method"); _; } modifier whenNotTokenPaused(uint256 _tokenId) { require(!isTokenPaused(_tokenId), "TokenPausable: paused"); _; } modifier whenTokenPaused(uint256 _tokenId) { require(isTokenPaused(_tokenId), "TokenPausable: not paused"); _; } function pauseToken(uint256 _tokenId) public onlyTokenPauser() { require(!isTokenPaused(_tokenId), "Token is already paused"); _tokenPaused[_tokenId] = true; emit TokenPaused(_tokenId); } function unpauseToken(uint256 _tokenId) public onlyTokenPauser() { require(isTokenPaused(_tokenId), "Token is not paused"); _tokenPaused[_tokenId] = false; emit TokenUnpaused(_tokenId); } function isTokenPaused(uint256 _tokenId) public view returns (bool) { return _tokenPaused[_tokenId]; } function isTokenPauser(address account) public view returns (bool) { return tokenPauser.has(account); } function addTokenPauser(address account) public onlyOperator() { tokenPauser.add(account); emit TokenPauserAdded(account); } function removeTokenPauser(address account) public onlyOperator() { tokenPauser.remove(account); emit TokenPauserRemoved(account); } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) public payable whenNotPaused() whenNotTokenPaused(_tokenId) { super.safeTransferFrom(_from, _to, _tokenId, _data); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) public payable whenNotPaused() whenNotTokenPaused(_tokenId) { super.safeTransferFrom(_from, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) public payable whenNotPaused() whenNotTokenPaused(_tokenId) { super.transferFrom(_from, _to, _tokenId); } } contract BFHLandTerritory is ERC721TokenPausable, ERC721CappedSupply(10000), ERC721Metadata("BFH:LandTerritory", "BFHL", "https://bravefrontierheroes.com/metadata/landterritories/") { event UpdateApprovalProxy(address _newProxyContract); IApprovalProxy public approvalProxy; constructor(address _approvalProxy) public { setApprovalProxy(_approvalProxy); } function setApprovalProxy(address _new) public onlyOperator() { approvalProxy = IApprovalProxy(_new); emit UpdateApprovalProxy(_new); } function setApprovalForAll(address _spender, bool _approved) public { if (address(approvalProxy) != address(0x0) && _spender.isContract()) { approvalProxy.setApprovalForAll(msg.sender, _spender, _approved); } super.setApprovalForAll(_spender, _approved); } function isApprovedForAll(address _owner, address _spender) public view returns (bool) { bool original = super.isApprovedForAll(_owner, _spender); if (address(approvalProxy) != address(0x0)) { return approvalProxy.isApprovedForAll(_owner, _spender, original); } return original; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_approvalProxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","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":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorRemoved","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_typeCap","type":"uint256"}],"name":"SetTypeCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_assetType","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"_unitCap","type":"uint32"}],"name":"SetUnitCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TokenPauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TokenPauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenUnpaused","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":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newProxyContract","type":"address"}],"name":"UpdateApprovalProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"tokenUriPrefix","type":"string"}],"name":"UpdateTokenURIPrefix","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTokenPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"approvalProxy","outputs":[{"internalType":"contract IApprovalProxy","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":true,"stateMutability":"payable","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":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"}],"name":"existingType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"getTypeCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTypeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTypeOffset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"}],"name":"getUnitCap","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"}],"name":"getUnitCount","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isTokenPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTokenPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"pauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeTokenPauser","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"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","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":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setApprovalProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_tokenUriPrefix","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_newTypeCap","type":"uint32"}],"name":"setTypeCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"},{"internalType":"uint32","name":"_newUnitCap","type":"uint32"}],"name":"setUnitCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unpauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e556000600f5560006010553480156200003f57600080fd5b5060405162005bce38038062005bce833981810160405260208110156200006557600080fd5b81019080805190602001909291905050506040518060400160405280601181526020017f4246483a4c616e645465727269746f72790000000000000000000000000000008152506040518060400160405280600481526020017f4246484c0000000000000000000000000000000000000000000000000000000081525060405180606001604052806039815260200162005b9560399139612710620001176301ffc9a760e01b6200022a60201b60201c565b6200012f6380ac58cd60e01b6200022a60201b60201c565b62000147637f5828d060e01b6200022a60201b60201c565b62000158336200033360201b60201c565b62000173336006620003e660201b62003dc11790919060201c565b6000600560146101000a81548160ff021916908315150217905550620001a9336007620003e660201b62003dc11790919060201c565b620001ba33620004ca60201b60201c565b620001cb81620005af60201b60201c565b508260119080519060200190620001e492919062000b5d565b508160129080519060200190620001fd92919062000b5d565b506200020f816200067060201b60201c565b5050506200022381620007af60201b60201c565b5062000c0c565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620002c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600062000345620008da60201b60201c565b905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003f882826200090460201b60201c565b156200046c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726f6c6520616c72656164792068617320746865206163636f756e740000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620004db336200095d60201b60201c565b6200054e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b62000569816009620003e660201b62003dc11790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620005c0816200098160201b60201c565b62000633576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4f666673657420697320696e76616c696400000000000000000000000000000081525060200191505060405180910390fd5b8063ffffffff16600e54816200064557fe5b04600e8190555080600a60006101000a81548163ffffffff021916908363ffffffff16021790555050565b62000681336200095d60201b60201c565b620006f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b80601390805190602001906200070c92919062000b5d565b507fd5e477fc51908e22673125c3b4666c4a72f49feb8665fd3875e224a58ca9659a816040518080602001828103825283818151815260200191508051906020019080838360005b838110156200077157808201518184015260208101905062000754565b50505050905090810190601f1680156200079f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b620007c0336200095d60201b60201c565b62000833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f12be4820d03362d1f48434d870b2fc1549b3a3d16d891eeaac7c3073f3ded8b781604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200097a8260066200090460201b62003d681790919060201c565b9050919050565b6000808290505b60008163ffffffff16111562000a1657600a8163ffffffff161415620009b357600191505062000a1c565b6000620009d6600a8363ffffffff1662000a2160201b62004bd41790919060201c565b63ffffffff1614620009ed57600091505062000a1c565b62000a0e600a8263ffffffff1662000abf60201b62004c701790919060201c565b905062000988565b50600090505b919050565b6000808263ffffffff16141562000aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6d6f64756c6f206279203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8163ffffffff168363ffffffff168162000ab657fe5b06905092915050565b6000808263ffffffff16141562000b3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6469766973696f6e20627920300000000000000000000000000000000000000081525060200191505060405180910390fd5b8163ffffffff168363ffffffff168162000b5457fe5b04905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000ba057805160ff191683800117855562000bd1565b8280016001018555821562000bd1579182015b8281111562000bd057825182559160200191906001019062000bb3565b5b50905062000be0919062000be4565b5090565b62000c0991905b8082111562000c0557600081600090555060010162000beb565b5090565b90565b614f798062000c1c6000396000f3fe6080604052600436106102725760003560e01c8063776ab6341161014f578063ac8a584a116100c1578063ca1728fd1161007a578063ca1728fd14611088578063d6447368146110d9578063e985e9c51461112c578063ed841bf1146111b5578063f2fde38b1461121e578063fbd395f81461126f57610272565b8063ac8a584a14610da9578063b88d4fde14610dfa578063b97d789514610eff578063c000582714610f58578063c2508c4614610f83578063c87b56dd14610fd457610272565b8063983b2d5611610113578063983b2d5614610b285780639870d7fe14610b7957806399e0dd7c14610bca5780639bb5c9c314610c92578063a22cb46514610ce3578063aa271e1a14610d4057610272565b8063776ab634146109c45780637d02b1a3146109ff5780638456cb5914610a2a5780638da5cb5b14610a4157806395d89b4114610a9857610272565b80634dd09f33116101e85780636352211e116101ac5780636352211e146107b25780636d70f7ae1461082d57806370a08231146108965780637362377b146108fb578063739f66871461091257806374db07d81461097357610272565b80634dd09f33146106375780634ebbc92a1461068e578063532efe60146106e15780635c975abb1461074257806362977e2c1461077157610272565b806323b872dd1161023a57806323b872dd1461046d5780632cff5b39146104db5780633092afd5146105065780633f4ba83a1461055757806340c10f191461056e57806342842e0e146105c957610272565b806301ffc9a71461027757806306fdde03146102e9578063081812fc14610379578063095ea7b3146103f457806318160ddd14610442575b600080fd5b34801561028357600080fd5b506102cf6004803603602081101561029a57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506112aa565b604051808215151515815260200191505060405180910390f35b3480156102f557600080fd5b506102fe611311565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033e578082015181840152602081019050610323565b50505050905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038557600080fd5b506103b26004803603602081101561039c57600080fd5b81019080803590602001909291905050506113b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104406004803603604081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061146b565b005b34801561044e57600080fd5b506104576115bf565b6040518082815260200191505060405180910390f35b6104d96004803603606081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115c9565b005b3480156104e757600080fd5b506104f06116da565b6040518082815260200191505060405180910390f35b34801561051257600080fd5b506105556004803603602081101561052957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e4565b005b34801561056357600080fd5b5061056c6117b9565b005b34801561057a57600080fd5b506105c76004803603604081101561059157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611936565b005b610635600480360360608110156105df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611beb565b005b34801561064357600080fd5b5061064c611cfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069a57600080fd5b506106c7600480360360208110156106b157600080fd5b8101908080359060200190929190505050611d22565b604051808215151515815260200191505060405180910390f35b3480156106ed57600080fd5b506107206004803603602081101561070457600080fd5b81019080803563ffffffff169060200190929190505050611d34565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b50610757611d6d565b604051808215151515815260200191505060405180910390f35b34801561077d57600080fd5b506107b06004803603602081101561079457600080fd5b81019080803563ffffffff169060200190929190505050611d84565b005b3480156107be57600080fd5b506107eb600480360360208110156107d557600080fd5b8101908080359060200190929190505050611f0d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083957600080fd5b5061087c6004803603602081101561085057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fc5565b604051808215151515815260200191505060405180910390f35b3480156108a257600080fd5b506108e5600480360360208110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe2565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061091061202b565b005b34801561091e57600080fd5b506109516004803603602081101561093557600080fd5b81019080803563ffffffff1690602001909291905050506120ef565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561097f57600080fd5b506109c26004803603602081101561099657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121a3565b005b3480156109d057600080fd5b506109fd600480360360208110156109e757600080fd5b8101908080359060200190929190505050612278565b005b348015610a0b57600080fd5b50610a146123ad565b6040518082815260200191505060405180910390f35b348015610a3657600080fd5b50610a3f6123b7565b005b348015610a4d57600080fd5b50610a56612535565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa457600080fd5b50610aad61255f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aed578082015181840152602081019050610ad2565b50505050905090810190601f168015610b1a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b3457600080fd5b50610b7760048036036020811015610b4b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612601565b005b348015610b8557600080fd5b50610bc860048036036020811015610b9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d6565b005b348015610bd657600080fd5b50610c9060048036036020811015610bed57600080fd5b8101908080359060200190640100000000811115610c0a57600080fd5b820183602082011115610c1c57600080fd5b80359060200191846001830284011164010000000083111715610c3e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506127ab565b005b348015610c9e57600080fd5b50610ce160048036036020811015610cb557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128dc565b005b348015610cef57600080fd5b50610d3e60048036036040811015610d0657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506129fe565b005b348015610d4c57600080fd5b50610d8f60048036036020811015610d6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b85565b604051808215151515815260200191505060405180910390f35b348015610db557600080fd5b50610df860048036036020811015610dcc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ba2565b005b610efd60048036036080811015610e1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610e7757600080fd5b820183602082011115610e8957600080fd5b80359060200191846001830284011164010000000083111715610eab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612c77565b005b348015610f0b57600080fd5b50610f3e60048036036020811015610f2257600080fd5b81019080803563ffffffff169060200190929190505050612d8a565b604051808215151515815260200191505060405180910390f35b348015610f6457600080fd5b50610f6d612dc0565b6040518082815260200191505060405180910390f35b348015610f8f57600080fd5b50610fd260048036036020811015610fa657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612de0565b005b348015610fe057600080fd5b5061100d60048036036020811015610ff757600080fd5b8101908080359060200190929190505050612eb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104d578082015181840152602081019050611032565b50505050905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561109457600080fd5b506110d7600480360360408110156110ab57600080fd5b81019080803563ffffffff169060200190929190803563ffffffff169060200190929190505050612f73565b005b3480156110e557600080fd5b50611112600480360360208110156110fc57600080fd5b8101908080359060200190929190505050613334565b604051808215151515815260200191505060405180910390f35b34801561113857600080fd5b5061119b6004803603604081101561114f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061335e565b604051808215151515815260200191505060405180910390f35b3480156111c157600080fd5b50611204600480360360208110156111d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134f0565b604051808215151515815260200191505060405180910390f35b34801561122a57600080fd5b5061126d6004803603602081101561124157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061350d565b005b34801561127b57600080fd5b506112a86004803603602081101561129257600080fd5b8101908080359060200190929190505050613594565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113a95780601f1061137e576101008083540402835291602001916113a9565b820191906000526020600020905b81548152906001019060200180831161138c57829003601f168201915b5050505050905090565b60006113be826136ca565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e000081525060200191505060405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061147682611f0d565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114b857506114b7813361335e565b5b61150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d815260200180614e3e605d913960600191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000601054905090565b600560149054906101000a900460ff161561164c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b8061165681613334565b156116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e5061757361626c653a20706175736564000000000000000000000081525060200191505060405180910390fd5b6116d484848461373c565b50505050565b6000600e54905090565b6116ed33611fc5565b61175f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b61177381600961395590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6117c233611fc5565b611834576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b600560149054906101000a900460ff166118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b61193f33612b85565b6119b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b60006119de600a60009054906101000a900463ffffffff1663ffffffff1683613a2f90919063ffffffff16565b1415611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e646578206d757374206e6f7420626520300000000000000000000000000081525060200191505060405180910390fd5b6000611a7f600a60009054906101000a900463ffffffff1663ffffffff1683613ab990919063ffffffff16565b9050611aca6001600c60008463ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff16613b4390919063ffffffff16565b600c60008363ffffffff1663ffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff160217905550611b1d6001601054613bd790919063ffffffff16565b601081905550611b2c816120ef565b63ffffffff16600c60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff161115611bdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f417373657420756e69742063617020697320657863656564000000000000000081525060200191505060405180910390fd5b611be68383613c5f565b505050565b600560149054906101000a900460ff1615611c6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b80611c7881613334565b15611ceb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e5061757361626c653a20706175736564000000000000000000000081525060200191505060405180910390fd5b611cf6848484613ce8565b50505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d2d826136ca565b9050919050565b6000600c60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff169050919050565b6000600560149054906101000a900460ff16905090565b611d8d33612b85565b611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b600e548163ffffffff1610611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614ebc6032913960400191505060405180910390fd5b600f548163ffffffff161015611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180614eee6031913960400191505060405180910390fd5b8063ffffffff16600e819055507fcffe07c9e7982b6c56cb569d21caedd78c8fbc68a0cbdc4d963c21eae6e8f91081604051808263ffffffff16815260200191505060405180910390a150565b6000611f18826136ca565b611f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e000081525060200191505060405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000611fdb826006613d6890919063ffffffff16565b9050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61203433611fc5565b6120a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156120ec573d6000803e3d6000fd5b50565b60006120fa82612d8a565b61216c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4173736574207479706520646f6573206e6f742065786973740000000000000081525060200191505060405180910390fd5b600b60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff169050919050565b6121ac33611fc5565b61221e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612232816007613dc190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fff12d576e2fecf516eb406e6618d5e97bcc8046690863b984069b15ada11d61260405160405180910390a250565b612281336134f0565b6122d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f1f6026913960400191505060405180910390fd5b6122df81613334565b612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f546f6b656e206973206e6f74207061757365640000000000000000000000000081525060200191505060405180910390fd5b60006008600083815260200190815260200160002060006101000a81548160ff021916908315150217905550807f0cfa9cc56bacd896c88effb6a4051b954fcaaf2de7ae98882e39f294ea65184360405160405180910390a250565b6000600f54905090565b6123c033611fc5565b612432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b600560149054906101000a900460ff16156124b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125f75780601f106125cc576101008083540402835291602001916125f7565b820191906000526020600020905b8154815290600101906020018083116125da57829003601f168201915b5050505050905090565b61260a33611fc5565b61267c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612690816009613dc190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6126df33611fc5565b612751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612765816006613dc190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d60405160405180910390a250565b6127b433611fc5565b612826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b806013908051906020019061283c929190614b2f565b507fd5e477fc51908e22673125c3b4666c4a72f49feb8665fd3875e224a58ca9659a816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561289f578082015181840152602081019050612884565b50505050905090810190601f1680156128cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6128e533611fc5565b612957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f12be4820d03362d1f48434d870b2fc1549b3a3d16d891eeaac7c3073f3ded8b781604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a785750612a778273ffffffffffffffffffffffffffffffffffffffff16613e9c565b5b15612b7757601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663367605ca3384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019350505050600060405180830381600087803b158015612b5e57600080fd5b505af1158015612b72573d6000803e3d6000fd5b505050505b612b818282613eaf565b5050565b6000612b9b826009613d6890919063ffffffff16565b9050919050565b612bab33611fc5565b612c1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612c3181600661395590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d60405160405180910390a250565b600560149054906101000a900460ff1615612cfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b81612d0481613334565b15612d77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e5061757361626c653a20706175736564000000000000000000000081525060200191505060405180910390fd5b612d8385858585613ebe565b5050505050565b6000600d60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600a60009054906101000a900463ffffffff1663ffffffff16905090565b612de933611fc5565b612e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612e6f81600761395590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f2186c7d8e4b2d6a73790355b1a465872175798d2366146e638fc885d54460b8560405160405180910390a250565b6060612f6c612ec383613f46565b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612f595780601f10612f2e57610100808354040283529160200191612f59565b820191906000526020600020905b815481529060010190602001808311612f3c57829003601f168201915b50505050506140a890919063ffffffff16565b9050919050565b612f7c33612b85565b612fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b60008263ffffffff16141561306b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f41737365742054797065206d757374206e6f742062652030000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900463ffffffff1663ffffffff168163ffffffff16106130e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614e0e6030913960400191505060405180910390fd5b6130ea82612d8a565b6131c1576001600d60008463ffffffff1663ffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061313c6001600f54613bd790919063ffffffff16565b600f81905550600e54600f5411156131bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f417373657420747970652063617020697320657863656564656400000000000081525060200191505060405180910390fd5b61329b565b6131ca826120ef565b63ffffffff168163ffffffff161061322d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614d746030913960400191505060405180910390fd5b61323682611d34565b63ffffffff168163ffffffff16101561329a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180614ddd6031913960400191505060405180910390fd5b5b80600b60008463ffffffff1663ffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055507f30525f07d1d2ff6b7c2b1817c13c37935c691304253dd353909b5c0381a9dc408282604051808363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff1681526020019250505060405180910390a15050565b60006008600083815260200190815260200160002060009054906101000a900460ff169050919050565b60008061336b8484614170565b9050600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134e557601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638dccfc528585846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060206040518083038186803b1580156134a257600080fd5b505afa1580156134b6573d6000803e3d6000fd5b505050506040513d60208110156134cc57600080fd5b81019080805190602001909291905050509150506134ea565b809150505b92915050565b6000613506826007613d6890919063ffffffff16565b9050919050565b61351633611fc5565b613588576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b61359181614184565b50565b61359d336134f0565b6135f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f1f6026913960400191505060405180910390fd5b6135fb81613334565b1561366e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e20697320616c72656164792070617573656400000000000000000081525060200191505060405180910390fd5b60016008600083815260200190815260200160002060006101000a81548160ff021916908315150217905550807fc2d830ac158eec7b589dfadf012044c95b8646222991556ab4cd311e38bc77d160405160405180910390a250565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b613746338261422f565b61379b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526067815260200180614d0d6067913960800191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166137bb82611f0d565b73ffffffffffffffffffffffffffffffffffffffff1614613827576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614e9b6021913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f605f746f6020697320746865207a65726f20616464726573732e00000000000081525060200191505060405180910390fd5b6138d3816136ca565b613945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e000081525060200191505060405180910390fd5b6139508383836142c4565b505050565b61395f8282613d68565b6139d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f726f6c6520646f73656e2774206861766520746865206163636f756e7400000081525060200191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080821415613aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6d6f64756c6f206279203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818381613ab057fe5b06905092915050565b600080821415613b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6469766973696f6e20627920300000000000000000000000000000000000000081525060200191505060405180910390fd5b818381613b3a57fe5b04905092915050565b60008082840190508363ffffffff168163ffffffff161015613bcd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6164646974696f6e206f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600080828401905083811015613c55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6164646974696f6e206f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b613c6833612b85565b613cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b613ce482826144ab565b5050565b613d038383836040518060200160405280600081525061466f565b613d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180614da46039913960400191505060405180910390fd5b613d638383836115c9565b505050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613dcb8282613d68565b15613e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726f6c6520616c72656164792068617320746865206163636f756e740000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b613eba338383614858565b5050565b6000815114613f35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f64617461206973206e6f7420696d706c656d656e74656400000000000000000081525060200191505060405180910390fd5b613f40848484611beb565b50505050565b6060600080600090506000841415613f88577f300000000000000000000000000000000000000000000000000000000000000091508080600101915050613ffe565b60008490505b6000811115613ffc576101008360001c81613fa557fe5b0460001b92507f01000000000000000000000000000000000000000000000000000000000000006030600a8381613fd857fe5b06010260001b83179250600a8181613fec57fe5b0490508180600101925050613f8e565b505b6060816040519080825280601f01601f1916602001820160405280156140335781602001600182028038833980820191505090505b50905060008090505b8281101561409c5783816020811061405057fe5b1a60f81b82828151811061406057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061403c565b81945050505050919050565b606082826040516020018083805190602001908083835b602083106140e257805182526020820191506020810190506020830392506140bf565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083106141335780518252602082019150602081019050602083039250614110565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b600061417c838361495a565b905092915050565b600061418e612535565b905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008061423b83611f0d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806142aa57508373ffffffffffffffffffffffffffffffffffffffff16614292846113b3565b73ffffffffffffffffffffffffffffffffffffffff16145b806142bb57506142ba818561335e565b5b91505092915050565b6142cd816149ee565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506143726001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614aac90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144086001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6144b4816136ca565b15614527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6d696e7420746f6b656e20616c7265616479206578697374730000000000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145cc6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006146908473ffffffffffffffffffffffffffffffffffffffff16613e9c565b61469d5760019050614850565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561477857808201518184015260208101905061475d565b50505050905090810190601f1680156147a55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156147c757600080fd5b505af11580156147db573d6000803e3d6000fd5b505050506040513d60208110156147f157600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a3505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614aa95760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600081831015614b24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7375627472616374696f6e206f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614b7057805160ff1916838001178555614b9e565b82800160010185558215614b9e579182015b82811115614b9d578251825591602001919060010190614b82565b5b509050614bab9190614baf565b5090565b614bd191905b80821115614bcd576000816000905550600101614bb5565b5090565b90565b6000808263ffffffff161415614c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6d6f64756c6f206279203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8163ffffffff168363ffffffff1681614c6757fe5b06905092915050565b6000808263ffffffff161415614cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6469766973696f6e20627920300000000000000000000000000000000000000081525060200191505060405180910390fd5b8163ffffffff168363ffffffff1681614d0357fe5b0490509291505056fe556e6c65737320606d73672e73656e64657260206973207468652063757272656e74206f776e65722c20616e20617574686f72697a6564206f70657261746f722c206f722074686520617070726f766564206164647265737320666f722074686973204e46542e4e657720756e697420636170206d757374206265206c657373207468616e2070726576696f757320756e697420636170605f746f60206973206120736d61727420636f6e747261637420616e64206f6e455243373231526563656976656420697320696e76616c69644e657720756e697420636170206d757374206265206d6f7265207468616e2063757272656e7420756e697420636f756e744e657720756e697420636170206d757374206265206c657373207468616e2061737365742074797065206f6666736574556e6c65737320606d73672e73656e64657260206973207468652063757272656e74204e4654206f776e65722c206f7220616e20617574686f72697a6564206f70657261746f72206f66207468652063757272656e74206f776e65722e605f66726f6d60206973206e6f74207468652063757272656e74206f776e65722e4e65772074797065206361702063616e6e6f74206265206c657373207468616e206578697374696e672074797065206361704e6577207479706520636170206d757374206265206d6f7265207468616e2063757272656e74207479706520636f756e744f6e6c7920746f6b656e207061757365722063616e2063616c6c2074686973206d6574686f64a265627a7a72315820ba2ee7403bc3ef745afefe5c6351f6fb712469b15b2177655d00f8b181f927b564736f6c6343000511003268747470733a2f2f627261766566726f6e746965726865726f65732e636f6d2f6d657461646174612f6c616e647465727269746f726965732f000000000000000000000000aa06e5c117dbe8bc52dbaa18aaf447eda556b13c
Deployed Bytecode
0x6080604052600436106102725760003560e01c8063776ab6341161014f578063ac8a584a116100c1578063ca1728fd1161007a578063ca1728fd14611088578063d6447368146110d9578063e985e9c51461112c578063ed841bf1146111b5578063f2fde38b1461121e578063fbd395f81461126f57610272565b8063ac8a584a14610da9578063b88d4fde14610dfa578063b97d789514610eff578063c000582714610f58578063c2508c4614610f83578063c87b56dd14610fd457610272565b8063983b2d5611610113578063983b2d5614610b285780639870d7fe14610b7957806399e0dd7c14610bca5780639bb5c9c314610c92578063a22cb46514610ce3578063aa271e1a14610d4057610272565b8063776ab634146109c45780637d02b1a3146109ff5780638456cb5914610a2a5780638da5cb5b14610a4157806395d89b4114610a9857610272565b80634dd09f33116101e85780636352211e116101ac5780636352211e146107b25780636d70f7ae1461082d57806370a08231146108965780637362377b146108fb578063739f66871461091257806374db07d81461097357610272565b80634dd09f33146106375780634ebbc92a1461068e578063532efe60146106e15780635c975abb1461074257806362977e2c1461077157610272565b806323b872dd1161023a57806323b872dd1461046d5780632cff5b39146104db5780633092afd5146105065780633f4ba83a1461055757806340c10f191461056e57806342842e0e146105c957610272565b806301ffc9a71461027757806306fdde03146102e9578063081812fc14610379578063095ea7b3146103f457806318160ddd14610442575b600080fd5b34801561028357600080fd5b506102cf6004803603602081101561029a57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506112aa565b604051808215151515815260200191505060405180910390f35b3480156102f557600080fd5b506102fe611311565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033e578082015181840152602081019050610323565b50505050905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038557600080fd5b506103b26004803603602081101561039c57600080fd5b81019080803590602001909291905050506113b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104406004803603604081101561040a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061146b565b005b34801561044e57600080fd5b506104576115bf565b6040518082815260200191505060405180910390f35b6104d96004803603606081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115c9565b005b3480156104e757600080fd5b506104f06116da565b6040518082815260200191505060405180910390f35b34801561051257600080fd5b506105556004803603602081101561052957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e4565b005b34801561056357600080fd5b5061056c6117b9565b005b34801561057a57600080fd5b506105c76004803603604081101561059157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611936565b005b610635600480360360608110156105df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611beb565b005b34801561064357600080fd5b5061064c611cfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069a57600080fd5b506106c7600480360360208110156106b157600080fd5b8101908080359060200190929190505050611d22565b604051808215151515815260200191505060405180910390f35b3480156106ed57600080fd5b506107206004803603602081101561070457600080fd5b81019080803563ffffffff169060200190929190505050611d34565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b50610757611d6d565b604051808215151515815260200191505060405180910390f35b34801561077d57600080fd5b506107b06004803603602081101561079457600080fd5b81019080803563ffffffff169060200190929190505050611d84565b005b3480156107be57600080fd5b506107eb600480360360208110156107d557600080fd5b8101908080359060200190929190505050611f0d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083957600080fd5b5061087c6004803603602081101561085057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fc5565b604051808215151515815260200191505060405180910390f35b3480156108a257600080fd5b506108e5600480360360208110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe2565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061091061202b565b005b34801561091e57600080fd5b506109516004803603602081101561093557600080fd5b81019080803563ffffffff1690602001909291905050506120ef565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561097f57600080fd5b506109c26004803603602081101561099657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121a3565b005b3480156109d057600080fd5b506109fd600480360360208110156109e757600080fd5b8101908080359060200190929190505050612278565b005b348015610a0b57600080fd5b50610a146123ad565b6040518082815260200191505060405180910390f35b348015610a3657600080fd5b50610a3f6123b7565b005b348015610a4d57600080fd5b50610a56612535565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa457600080fd5b50610aad61255f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aed578082015181840152602081019050610ad2565b50505050905090810190601f168015610b1a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b3457600080fd5b50610b7760048036036020811015610b4b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612601565b005b348015610b8557600080fd5b50610bc860048036036020811015610b9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d6565b005b348015610bd657600080fd5b50610c9060048036036020811015610bed57600080fd5b8101908080359060200190640100000000811115610c0a57600080fd5b820183602082011115610c1c57600080fd5b80359060200191846001830284011164010000000083111715610c3e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506127ab565b005b348015610c9e57600080fd5b50610ce160048036036020811015610cb557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128dc565b005b348015610cef57600080fd5b50610d3e60048036036040811015610d0657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506129fe565b005b348015610d4c57600080fd5b50610d8f60048036036020811015610d6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b85565b604051808215151515815260200191505060405180910390f35b348015610db557600080fd5b50610df860048036036020811015610dcc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ba2565b005b610efd60048036036080811015610e1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610e7757600080fd5b820183602082011115610e8957600080fd5b80359060200191846001830284011164010000000083111715610eab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612c77565b005b348015610f0b57600080fd5b50610f3e60048036036020811015610f2257600080fd5b81019080803563ffffffff169060200190929190505050612d8a565b604051808215151515815260200191505060405180910390f35b348015610f6457600080fd5b50610f6d612dc0565b6040518082815260200191505060405180910390f35b348015610f8f57600080fd5b50610fd260048036036020811015610fa657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612de0565b005b348015610fe057600080fd5b5061100d60048036036020811015610ff757600080fd5b8101908080359060200190929190505050612eb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561104d578082015181840152602081019050611032565b50505050905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561109457600080fd5b506110d7600480360360408110156110ab57600080fd5b81019080803563ffffffff169060200190929190803563ffffffff169060200190929190505050612f73565b005b3480156110e557600080fd5b50611112600480360360208110156110fc57600080fd5b8101908080359060200190929190505050613334565b604051808215151515815260200191505060405180910390f35b34801561113857600080fd5b5061119b6004803603604081101561114f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061335e565b604051808215151515815260200191505060405180910390f35b3480156111c157600080fd5b50611204600480360360208110156111d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134f0565b604051808215151515815260200191505060405180910390f35b34801561122a57600080fd5b5061126d6004803603602081101561124157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061350d565b005b34801561127b57600080fd5b506112a86004803603602081101561129257600080fd5b8101908080359060200190929190505050613594565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113a95780601f1061137e576101008083540402835291602001916113a9565b820191906000526020600020905b81548152906001019060200180831161138c57829003601f168201915b5050505050905090565b60006113be826136ca565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e000081525060200191505060405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061147682611f0d565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114b857506114b7813361335e565b5b61150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d815260200180614e3e605d913960600191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000601054905090565b600560149054906101000a900460ff161561164c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b8061165681613334565b156116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e5061757361626c653a20706175736564000000000000000000000081525060200191505060405180910390fd5b6116d484848461373c565b50505050565b6000600e54905090565b6116ed33611fc5565b61175f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b61177381600961395590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6117c233611fc5565b611834576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b600560149054906101000a900460ff166118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b61193f33612b85565b6119b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b60006119de600a60009054906101000a900463ffffffff1663ffffffff1683613a2f90919063ffffffff16565b1415611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496e646578206d757374206e6f7420626520300000000000000000000000000081525060200191505060405180910390fd5b6000611a7f600a60009054906101000a900463ffffffff1663ffffffff1683613ab990919063ffffffff16565b9050611aca6001600c60008463ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff16613b4390919063ffffffff16565b600c60008363ffffffff1663ffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff160217905550611b1d6001601054613bd790919063ffffffff16565b601081905550611b2c816120ef565b63ffffffff16600c60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff161115611bdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f417373657420756e69742063617020697320657863656564000000000000000081525060200191505060405180910390fd5b611be68383613c5f565b505050565b600560149054906101000a900460ff1615611c6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b80611c7881613334565b15611ceb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e5061757361626c653a20706175736564000000000000000000000081525060200191505060405180910390fd5b611cf6848484613ce8565b50505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d2d826136ca565b9050919050565b6000600c60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff169050919050565b6000600560149054906101000a900460ff16905090565b611d8d33612b85565b611dff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b600e548163ffffffff1610611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614ebc6032913960400191505060405180910390fd5b600f548163ffffffff161015611ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180614eee6031913960400191505060405180910390fd5b8063ffffffff16600e819055507fcffe07c9e7982b6c56cb569d21caedd78c8fbc68a0cbdc4d963c21eae6e8f91081604051808263ffffffff16815260200191505060405180910390a150565b6000611f18826136ca565b611f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e000081525060200191505060405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000611fdb826006613d6890919063ffffffff16565b9050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61203433611fc5565b6120a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156120ec573d6000803e3d6000fd5b50565b60006120fa82612d8a565b61216c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4173736574207479706520646f6573206e6f742065786973740000000000000081525060200191505060405180910390fd5b600b60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900463ffffffff169050919050565b6121ac33611fc5565b61221e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612232816007613dc190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fff12d576e2fecf516eb406e6618d5e97bcc8046690863b984069b15ada11d61260405160405180910390a250565b612281336134f0565b6122d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f1f6026913960400191505060405180910390fd5b6122df81613334565b612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f546f6b656e206973206e6f74207061757365640000000000000000000000000081525060200191505060405180910390fd5b60006008600083815260200190815260200160002060006101000a81548160ff021916908315150217905550807f0cfa9cc56bacd896c88effb6a4051b954fcaaf2de7ae98882e39f294ea65184360405160405180910390a250565b6000600f54905090565b6123c033611fc5565b612432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b600560149054906101000a900460ff16156124b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125f75780601f106125cc576101008083540402835291602001916125f7565b820191906000526020600020905b8154815290600101906020018083116125da57829003601f168201915b5050505050905090565b61260a33611fc5565b61267c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612690816009613dc190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6126df33611fc5565b612751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612765816006613dc190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d60405160405180910390a250565b6127b433611fc5565b612826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b806013908051906020019061283c929190614b2f565b507fd5e477fc51908e22673125c3b4666c4a72f49feb8665fd3875e224a58ca9659a816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561289f578082015181840152602081019050612884565b50505050905090810190601f1680156128cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6128e533611fc5565b612957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f12be4820d03362d1f48434d870b2fc1549b3a3d16d891eeaac7c3073f3ded8b781604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a785750612a778273ffffffffffffffffffffffffffffffffffffffff16613e9c565b5b15612b7757601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663367605ca3384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019350505050600060405180830381600087803b158015612b5e57600080fd5b505af1158015612b72573d6000803e3d6000fd5b505050505b612b818282613eaf565b5050565b6000612b9b826009613d6890919063ffffffff16565b9050919050565b612bab33611fc5565b612c1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612c3181600661395590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d60405160405180910390a250565b600560149054906101000a900460ff1615612cfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b81612d0481613334565b15612d77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f546f6b656e5061757361626c653a20706175736564000000000000000000000081525060200191505060405180910390fd5b612d8385858585613ebe565b5050505050565b6000600d60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600a60009054906101000a900463ffffffff1663ffffffff16905090565b612de933611fc5565b612e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b612e6f81600761395590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f2186c7d8e4b2d6a73790355b1a465872175798d2366146e638fc885d54460b8560405160405180910390a250565b6060612f6c612ec383613f46565b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612f595780601f10612f2e57610100808354040283529160200191612f59565b820191906000526020600020905b815481529060010190602001808311612f3c57829003601f168201915b50505050506140a890919063ffffffff16565b9050919050565b612f7c33612b85565b612fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b60008263ffffffff16141561306b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f41737365742054797065206d757374206e6f742062652030000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900463ffffffff1663ffffffff168163ffffffff16106130e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614e0e6030913960400191505060405180910390fd5b6130ea82612d8a565b6131c1576001600d60008463ffffffff1663ffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061313c6001600f54613bd790919063ffffffff16565b600f81905550600e54600f5411156131bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f417373657420747970652063617020697320657863656564656400000000000081525060200191505060405180910390fd5b61329b565b6131ca826120ef565b63ffffffff168163ffffffff161061322d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614d746030913960400191505060405180910390fd5b61323682611d34565b63ffffffff168163ffffffff16101561329a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180614ddd6031913960400191505060405180910390fd5b5b80600b60008463ffffffff1663ffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055507f30525f07d1d2ff6b7c2b1817c13c37935c691304253dd353909b5c0381a9dc408282604051808363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff1681526020019250505060405180910390a15050565b60006008600083815260200190815260200160002060009054906101000a900460ff169050919050565b60008061336b8484614170565b9050600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134e557601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638dccfc528585846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060206040518083038186803b1580156134a257600080fd5b505afa1580156134b6573d6000803e3d6000fd5b505050506040513d60208110156134cc57600080fd5b81019080805190602001909291905050509150506134ea565b809150505b92915050565b6000613506826007613d6890919063ffffffff16565b9050919050565b61351633611fc5565b613588576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d757374206265206f70657261746f720000000000000000000000000000000081525060200191505060405180910390fd5b61359181614184565b50565b61359d336134f0565b6135f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614f1f6026913960400191505060405180910390fd5b6135fb81613334565b1561366e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e20697320616c72656164792070617573656400000000000000000081525060200191505060405180910390fd5b60016008600083815260200190815260200160002060006101000a81548160ff021916908315150217905550807fc2d830ac158eec7b589dfadf012044c95b8646222991556ab4cd311e38bc77d160405160405180910390a250565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b613746338261422f565b61379b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526067815260200180614d0d6067913960800191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166137bb82611f0d565b73ffffffffffffffffffffffffffffffffffffffff1614613827576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614e9b6021913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f605f746f6020697320746865207a65726f20616464726573732e00000000000081525060200191505060405180910390fd5b6138d3816136ca565b613945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e000081525060200191505060405180910390fd5b6139508383836142c4565b505050565b61395f8282613d68565b6139d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f726f6c6520646f73656e2774206861766520746865206163636f756e7400000081525060200191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080821415613aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6d6f64756c6f206279203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818381613ab057fe5b06905092915050565b600080821415613b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6469766973696f6e20627920300000000000000000000000000000000000000081525060200191505060405180910390fd5b818381613b3a57fe5b04905092915050565b60008082840190508363ffffffff168163ffffffff161015613bcd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6164646974696f6e206f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600080828401905083811015613c55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6164646974696f6e206f766572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b613c6833612b85565b613cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206d696e74657200000000000000000000000000000000000081525060200191505060405180910390fd5b613ce482826144ab565b5050565b613d038383836040518060200160405280600081525061466f565b613d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180614da46039913960400191505060405180910390fd5b613d638383836115c9565b505050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613dcb8282613d68565b15613e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726f6c6520616c72656164792068617320746865206163636f756e740000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b613eba338383614858565b5050565b6000815114613f35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f64617461206973206e6f7420696d706c656d656e74656400000000000000000081525060200191505060405180910390fd5b613f40848484611beb565b50505050565b6060600080600090506000841415613f88577f300000000000000000000000000000000000000000000000000000000000000091508080600101915050613ffe565b60008490505b6000811115613ffc576101008360001c81613fa557fe5b0460001b92507f01000000000000000000000000000000000000000000000000000000000000006030600a8381613fd857fe5b06010260001b83179250600a8181613fec57fe5b0490508180600101925050613f8e565b505b6060816040519080825280601f01601f1916602001820160405280156140335781602001600182028038833980820191505090505b50905060008090505b8281101561409c5783816020811061405057fe5b1a60f81b82828151811061406057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061403c565b81945050505050919050565b606082826040516020018083805190602001908083835b602083106140e257805182526020820191506020810190506020830392506140bf565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083106141335780518252602082019150602081019050602083039250614110565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b600061417c838361495a565b905092915050565b600061418e612535565b905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008061423b83611f0d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806142aa57508373ffffffffffffffffffffffffffffffffffffffff16614292846113b3565b73ffffffffffffffffffffffffffffffffffffffff16145b806142bb57506142ba818561335e565b5b91505092915050565b6142cd816149ee565b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506143726001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614aac90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144086001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6144b4816136ca565b15614527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6d696e7420746f6b656e20616c7265616479206578697374730000000000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506145cc6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006146908473ffffffffffffffffffffffffffffffffffffffff16613e9c565b61469d5760019050614850565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561477857808201518184015260208101905061475d565b50505050905090810190601f1680156147a55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156147c757600080fd5b505af11580156147db573d6000803e3d6000fd5b505050506040513d60208110156147f157600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a3505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614aa95760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600081831015614b24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7375627472616374696f6e206f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614b7057805160ff1916838001178555614b9e565b82800160010185558215614b9e579182015b82811115614b9d578251825591602001919060010190614b82565b5b509050614bab9190614baf565b5090565b614bd191905b80821115614bcd576000816000905550600101614bb5565b5090565b90565b6000808263ffffffff161415614c52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6d6f64756c6f206279203000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8163ffffffff168363ffffffff1681614c6757fe5b06905092915050565b6000808263ffffffff161415614cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6469766973696f6e20627920300000000000000000000000000000000000000081525060200191505060405180910390fd5b8163ffffffff168363ffffffff1681614d0357fe5b0490509291505056fe556e6c65737320606d73672e73656e64657260206973207468652063757272656e74206f776e65722c20616e20617574686f72697a6564206f70657261746f722c206f722074686520617070726f766564206164647265737320666f722074686973204e46542e4e657720756e697420636170206d757374206265206c657373207468616e2070726576696f757320756e697420636170605f746f60206973206120736d61727420636f6e747261637420616e64206f6e455243373231526563656976656420697320696e76616c69644e657720756e697420636170206d757374206265206d6f7265207468616e2063757272656e7420756e697420636f756e744e657720756e697420636170206d757374206265206c657373207468616e2061737365742074797065206f6666736574556e6c65737320606d73672e73656e64657260206973207468652063757272656e74204e4654206f776e65722c206f7220616e20617574686f72697a6564206f70657261746f72206f66207468652063757272656e74206f776e65722e605f66726f6d60206973206e6f74207468652063757272656e74206f776e65722e4e65772074797065206361702063616e6e6f74206265206c657373207468616e206578697374696e672074797065206361704e6577207479706520636170206d757374206265206d6f7265207468616e2063757272656e74207479706520636f756e744f6e6c7920746f6b656e207061757365722063616e2063616c6c2074686973206d6574686f64a265627a7a72315820ba2ee7403bc3ef745afefe5c6351f6fb712469b15b2177655d00f8b181f927b564736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000aa06e5c117dbe8bc52dbaa18aaf447eda556b13c
-----Decoded View---------------
Arg [0] : _approvalProxy (address): 0xAa06e5c117dbe8bC52dBaa18AaF447eDA556B13c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000aa06e5c117dbe8bc52dbaa18aaf447eda556b13c
Deployed Bytecode Sourcemap
26618:1290:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5770:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5770:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5770:135:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17720:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17720:84:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17720:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11430:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11430:206:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11430:206:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10631:419;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10631:419:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21240:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21240:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26395:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26395:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22042:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22042:90:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19066:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19066:141:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19066:141:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16684:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16684:124:0;;;:::i;:::-;;23527:448;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23527:448:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23527:448:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26163:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26163:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26952:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26952:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19219:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19219:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19219:100:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23402:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23402:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23402:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16468:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16468:78:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21688:346;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21688:346:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21688:346:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9279:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9279:199:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9279:199:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16046:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16046:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16046:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9164:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9164:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9164:107:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16816:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16816:108:0;;;:::i;:::-;;23208:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23208:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23208:186:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25586:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25586:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25586:147:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;25110:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25110:219:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25110:219:0;;;;;;;;;;;;;;;;;:::i;:::-;;22140:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22140:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16554:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16554:122:0;;;:::i;:::-;;14784:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14784:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17812:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17812:88:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17812:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18925:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18925:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18925:133:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16166:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16166:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16166:139:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17526:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17526:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17526:186:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17526:186:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17526:186:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17526:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17526:186:0;;;;;;;;;;;;;;;:::i;:::-;;27096:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27096:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27096:158:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;27262:301;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27262:301:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27262:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18809:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18809:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18809:108:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16313:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16313:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16313:147:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;25904:251;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;25904:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;25904:251:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25904:251:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;25904:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;25904:251:0;;;;;;;;;;;;;;;:::i;:::-;;22242:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22242:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22242:118:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21584:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21584:96:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25741:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25741:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25741:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17908:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17908:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17908:142:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17908:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22368:832;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22368:832:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22368:832:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25337:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25337:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25337:116:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27571:334;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27571:334:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27571:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25461:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25461:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25461:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15922:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15922:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15922:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;24883:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24883:219:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24883:219:0;;;;;;;;;;;;;;;;;:::i;:::-;;5770:135;5840:4;5864:20;:33;5885:11;5864:33;;;;;;;;;;;;;;;;;;;;;;;;;;;5857:40;;5770:135;;;:::o;17720:84::-;17757:13;17790:6;17783:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17720:84;:::o;11430:206::-;11490:7;11518:16;11525:8;11518:6;:16::i;:::-;11510:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:14;:24;11619:8;11604:24;;;;;;;;;;;;;;;;;;;;;11597:31;;11430:206;;;:::o;10631:419::-;10711:13;10727:17;10735:8;10727:7;:17::i;:::-;10711:33;;10777:5;10763:19;;:10;:19;;;:58;;;;10786:35;10803:5;10810:10;10786:16;:35::i;:::-;10763:58;10755:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10976:9;10949:14;:24;10964:8;10949:24;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11033:8;11022:9;11001:41;;11010:10;11001:41;;;;;;;;;;;;10631:419;;;:::o;21240:89::-;21284:7;21311:10;;21304:17;;21240:89;:::o;26395:216::-;15765:7;;;;;;;;;;;15764:8;15756:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26542:8;24663:23;24677:8;24663:13;:23::i;:::-;24662:24;24654:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26563:40;26582:5;26589:3;26594:8;26563:18;:40::i;:::-;15804:1;26395:216;;;:::o;22042:90::-;22085:7;22112:12;;22105:19;;22042:90;:::o;19066:141::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19138:23;19153:7;19138;:14;;:23;;;;:::i;:::-;19191:7;19177:22;;;;;;;;;;;;19066:141;:::o;16684:124::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15862:7;;;;;;;;;;;15854:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16759:5;16749:7;;:15;;;;;;;;;;;;;;;;;;16780:20;16789:10;16780:20;;;;;;;;;;;;;;;;;;;;;;16684:124::o;23527:448::-;18742:20;18751:10;18742:8;:20::i;:::-;18734:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23644:1;23611:29;23624:15;;;;;;;;;;;23611:29;;:8;:12;;:29;;;;:::i;:::-;:34;;23603:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23680:16;23706:29;23719:15;;;;;;;;;;;23706:29;;:8;:12;;:29;;;;:::i;:::-;23680:56;;23770:27;23795:1;23770:9;:20;23780:9;23770:20;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;:27;;;;:::i;:::-;23747:9;:20;23757:9;23747:20;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;23821:17;23836:1;23821:10;;:14;;:17;;;;:::i;:::-;23808:10;:30;;;;23881:21;23892:9;23881:10;:21::i;:::-;23857:45;;:9;:20;23867:9;23857:20;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;23849:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23942:25;23953:3;23958:8;23942:10;:25::i;:::-;18792:1;23527:448;;:::o;26163:224::-;15765:7;;;;;;;;;;;15764:8;15756:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26314:8;24663:23;24677:8;24663:13;:23::i;:::-;24662:24;24654:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26335:44;26358:5;26365:3;26370:8;26335:22;:44::i;:::-;15804:1;26163:224;;;:::o;26952:35::-;;;;;;;;;;;;;:::o;19219:100::-;19272:4;19296:15;19303:7;19296:6;:15::i;:::-;19289:22;;19219:100;;;:::o;23402:117::-;23464:6;23490:9;:21;23500:10;23490:21;;;;;;;;;;;;;;;;;;;;;;;;;23483:28;;23402:117;;;:::o;16468:78::-;16507:4;16531:7;;;;;;;;;;;16524:14;;16468:78;:::o;21688:346::-;18742:20;18751:10;18742:8;:20::i;:::-;18734:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21781:12;;21767:11;:26;;;21759:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21882:14;;21867:11;:29;;;;21859:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21976:11;21961:26;;:12;:26;;;;22003:23;22014:11;22003:23;;;;;;;;;;;;;;;;;;;;21688:346;:::o;9279:199::-;9335:7;9363:16;9370:8;9363:6;:16::i;:::-;9355:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9449:11;:21;9461:8;9449:21;;;;;;;;;;;;;;;;;;;;;9442:28;;9279:199;;;:::o;16046:112::-;16104:4;16128:22;16142:7;16128:9;:13;;:22;;;;:::i;:::-;16121:29;;16046:112;;;:::o;9164:107::-;9220:7;9247:8;:16;9256:6;9247:16;;;;;;;;;;;;;;;;9240:23;;9164:107;;;:::o;16816:108::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16874:10;:19;;:42;16894:21;16874:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16874:42:0;16816:108::o;23208:186::-;23268:6;23295:24;23308:10;23295:12;:24::i;:::-;23287:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23367:7;:19;23375:10;23367:19;;;;;;;;;;;;;;;;;;;;;;;;;23360:26;;23208:186;;;:::o;25586:147::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25660:24;25676:7;25660:11;:15;;:24;;;;:::i;:::-;25717:7;25700:25;;;;;;;;;;;;25586:147;:::o;25110:219::-;24501:25;24515:10;24501:13;:25::i;:::-;24493:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25194:23;25208:8;25194:13;:23::i;:::-;25186:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25277:5;25252:12;:22;25265:8;25252:22;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;25312:8;25298:23;;;;;;;;;;25110:219;:::o;22140:94::-;22185:7;22212:14;;22205:21;;22140:94;:::o;16554:122::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15765:7;;;;;;;;;;;15764:8;15756:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16630:4;16620:7;;:14;;;;;;;;;;;;;;;;;;16650:18;16657:10;16650:18;;;;;;;;;;;;;;;;;;;;;;16554:122::o;14784:79::-;14822:7;14849:6;;;;;;;;;;;14842:13;;14784:79;:::o;17812:88::-;17851:13;17884:8;17877:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17812:88;:::o;18925:133::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18994:20;19006:7;18994;:11;;:20;;;;:::i;:::-;19042:7;19030:20;;;;;;;;;;;;18925:133;:::o;16166:139::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16237:22;16251:7;16237:9;:13;;:22;;;;:::i;:::-;16289:7;16275:22;;;;;;;;;;;;16166:139;:::o;17526:186::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17636:15;17617:16;:34;;;;;;;;;;;;:::i;:::-;;17667:37;17688:15;17667:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17667:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17526:186;:::o;27096:158::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27200:4;27169:13;;:36;;;;;;;;;;;;;;;;;;27221:25;27241:4;27221:25;;;;;;;;;;;;;;;;;;;;;;27096:158;:::o;27262:301::-;27379:3;27345:38;;27353:13;;;;;;;;;;;27345:38;;;;:63;;;;;27387:21;:8;:19;;;:21::i;:::-;27345:63;27341:160;;;27425:13;;;;;;;;;;;:31;;;27457:10;27469:8;27479:9;27425:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27425:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27425:64:0;;;;27341:160;27511:44;27535:8;27545:9;27511:23;:44::i;:::-;27262:301;;:::o;18809:108::-;18865:4;18889:20;18901:7;18889;:11;;:20;;;;:::i;:::-;18882:27;;18809:108;;;:::o;16313:147::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16387:25;16404:7;16387:9;:16;;:25;;;;:::i;:::-;16444:7;16428:24;;;;;;;;;;;;16313:147;:::o;25904:251::-;15765:7;;;;;;;;;;;15764:8;15756:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26075:8;24663:23;24677:8;24663:13;:23::i;:::-;24662:24;24654:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26096:51;26119:5;26126:3;26131:8;26141:5;26096:22;:51::i;:::-;15804:1;25904:251;;;;:::o;22242:118::-;22304:4;22328:12;:24;22341:10;22328:24;;;;;;;;;;;;;;;;;;;;;;;;;22321:31;;22242:118;;;:::o;21584:96::-;21630:7;21657:15;;;;;;;;;;;21650:22;;;;21584:96;:::o;25741:155::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25818:27;25837:7;25818:11;:18;;:27;;;;:::i;:::-;25880:7;25861:27;;;;;;;;;;;;25741:155;:::o;17908:142::-;17965:13;17998:44;18022:19;:8;:17;:19::i;:::-;17998:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;17991:51;;17908:142;;;:::o;22368:832::-;18742:20;18751:10;18742:8;:20::i;:::-;18734:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22480:1;22466:10;:15;;;;22458:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22543:15;;;;;;;;;;;22529:29;;:11;:29;;;22521:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22629:24;22642:10;22629:12;:24::i;:::-;22624:472;;22697:4;22670:12;:24;22683:10;22670:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22733:21;22752:1;22733:14;;:18;;:21;;;;:::i;:::-;22716:14;:38;;;;22795:12;;22777:14;;:30;;22769:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22624:472;;;22893:22;22904:10;22893;:22::i;:::-;22879:36;;:11;:36;;;22871:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23006:24;23019:10;23006:12;:24::i;:::-;22991:39;;:11;:39;;;;22983:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22624:472;23130:11;23108:7;:19;23116:10;23108:19;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23157:35;23168:10;23180:11;23157:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22368:832;;:::o;25337:116::-;25399:4;25423:12;:22;25436:8;25423:22;;;;;;;;;;;;;;;;;;;;;25416:29;;25337:116;;;:::o;27571:334::-;27652:4;27669:13;27685:40;27708:6;27716:8;27685:22;:40::i;:::-;27669:56;;27774:3;27740:38;;27748:13;;;;;;;;;;;27740:38;;;27736:136;;27802:13;;;;;;;;;;;:30;;;27833:6;27841:8;27851;27802:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27802:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27802:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27802:58:0;;;;;;;;;;;;;;;;27795:65;;;;;27736:136;27889:8;27882:15;;;27571:334;;;;;:::o;25461:117::-;25522:4;25546:24;25562:7;25546:11;:15;;:24;;;;:::i;:::-;25539:31;;25461:117;;;:::o;15922:116::-;15649:22;15660:10;15649;:22::i;:::-;15641:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16001:29;16020:9;16001:18;:29::i;:::-;15922:116;:::o;24883:219::-;24501:25;24515:10;24501:13;:25::i;:::-;24493:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24966:23;24980:8;24966:13;:23::i;:::-;24965:24;24957:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25053:4;25028:12;:22;25041:8;25028:22;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25085:8;25073:21;;;;;;;;;;24883:219;:::o;13170:156::-;13227:4;13244:13;13260:11;:21;13272:8;13260:21;;;;;;;;;;;;;;;;;;;;;13244:37;;13316:1;13299:19;;:5;:19;;;;13292:26;;;13170:156;;;:::o;10016:607::-;10118:35;10132:10;10144:8;10118:13;:35::i;:::-;10110:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10342:5;10321:26;;:17;10329:8;10321:7;:17::i;:::-;:26;;;10313:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10436:1;10421:17;;:3;:17;;;;10413:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10505:16;10512:8;10505:6;:16::i;:::-;10497:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10584:31;10594:5;10601:3;10606:8;10584:9;:31::i;:::-;10016:607;;;:::o;2885:179::-;2965:18;2969:4;2975:7;2965:3;:18::i;:::-;2957:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3051:5;3028:4;:11;;:20;3040:7;3028:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2885:179;;:::o;7745:139::-;7803:7;7836:1;7831;:6;;7823:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7875:1;7871;:5;;;;;;7864:12;;7745:139;;;;:::o;7596:141::-;7654:7;7687:1;7682;:6;;7674:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7728:1;7724;:5;;;;;;7717:12;;7596:141;;;;:::o;6137:165::-;6193:6;6212:8;6227:1;6223;:5;6212:16;;6252:1;6247:6;;:1;:6;;;;6239:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6293:1;6286:8;;;6137:165;;;;:::o;7019:169::-;7077:7;7097:9;7113:1;7109;:5;7097:17;;7138:1;7133;:6;;7125:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7179:1;7172:8;;;7019:169;;;;:::o;19327:100::-;18742:20;18751:10;18742:8;:20::i;:::-;18734:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19401:18;19407:2;19411:7;19401:5;:18::i;:::-;19327:100;;:::o;9722:286::-;9828:48;9851:5;9858:3;9863:8;9828:48;;;;;;;;;;;;:22;:48::i;:::-;9820:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9966:34;9979:5;9986:3;9991:8;9966:12;:34::i;:::-;9722:286;;;:::o;3072:124::-;3144:4;3168;:11;;:20;3180:7;3168:20;;;;;;;;;;;;;;;;;;;;;;;;;3161:27;;3072:124;;;;:::o;2702:175::-;2780:18;2784:4;2790:7;2780:3;:18::i;:::-;2779:19;2771:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:4;2842;:11;;:20;2854:7;2842:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2702:175;;:::o;785:174::-;845:4;862:12;916:7;904:20;896:28;;950:1;943:4;:8;936:15;;;785:174;;;:::o;11058:140::-;11138:52;11157:10;11169:9;11180;11138:18;:52::i;:::-;11058:140;;:::o;9486:228::-;9628:1;9612:5;:12;:17;9604:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:38;9685:5;9692:3;9697:8;9668:16;:38::i;:::-;9486:228;;;;:::o;7892:697::-;7944:13;7970:18;7999:11;8013:1;7999:15;;8034:1;8029;:6;8025:375;;;8052:16;;;8083:5;;;;;;;8025:375;;;8121:13;8137:1;8121:17;;8153:236;8168:1;8160:5;:9;8153:236;;;8234:6;8219:10;8211:19;;:30;;;;;;8203:39;;8190:52;;8305:13;8299:2;8293;8285:5;:10;;;;;;8284:17;8283:35;8275:44;;8261:58;;;;8347:2;8338:11;;;;;;;;;8368:5;;;;;;;8153:236;;;8025:375;;8412:16;8441:3;8431:14;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;8431:14:0;;;;8412:33;;8456:9;8487:1;8483:5;;8478:75;8494:3;8490:1;:7;8478:75;;;8528:10;8539:1;8528:13;;;;;;;;;;8519:3;8523:1;8519:6;;;;;;;;;;;:22;;;;;;;;;;;8499:3;;;;;;;8478:75;;;8577:3;8563:18;;;;;;7892:697;;;:::o;4055:148::-;4130:13;4187:2;4191;4170:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4170:24:0;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4170:24:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4170:24:0;;;4156:39;;4055:148;;;;:::o;11644:150::-;11726:4;11750:36;11768:6;11776:9;11750:17;:36::i;:::-;11743:43;;11644:150;;;;:::o;14992:190::-;15059:21;15083:7;:5;:7::i;:::-;15059:31;;15103:9;15094:6;;:18;;;;;;;;;;;;;;;;;;15164:9;15128:46;;15149:13;15128:46;;;;;;;;;;;;14992:190;;:::o;11968:250::-;12050:4;12066:13;12082:17;12090:8;12082:7;:17::i;:::-;12066:33;;12130:5;12118:17;;:8;:17;;;:54;;;;12164:8;12139:33;;:21;12151:8;12139:11;:21::i;:::-;:33;;;12118:54;:91;;;;12176:33;12193:5;12200:8;12176:16;:33::i;:::-;12118:91;12110:100;;;11968:250;;;;:::o;12226:299::-;12311:24;12326:8;12311:14;:24::i;:::-;12370:3;12346:11;:21;12358:8;12346:21;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12402:22;12422:1;12402:8;:15;12411:5;12402:15;;;;;;;;;;;;;;;;:19;;:22;;;;:::i;:::-;12384:8;:15;12393:5;12384:15;;;;;;;;;;;;;;;:40;;;;12451:20;12469:1;12451:8;:13;12460:3;12451:13;;;;;;;;;;;;;;;;:17;;:20;;;;:::i;:::-;12435:8;:13;12444:3;12435:13;;;;;;;;;;;;;;;:36;;;;12508:8;12503:3;12487:30;;12496:5;12487:30;;;;;;;;;;;;12226:299;;;:::o;12535:265::-;12610:16;12617:8;12610:6;:16::i;:::-;12609:17;12601:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12691:3;12667:11;:21;12679:8;12667:21;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12721:20;12739:1;12721:8;:13;12730:3;12721:13;;;;;;;;;;;;;;;;:17;;:20;;;;:::i;:::-;12705:8;:13;12714:3;12705:13;;;;;;;;;;;;;;;:36;;;;12783:8;12778:3;12757:35;;12774:1;12757:35;;;;;;;;;;;;12535:265;;:::o;13334:420::-;13512:4;13540:16;:3;:14;;;:16::i;:::-;13535:61;;13580:4;13573:11;;;;13535:61;13606:13;13643:3;13622:42;;;13665:10;13677:5;13684:8;13694:5;13622:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13622:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13622:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13622:78:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13622:78:0;;;;;;;;;;;;;;;;13606:94;;8747:10;13729:16;;13719:26;;;:6;:26;;;;13711:35;;;13334:420;;;;;;;:::o;11206:216::-;11345:9;11305:18;:26;11324:6;11305:26;;;;;;;;;;;;;;;:37;11332:9;11305:37;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;11393:9;11370:44;;11385:6;11370:44;;;11404:9;11370:44;;;;;;;;;;;;;;;;;;;;;;11206:216;;;:::o;11806:154::-;11891:4;11915:18;:26;11934:6;11915:26;;;;;;;;;;;;;;;:37;11942:9;11915:37;;;;;;;;;;;;;;;;;;;;;;;;;11908:44;;11806:154;;;;:::o;13762:174::-;13862:1;13827:37;;:14;:23;13842:7;13827:23;;;;;;;;;;;;;;;;;;;;;:37;;;13823:106;;13915:1;13881:14;:23;13896:7;13881:23;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13823:106;13762:174;:::o;7196:148::-;7254:7;7287:1;7282;:6;;7274:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7335:1;7331;:5;7324:12;;7196:148;;;;:::o;26618:1290::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6849:136::-;6905:6;6937:1;6932;:6;;;;6924:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6976:1;6972:5;;:1;:5;;;;;;;;6965:12;;6849:136;;;;:::o;6703:138::-;6759:6;6791:1;6786;:6;;;;6778:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6832:1;6828:5;;:1;:5;;;;;;;;6821:12;;6703:138;;;;:::o
Swarm Source
bzzr://ba2ee7403bc3ef745afefe5c6351f6fb712469b15b2177655d00f8b181f927b5
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.