ERC-1155
Overview
Max Total Supply
590 SOLD
Holders
38
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
SolDAO
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-05 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.0; /// @notice Minimalist and gas efficient standard ERC1155 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event URI(string value, uint256 indexed id); /*////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) public balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; /*////////////////////////////////////////////////////////////// METADATA LOGIC //////////////////////////////////////////////////////////////*/ function uri(uint256 id) public view virtual returns (string memory); /*////////////////////////////////////////////////////////////// ERC1155 LOGIC //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); balanceOf[from][id] -= amount; balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) public virtual { require(ids.length == amounts.length, "LENGTH_MISMATCH"); require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); // Storing these outside the loop saves ~15 gas per iteration. uint256 id; uint256 amount; for (uint256 i = 0; i < ids.length; ) { id = ids[i]; amount = amounts[i]; balanceOf[from][id] -= amount; balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, to, ids, amounts); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) public view virtual returns (uint256[] memory balances) { require(owners.length == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < owners.length; ++i) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); if (to.code.length != 0) { require( ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } else require(to != address(0), "INVALID_RECIPIENT"); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal virtual { balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } } /// @notice A generic interface for a contract which properly accepts ERC1155 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155TokenReceiver { function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155BatchReceived.selector; } } /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnerUpdated(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnerUpdated(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function setOwner(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnerUpdated(msg.sender, newOwner); } } /// @notice Contract that enables a single call to call multiple methods on itself. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/Multicallable.sol) /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Multicallable.sol) /// @dev WARNING! /// Multicallable is NOT SAFE for use in contracts with checks / requires on `msg.value` /// (e.g. in NFT minting / auction contracts) without a suitable nonce mechanism. /// It WILL open up your contract to double-spend vulnerabilities / exploits. /// See: (https://www.paradigm.xyz/2021/08/two-rights-might-make-a-wrong/) abstract contract Multicallable { function multicall(bytes[] calldata data) public payable returns (bytes[] memory results) { assembly { if data.length { results := mload(0x40) // Point `results` to start of free memory. mstore(results, data.length) // Store `data.length` into `results`. results := add(results, 0x20) // `shl` 5 is equivalent to multiplying by 0x20. let end := shl(5, data.length) // Copy the offsets from calldata into memory. calldatacopy(results, data.offset, end) // Pointer to the top of the memory (i.e. start of the free memory). let memPtr := add(results, end) end := add(results, end) // prettier-ignore for {} 1 {} { // The offset of the current bytes in the calldata. let o := add(data.offset, mload(results)) // Copy the current bytes from calldata to the memory. calldatacopy( memPtr, add(o, 0x20), // The offset of the current bytes' bytes. calldataload(o) // The length of the current bytes. ) if iszero(delegatecall(gas(), address(), memPtr, calldataload(o), 0x00, 0x00)) { // Bubble up the revert if the delegatecall reverts. returndatacopy(0x00, 0x00, returndatasize()) revert(0x00, returndatasize()) } // Append the current `memPtr` into `results`. mstore(results, memPtr) results := add(results, 0x20) // Append the `returndatasize()`, and the return data. mstore(memPtr, returndatasize()) returndatacopy(add(memPtr, 0x20), 0x00, returndatasize()) // Advance the `memPtr` by `returndatasize() + 0x20`, // rounded up to the next multiple of 32. memPtr := and(add(add(memPtr, returndatasize()), 0x3f), 0xffffffffffffffe0) // prettier-ignore if iszero(lt(results, end)) { break } } // Restore `results` and allocate memory for it. results := mload(0x40) mstore(0x40, memPtr) } } } } /// @notice SolDAO ERC1155 implementation. /// @author SolDAO (https://github.com/Sol-DAO/governance/blob/main/src/SolDAO.sol) contract SolDAO is ERC1155, Owned(tx.origin), Multicallable { event SetBaseURI(string baseURI); event SetURIfetcher(ERC1155 indexed uriFetcher); event SetTransferability(uint256 id, bool set); string public constant name = "SolDAO"; string public constant symbol = "SOLD"; string public baseURI; ERC1155 public uriFetcher; mapping(uint256 => bool) public transferable; function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) public override { require(transferable[id], "NONTRANSFERABLE"); super.safeTransferFrom(from, to, id, amount, data); } function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) public override { for (uint256 i; i < ids.length; ) { require(transferable[ids[i]], "NONTRANSFERABLE"); // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } super.safeBatchTransferFrom(from, to, ids, amounts, data); } function mint( address to, uint256 id, uint256 amount, bytes calldata data ) public payable onlyOwner { _mint(to, id, amount, data); } function burn( address from, uint256 id, uint256 amount ) public payable onlyOwner { _burn(from, id, amount); } function uri(uint256 id) public view override returns (string memory) { string memory base = baseURI; if (bytes(base).length != 0) return string(abi.encodePacked(base, _toString(id))); else return uriFetcher.uri(id); } function _toString(uint256 value) internal pure returns (string memory str) { assembly { // The maximum value of a uint256 contains 78 digits (1 byte per digit), but // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned. // We will need 1 word for the trailing zeros padding, 1 word for the length, // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0. let m := add(mload(0x40), 0xa0) // Update the free memory pointer to allocate. mstore(0x40, m) // Assign the `str` to the end. str := sub(m, 0x20) // Zeroize the slot after the string. mstore(str, 0) // Cache the end of the memory to calculate the length later. let end := str // We write the string from rightmost digit to leftmost digit. // The following is essentially a do-while loop that also handles the zero case. // prettier-ignore for { let temp := value } 1 {} { str := sub(str, 1) // Write the character to the pointer. // The ASCII index of the '0' character is 48. mstore8(str, add(48, mod(temp, 10))) // Keep dividing `temp` until zero. temp := div(temp, 10) // prettier-ignore if iszero(temp) { break } } let length := sub(end, str) // Move the pointer 32 bytes leftwards to make room for the length. str := sub(str, 0x20) // Store the length. mstore(str, length) } } function setBaseURI(string calldata _baseURI) public payable onlyOwner { baseURI = _baseURI; emit SetBaseURI(_baseURI); } function setURIfetcher(ERC1155 _uriFetcher) public payable onlyOwner { uriFetcher = _uriFetcher; emit SetURIfetcher(_uriFetcher); } function setTransferability(uint256 id, bool set) public payable onlyOwner { transferable[id] = set; emit SetTransferability(id, set); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"baseURI","type":"string"}],"name":"SetBaseURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bool","name":"set","type":"bool"}],"name":"SetTransferability","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ERC1155","name":"uriFetcher","type":"address"}],"name":"SetURIfetcher","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bool","name":"set","type":"bool"}],"name":"setTransferability","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract ERC1155","name":"_uriFetcher","type":"address"}],"name":"setURIfetcher","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriFetcher","outputs":[{"internalType":"contract ERC1155","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600280546001600160a01b0319163290811790915560405181906000907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35061275f806100636000396000f3fe6080604052600436106101695760003560e01c8063731133e9116100cb578063bd78cd391161007f578063f242432a11610059578063f242432a1461046f578063f4c3b4d71461048f578063f5298aca146104bf57600080fd5b8063bd78cd39146103f4578063e8a9155f14610407578063e985e9c51461043457600080fd5b806395d89b41116100b057806395d89b411461036b578063a22cb465146103b4578063ac9650d8146103d457600080fd5b8063731133e9146103065780638da5cb5b1461031957600080fd5b80632eb2c2d61161012257806355f804b31161010757806355f804b3146102cb5780636c0360eb146102de5780637140d960146102f357600080fd5b80632eb2c2d61461027e5780634e1273f41461029e57600080fd5b806306fdde031161015357806306fdde03146101e65780630e89341c1461023c57806313af40351461025c57600080fd5b8062fdd58e1461016e57806301ffc9a7146101b6575b600080fd5b34801561017a57600080fd5b506101a3610189366004611bef565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101c257600080fd5b506101d66101d1366004611c49565b6104d2565b60405190151581526020016101ad565b3480156101f257600080fd5b5061022f6040518060400160405280600681526020017f536f6c44414f000000000000000000000000000000000000000000000000000081525081565b6040516101ad9190611cd4565b34801561024857600080fd5b5061022f610257366004611ce7565b6105b7565b34801561026857600080fd5b5061027c610277366004611d00565b610743565b005b34801561028a57600080fd5b5061027c610299366004611dab565b61083a565b3480156102aa57600080fd5b506102be6102b9366004611e6a565b610901565b6040516101ad9190611ed6565b61027c6102d9366004611f1a565b610a78565b3480156102ea57600080fd5b5061022f610b44565b61027c610301366004611f71565b610bd2565b61027c610314366004611f9d565b610cc3565b34801561032557600080fd5b506002546103469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ad565b34801561037757600080fd5b5061022f6040518060400160405280600481526020017f534f4c440000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061027c6103cf366004612007565b610d8d565b6103e76103e2366004612033565b610e24565b6040516101ad9190612069565b61027c610402366004611d00565b610ea0565b34801561041357600080fd5b506004546103469073ffffffffffffffffffffffffffffffffffffffff1681565b34801561044057600080fd5b506101d661044f3660046120e9565b600160209081526000928352604080842090915290825290205460ff1681565b34801561047b57600080fd5b5061027c61048a366004612122565b610f8f565b34801561049b57600080fd5b506101d66104aa366004611ce7565b60056020526000908152604090205460ff1681565b61027c6104cd36600461219e565b61101d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061056557507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105b157507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000600380546105c8906121d3565b80601f01602080910402602001604051908101604052809291908181526020018280546105f4906121d3565b80156106415780601f1061061657610100808354040283529160200191610641565b820191906000526020600020905b81548152906001019060200180831161062457829003601f168201915b505050505090508051600014610683578061065b846110ae565b60405160200161066c929190612220565b604051602081830303815290604052915050919050565b600480546040517f0e89341c00000000000000000000000000000000000000000000000000000000815291820185905273ffffffffffffffffffffffffffffffffffffffff1690630e89341c90602401600060405180830381865afa1580156106f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610736919081019061227e565b9392505050565b50919050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60005b858110156108e6576005600088888481811061085b5761085b612349565b602090810292909201358352508101919091526040016000205460ff166108de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f4e5452414e5346455241424c45000000000000000000000000000000000060448201526064016107c0565b60010161083d565b506108f78888888888888888611110565b5050505050505050565b606083821461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107c0565b8367ffffffffffffffff8111156109855761098561224f565b6040519080825280602002602001820160405280156109ae578160200160208202803683370190505b50905060005b84811015610a6f576000808787848181106109d1576109d1612349565b90506020020160208101906109e69190611d00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610a3457610a34612349565b90506020020135815260200190815260200160002054828281518110610a5c57610a5c612349565b60209081029190910101526001016109b4565b50949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b6003610b068284836123be565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa8282604051610b38929190612521565b60405180910390a15050565b60038054610b51906121d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7d906121d3565b8015610bca5780601f10610b9f57610100808354040283529160200191610bca565b820191906000526020600020905b815481529060010190602001808311610bad57829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b60008281526005602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f83f17fb055f2e993da09e20a12be807bbb02b8915eb218ab97247da3a81acec59101610b38565b60025473ffffffffffffffffffffffffffffffffffffffff163314610d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b610d8685858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156492505050565b5050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b606081156105b15750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af4610e66573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f0167ffffffffffffffe016818310610e435760408051919052949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517e99182c511ba68aa16559b5d6aaa0ca0e50e4028b2f3ded766c393e3dc16f2990600090a250565b60008481526005602052604090205460ff16611007576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f4e5452414e5346455241424c45000000000000000000000000000000000060448201526064016107c0565b6110158686868686866117cb565b505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff16331461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b6110a9838383611b2c565b505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806110c857508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b848314611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107c0565b3373ffffffffffffffffffffffffffffffffffffffff891614806111cd575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107c0565b60008060005b878110156113085788888281811061125357611253612349565b90506020020135925086868281811061126e5761126e612349565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260208181526040808320898452825282208054939091029490940135955085939250906112b890849061256c565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320868452909152812080548492906112fb90849061257f565b9091555050600101611239565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b60405161138394939291906125dd565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b156114db576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c819061140a9033908f908e908e908e908e908e908e90600401612604565b6020604051808303816000875af1158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d9190612675565b7fffffffff0000000000000000000000000000000000000000000000000000000016146114d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107c0565b611558565b73ffffffffffffffffffffffffffffffffffffffff8916611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107c0565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152812080548492906115a290849061257f565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15611748576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e6190611677903390600090899089908990600401612692565b6020604051808303816000875af1158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190612675565b7fffffffff000000000000000000000000000000000000000000000000000000001614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107c0565b6117c5565b73ffffffffffffffffffffffffffffffffffffffff84166117c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107c0565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff8716148061181f575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107c0565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260208181526040808320878452909152812080548592906118c390849061256c565b909155505073ffffffffffffffffffffffffffffffffffffffff85166000908152602081815260408083208784529091528120805485929061190690849061257f565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611aaf576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e61906119de9033908b908a908a908a908a906004016126d7565b6020604051808303816000875af11580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a219190612675565b7fffffffff000000000000000000000000000000000000000000000000000000001614611aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107c0565b611015565b73ffffffffffffffffffffffffffffffffffffffff8516611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107c0565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020818152604080832085845290915281208054839290611b6a90849061256c565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611bec57600080fd5b50565b60008060408385031215611c0257600080fd5b8235611c0d81611bca565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611bec57600080fd5b600060208284031215611c5b57600080fd5b813561073681611c1b565b60005b83811015611c81578181015183820152602001611c69565b50506000910152565b60008151808452611ca2816020860160208601611c66565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107366020830184611c8a565b600060208284031215611cf957600080fd5b5035919050565b600060208284031215611d1257600080fd5b813561073681611bca565b60008083601f840112611d2f57600080fd5b50813567ffffffffffffffff811115611d4757600080fd5b6020830191508360208260051b8501011115611d6257600080fd5b9250929050565b60008083601f840112611d7b57600080fd5b50813567ffffffffffffffff811115611d9357600080fd5b602083019150836020828501011115611d6257600080fd5b60008060008060008060008060a0898b031215611dc757600080fd5b8835611dd281611bca565b97506020890135611de281611bca565b9650604089013567ffffffffffffffff80821115611dff57600080fd5b611e0b8c838d01611d1d565b909850965060608b0135915080821115611e2457600080fd5b611e308c838d01611d1d565b909650945060808b0135915080821115611e4957600080fd5b50611e568b828c01611d69565b999c989b5096995094979396929594505050565b60008060008060408587031215611e8057600080fd5b843567ffffffffffffffff80821115611e9857600080fd5b611ea488838901611d1d565b90965094506020870135915080821115611ebd57600080fd5b50611eca87828801611d1d565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015611f0e57835183529284019291840191600101611ef2565b50909695505050505050565b60008060208385031215611f2d57600080fd5b823567ffffffffffffffff811115611f4457600080fd5b611f5085828601611d69565b90969095509350505050565b80358015158114611f6c57600080fd5b919050565b60008060408385031215611f8457600080fd5b82359150611f9460208401611f5c565b90509250929050565b600080600080600060808688031215611fb557600080fd5b8535611fc081611bca565b94506020860135935060408601359250606086013567ffffffffffffffff811115611fea57600080fd5b611ff688828901611d69565b969995985093965092949392505050565b6000806040838503121561201a57600080fd5b823561202581611bca565b9150611f9460208401611f5c565b6000806020838503121561204657600080fd5b823567ffffffffffffffff81111561205d57600080fd5b611f5085828601611d1d565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156120dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526120ca858351611c8a565b94509285019290850190600101612090565b5092979650505050505050565b600080604083850312156120fc57600080fd5b823561210781611bca565b9150602083013561211781611bca565b809150509250929050565b60008060008060008060a0878903121561213b57600080fd5b863561214681611bca565b9550602087013561215681611bca565b94506040870135935060608701359250608087013567ffffffffffffffff81111561218057600080fd5b61218c89828a01611d69565b979a9699509497509295939492505050565b6000806000606084860312156121b357600080fd5b83356121be81611bca565b95602085013595506040909401359392505050565b600181811c908216806121e757607f821691505b60208210810361073d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008351612232818460208801611c66565b835190830190612246818360208801611c66565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561229057600080fd5b815167ffffffffffffffff808211156122a857600080fd5b818401915084601f8301126122bc57600080fd5b8151818111156122ce576122ce61224f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156123145761231461224f565b8160405282815287602084870101111561232d57600080fd5b61233e836020830160208801611c66565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f8211156110a957600081815260208120601f850160051c8101602086101561239f5750805b601f850160051c820191505b81811015611015578281556001016123ab565b67ffffffffffffffff8311156123d6576123d661224f565b6123ea836123e483546121d3565b83612378565b6000601f84116001811461243c57600085156124065750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610d86565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561248b578685013582556020948501946001909201910161246b565b50868210156124c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006125356020830184866124d8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105b1576105b161253d565b808201808211156105b1576105b161253d565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156125c457600080fd5b8260051b80836020870137939093016020019392505050565b6040815260006125f1604083018688612592565b828103602084015261233e818587612592565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261263e60a08301888a612592565b8281036060840152612651818789612592565b905082810360808401526126668185876124d8565b9b9a5050505050505050505050565b60006020828403121561268757600080fd5b815161073681611c1b565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261233e60a0830184611c8a565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261271d60a0830184866124d8565b9897505050505050505056fea264697066735822122032376a73e342a555ba7b08fd53296217648310dc7155faf75c3dcf313760335264736f6c63430008100033
Deployed Bytecode
0x6080604052600436106101695760003560e01c8063731133e9116100cb578063bd78cd391161007f578063f242432a11610059578063f242432a1461046f578063f4c3b4d71461048f578063f5298aca146104bf57600080fd5b8063bd78cd39146103f4578063e8a9155f14610407578063e985e9c51461043457600080fd5b806395d89b41116100b057806395d89b411461036b578063a22cb465146103b4578063ac9650d8146103d457600080fd5b8063731133e9146103065780638da5cb5b1461031957600080fd5b80632eb2c2d61161012257806355f804b31161010757806355f804b3146102cb5780636c0360eb146102de5780637140d960146102f357600080fd5b80632eb2c2d61461027e5780634e1273f41461029e57600080fd5b806306fdde031161015357806306fdde03146101e65780630e89341c1461023c57806313af40351461025c57600080fd5b8062fdd58e1461016e57806301ffc9a7146101b6575b600080fd5b34801561017a57600080fd5b506101a3610189366004611bef565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101c257600080fd5b506101d66101d1366004611c49565b6104d2565b60405190151581526020016101ad565b3480156101f257600080fd5b5061022f6040518060400160405280600681526020017f536f6c44414f000000000000000000000000000000000000000000000000000081525081565b6040516101ad9190611cd4565b34801561024857600080fd5b5061022f610257366004611ce7565b6105b7565b34801561026857600080fd5b5061027c610277366004611d00565b610743565b005b34801561028a57600080fd5b5061027c610299366004611dab565b61083a565b3480156102aa57600080fd5b506102be6102b9366004611e6a565b610901565b6040516101ad9190611ed6565b61027c6102d9366004611f1a565b610a78565b3480156102ea57600080fd5b5061022f610b44565b61027c610301366004611f71565b610bd2565b61027c610314366004611f9d565b610cc3565b34801561032557600080fd5b506002546103469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ad565b34801561037757600080fd5b5061022f6040518060400160405280600481526020017f534f4c440000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061027c6103cf366004612007565b610d8d565b6103e76103e2366004612033565b610e24565b6040516101ad9190612069565b61027c610402366004611d00565b610ea0565b34801561041357600080fd5b506004546103469073ffffffffffffffffffffffffffffffffffffffff1681565b34801561044057600080fd5b506101d661044f3660046120e9565b600160209081526000928352604080842090915290825290205460ff1681565b34801561047b57600080fd5b5061027c61048a366004612122565b610f8f565b34801561049b57600080fd5b506101d66104aa366004611ce7565b60056020526000908152604090205460ff1681565b61027c6104cd36600461219e565b61101d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061056557507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105b157507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000600380546105c8906121d3565b80601f01602080910402602001604051908101604052809291908181526020018280546105f4906121d3565b80156106415780601f1061061657610100808354040283529160200191610641565b820191906000526020600020905b81548152906001019060200180831161062457829003601f168201915b505050505090508051600014610683578061065b846110ae565b60405160200161066c929190612220565b604051602081830303815290604052915050919050565b600480546040517f0e89341c00000000000000000000000000000000000000000000000000000000815291820185905273ffffffffffffffffffffffffffffffffffffffff1690630e89341c90602401600060405180830381865afa1580156106f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610736919081019061227e565b9392505050565b50919050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b60005b858110156108e6576005600088888481811061085b5761085b612349565b602090810292909201358352508101919091526040016000205460ff166108de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f4e5452414e5346455241424c45000000000000000000000000000000000060448201526064016107c0565b60010161083d565b506108f78888888888888888611110565b5050505050505050565b606083821461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107c0565b8367ffffffffffffffff8111156109855761098561224f565b6040519080825280602002602001820160405280156109ae578160200160208202803683370190505b50905060005b84811015610a6f576000808787848181106109d1576109d1612349565b90506020020160208101906109e69190611d00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610a3457610a34612349565b90506020020135815260200190815260200160002054828281518110610a5c57610a5c612349565b60209081029190910101526001016109b4565b50949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b6003610b068284836123be565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa8282604051610b38929190612521565b60405180910390a15050565b60038054610b51906121d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7d906121d3565b8015610bca5780601f10610b9f57610100808354040283529160200191610bca565b820191906000526020600020905b815481529060010190602001808311610bad57829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b60008281526005602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f83f17fb055f2e993da09e20a12be807bbb02b8915eb218ab97247da3a81acec59101610b38565b60025473ffffffffffffffffffffffffffffffffffffffff163314610d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b610d8685858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156492505050565b5050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b606081156105b15750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af4610e66573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f0167ffffffffffffffe016818310610e435760408051919052949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517e99182c511ba68aa16559b5d6aaa0ca0e50e4028b2f3ded766c393e3dc16f2990600090a250565b60008481526005602052604090205460ff16611007576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f4e5452414e5346455241424c45000000000000000000000000000000000060448201526064016107c0565b6110158686868686866117cb565b505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff16331461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016107c0565b6110a9838383611b2c565b505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a9004806110c857508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b848314611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016107c0565b3373ffffffffffffffffffffffffffffffffffffffff891614806111cd575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107c0565b60008060005b878110156113085788888281811061125357611253612349565b90506020020135925086868281811061126e5761126e612349565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260208181526040808320898452825282208054939091029490940135955085939250906112b890849061256c565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320868452909152812080548492906112fb90849061257f565b9091555050600101611239565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b60405161138394939291906125dd565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b156114db576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c819061140a9033908f908e908e908e908e908e908e90600401612604565b6020604051808303816000875af1158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d9190612675565b7fffffffff0000000000000000000000000000000000000000000000000000000016146114d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107c0565b611558565b73ffffffffffffffffffffffffffffffffffffffff8916611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107c0565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152812080548492906115a290849061257f565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15611748576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e6190611677903390600090899089908990600401612692565b6020604051808303816000875af1158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190612675565b7fffffffff000000000000000000000000000000000000000000000000000000001614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107c0565b6117c5565b73ffffffffffffffffffffffffffffffffffffffff84166117c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107c0565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff8716148061181f575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016107c0565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260208181526040808320878452909152812080548592906118c390849061256c565b909155505073ffffffffffffffffffffffffffffffffffffffff85166000908152602081815260408083208784529091528120805485929061190690849061257f565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611aaf576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e61906119de9033908b908a908a908a908a906004016126d7565b6020604051808303816000875af11580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a219190612675565b7fffffffff000000000000000000000000000000000000000000000000000000001614611aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016107c0565b611015565b73ffffffffffffffffffffffffffffffffffffffff8516611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e5400000000000000000000000000000060448201526064016107c0565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020818152604080832085845290915281208054839290611b6a90849061256c565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611bec57600080fd5b50565b60008060408385031215611c0257600080fd5b8235611c0d81611bca565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611bec57600080fd5b600060208284031215611c5b57600080fd5b813561073681611c1b565b60005b83811015611c81578181015183820152602001611c69565b50506000910152565b60008151808452611ca2816020860160208601611c66565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006107366020830184611c8a565b600060208284031215611cf957600080fd5b5035919050565b600060208284031215611d1257600080fd5b813561073681611bca565b60008083601f840112611d2f57600080fd5b50813567ffffffffffffffff811115611d4757600080fd5b6020830191508360208260051b8501011115611d6257600080fd5b9250929050565b60008083601f840112611d7b57600080fd5b50813567ffffffffffffffff811115611d9357600080fd5b602083019150836020828501011115611d6257600080fd5b60008060008060008060008060a0898b031215611dc757600080fd5b8835611dd281611bca565b97506020890135611de281611bca565b9650604089013567ffffffffffffffff80821115611dff57600080fd5b611e0b8c838d01611d1d565b909850965060608b0135915080821115611e2457600080fd5b611e308c838d01611d1d565b909650945060808b0135915080821115611e4957600080fd5b50611e568b828c01611d69565b999c989b5096995094979396929594505050565b60008060008060408587031215611e8057600080fd5b843567ffffffffffffffff80821115611e9857600080fd5b611ea488838901611d1d565b90965094506020870135915080821115611ebd57600080fd5b50611eca87828801611d1d565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b81811015611f0e57835183529284019291840191600101611ef2565b50909695505050505050565b60008060208385031215611f2d57600080fd5b823567ffffffffffffffff811115611f4457600080fd5b611f5085828601611d69565b90969095509350505050565b80358015158114611f6c57600080fd5b919050565b60008060408385031215611f8457600080fd5b82359150611f9460208401611f5c565b90509250929050565b600080600080600060808688031215611fb557600080fd5b8535611fc081611bca565b94506020860135935060408601359250606086013567ffffffffffffffff811115611fea57600080fd5b611ff688828901611d69565b969995985093965092949392505050565b6000806040838503121561201a57600080fd5b823561202581611bca565b9150611f9460208401611f5c565b6000806020838503121561204657600080fd5b823567ffffffffffffffff81111561205d57600080fd5b611f5085828601611d1d565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156120dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526120ca858351611c8a565b94509285019290850190600101612090565b5092979650505050505050565b600080604083850312156120fc57600080fd5b823561210781611bca565b9150602083013561211781611bca565b809150509250929050565b60008060008060008060a0878903121561213b57600080fd5b863561214681611bca565b9550602087013561215681611bca565b94506040870135935060608701359250608087013567ffffffffffffffff81111561218057600080fd5b61218c89828a01611d69565b979a9699509497509295939492505050565b6000806000606084860312156121b357600080fd5b83356121be81611bca565b95602085013595506040909401359392505050565b600181811c908216806121e757607f821691505b60208210810361073d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008351612232818460208801611c66565b835190830190612246818360208801611c66565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561229057600080fd5b815167ffffffffffffffff808211156122a857600080fd5b818401915084601f8301126122bc57600080fd5b8151818111156122ce576122ce61224f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156123145761231461224f565b8160405282815287602084870101111561232d57600080fd5b61233e836020830160208801611c66565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f8211156110a957600081815260208120601f850160051c8101602086101561239f5750805b601f850160051c820191505b81811015611015578281556001016123ab565b67ffffffffffffffff8311156123d6576123d661224f565b6123ea836123e483546121d3565b83612378565b6000601f84116001811461243c57600085156124065750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610d86565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561248b578685013582556020948501946001909201910161246b565b50868210156124c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006125356020830184866124d8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105b1576105b161253d565b808201808211156105b1576105b161253d565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156125c457600080fd5b8260051b80836020870137939093016020019392505050565b6040815260006125f1604083018688612592565b828103602084015261233e818587612592565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261263e60a08301888a612592565b8281036060840152612651818789612592565b905082810360808401526126668185876124d8565b9b9a5050505050505050505050565b60006020828403121561268757600080fd5b815161073681611c1b565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261233e60a0830184611c8a565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261271d60a0830184866124d8565b9897505050505050505056fea264697066735822122032376a73e342a555ba7b08fd53296217648310dc7155faf75c3dcf313760335264736f6c63430008100033
Deployed Bytecode Sourcemap
13374:4176:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:64;;;;;;;;;;-1:-1:-1;1140:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;639:25:1;;;627:2;612:18;1140:64:0;;;;;;;;4815:345;;;;;;;;;;-1:-1:-1;4815:345:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;4815:345:0;1107:187:1;13616:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15061:254::-;;;;;;;;;;-1:-1:-1;15061:254:0;;;;;:::i;:::-;;:::i;9863:148::-;;;;;;;;;;-1:-1:-1;9863:148:0;;;;;:::i;:::-;;:::i;:::-;;14130:561;;;;;;;;;;-1:-1:-1;14130:561:0;;;;;:::i;:::-;;:::i;4021:600::-;;;;;;;;;;-1:-1:-1;4021:600:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17068:146::-;;;;;;:::i;:::-;;:::i;13710:21::-;;;;;;;;;;;;;:::i;17386:161::-;;;;;;:::i;:::-;;:::i;14699:189::-;;;;;;:::i;:::-;;:::i;9227:20::-;;;;;;;;;;-1:-1:-1;9227:20:0;;;;;;;;;;;7728:42:1;7716:55;;;7698:74;;7686:2;7671:18;9227:20:0;7552:226:1;13663:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:207;;;;;;;;;;-1:-1:-1;1741:207:0;;;;;:::i;:::-;;:::i;10704:2534::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17222:156::-;;;;;;:::i;:::-;;:::i;13740:25::-;;;;;;;;;;-1:-1:-1;13740:25:0;;;;;;;;1213:68;;;;;;;;;;-1:-1:-1;1213:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;13827:295;;;;;;;;;;-1:-1:-1;13827:295:0;;;;;:::i;:::-;;:::i;13774:44::-;;;;;;;;;;-1:-1:-1;13774:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14896:157;;;;;;:::i;:::-;;:::i;4815:345::-;4891:4;4928:25;;;;;;:101;;-1:-1:-1;5004:25:0;;;;;4928:101;:178;;;-1:-1:-1;5081:25:0;;;;;4928:178;4908:198;4815:345;-1:-1:-1;;4815:345:0:o;15061:254::-;15116:13;15142:18;15163:7;15142:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15193:4;15187:18;15209:1;15187:23;15183:124;;15243:4;15249:13;15259:2;15249:9;:13::i;:::-;15226:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15212:52;;;15061:254;;;:::o;15183:124::-;15289:10;;;:18;;;;;;;;639:25:1;;;15289:10:0;;;:14;;612:18:1;;15289::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15282:25;15061:254;-1:-1:-1;;;15061:254:0:o;15183:124::-;15131:184;15061:254;;;:::o;9863:148::-;9318:5;;;;9304:10;:19;9296:44;;;;;;;13838:2:1;9296:44:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:14;13896:18;;;13889:42;13948:18;;9296:44:0;;;;;;;;;9935:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;9969:34:::1;::::0;9982:10:::1;::::0;9969:34:::1;::::0;-1:-1:-1;;9969:34:0::1;9863:148:::0;:::o;14130:561::-;14344:9;14339:275;14355:14;;;14339:275;;;14396:12;:20;14409:3;;14413:1;14409:6;;;;;;;:::i;:::-;;;;;;;;;;14396:20;;-1:-1:-1;14396:20:0;;;;;;;;-1:-1:-1;14396:20:0;;;;14388:48;;;;;;;14368:2:1;14388:48:0;;;14350:21:1;14407:2;14387:18;;;14380:30;14446:17;14426:18;;;14419:45;14481:18;;14388:48:0;14166:339:1;14388:48:0;14584:3;;14339:275;;;;14626:57;14654:4;14660:2;14664:3;;14669:7;;14678:4;;14626:27;:57::i;:::-;14130:561;;;;;;;;:::o;4021:600::-;4161:25;4212:27;;;4204:55;;;;;;;14712:2:1;4204:55:0;;;14694:21:1;14751:2;14731:18;;;14724:30;14790:17;14770:18;;;14763:45;14825:18;;4204:55:0;14510:339:1;4204:55:0;4297:6;4283:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4283:28:0;;4272:39;;4487:9;4482:121;4502:17;;;4482:121;;;4559:9;:20;4569:6;;4576:1;4569:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4559:20;;;;;;;;;;;;;;;:28;4580:3;;4584:1;4580:6;;;;;;;:::i;:::-;;;;;;;4559:28;;;;;;;;;;;;4545:8;4554:1;4545:11;;;;;;;;:::i;:::-;;;;;;;;;;:42;4521:3;;4482:121;;;;4021:600;;;;;;:::o;17068:146::-;9318:5;;;;9304:10;:19;9296:44;;;;;;;13838:2:1;9296:44:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:14;13896:18;;;13889:42;13948:18;;9296:44:0;13636:336:1;9296:44:0;17150:7:::1;:18;17160:8:::0;;17150:7;:18:::1;:::i;:::-;;17186:20;17197:8;;17186:20;;;;;;;:::i;:::-;;;;;;;;17068:146:::0;;:::o;13710:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17386:161::-;9318:5;;;;9304:10;:19;9296:44;;;;;;;13838:2:1;9296:44:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:14;13896:18;;;13889:42;13948:18;;9296:44:0;13636:336:1;9296:44:0;17472:16:::1;::::0;;;:12:::1;:16;::::0;;;;;;;;:22;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;17512:27;;17842:25:1;;;17883:18;;;17876:50;17512:27:0::1;::::0;17815:18:1;17512:27:0::1;17674:258:1::0;14699:189:0;9318:5;;;;9304:10;:19;9296:44;;;;;;;13838:2:1;9296:44:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:14;13896:18;;;13889:42;13948:18;;9296:44:0;13636:336:1;9296:44:0;14853:27:::1;14859:2;14863;14867:6;14875:4;;14853:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14853:5:0::1;::::0;-1:-1:-1;;;14853:27:0:i:1;:::-;14699:189:::0;;;;;:::o;1741:207::-;1844:10;1827:28;;;;:16;:28;;;;;;;;;:38;;;;;;;;;;;;:49;;;;;;;;;;;;;1894:46;;1247:41:1;;;1827:38:0;;1844:10;1894:46;;1220:18:1;1894:46:0;;;;;;;1741:207;;:::o;10704:2534::-;10770:22;10832:11;10829:2391;;;-1:-1:-1;10880:4:0;10874:11;10947:28;;;11056:4;11043:18;11162:1;11158:19;;;;11281:11;11043:18;11259:39;11416:17;;;11531:1530;11671:7;11665:14;11652:11;11648:32;11945:1;11932:15;11857:4;11854:1;11850:12;11817:6;11778:228;12100:4;12094;12090:1;12077:15;12069:6;12058:9;12051:5;12038:67;12028:307;;12239:16;12233:4;12227;12212:44;12295:16;12289:4;12282:30;12028:307;;12441:6;12432:7;12425:23;12494:4;12485:7;12481:18;12470:29;;12612:16;12604:6;12597:32;12691:16;12685:4;12678;12670:6;12666:17;12651:57;12898:16;12886:29;12917:4;12882:40;12924:18;12878:65;13015:16;;;11531:1530;13005:37;13162:4;13156:11;;13185:20;;;13156:11;10704:2534;-1:-1:-1;;;;10704:2534:0:o;17222:156::-;9318:5;;;;9304:10;:19;9296:44;;;;;;;13838:2:1;9296:44:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:14;13896:18;;;13889:42;13948:18;;9296:44:0;13636:336:1;9296:44:0;17302:10:::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;17344:26:::1;::::0;::::1;::::0;-1:-1:-1;;17344:26:0::1;17222:156:::0;:::o;13827:295::-;14015:16;;;;:12;:16;;;;;;;;14007:44;;;;;;;14368:2:1;14007:44:0;;;14350:21:1;14407:2;14387:18;;;14380:30;14446:17;14426:18;;;14419:45;14481:18;;14007:44:0;14166:339:1;14007:44:0;14064:50;14087:4;14093:2;14097;14101:6;14109:4;;14064:22;:50::i;:::-;13827:295;;;;;;:::o;14896:157::-;9318:5;;;;9304:10;:19;9296:44;;;;;;;13838:2:1;9296:44:0;;;13820:21:1;13877:2;13857:18;;;13850:30;13916:14;13896:18;;;13889:42;13948:18;;9296:44:0;13636:336:1;9296:44:0;15022:23:::1;15028:4;15034:2;15038:6;15022:5;:23::i;:::-;14896:157:::0;;;:::o;15323:1737::-;15380:17;15814:4;15807;15801:11;15797:22;15906:1;15900:4;15893:15;15981:4;15978:1;15974:12;15967:19;;;16063:1;16058:3;16051:14;16167:3;16406:5;16388:428;16454:1;16449:3;16445:11;16438:18;;16625:2;16619:4;16615:13;16611:2;16607:22;16602:3;16594:36;16719:2;16709:13;;16776:25;16388:428;16776:25;-1:-1:-1;16846:13:0;;;16961:14;;;;17023:19;;;16961:14;15323:1737;-1:-1:-1;15323:1737:0:o;2725:1288::-;2941:28;;;2933:56;;;;;;;14712:2:1;2933:56:0;;;14694:21:1;14751:2;14731:18;;;14724:30;14790:17;14770:18;;;14763:45;14825:18;;2933:56:0;14510:339:1;2933:56:0;3010:10;:18;;;;;:56;;-1:-1:-1;3032:22:0;;;;;;;:16;:22;;;;;;;;3055:10;3032:34;;;;;;;;;;3010:56;3002:83;;;;;;;18139:2:1;3002:83:0;;;18121:21:1;18178:2;18158:18;;;18151:30;18217:16;18197:18;;;18190:44;18251:18;;3002:83:0;17937:338:1;3002:83:0;3170:10;3191:14;3223:9;3218:364;3238:14;;;3218:364;;;3276:3;;3280:1;3276:6;;;;;;;:::i;:::-;;;;;;;3271:11;;3306:7;;3314:1;3306:10;;;;;;;:::i;:::-;3333:15;;;:9;:15;;;3306:10;3333:15;;;;;;;:19;;;;;;;:29;;3306:10;;;;;;;;;;-1:-1:-1;3306:10:0;;3333:19;-1:-1:-1;3333:9:0;:29;;3306:10;;3333:29;:::i;:::-;;;;-1:-1:-1;;3377:13:0;;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;3398:6;;3377:9;:27;;3398:6;;3377:27;:::i;:::-;;;;-1:-1:-1;;3552:3:0;;3218:364;;;;3631:2;3599:49;;3625:4;3599:49;;3613:10;3599:49;;;3635:3;;3640:7;;3599:49;;;;;;;;;:::i;:::-;;;;;;;;3665:14;;;;:19;3661:344;;3727:85;;3837:52;3727:85;;;3837:52;3727:47;;;;3837:52;;3727:85;;3775:10;;3787:4;;3793:3;;;;3798:7;;;;3807:4;;;;3727:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:162;;;3701:240;;;;;;;21011:2:1;3701:240:0;;;20993:21:1;21050:2;21030:18;;;21023:30;21089:18;21069;;;21062:46;21125:18;;3701:240:0;20809:340:1;3701:240:0;3661:344;;;3967:16;;;3959:46;;;;;;;21356:2:1;3959:46:0;;;21338:21:1;21395:2;21375:18;;;21368:30;21434:19;21414:18;;;21407:47;21471:18;;3959:46:0;21154:341:1;3959:46:0;2922:1091;;2725:1288;;;;;;;;:::o;5360:603::-;5505:13;;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;5526:6;;5505:9;:27;;5526:6;;5505:27;:::i;:::-;;;;-1:-1:-1;;5550:54:0;;;21674:25:1;;;21730:2;21715:18;;21708:34;;;5550:54:0;;;;5585:1;;5565:10;;5550:54;;21647:18:1;5550:54:0;;;;;;;5621:14;;;;:19;5617:338;;5683:84;;5792:47;5683:84;;;5792:47;5683:42;;;;5792:47;;5683:84;;5726:10;;5746:1;;5750:2;;5754:6;;5762:4;;5683:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:156;;;5657:234;;;;;;;21011:2:1;5657:234:0;;;20993:21:1;21050:2;21030:18;;;21023:30;21089:18;21069;;;21062:46;21125:18;;5657:234:0;20809:340:1;5657:234:0;5617:338;;;5917:16;;;5909:46;;;;;;;21356:2:1;5909:46:0;;;21338:21:1;21395:2;21375:18;;;21368:30;21434:19;21414:18;;;21407:47;21471:18;;5909:46:0;21154:341:1;5909:46:0;5360:603;;;;:::o;1956:761::-;2143:10;:18;;;;;:56;;-1:-1:-1;2165:22:0;;;;;;;:16;:22;;;;;;;;2188:10;2165:34;;;;;;;;;;2143:56;2135:83;;;;;;;18139:2:1;2135:83:0;;;18121:21:1;18178:2;18158:18;;;18151:30;18217:16;18197:18;;;18190:44;18251:18;;2135:83:0;17937:338:1;2135:83:0;2231:15;;;:9;:15;;;;;;;;;;;:19;;;;;;;;:29;;2254:6;;2231:9;:29;;2254:6;;2231:29;:::i;:::-;;;;-1:-1:-1;;2271:13:0;;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;2292:6;;2271:9;:27;;2292:6;;2271:27;:::i;:::-;;;;-1:-1:-1;;2316:48:0;;;21674:25:1;;;21730:2;21715:18;;21708:34;;;2316:48:0;;;;;;;;;2331:10;;2316:48;;21647:18:1;2316:48:0;;;;;;;2381:14;;;;:19;2377:332;;2443:78;;2546:47;2443:78;;;2546:47;2443:42;;;;2546:47;;2443:78;;2486:10;;2498:4;;2504:2;;2508:6;;2516:4;;;;2443:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:150;;;2417:228;;;;;;;21011:2:1;2417:228:0;;;20993:21:1;21050:2;21030:18;;;21023:30;21089:18;21069;;;21062:46;21125:18;;2417:228:0;20809:340:1;2417:228:0;2377:332;;;2671:16;;;2663:46;;;;;;;21356:2:1;2663:46:0;;;21338:21:1;21395:2;21375:18;;;21368:30;21434:19;21414:18;;;21407:47;21471:18;;2663:46:0;21154:341:1;7614:230:0;7733:15;;;:9;:15;;;;;;;;;;;:19;;;;;;;;:29;;7756:6;;7733:9;:29;;7756:6;;7733:29;:::i;:::-;;;;-1:-1:-1;;7780:56:0;;;21674:25:1;;;21730:2;21715:18;;21708:34;;;7821:1:0;;7780:56;;;;7795:10;;7780:56;;21647:18:1;7780:56:0;;;;;;;7614:230;;;:::o;14:154:1:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:315::-;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;478:2;463:18;;;;450:32;;-1:-1:-1;;;173:315:1:o;675:177::-;760:66;753:5;749:78;742:5;739:89;729:117;;842:1;839;832:12;857:245;915:6;968:2;956:9;947:7;943:23;939:32;936:52;;;984:1;981;974:12;936:52;1023:9;1010:23;1042:30;1066:5;1042:30;:::i;1299:250::-;1384:1;1394:113;1408:6;1405:1;1402:13;1394:113;;;1484:11;;;1478:18;1465:11;;;1458:39;1430:2;1423:10;1394:113;;;-1:-1:-1;;1541:1:1;1523:16;;1516:27;1299:250::o;1554:330::-;1596:3;1634:5;1628:12;1661:6;1656:3;1649:19;1677:76;1746:6;1739:4;1734:3;1730:14;1723:4;1716:5;1712:16;1677:76;:::i;:::-;1798:2;1786:15;1803:66;1782:88;1773:98;;;;1873:4;1769:109;;1554:330;-1:-1:-1;;1554:330:1:o;1889:220::-;2038:2;2027:9;2020:21;2001:4;2058:45;2099:2;2088:9;2084:18;2076:6;2058:45;:::i;2114:180::-;2173:6;2226:2;2214:9;2205:7;2201:23;2197:32;2194:52;;;2242:1;2239;2232:12;2194:52;-1:-1:-1;2265:23:1;;2114:180;-1:-1:-1;2114:180:1:o;2299:247::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;2466:9;2453:23;2485:31;2510:5;2485:31;:::i;2551:367::-;2614:8;2624:6;2678:3;2671:4;2663:6;2659:17;2655:27;2645:55;;2696:1;2693;2686:12;2645:55;-1:-1:-1;2719:20:1;;2762:18;2751:30;;2748:50;;;2794:1;2791;2784:12;2748:50;2831:4;2823:6;2819:17;2807:29;;2891:3;2884:4;2874:6;2871:1;2867:14;2859:6;2855:27;2851:38;2848:47;2845:67;;;2908:1;2905;2898:12;2845:67;2551:367;;;;;:::o;2923:347::-;2974:8;2984:6;3038:3;3031:4;3023:6;3019:17;3015:27;3005:55;;3056:1;3053;3046:12;3005:55;-1:-1:-1;3079:20:1;;3122:18;3111:30;;3108:50;;;3154:1;3151;3144:12;3108:50;3191:4;3183:6;3179:17;3167:29;;3243:3;3236:4;3227:6;3219;3215:19;3211:30;3208:39;3205:59;;;3260:1;3257;3250:12;3275:1338;3435:6;3443;3451;3459;3467;3475;3483;3491;3544:3;3532:9;3523:7;3519:23;3515:33;3512:53;;;3561:1;3558;3551:12;3512:53;3600:9;3587:23;3619:31;3644:5;3619:31;:::i;:::-;3669:5;-1:-1:-1;3726:2:1;3711:18;;3698:32;3739:33;3698:32;3739:33;:::i;:::-;3791:7;-1:-1:-1;3849:2:1;3834:18;;3821:32;3872:18;3902:14;;;3899:34;;;3929:1;3926;3919:12;3899:34;3968:70;4030:7;4021:6;4010:9;4006:22;3968:70;:::i;:::-;4057:8;;-1:-1:-1;3942:96:1;-1:-1:-1;4145:2:1;4130:18;;4117:32;;-1:-1:-1;4161:16:1;;;4158:36;;;4190:1;4187;4180:12;4158:36;4229:72;4293:7;4282:8;4271:9;4267:24;4229:72;:::i;:::-;4320:8;;-1:-1:-1;4203:98:1;-1:-1:-1;4408:3:1;4393:19;;4380:33;;-1:-1:-1;4425:16:1;;;4422:36;;;4454:1;4451;4444:12;4422:36;;4493:60;4545:7;4534:8;4523:9;4519:24;4493:60;:::i;:::-;3275:1338;;;;-1:-1:-1;3275:1338:1;;-1:-1:-1;3275:1338:1;;;;;;4572:8;-1:-1:-1;;;3275:1338:1:o;4618:773::-;4740:6;4748;4756;4764;4817:2;4805:9;4796:7;4792:23;4788:32;4785:52;;;4833:1;4830;4823:12;4785:52;4873:9;4860:23;4902:18;4943:2;4935:6;4932:14;4929:34;;;4959:1;4956;4949:12;4929:34;4998:70;5060:7;5051:6;5040:9;5036:22;4998:70;:::i;:::-;5087:8;;-1:-1:-1;4972:96:1;-1:-1:-1;5175:2:1;5160:18;;5147:32;;-1:-1:-1;5191:16:1;;;5188:36;;;5220:1;5217;5210:12;5188:36;;5259:72;5323:7;5312:8;5301:9;5297:24;5259:72;:::i;:::-;4618:773;;;;-1:-1:-1;5350:8:1;-1:-1:-1;;;;4618:773:1:o;5396:632::-;5567:2;5619:21;;;5689:13;;5592:18;;;5711:22;;;5538:4;;5567:2;5790:15;;;;5764:2;5749:18;;;5538:4;5833:169;5847:6;5844:1;5841:13;5833:169;;;5908:13;;5896:26;;5977:15;;;;5942:12;;;;5869:1;5862:9;5833:169;;;-1:-1:-1;6019:3:1;;5396:632;-1:-1:-1;;;;;;5396:632:1:o;6033:410::-;6104:6;6112;6165:2;6153:9;6144:7;6140:23;6136:32;6133:52;;;6181:1;6178;6171:12;6133:52;6221:9;6208:23;6254:18;6246:6;6243:30;6240:50;;;6286:1;6283;6276:12;6240:50;6325:58;6375:7;6366:6;6355:9;6351:22;6325:58;:::i;:::-;6402:8;;6299:84;;-1:-1:-1;6033:410:1;-1:-1:-1;;;;6033:410:1:o;6448:160::-;6513:20;;6569:13;;6562:21;6552:32;;6542:60;;6598:1;6595;6588:12;6542:60;6448:160;;;:::o;6613:248::-;6678:6;6686;6739:2;6727:9;6718:7;6714:23;6710:32;6707:52;;;6755:1;6752;6745:12;6707:52;6791:9;6778:23;6768:33;;6820:35;6851:2;6840:9;6836:18;6820:35;:::i;:::-;6810:45;;6613:248;;;;;:::o;6866:681::-;6963:6;6971;6979;6987;6995;7048:3;7036:9;7027:7;7023:23;7019:33;7016:53;;;7065:1;7062;7055:12;7016:53;7104:9;7091:23;7123:31;7148:5;7123:31;:::i;:::-;7173:5;-1:-1:-1;7225:2:1;7210:18;;7197:32;;-1:-1:-1;7276:2:1;7261:18;;7248:32;;-1:-1:-1;7331:2:1;7316:18;;7303:32;7358:18;7347:30;;7344:50;;;7390:1;7387;7380:12;7344:50;7429:58;7479:7;7470:6;7459:9;7455:22;7429:58;:::i;:::-;6866:681;;;;-1:-1:-1;6866:681:1;;-1:-1:-1;7506:8:1;;7403:84;6866:681;-1:-1:-1;;;6866:681:1:o;7783:315::-;7848:6;7856;7909:2;7897:9;7888:7;7884:23;7880:32;7877:52;;;7925:1;7922;7915:12;7877:52;7964:9;7951:23;7983:31;8008:5;7983:31;:::i;:::-;8033:5;-1:-1:-1;8057:35:1;8088:2;8073:18;;8057:35;:::i;8103:448::-;8200:6;8208;8261:2;8249:9;8240:7;8236:23;8232:32;8229:52;;;8277:1;8274;8267:12;8229:52;8317:9;8304:23;8350:18;8342:6;8339:30;8336:50;;;8382:1;8379;8372:12;8336:50;8421:70;8483:7;8474:6;8463:9;8459:22;8421:70;:::i;8556:860::-;8716:4;8745:2;8785;8774:9;8770:18;8815:2;8804:9;8797:21;8838:6;8873;8867:13;8904:6;8896;8889:22;8942:2;8931:9;8927:18;8920:25;;9004:2;8994:6;8991:1;8987:14;8976:9;8972:30;8968:39;8954:53;;9042:2;9034:6;9030:15;9063:1;9073:314;9087:6;9084:1;9081:13;9073:314;;;9176:66;9164:9;9156:6;9152:22;9148:95;9143:3;9136:108;9267:40;9300:6;9291;9285:13;9267:40;:::i;:::-;9257:50;-1:-1:-1;9365:12:1;;;;9330:15;;;;9109:1;9102:9;9073:314;;;-1:-1:-1;9404:6:1;;8556:860;-1:-1:-1;;;;;;;8556:860:1:o;9934:388::-;10002:6;10010;10063:2;10051:9;10042:7;10038:23;10034:32;10031:52;;;10079:1;10076;10069:12;10031:52;10118:9;10105:23;10137:31;10162:5;10137:31;:::i;:::-;10187:5;-1:-1:-1;10244:2:1;10229:18;;10216:32;10257:33;10216:32;10257:33;:::i;:::-;10309:7;10299:17;;;9934:388;;;;;:::o;10327:823::-;10433:6;10441;10449;10457;10465;10473;10526:3;10514:9;10505:7;10501:23;10497:33;10494:53;;;10543:1;10540;10533:12;10494:53;10582:9;10569:23;10601:31;10626:5;10601:31;:::i;:::-;10651:5;-1:-1:-1;10708:2:1;10693:18;;10680:32;10721:33;10680:32;10721:33;:::i;:::-;10773:7;-1:-1:-1;10827:2:1;10812:18;;10799:32;;-1:-1:-1;10878:2:1;10863:18;;10850:32;;-1:-1:-1;10933:3:1;10918:19;;10905:33;10961:18;10950:30;;10947:50;;;10993:1;10990;10983:12;10947:50;11032:58;11082:7;11073:6;11062:9;11058:22;11032:58;:::i;:::-;10327:823;;;;-1:-1:-1;10327:823:1;;-1:-1:-1;10327:823:1;;11109:8;;10327:823;-1:-1:-1;;;10327:823:1:o;11155:383::-;11232:6;11240;11248;11301:2;11289:9;11280:7;11276:23;11272:32;11269:52;;;11317:1;11314;11307:12;11269:52;11356:9;11343:23;11375:31;11400:5;11375:31;:::i;:::-;11425:5;11477:2;11462:18;;11449:32;;-1:-1:-1;11528:2:1;11513:18;;;11500:32;;11155:383;-1:-1:-1;;;11155:383:1:o;11543:437::-;11622:1;11618:12;;;;11665;;;11686:61;;11740:4;11732:6;11728:17;11718:27;;11686:61;11793:2;11785:6;11782:14;11762:18;11759:38;11756:218;;11830:77;11827:1;11820:88;11931:4;11928:1;11921:15;11959:4;11956:1;11949:15;11985:496;12164:3;12202:6;12196:13;12218:66;12277:6;12272:3;12265:4;12257:6;12253:17;12218:66;:::i;:::-;12347:13;;12306:16;;;;12369:70;12347:13;12306:16;12416:4;12404:17;;12369:70;:::i;:::-;12455:20;;11985:496;-1:-1:-1;;;;11985:496:1:o;12486:184::-;12538:77;12535:1;12528:88;12635:4;12632:1;12625:15;12659:4;12656:1;12649:15;12675:956;12755:6;12808:2;12796:9;12787:7;12783:23;12779:32;12776:52;;;12824:1;12821;12814:12;12776:52;12857:9;12851:16;12886:18;12927:2;12919:6;12916:14;12913:34;;;12943:1;12940;12933:12;12913:34;12981:6;12970:9;12966:22;12956:32;;13026:7;13019:4;13015:2;13011:13;13007:27;12997:55;;13048:1;13045;13038:12;12997:55;13077:2;13071:9;13099:2;13095;13092:10;13089:36;;;13105:18;;:::i;:::-;13239:2;13233:9;13301:4;13293:13;;13144:66;13289:22;;;13313:2;13285:31;13281:40;13269:53;;;13337:18;;;13357:22;;;13334:46;13331:72;;;13383:18;;:::i;:::-;13423:10;13419:2;13412:22;13458:2;13450:6;13443:18;13498:7;13493:2;13488;13484;13480:11;13476:20;13473:33;13470:53;;;13519:1;13516;13509:12;13470:53;13532:68;13597:2;13592;13584:6;13580:15;13575:2;13571;13567:11;13532:68;:::i;:::-;13619:6;12675:956;-1:-1:-1;;;;;;;12675:956:1:o;13977:184::-;14029:77;14026:1;14019:88;14126:4;14123:1;14116:15;14150:4;14147:1;14140:15;14980:545;15082:2;15077:3;15074:11;15071:448;;;15118:1;15143:5;15139:2;15132:17;15188:4;15184:2;15174:19;15258:2;15246:10;15242:19;15239:1;15235:27;15229:4;15225:38;15294:4;15282:10;15279:20;15276:47;;;-1:-1:-1;15317:4:1;15276:47;15372:2;15367:3;15363:12;15360:1;15356:20;15350:4;15346:31;15336:41;;15427:82;15445:2;15438:5;15435:13;15427:82;;;15490:17;;;15471:1;15460:13;15427:82;;15761:1325;15885:18;15880:3;15877:27;15874:53;;;15907:18;;:::i;:::-;15936:94;16026:3;15986:38;16018:4;16012:11;15986:38;:::i;:::-;15980:4;15936:94;:::i;:::-;16056:1;16081:2;16076:3;16073:11;16098:1;16093:735;;;;16872:1;16889:3;16886:93;;;-1:-1:-1;16945:19:1;;;16932:33;16886:93;15667:66;15658:1;15654:11;;;15650:84;15646:89;15636:100;15742:1;15738:11;;;15633:117;16992:78;;16066:1014;;16093:735;14927:1;14920:14;;;14964:4;14951:18;;16138:66;16129:76;;;16289:9;16311:229;16325:7;16322:1;16319:14;16311:229;;;16414:19;;;16401:33;16386:49;;16521:4;16506:20;;;;16474:1;16462:14;;;;16341:12;16311:229;;;16315:3;16568;16559:7;16556:16;16553:219;;;16688:66;16682:3;16676;16673:1;16669:11;16665:21;16661:94;16657:99;16644:9;16639:3;16635:19;16622:33;16618:139;16610:6;16603:155;16553:219;;;16815:1;16809:3;16806:1;16802:11;16798:19;16792:4;16785:33;16066:1014;;15761:1325;;;:::o;17091:326::-;17180:6;17175:3;17168:19;17232:6;17225:5;17218:4;17213:3;17209:14;17196:43;;17284:1;17277:4;17268:6;17263:3;17259:16;17255:27;17248:38;17150:3;17406:4;17336:66;17331:2;17323:6;17319:15;17315:88;17310:3;17306:98;17302:109;17295:116;;17091:326;;;;:::o;17422:247::-;17581:2;17570:9;17563:21;17544:4;17601:62;17659:2;17648:9;17644:18;17636:6;17628;17601:62;:::i;:::-;17593:70;17422:247;-1:-1:-1;;;;17422:247:1:o;18280:184::-;18332:77;18329:1;18322:88;18429:4;18426:1;18419:15;18453:4;18450:1;18443:15;18469:128;18536:9;;;18557:11;;;18554:37;;;18571:18;;:::i;18602:125::-;18667:9;;;18688:10;;;18685:36;;;18701:18;;:::i;18732:358::-;18832:6;18827:3;18820:19;18802:3;18862:66;18854:6;18851:78;18848:98;;;18942:1;18939;18932:12;18848:98;18978:6;18975:1;18971:14;19030:8;19023:5;19016:4;19011:3;19007:14;18994:45;19059:18;;;;19079:4;19055:29;;18732:358;-1:-1:-1;;;18732:358:1:o;19095:519::-;19372:2;19361:9;19354:21;19335:4;19398:73;19467:2;19456:9;19452:18;19444:6;19436;19398:73;:::i;:::-;19519:9;19511:6;19507:22;19502:2;19491:9;19487:18;19480:50;19547:61;19601:6;19593;19585;19547:61;:::i;19619:931::-;19971:4;20000:42;20081:2;20073:6;20069:15;20058:9;20051:34;20133:2;20125:6;20121:15;20116:2;20105:9;20101:18;20094:43;;20173:3;20168:2;20157:9;20153:18;20146:31;20200:74;20269:3;20258:9;20254:19;20246:6;20238;20200:74;:::i;:::-;20322:9;20314:6;20310:22;20305:2;20294:9;20290:18;20283:50;20356:61;20410:6;20402;20394;20356:61;:::i;:::-;20342:75;;20466:9;20458:6;20454:22;20448:3;20437:9;20433:19;20426:51;20494:50;20537:6;20529;20521;20494:50;:::i;:::-;20486:58;19619:931;-1:-1:-1;;;;;;;;;;;19619:931:1:o;20555:249::-;20624:6;20677:2;20665:9;20656:7;20652:23;20648:32;20645:52;;;20693:1;20690;20683:12;20645:52;20725:9;20719:16;20744:30;20768:5;20744:30;:::i;21753:584::-;21975:4;22004:42;22085:2;22077:6;22073:15;22062:9;22055:34;22137:2;22129:6;22125:15;22120:2;22109:9;22105:18;22098:43;;22177:6;22172:2;22161:9;22157:18;22150:34;22220:6;22215:2;22204:9;22200:18;22193:34;22264:3;22258;22247:9;22243:19;22236:32;22285:46;22326:3;22315:9;22311:19;22303:6;22285:46;:::i;22342:611::-;22574:4;22603:42;22684:2;22676:6;22672:15;22661:9;22654:34;22736:2;22728:6;22724:15;22719:2;22708:9;22704:18;22697:43;;22776:6;22771:2;22760:9;22756:18;22749:34;22819:6;22814:2;22803:9;22799:18;22792:34;22863:3;22857;22846:9;22842:19;22835:32;22884:63;22942:3;22931:9;22927:19;22919:6;22911;22884:63;:::i;:::-;22876:71;22342:611;-1:-1:-1;;;;;;;;22342:611:1:o
Swarm Source
ipfs://32376a73e342a555ba7b08fd53296217648310dc7155faf75c3dcf3137603352
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.