More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 881,456 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 59496456 | 1 hr ago | IN | 0 ETH | 0.00000448 | ||||
Set Approval For... | 59451461 | 31 hrs ago | IN | 0 ETH | 0.00000498 | ||||
Set Approval For... | 59267106 | 6 days ago | IN | 0 ETH | 0.00000498 | ||||
Set Approval For... | 59079007 | 10 days ago | IN | 0 ETH | 0.00000505 | ||||
Set Approval For... | 59034276 | 11 days ago | IN | 0 ETH | 0.00000446 | ||||
Set Approval For... | 59002828 | 11 days ago | IN | 0 ETH | 0.00000605 | ||||
Set Approval For... | 58971919 | 12 days ago | IN | 0 ETH | 0.00000516 | ||||
Set Approval For... | 58783839 | 15 days ago | IN | 0 ETH | 0.00000455 | ||||
Set Approval For... | 58663835 | 18 days ago | IN | 0 ETH | 0.00000572 | ||||
Set Approval For... | 58663821 | 18 days ago | IN | 0 ETH | 0.00000431 | ||||
Set Approval For... | 58593183 | 20 days ago | IN | 0 ETH | 0.00000445 | ||||
Set Approval For... | 58590303 | 20 days ago | IN | 0 ETH | 0.00000436 | ||||
Set Approval For... | 58434166 | 23 days ago | IN | 0 ETH | 0.00000451 | ||||
Set Approval For... | 58392937 | 24 days ago | IN | 0 ETH | 0.00000459 | ||||
Set Approval For... | 58368941 | 24 days ago | IN | 0 ETH | 0.00000447 | ||||
Set Approval For... | 58350254 | 25 days ago | IN | 0 ETH | 0.00000445 | ||||
Set Approval For... | 58326312 | 25 days ago | IN | 0 ETH | 0.0000044 | ||||
Set Approval For... | 58324776 | 25 days ago | IN | 0 ETH | 0.00000438 | ||||
Set Approval For... | 58286469 | 26 days ago | IN | 0 ETH | 0.00000516 | ||||
Set Approval For... | 58090614 | 30 days ago | IN | 0 ETH | 0.00000461 | ||||
Set Approval For... | 58009155 | 32 days ago | IN | 0 ETH | 0.00000505 | ||||
Set Approval For... | 57975622 | 33 days ago | IN | 0 ETH | 0.00000428 | ||||
Set Approval For... | 57886522 | 35 days ago | IN | 0 ETH | 0.00000451 | ||||
Set Approval For... | 57879623 | 35 days ago | IN | 0 ETH | 0.00000451 | ||||
Set Approval For... | 57877200 | 35 days ago | IN | 0 ETH | 0.00000498 |
Loading...
Loading
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:
BaseRegistrarImplementation
Compiler Version
v0.5.17+commit.d19bba13
ZkSolc Version
v1.3.5
Contract Source Code (Solidity)
/** *Submitted for verification at era.zksync.network on 2024-01-04 */ // File: @ensdomains/ens/contracts/ENS.sol pragma solidity >=0.4.24; interface ENS { // Logged when the owner of a node assigns a new owner to a subnode. event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner); // Logged when the owner of a node transfers ownership to a new account. event Transfer(bytes32 indexed node, address owner); // Logged when the resolver for a node changes. event NewResolver(bytes32 indexed node, address resolver); // Logged when the TTL of a node changes event NewTTL(bytes32 indexed node, uint64 ttl); // Logged when an operator is added or removed. event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) external; function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external; function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external returns(bytes32); function setResolver(bytes32 node, address resolver) external; function setOwner(bytes32 node, address owner) external; function setTTL(bytes32 node, uint64 ttl) external; function setApprovalForAll(address operator, bool approved) external; function owner(bytes32 node) external view returns (address); function resolver(bytes32 node) external view returns (address); function ttl(bytes32 node) external view returns (uint64); function recordExists(bytes32 node) external view returns (bool); function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: openzeppelin-solidity/contracts/introspection/IERC165.sol pragma solidity ^0.5.0; /** * @title IERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */ interface IERC165 { /** * @notice Query if a contract implements an interface * @param interfaceId The interface identifier, as specified in ERC-165 * @dev Interface identification is specified in ERC-165. This function * uses less than 30,000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: openzeppelin-solidity/contracts/token/ERC721/IERC721.sol pragma solidity ^0.5.0; /** * @title ERC721 Non-Fungible Token Standard basic interface * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ contract IERC721 is IERC165 { 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) public view returns (uint256 balance); function ownerOf(uint256 tokenId) public view returns (address owner); function approve(address to, uint256 tokenId) public; function getApproved(uint256 tokenId) public view returns (address operator); function setApprovalForAll(address operator, bool _approved) public; function isApprovedForAll(address owner, address operator) public view returns (bool); function transferFrom(address from, address to, uint256 tokenId) public; function safeTransferFrom(address from, address to, uint256 tokenId) public; function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public; } // File: openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.5.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ contract IERC721Receiver { /** * @notice Handle the receipt of an NFT * @dev The ERC721 smart contract calls this function on the recipient * after a `safeTransfer`. This function MUST return the function selector, * otherwise the caller will revert the transaction. The selector to be * returned can be obtained as `this.onERC721Received.selector`. This * function MAY throw to revert and reject the transfer. * Note: the ERC721 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)"))` */ function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data) public returns (bytes4); } // File: openzeppelin-solidity/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } // File: openzeppelin-solidity/contracts/utils/Address.sol pragma solidity ^0.5.0; /** * Utility library of inline functions on addresses */ library Address { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } // File: openzeppelin-solidity/contracts/introspection/ERC165.sol pragma solidity ^0.5.0; /** * @title ERC165 * @author Matt Condon (@shrugs) * @dev Implements ERC165 using a lookup table. */ contract ERC165 is IERC165 { bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; /** * 0x01ffc9a7 === * bytes4(keccak256('supportsInterface(bytes4)')) */ /** * @dev a mapping of interface id to whether or not it's supported */ mapping(bytes4 => bool) private _supportedInterfaces; /** * @dev A contract implementing SupportsInterfaceWithLookup * implement ERC165 itself */ constructor () internal { _registerInterface(_INTERFACE_ID_ERC165); } /** * @dev implement supportsInterface(bytes4) using a lookup table */ function supportsInterface(bytes4 interfaceId) external view returns (bool) { return _supportedInterfaces[interfaceId]; } /** * @dev internal method for registering an interface */ function _registerInterface(bytes4 interfaceId) internal { require(interfaceId != 0xffffffff); _supportedInterfaces[interfaceId] = true; } } // File: openzeppelin-solidity/contracts/token/ERC721/ERC721.sol pragma solidity ^0.5.0; /** * @title ERC721 Non-Fungible Token Standard basic implementation * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ contract ERC721 is ERC165, IERC721 { using SafeMath for uint256; using Address for address; // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; // Mapping from token ID to owner mapping (uint256 => address) private _tokenOwner; // Mapping from token ID to approved address mapping (uint256 => address) private _tokenApprovals; // Mapping from owner to number of owned token mapping (address => uint256) private _ownedTokensCount; mapping (address => uint256[]) private _ownedTokenIds; mapping (address => uint256) private _primaryTokenId; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) private _operatorApprovals; bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; /* * 0x80ac58cd === * bytes4(keccak256('balanceOf(address)')) ^ * bytes4(keccak256('ownerOf(uint256)')) ^ * bytes4(keccak256('approve(address,uint256)')) ^ * bytes4(keccak256('getApproved(uint256)')) ^ * bytes4(keccak256('setApprovalForAll(address,bool)')) ^ * bytes4(keccak256('isApprovedForAll(address,address)')) ^ * bytes4(keccak256('transferFrom(address,address,uint256)')) ^ * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^ * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) */ constructor () public { // register the supported interfaces to conform to ERC721 via ERC165 _registerInterface(_INTERFACE_ID_ERC721); } /** * @dev Gets the balance of the specified address * @param owner address to query the balance of * @return uint256 representing the amount owned by the passed address */ function balanceOf(address owner) public view returns (uint256) { require(owner != address(0)); return _ownedTokensCount[owner]; } /** * @dev Gets the owner of the specified token ID * @param tokenId uint256 ID of the token to query the owner of * @return owner address currently marked as the owner of the given token ID */ function ownerOf(uint256 tokenId) public view returns (address) { address owner = _tokenOwner[tokenId]; require(owner != address(0)); return owner; } /** * @dev Approves another address to transfer the given token ID * The zero address indicates there is no approved address. * There can only be one approved address per token at a given time. * Can only be called by the token owner or an approved operator. * @param to address to be approved for the given token ID * @param tokenId uint256 ID of the token to be approved */ function approve(address to, uint256 tokenId) public { address owner = ownerOf(tokenId); require(to != owner); require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } /** * @dev Gets the approved address for a token ID, or zero if no address set * Reverts if the token ID does not exist. * @param tokenId uint256 ID of the token to query the approval of * @return address currently approved for the given token ID */ function getApproved(uint256 tokenId) public view returns (address) { require(_exists(tokenId)); return _tokenApprovals[tokenId]; } /** * @dev Sets or unsets the approval of a given operator * An operator is allowed to transfer all tokens of the sender on their behalf * @param to operator address to set the approval * @param approved representing the status of the approval to be set */ function setApprovalForAll(address to, bool approved) public { require(to != msg.sender); _operatorApprovals[msg.sender][to] = approved; emit ApprovalForAll(msg.sender, to, approved); } /** * @dev Tells whether an operator is approved by a given owner * @param owner owner address which you want to query the approval of * @param operator operator address which you want to query the approval of * @return bool whether the given operator is approved by the given owner */ function isApprovedForAll(address owner, address operator) public view returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev Transfers the ownership of a given token ID to another address * Usage of this method is discouraged, use `safeTransferFrom` whenever possible * Requires the msg sender to be the owner, approved, or operator * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred */ function transferFrom(address from, address to, uint256 tokenId) public { require(_isApprovedOrOwner(msg.sender, tokenId)); _transferFrom(from, to, tokenId); } /** * @dev Safely transfers the ownership of a given token ID to another address * If the target address is a contract, it must implement `onERC721Received`, * which is called upon a safe transfer, and return the magic value * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, * the transfer is reverted. * * Requires the msg sender to be the owner, approved, or operator * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred */ function safeTransferFrom(address from, address to, uint256 tokenId) public { safeTransferFrom(from, to, tokenId, ""); } /** * @dev Safely transfers the ownership of a given token ID to another address * If the target address is a contract, it must implement `onERC721Received`, * which is called upon a safe transfer, and return the magic value * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, * the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred * @param _data bytes data to send along with a safe transfer check */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public { transferFrom(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data)); } function allOwnedIds(address user) public view returns (uint256[] memory) { return _ownedTokenIds[user]; } /** * @dev Returns whether the specified token exists * @param tokenId uint256 ID of the token to query the existence of * @return whether the token exists */ function _exists(uint256 tokenId) internal view returns (bool) { address owner = _tokenOwner[tokenId]; return owner != address(0); } function _setPrimaryId(address user, uint256 tokenId) internal { _primaryTokenId[user] = tokenId; } function _getPrimaryId(address user) internal view returns (uint256) { return _primaryTokenId[user]; } /** * @dev Returns whether the given spender can transfer a given token ID * @param spender address of the spender to query * @param tokenId uint256 ID of the token to be transferred * @return bool whether the msg.sender is approved for the given token ID, * is an operator of the owner, or is the owner of the token */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) { address owner = ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Internal function to mint a new token * Reverts if the given token ID already exists * @param to The address that will own the minted token * @param tokenId uint256 ID of the token to be minted */ function _mint(address to, uint256 tokenId) internal { require(to != address(0)); require(!_exists(tokenId)); _tokenOwner[tokenId] = to; _ownedTokensCount[to] = _ownedTokensCount[to].add(1); _ownedTokenIds[to].push(tokenId); emit Transfer(address(0), to, tokenId); } /** * @dev Internal function to burn a specific token * Reverts if the token does not exist * Deprecated, use _burn(uint256) instead. * @param owner owner of the token to burn * @param tokenId uint256 ID of the token being burned */ function _burn(address owner, uint256 tokenId) internal { require(ownerOf(tokenId) == owner); _clearApproval(tokenId); _ownedTokensCount[owner] = _ownedTokensCount[owner].sub(1); if (_primaryTokenId[owner] == tokenId) { delete _primaryTokenId[owner]; } _removeTokenFromOwner(owner, tokenId); _tokenOwner[tokenId] = address(0); emit Transfer(owner, address(0), tokenId); } /** * @dev Internal function to burn a specific token * Reverts if the token does not exist * @param tokenId uint256 ID of the token being burned */ function _burn(uint256 tokenId) internal { _burn(ownerOf(tokenId), tokenId); } function _removeTokenFromOwner(address owner, uint256 tokenId) internal { for (uint256 i; i<_ownedTokenIds[owner].length; i++) { if (_ownedTokenIds[owner][i] == tokenId) { _ownedTokenIds[owner][i] = _ownedTokenIds[owner][_ownedTokenIds[owner].length - 1]; _ownedTokenIds[owner].pop(); break; } } } /** * @dev Internal function to transfer ownership of a given token ID to another address. * As opposed to transferFrom, this imposes no restrictions on msg.sender. * @param from current owner of the token * @param to address to receive the ownership of the given token ID * @param tokenId uint256 ID of the token to be transferred */ function _transferFrom(address from, address to, uint256 tokenId) internal { require(ownerOf(tokenId) == from); require(to != address(0)); _clearApproval(tokenId); _ownedTokensCount[from] = _ownedTokensCount[from].sub(1); _removeTokenFromOwner(from, tokenId); if (_primaryTokenId[from] == tokenId) { delete _primaryTokenId[from]; } _ownedTokensCount[to] = _ownedTokensCount[to].add(1); _ownedTokenIds[to].push(tokenId); _tokenOwner[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Internal function to invoke `onERC721Received` on a target address * The call is not executed if the target address is not a contract * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return whether the call correctly returned the expected magic value */ function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) internal returns (bool) { if (!to.isContract()) { return true; } bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data); return (retval == _ERC721_RECEIVED); } /** * @dev Private function to clear current approval of a given token ID * @param tokenId uint256 ID of the token to be transferred */ function _clearApproval(uint256 tokenId) private { if (_tokenApprovals[tokenId] != address(0)) { _tokenApprovals[tokenId] = address(0); } } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @ensdomains/ethregistrar/contracts/BaseRegistrar.sol pragma solidity >=0.4.24; contract BaseRegistrar is IERC721, Ownable { uint constant public GRACE_PERIOD = 90 days; event ControllerAdded(address indexed controller); event ControllerRemoved(address indexed controller); event NameMigrated(uint256 indexed id, address indexed owner, uint expires); event NameRegistered(uint256 indexed id, address indexed owner, uint expires); event NameRenewed(uint256 indexed id, uint expires); // The ENS registry ENS public ens; // The namehash of the TLD this registrar owns (eg, .eth) bytes32 public baseNode; // A map of addresses that are authorised to register and renew names. mapping(address=>bool) public controllers; // Authorises a controller, who can register and renew domains. function addController(address controller) external; // Revoke controller permission for an address. function removeController(address controller) external; // Set the resolver for the TLD this registrar manages. function setResolver(address resolver) external; // Returns the expiration timestamp of the specified label hash. function nameExpires(uint256 id) external view returns(uint); // Returns true iff the specified name is available for registration. function available(uint256 id) public view returns(bool); /** * @dev Register a name. */ function register(string calldata name, uint256 id, address owner, uint duration) external returns(uint); function renew(uint256 id, uint duration) external returns(uint); /** * @dev Reclaim ownership of a name in ENS, if you own it in the registrar. */ function reclaim(uint256 id, address owner) external; } // File: @ensdomains/ethregistrar/contracts/BaseRegistrarImplementation.sol pragma solidity ^0.5.0; pragma experimental ABIEncoderV2; contract BaseRegistrarImplementation is BaseRegistrar, ERC721 { // A map of expiry times mapping(uint256=>uint) expiries; mapping(uint256=>string) private nameMap; mapping(string=>address) private domainMap; // Token name string private _name; // Token symbol string private _symbol; string public baseURI = "https://ipfs.io/"; string public baseExtension = ".json"; bytes4 constant private INTERFACE_META_ID = bytes4(keccak256("supportsInterface(bytes4)")); bytes4 constant private ERC721_ID = bytes4( keccak256("balanceOf(address)") ^ keccak256("ownerOf(uint256)") ^ keccak256("approve(address,uint256)") ^ keccak256("getApproved(uint256)") ^ keccak256("setApprovalForAll(address,bool)") ^ keccak256("isApprovedForAll(address,address)") ^ keccak256("transferFrom(address,address,uint256)") ^ keccak256("safeTransferFrom(address,address,uint256)") ^ keccak256("safeTransferFrom(address,address,uint256,bytes)") ); bytes4 constant private RECLAIM_ID = bytes4(keccak256("reclaim(uint256,address)")); constructor(ENS _ens, bytes32 _baseNode) public { ens = _ens; baseNode = _baseNode; _name = "zkSync Name Service"; _symbol = "ZNS"; } modifier live { require(ens.owner(baseNode) == address(this)); _; } modifier onlyController { require(controllers[msg.sender]); _; } function setEns(ENS _ens) public onlyOwner { ens = _ens; } function setNode(bytes32 _baseNode) public onlyOwner { baseNode = _baseNode; } /** * @dev Gets the owner of the specified token ID. Names become unowned * when their registration expires. * @param tokenId uint256 ID of the token to query the owner of * @return address currently marked as the owner of the given token ID */ function ownerOf(uint256 tokenId) public view returns (address) { require(expiries[tokenId] > now); return super.ownerOf(tokenId); } function setPrimaryDomain(uint256 tokenId) public returns (bool) { require(ownerOf(tokenId) == msg.sender); _setPrimaryId(msg.sender, tokenId); domainMap[nameMap[tokenId]] = msg.sender; return true; } function getPrimaryDomainId(address user) public view returns (uint256) { uint256 tokenId = _getPrimaryId(user); if (tokenId != 0 && ownerOf(tokenId) == user) { return tokenId; } return 0; } function getPrimaryDomainName(address user) public view returns (string memory) { uint256 tokenId = getPrimaryDomainId(user); if (tokenId == 0) { return ""; } return nameMap[tokenId]; } function myPrimaryDomainInfo() public view returns (uint256, string memory) { return (getPrimaryDomainId(msg.sender), getPrimaryDomainName(msg.sender)); } function getUserFromPrimaryName(string memory name) public view returns (address) { address user = domainMap[name]; if (user != address(0)) { string memory saveName = getPrimaryDomainName(user); if (keccak256(bytes(saveName)) == keccak256(bytes(name))) { return user; } } return address(0); } // Authorises a controller, who can register and renew domains. function addController(address controller) external onlyOwner { controllers[controller] = true; emit ControllerAdded(controller); } // Revoke controller permission for an address. function removeController(address controller) external onlyOwner { controllers[controller] = false; emit ControllerRemoved(controller); } // Set the resolver for the TLD this registrar manages. function setResolver(address resolver) external onlyOwner { ens.setResolver(baseNode, resolver); } // Returns the expiration timestamp of the specified id. function nameExpires(uint256 id) external view returns(uint) { return expiries[id]; } // Returns true iff the specified name is available for registration. function available(uint256 id) public view returns(bool) { // Not available if it's registered here or in its grace period. return expiries[id] + GRACE_PERIOD < now; } /** * @dev Register a name. * @param id The token ID (keccak256 of the label). * @param owner The address that should own the registration. * @param duration Duration in seconds for the registration. */ function register(string calldata name, uint256 id, address owner, uint duration) external returns(uint) { return _register(name, id, owner, duration, true); } /** * @dev Register a name, without modifying the registry. * @param id The token ID (keccak256 of the label). * @param owner The address that should own the registration. * @param duration Duration in seconds for the registration. */ function registerOnly(string calldata name, uint256 id, address owner, uint duration) external returns(uint) { return _register(name, id, owner, duration, false); } function _register(string memory name, uint256 id, address owner, uint duration, bool updateRegistry) internal live onlyController returns(uint) { require(available(id)); require(now + duration + GRACE_PERIOD > now + GRACE_PERIOD); // Prevent future overflow nameMap[id] = name; expiries[id] = now + duration; if(_exists(id)) { // Name was previously owned, and expired _burn(id); } _mint(owner, id); if(updateRegistry) { ens.setSubnodeOwner(baseNode, bytes32(id), owner); } emit NameRegistered(id, owner, now + duration); return now + duration; } function renew(uint256 id, uint duration) external live onlyController returns(uint) { require(expiries[id] + GRACE_PERIOD >= now); // Name must be registered here or in grace period require(expiries[id] + duration + GRACE_PERIOD > duration + GRACE_PERIOD); // Prevent future overflow expiries[id] += duration; emit NameRenewed(id, expiries[id]); return expiries[id]; } /** * @dev Reclaim ownership of a name in ENS, if you own it in the registrar. */ function reclaim(uint256 id, address owner) external live { require(_isApprovedOrOwner(msg.sender, id)); ens.setSubnodeOwner(baseNode, bytes32(id), owner); } function supportsInterface(bytes4 interfaceID) external view returns (bool) { return interfaceID == INTERFACE_META_ID || interfaceID == ERC721_ID || interfaceID == RECLAIM_ID; } function getDomainName(uint256 tokenId) public view returns (string memory) { return nameMap[tokenId]; } function getOwnedDomains(address user) public view returns (uint256[] memory, string[] memory) { uint256[] memory tokenIds = allOwnedIds(user); string[] memory names = new string[](tokenIds.length); for (uint256 i = 0; i < tokenIds.length; i ++) { names[i] = nameMap[tokenIds[i]]; } return (tokenIds, names); } /** * @dev See {IERC721Metadata-name}. */ function name() public view returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); return string(abi.encodePacked(baseURI, "/", uint2str(tokenId), baseExtension)); } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function uint2str(uint _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"},{"internalType":"bytes32","name":"_baseNode","type":"bytes32"}],"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":"controller","type":"address"}],"name":"ControllerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameMigrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"addController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"allOwnedIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseNode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getDomainName","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getOwnedDomains","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"string[]","name":"","type":"string[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getPrimaryDomainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getPrimaryDomainName","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getUserFromPrimaryName","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myPrimaryDomainInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"nameExpires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"reclaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"register","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"registerOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"removeController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"renew","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","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":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"}],"name":"setEns","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_baseNode","type":"bytes32"}],"name":"setNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"setPrimaryDomain","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"resolver","type":"address"}],"name":"setResolver","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":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b000000000000000000000000000000000000000000000000000000000000000001000605d956267bff568e7f660782762bde47e826d357bae2e2d918710171f400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000348b86850d41e0550e451ab70d8f171bd462663993cd3b708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae
Deployed Bytecode
0x0004000000000002000000000301001900000060033002700000059e04300197000300000041035500020000000103550000059e0030019d000100000000001f00000001012001900000000c0000c13d0000000001000019167300b70000040f0000000101000039167300b70000040f0002000000000002000200000006001d000100000005001d0000059e050000410000059e0630009c000000000305801900000040033002100000059e0640009c00000000040580190000006004400210000000000334019f0000059e0410009c0000000001058019000000c001100210000000000113019f167316690000040f0000000109000029000000000301001900000060033002700000059e033001970000000205000029000000000453004b00000000050340190000001f0450018f0000000505500272000000310000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000000290000413d000000010220018f000000000640004c000000410000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000001020019000000000001042d0001000000000002000100000005001d0000059e050000410000059e0630009c000000000305801900000040033002100000059e0640009c00000000040580190000006004400210000000000334019f0000059e0410009c0000000001058019000000c001100210000000000113019f1673166e0000040f0000000109000029000000000301001900000060033002700000059e03300197000000200430008c000000200500003900000000050340190000001f0450018f0000000505500272000000670000613d000000000600001900000005076002100000000008790019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b0000005f0000413d000000010220018f000000000640004c000000770000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f00030000000103550000000001020019000000000001042d0000059e030000410000059e0410009c000000000103801900000040011002100000059e0420009c00000000020380190000006002200210000000000112019f00000000020004140000059e0420009c0000000002038019000000c002200210000000000112019f0000059f011001c700008010020000391673166e0000040f00000001022001900000008f0000613d000000000101043b000000000001042d00000000010000190000000002000019167300ae0000040f00000000030100190000059e0100004100000000040004140000059e0540009c0000000001044019000000c00110021000000060022002100000000001120019000005a00110004100000000020300191673166e0000040f0000000102200190000000a10000613d000000000101043b000000000001042d00000000010000190000000002000019167300ae0000040f0000059e040000410000059e0510009c0000000001048019000000400110021000000000013100190000059e0320009c000000000204801900000060022002100000000001210019000016740001042e0000059e030000410000059e0420009c00000000020380190000059e0410009c000000000103801900000040011002100000006002200210000000000112019f0000167500010430000e000000000002000000000110004c0000000001000411000c00000001001d000000e10000613d000000c001000039000000400010043f0000001002000039000d00000002001d000000800020043f000005fe01000041000000a00010043f000000000102041a000b00000001001d0000000000200435000000200200003900000000010000191673007b0000040f000001000300008a000000a00200043d000e00000003001d000000000232016f00000020022001bf0000000d03000029000000000023041b000000010200008a000d00000002001d0000000b03000029000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f00000001022002700000001f0220003900000005022002700000000002120019000000000312004b000001960000a13d000000000001041b0000000101100039000000dc0000013d0000008001000039000a00000001001d000000400010043f0000000001000416000000000110004c0000162b0000c13d0000000002000031000000030120008c0000162b0000a13d0000000205000367000000000a05043b000000e007a00270000005a101a0009c000000000b000410000000040420008a0000000401500370000000240350037000000044065003700000006408500370000002550000813d000005d209a0009c000002b30000813d000005e009a0009c000003510000813d000005e90270009c000005340000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000201043b000005ef01200197000e00000002001d000000000112004b0000162b0000c13d000000400200043d000005f0010000410000000000120435000000400100043d000000000212004900000019022000391673007b0000040f0000000103000039000005ef011001970000000e02000029000000000112004b00000ca70000613d000000400200043d0000002001200039000d00000003001d000005f1030000410000000000310435000005f201000041000c00000001001d0000000000120435000000400100043d00000000021200490000002f022000391673007b0000040f000005f302000041000000400400043d000000200340003900000000002304350000000c020000290000000000240435000000400300043d00000000023400490000002902200039000c00000001001d00000000010300191673007b0000040f000005f402000041000000400400043d00000020034000390000000000230435000005f5020000410000000000240435000000400300043d00000000023400490000002502200039000b00000001001d00000000010300191673007b0000040f000005f602000041000000400400043d00000020034000390000000000230435000005f7020000410000000000240435000000400300043d00000000023400490000002102200039000a00000001001d00000000010300191673007b0000040f000005f802000041000000400400043d0000000000240435000000400300043d00000000023400490000001f02200039000900000001001d00000000010300191673007b0000040f000005f902000041000000400400043d0000000000240435000000400300043d00000000023400490000001402200039000800000001001d00000000010300191673007b0000040f000005fa02000041000000400400043d0000000000240435000000400300043d00000000023400490000001802200039000700000001001d00000000010300191673007b0000040f000005fb02000041000000400400043d0000000000240435000000400300043d00000000023400490000001002200039000600000001001d00000000010300191673007b0000040f000005fc02000041000000400400043d0000000000240435000000400300043d00000000023400490000001202200039000500000001001d00000000010300191673007b0000040f0000000d030000290000000c020000290000000b04000029000000000224013f0000000a04000029000000000242013f0000000904000029000000000242013f0000000804000029000000000242013f0000000704000029000000000242013f0000000604000029000000000242013f0000000504000029000000000242013f000000000112013f000005ef011001970000000e02000029000000000112004b00000ca70000613d000000400200043d000005fd010000410000000000120435000000400100043d000000000212004900000018022000391673007b0000040f000005ef011001970000000e02000029000000000112004b0000000003000019000000010300603900000ca70000013d000000400100043d0000004002100039000000400020043f000000050200003900000000002104350000002002100039000900000002001d000005ff0100004100000000001204350000001101000039000a00000001001d000000000201041a000b00000002001d0000000000100435000000200200003900000000010000191673007b0000040f000000090200002900000000020204330000000e03000029000000000232016f0000000a022001bf0000000a03000029000000000023041b0000000d020000290000000b03000029000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f00000001022002700000001f0220003900000005022002700000000002120019000000000312004b000001be0000a13d000000000001041b0000000101100039000001b90000013d0000000001000416000000000110004c0000162b0000c13d0000000203000367000000400100043d00000000020000310000001f0420018f0000000505200272000001d00000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000001c80000413d000000000640004c000001df0000613d0000000505500210000000000353034f00000000055100190000000304400210000000000605043300000000064601cf000000000646022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000363019f0000000000350435000005aa030000410000003f0420008c00000000040000190000000004032019000005aa05200197000000000650004c0000000003008019000005aa0550009c000000000304c0190000000002120019000000400020043f000000000230004c0000162b0000613d0000000002010433000005ab03200197000b00000003001d000005ac0220009c0000162b0000813d00000020011000390000000001010433000a00000001001d00000600010000410000000000100435000000200000043f000000400200003900000000010000191673007b0000040f000000000201041a0000000e03000029000000000232016f00000001022001bf000000000021041b0000000101000039000000000201041a000005af022001970000000c05000029000000000225019f000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f000005ab065001970000059f011001c70000800d020000390000000303000039000005ae04000041000c00000003001d0000000005000019167316690000040f00000001012001900000162b0000613d00000601010000410000000000100435000000200000043f000000400200003900000000010000191673007b0000040f000000000201041a0000000e03000029000000000232016f00000001022001bf000000000021041b0000000201000039000000000201041a000005af022001970000000b03000029000000000232019f000000000021041b0000000c020000290000000a01000029000000000012041b000000400100043d0000004002100039000000400020043f000000130200003900000000002104350000002002100039000900000002001d000006020100004100000000001204350000000e01000039000a00000001001d000000000201041a000b00000002001d0000000000100435000000200200003900000000010000191673007b0000040f000000090200002900000000020204330000000e03000029000000000232016f00000026022001bf0000000a03000029000000000023041b0000000d020000290000000b03000029000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f00000001022002700000001f0220003900000005022002700000000002120019000000000312004b000002cc0000a13d000000000001041b0000000101100039000002500000013d000005a209a0009c000002f50000813d000005c209a0009c0000044b0000813d000005cd0970009c000005510000c13d000e0000000b001d00080000000a001d000005aa070000410000007f0940008c00000000090000190000000009072019000005aa04400197000000000a40004c0000000007008019000005aa0440009c00000000040900190000000004076019000000000440004c0000162b0000613d000000000401043b000005b00140009c0000162b0000213d0000002301400039000005aa07000041000000000921004b00000000090000190000000009074019000005aa0a200197000005aa01100197000000000ba1004b000000000700a0190000000001a1013f000005aa0110009c00000000010900190000000001076019000000000110004c0000162b0000613d0000000401400039000000000115034f000000000101043b000005b10510009c0000162b0000813d00000024044000390000000005410019000000000225004b0000162b0000213d000000000206043b000700000002001d000005ac0220009c0000162b0000813d0000003f02100039000000200500008a000000000252016f000000400600043d0000000002260019000000000508043b000600000005001d000000000303043b000a00000003001d000000400020043f0000001f0310018f0000000000160435000500000006001d000000200260003900000002044003670000000505100272000002a20000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b0000029a0000413d000000000630004c000002b10000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f00000000003504350000000001120019000003aa0000013d000005d303a0009c000004980000813d000005da0370009c000005580000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d0000000102000039000000000202041a000005ab022001970000000c03000029000000000223004b0000162b0000c13d000000000101043b0000000302000039000000000012041b00000b740000013d000000400100043d0000004002100039000000400020043f0000000c0200002900000000002104350000002002100039000900000002001d000006030100004100000000001204350000000f01000039000a00000001001d000000000201041a000b00000002001d000000000010043500000020020000390000000001000019000c00000002001d1673007b0000040f000000090200002900000000020204330000000e03000029000000000232016f00000006022001bf0000000a03000029000000000023041b0000000d020000290000000b03000029000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f00000001022002700000001f0220003900000005022002700000000002120019000000000312004b0000034a0000a13d000000000001041b0000000101100039000002f00000013d000005a306a0009c000004b50000813d000005b20270009c000005960000c13d000e0000000b001d000005aa020000410000003f0540008c00000000050000190000000005022019000005aa04400197000000000640004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000203043b000800000002001d000000000101043b000900000001001d0000000201000039000000000101041a0000000302000039000000000202041a000000400400043d000005be030000410000000000340435000a00000004001d00000004034000390000000000230435000000400200043d000b00000002001d000005bf020000410000000000200439000005ab01100197000d00000001001d000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000d02000029000000040220008c00000b9d0000613d0000000b030000290000000a02000029000000000232004900000024042000390000000d020000290000000005030019167300450000040f000000000110004c00000b9d0000c13d000000030100036700000001020000310000001f0320018f0000000502200272000003390000613d00000000040000190000000505400210000000000651034f000000000606043b00000000006504350000000104400039000000000524004b000003320000413d000000000430004c000003470000613d00000003033002100000000502200210000000000402043300000000043401cf000000000434022f000000000121034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f000000000012043500000001020000310000000001000019167300ae0000040f0000000c0100002900000100001004430000012000000443000001000100003900000040020000390000060403000041167300a40000040f000005e10970009c000005bf0000c13d000e0000000b001d00080000000a001d000005aa070000410000007f0940008c00000000090000190000000009072019000005aa04400197000000000a40004c0000000007008019000005aa0440009c00000000040900190000000004076019000000000440004c0000162b0000613d000000000401043b000005b00140009c0000162b0000213d0000002301400039000005aa07000041000000000921004b00000000090000190000000009074019000005aa0a200197000005aa01100197000000000ba1004b000000000700a0190000000001a1013f000005aa0110009c00000000010900190000000001076019000000000110004c0000162b0000613d0000000401400039000000000115034f000000000101043b000005b10510009c0000162b0000813d00000024044000390000000005410019000000000225004b0000162b0000213d000000000206043b000700000002001d000005ac0220009c0000162b0000813d0000003f02100039000000200500008a000000000252016f000000400600043d0000000002260019000000000508043b000600000005001d000000000303043b000a00000003001d000000400020043f0000001f0310018f0000000000160435000500000006001d0000002002600039000000020440036700000005051002720000039a0000613d000000000600001900000005076002100000000008720019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000003920000413d000000000630004c000003a90000613d0000000505500210000000000454034f00000000055200190000000303300210000000000605043300000000063601cf000000000636022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000363019f0000000000350435000000000112001900000000000104350000000201000039000400000001001d000000000101041a0000000302000039000300000002001d000000000202041a000000400400043d000005be030000410000000000340435000900000004001d00000004034000390000000000230435000000400200043d000b00000002001d000005bf020000410000000000200439000005ab01100197000d00000001001d000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000d02000029000000040220008c000003d00000613d0000000b030000290000000902000029000000000232004900000024042000390000000d020000290000000005030019167300450000040f000000000110004c0000032c0000613d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f01100039000000200300008a000200000003001d000000000331016f000000400100043d0000000003130019000000400030043f000000000220004c0000162b0000613d0000000001010433000005ab0210009c0000162b0000213d0000000e02000029000000000121004b0000162b0000c13d0000000c0100002900000000001004350000000401000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000000ff011001900000162b0000613d0000000a0100002900000000001004350000000b01000039000c00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000005c002200041000000000112004b0000162b0000813d000005b701000041000e00000001001d00000000001004390000800b01000039000d00000001001d0000000402000039000b00000002001d167300920000040f0000000e020000290000000000200439000e00000001001d0000000d010000290000000b02000029167300920000040f00000006020000290000000001120019000005c0011000410000000e02000029000005c002200041000000000121004b0000162b0000a13d0000000a0100002900000000001004350000000c01000039000000200010043f000000400200003900000000010000191673007b0000040f0000000502000029000500000002001d0000000002020433000e00000002001d000000000201041a000d00000002001d000b00000001001d0000000000100435000000200200003900000000010000191673007b0000040f000000010200008a000100000002001d0000000d03000029000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f0000000503000029000000200330003900000001022002700000001f0220003900000005022002700000000e050000290000001f0450008c000000000605001900000001045002100000118a0000a13d00000001044001bf0000000b05000029000000000045041b00000000053600190000000004010019000000000635004b000011910000a13d0000000006030433000000000064041b00000001044000390000002003300039000004440000013d000005c30970009c000006560000c13d000005aa020000410000003f0540008c00000000050000190000000005022019000005aa04400197000000000640004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000e00000002001d000005ac0110009c0000162b0000813d000000000203043b000000000120004c0000000001000019000000010100c039000d00000002001d000000000112004b0000162b0000c13d0000000c010000290000000e02000029000000000121004b0000162b0000613d0000000c0100002900000000001004350000000a01000039000000200010043f0000004002000039000b00000002001d00000000010000191673007b0000040f0000000e020000290000000000200435000000200010043f00000000010000190000000b020000291673007b0000040f000001000200008a000000000301041a000000000223016f0000000d03000029000000000232019f000000000021041b000000400100043d0000000000310435000000400200043d00000000012100490000059e030000410000059e0420009c0000000002038019000000400220021000000020011000390000059e0410009c00000000010380190000006001100210000000000121019f00000000020004140000059e0420009c0000000002038019000000c002200210000000000121019f0000059f011001c70000800d020000390000000303000039000005cc040000410000000c050000290000000e06000029167316690000040f000000010120019000000b740000c13d0000162b0000013d000005d40270009c0000068c0000c13d0000001001000039000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f0000000000560435000000020320008c00000c120000413d0000003f0220008c000005ad0000213d0000001001000039000000000101041a000001000200008a000000000121016f000000000014043500000c120000013d000005a40670009c000006a90000c13d000005aa030000410000001f0640008c00000000060000190000000006032019000005aa04400197000000000740004c0000000003008019000005aa0440009c000000000306c019000000000330004c0000162b0000613d000000000401043b000005b00140009c0000162b0000213d0000002301400039000005aa03000041000000000621004b00000000060000190000000006034019000005aa07200197000005aa01100197000000000871004b000000000300a019000000000171013f000005aa0110009c00000000010600190000000001036019000000000110004c0000162b0000613d0000000401400039000000000115034f000000000301043b000005b10130009c0000162b0000813d0000003f01300039000000200500008a000000000551016f000000400100043d0000000005510019000000000615004b0000162b0000413d000005b10650009c0000162b0000813d000000400050043f000000000031043500000024044000390000000005430019000000000225004b0000162b0000213d0000001f0230018f000000020440036700000020091000390000000505300272000004f60000613d000000000600001900000005076002100000000008790019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b000004ee0000413d000000000620004c000005050000613d0000000505500210000000000454034f00000000055900190000000302200210000000000605043300000000062601cf000000000626022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000262019f0000000000250435000d00000009001d000000000239001900000000000204350000001102000039000e00000002001d0000000102000039000000000202041a000005ab022001970000000c03000029000000000223004b0000162b0000c13d0000000001010433000b00000001001d0000000e01000029000000000201041a000c00000002001d0000000000100435000000200200003900000000010000191673007b0000040f0000000b05000029000000010200008a0000000c03000029000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f00000001022002700000001f0220003900000005022002700000001f0350008c000010720000a13d000000010350021000000001033001bf0000000e04000029000000000034041b0000000d0600002900000000046500190000000003010019000000000564004b0000107b0000a13d0000000005060433000000000053041b000000010330003900000020066000390000052d0000013d000005ea0270009c000006ca0000c13d0000000e01000039000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f0000000000560435000000020320008c000010c60000413d0000003f0220008c000009380000213d0000000e01000039000000000101041a000001000200008a000000000121016f0000000000140435000010c60000013d000005ce0270009c000006ec0000c13d0000000101000039000000000101041a000005ab01100197000005ab0110019700000caa0000013d000005db0370009c000006f60000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000201043b000005ab01200197000005ac0220009c0000162b0000813d0000000102000039000000000202041a000005ab022001970000000c03000029000000000223004b0000162b0000c13d0000000202000039000000000202041a0000000303000039000000000303041a000000400500043d00000024045000390000000000140435000005df010000410000000000150435000c00000005001d00000004015000390000000000310435000000400100043d000d00000001001d000005bf010000410000000000100439000005ab01200197000e00000001001d000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000e02000029000000040220008c00000b740000613d0000000d030000290000000c02000029000000000232004900000044042000390000000e02000029000000000503001900000000060000191673000e0000040f000000000110004c0000032c0000613d00000b740000013d000005b30270009c000007520000c13d0000001101000039000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f0000000000560435000000020320008c00000c120000413d0000003f0220008c00000c0d0000a13d000c00000005001d000d00000004001d000e00000006001d0000000000100435000000200200003900000000010000191673007b0000040f0000000d040000290000000c020000290000000002420019000000000301041a000000000034043500000001011000390000002004400039000000000342004b000005b70000213d0000000e0600002900000c120000013d000005e20270009c0000077d0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ac0210009c0000162b0000813d00000000001004350000000801000039000000200010043f000000400200003900000000010000191673007b0000040f000000400400043d0000002006400039000000000201041a00000005032002100000000003360019000000400030043f000a00000004001d0000000000240435000000000220004c0000000002000019000800000006001d000005f10000613d000000000010043500000020020000390000000001000019000e00000003001d1673007b0000040f0000000e0400002900000008060000290000000002060019000000000301041a000000000032043500000001011000390000002002200039000000000324004b000005e90000213d0000000a010000290000000002010433000000400400043d000000000024043500000005012002100000002003400039000500000003001d0000000001130019000000400010043f000000000120004c000006000000613d0000006001000039000000000304001900000020033000390000000000130435000000010220008c000005fc0000c13d000b00000004001d0000000c01000039000700000001001d0000004001000039000900000001001d000000010100008a000600000001001d000000200100008a000e00000001001d00000000020000190000000a010000290000000001010433000000000112004b00000dca0000813d000d00000002001d0000000501200210000c00000001001d0000000001160019000000000101043300000000001004350000000701000029000000200010043f000000000100001900000009020000291673007b0000040f000000000201041a0000000605000029000000000352013f0000000803300210000001000330018f000000010330008a000000000223016f00000001022002700000003f032000390000000e04000029000000000343016f000000400600043d0000000003630019000000400030043f0000000000260435000000000201041a000000000352013f0000000803300210000001000330018f000000010330008a000000000323016f000000020430008c0000000b050000290000064b0000413d00000020076000390000003f0430008c000006480000a13d0000000102300270000200000002001d000000000010043500000020020000390000000001000019000400000006001d000300000007001d1673007b0000040f000000030400002900000004060000290000000b0500002900000002020000290000000002420019000000000301041a000000000034043500000001011000390000002004400039000000000342004b000006410000213d0000064b0000013d000001000100008a000000000112016f000000000017043500000000010504330000000d02000029000000000112004b0000162b0000813d00000005010000290000000c0300002900000000013100190000000000610435000000010220003900000008060000290000060a0000013d000005c40970009c000008300000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ab03100197000005ac0110009c0000162b0000813d0000000101000039000000000101041a000005ab011001970000000c02000029000000000112004b0000162b0000c13d000e00000003001d00000000003004350000000401000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000001000300008a000000000232016f00000001022001bf000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000203000039000005cb040000410000000e05000029167316690000040f000000010120019000000b740000c13d0000162b0000013d000005d50270009c000008920000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000201043b000005ab01200197000005ac0220009c0000162b0000813d0000000102000039000000000202041a000005ab022001970000000c03000029000000000223004b0000162b0000c13d0000000202000039000000000302041a000005af03300197000000000113019f000000000012041b00000b740000013d000005a50270009c000008ad0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ac0210009c0000162b0000813d0000000402000039000000200020043f0000000000100435000000400200003900000000010000191673007b0000040f000000000101041a000000ff011001900000000001000019000000010100c039000000400200043d0000000000120435000000400100043d000000000212004900000020022000390000000003000019167300a40000040f000005eb0270009c000008b80000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000e00000001001d00000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000e0100002900000000001004350000000601000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100197000005560000013d000005cf0270009c000009210000c13d0000000101000039000000000101041a000005ab011001970000000c02000029000000000112004b0000000003000019000000010300603900000ca70000013d000005dc0370009c0000094a0000c13d000005aa030000410000001f0640008c00000000060000190000000006032019000005aa04400197000000000740004c0000000003008019000005aa0440009c000000000306c019000000000330004c0000162b0000613d000000000401043b000005b00140009c0000162b0000213d0000002301400039000005aa03000041000000000621004b00000000060000190000000006034019000005aa07200197000005aa01100197000000000871004b000000000300a019000000000171013f000005aa0110009c00000000010600190000000001036019000000000110004c0000162b0000613d0000000401400039000000000115034f000000000301043b000005b10130009c0000162b0000813d0000003f01300039000000200500008a000000000551016f000000400100043d0000000005510019000000000615004b0000162b0000413d000005b10650009c0000162b0000813d000000400050043f000000000031043500000024044000390000000005430019000000000225004b0000162b0000213d0000001f0230018f000000020440036700000020091000390000000505300272000007370000613d000000000600001900000005076002100000000008790019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b0000072f0000413d000000000620004c000007460000613d0000000505500210000000000454034f00000000055900190000000302200210000000000605043300000000062601cf000000000626022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000262019f0000000000250435000d00000009001d000000000239001900000000000204350000001002000039000e00000002001d0000000102000039000000000202041a000005ab022001970000000c03000029000000000223004b000005100000613d0000162b0000013d000005b40270009c0000098a0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000e00000001001d00000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab0110019800000e030000c13d000000400200043d0000006401200039000005bb0300004100000000003104350000004401200039000005bc03000041000000000031043500000024012000390000002f030000390000000000310435000005bd010000410000000000120435000000040120003900000020030000390000000000310435000000400100043d00000000021200490000008402200039167300ae0000040f000005e30270009c000009a00000c13d000005aa020000410000005f0540008c00000000050000190000000005022019000005aa04400197000000000740004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000d00000002001d000005ac0110009c0000162b0000813d000000000103043b000005ab02100197000800000002001d000005ab0110009c0000162b0000213d000000000106043b000a00000001001d00000000001004350000000b01000039000b00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000a0100002900000000001004350000000501000039000700000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000e00000001001d0000162b0000613d0000000c01000029000005ab01100197000c00000001001d0000000e02000029000000000121004b000010e20000c13d0000000a0100002900000000001004350000000b01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000a0100002900000000001004350000000701000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000d02000029000000000121004b0000162b0000c13d0000000801000029000000000110004c0000162b0000613d0000000a0100002900000000001004350000000601000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000007ef0000613d0000000a0100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000005af02200197000000000021041b0000000d0100002900000000001004350000000701000039000600000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000000000110004c0000162b0000613d0000000d0100002900000000001004350000000601000029000000200010043f0000004002000039000b00000002001d00000000010000191673007b0000040f0000000d030000290000000e02000029000000010220008a000000000021041b0000000b0200002900000008010000390000002004000039000900000004001d000e00000000001d000c00000001001d0000000000300435000000200010043f00000000010000191673007b0000040f000000000101041a0000000e02000029000000000112004b000013450000813d0000000d0100002900000000001004350000000c01000029000000200010043f00000000010000190000000b020000291673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000000100001900000009020000291673007b0000040f0000000e030000290000000001310019000000000101041a0000000a02000029000000000121004b000013040000613d0000000103300039000e00000003001d0000000d030000290000000c010000290000000b020000290000080d0000013d000005c50970009c00000a530000c13d000005aa030000410000001f0640008c00000000060000190000000006032019000005aa04400197000000000740004c0000000003008019000005aa0440009c000000000306c019000000000330004c0000162b0000613d000000000301043b000005b00130009c0000162b0000213d0000002301300039000005aa04000041000000000621004b00000000060000190000000006044019000005aa07200197000005aa01100197000000000871004b000000000400a019000000000171013f000005aa0110009c00000000010600190000000001046019000000000110004c0000162b0000613d0000000401300039000000000115034f000000000101043b000005b10410009c0000162b0000813d0000003f04100039000000200500008a000d00000005001d000000000454016f000000400500043d0000000004450019000e00000005001d000000000554004b0000162b0000413d000005b10540009c0000162b0000813d000000400040043f0000000e04000029000000000014043500000024033000390000000004310019000000000224004b0000162b0000213d0000000e0200002900000020082000390000001f0210018f00000002033003670000000504100272000008750000613d000000000500001900000005065002100000000007680019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b0000086d0000413d000000000520004c000008840000613d0000000504400210000000000343034f00000000044800190000000302200210000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000000118001900000000000104350000000e010000290000000001010433000000400200043d0000000003000019000000000413004b000010810000813d000000000423001900000000058300190000000005050433000000000054043500000020033000390000088a0000013d000005d60270009c00000b540000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000201043b000005ab01200197000005ab0220009c0000162b0000213d000000000210004c0000162b0000613d00000000001004350000000701000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a00000caa0000013d000005a60270009c00000b780000c13d0000000301000039000000000101041a000000400200043d0000000000120435000000400100043d000000000212004900000020022000390000000003000019167300a40000040f000005ec0270009c00000c2e0000c13d000005aa020000410000003f0540008c00000000050000190000000005022019000005aa04400197000000000640004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000e00000002001d000005ac0110009c0000162b0000813d000000000103043b000b00000001001d00000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000d00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000d02000029000000000121004b0000162b0000813d0000000b0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000d00000001001d0000162b0000613d0000000e010000290000000d02000029000000000121004b0000162b0000613d0000000c010000290000000d02000029000000000112004b000009010000613d0000000d0100002900000000001004350000000a01000039000000200010043f0000004002000039000a00000002001d00000000010000191673007b0000040f0000000c02000029000005ab022001970000000000200435000000200010043f00000000010000190000000a020000291673007b0000040f000000000101041a000000ff011001900000162b0000613d0000000b0100002900000000001004350000000601000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000005af022001970000000e06000029000000000262019f000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000403000039000005ee040000410000000d050000290000000b07000029167316690000040f000000010120019000000b740000c13d0000162b0000013d000005d00270009c00000c870000c13d0000000f01000039000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f0000000000560435000000020320008c000010c60000413d0000003f0220008c00000f6a0000a13d000c00000005001d000d00000004001d000e00000006001d0000000000100435000000200200003900000000010000191673007b0000040f0000000d040000290000000c020000290000000002420019000000000301041a000000000034043500000001011000390000002004400039000000000342004b000009420000213d0000000e06000029000010c60000013d000005dd0270009c00000cae0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ac0210009c0000162b0000813d00000000001004350000000801000039000000200010043f000000400200003900000000010000191673007b0000040f000000400400043d0000002005400039000000000201041a00000005032002100000000003350019000000400030043f0000000000240435000000000220004c0000097a0000613d000000000010043500000020020000390000000001000019000e00000005001d000d00000004001d000c00000003001d1673007b0000040f0000000c060000290000000d040000290000000e050000290000000002050019000000000301041a000000000032043500000001011000390000002002200039000000000326004b000009740000213d000000400200043d0000002001000039000000000012043500000000010404330000002003200039000000000013043500000040022000390000000003000019000000000413004b000010de0000813d00000000040504330000000000420435000000010330003900000020055000390000002002200039000009820000013d000005b50270009c00000cd80000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b00000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a00000caa0000013d000005e40270009c00000cf90000c13d000e0000000b001d000005aa020000410000003f0540008c00000000050000190000000005022019000005aa04400197000000000640004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000101043b000d00000001001d000000000103043b000005ab02100197000b00000002001d000005ac0110009c0000162b0000813d0000000201000039000700000001001d000000000101041a0000000302000039000600000002001d000000000202041a000000400400043d000005be030000410000000000340435000800000004001d00000004034000390000000000230435000000400200043d000900000002001d000005bf020000410000000000200439000005ab01100197000a00000001001d000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000a02000029000000040220008c000009da0000613d00000009030000290000000802000029000000000232004900000024042000390000000a020000290000000005030019167300450000040f000000000110004c0000032c0000613d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f01100039000000200300008a000a00000003001d000000000331016f000000400100043d0000000003130019000000400030043f000000000220004c0000162b0000613d0000000001010433000005ab0210009c0000162b0000213d0000000e02000029000000000121004b0000162b0000c13d0000000d0100002900000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000d0100002900000000001004350000000501000039000900000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000e00000001001d0000162b0000613d0000000c01000029000005ab01100197000c00000001001d0000000e02000029000000000121004b000012380000c13d0000000701000029000000000101041a0000000602000029000000000202041a000000400500043d00000044035000390000000b04000029000000000043043500000024035000390000000d040000290000000000430435000005e7030000410000000000350435000d00000005001d00000004035000390000000000230435000000400200043d000c00000002001d000005bf020000410000000000200439000005ab01100197000e00000001001d000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000e02000029000000040220008c00000a400000613d0000000d020000290000000c030000290000000002320049000000640420003900000020060000390000000e0200002900000000050300191673000e0000040f000000000110004c0000032c0000613d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f011000390000000a03000029000000000131016f000000400300043d0000000001310019000000400010043f000000000120004c00000b740000c13d0000162b0000013d000005c60970009c00000d050000c13d000005aa070000410000007f0940008c00000000090000190000000009072019000005aa04400197000000000a40004c0000000007008019000005aa0440009c00000000040900190000000004076019000000000440004c0000162b0000613d000000000101043b000005ab04100197000d00000004001d000005ac0110009c0000162b0000813d000000000103043b000005ab03100197000700000003001d000005ab0110009c0000162b0000213d000000000106043b000900000001001d000000000308043b000005b00130009c0000162b0000213d0000002301300039000005aa04000041000000000621004b00000000060000190000000006044019000005aa07200197000005aa01100197000000000871004b000000000400a019000000000171013f000005aa0110009c00000000010600190000000001046019000000000110004c0000162b0000613d0000000401300039000000000115034f000000000101043b000005b10410009c0000162b0000813d0000003f04100039000000200500008a000500000005001d000000000454016f000000400500043d0000000004450019000600000005001d000000000554004b0000162b0000413d000005b10540009c0000162b0000813d000000400040043f0000000604000029000000000014043500000024033000390000000004310019000000000224004b0000162b0000213d000000060200002900000020082000390000001f0210018f0000000203300367000000050410027200000aa50000613d000000000500001900000005065002100000000007680019000000000663034f000000000606043b00000000006704350000000105500039000000000645004b00000a9d0000413d000400000008001d000000000520004c00000ab60000613d0000000504400210000000000343034f000000040500002900000000044500190000000302200210000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000040200002900000000011200190000000000010435000000090100002900000000001004350000000b01000039000b00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d000000090100002900000000001004350000000501000039000300000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000e00000001001d0000162b0000613d0000000c01000029000005ab01100197000200000001001d0000000e02000029000000000121004b000013a10000c13d000000090100002900000000001004350000000b01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d000000090100002900000000001004350000000301000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000d02000029000000000121004b0000162b0000c13d0000000701000029000000000110004c0000162b0000613d000000090100002900000000001004350000000601000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab0110019800000b130000613d000000090100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000005af02200197000000000021041b0000000d0100002900000000001004350000000701000039000100000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000000000110004c0000162b0000613d0000000d0100002900000000001004350000000101000029000000200010043f0000004002000039000b00000002001d00000000010000191673007b0000040f0000000d030000290000000e02000029000000010220008a000000000021041b0000000b0200002900000008010000390000002004000039000800000004001d000e00000000001d000c00000001001d0000000000300435000000200010043f00000000010000191673007b0000040f000000000101041a0000000e02000029000000000112004b0000154c0000813d0000000d0100002900000000001004350000000c01000029000000200010043f00000000010000190000000b020000291673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000000100001900000008020000291673007b0000040f0000000e030000290000000001310019000000000101041a0000000902000029000000000121004b0000150b0000613d0000000103300039000e00000003001d0000000d030000290000000c010000290000000b0200002900000b310000013d000005d70270009c00000d5a0000c13d0000000101000039000e00000001001d000000000101041a000005ab011001970000000c02000029000000000112004b0000162b0000c13d000000400100043d0000059e0200004100000000030004140000059e0430009c00000000030280190000059e0410009c00000000010280190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000303000039000005ae040000410000000c050000290000000006000019167316690000040f00000001012001900000162b0000613d0000000e02000029000000000102041a000005af01100197000000000012041b000000000100001900000000020000190000000003000019167300a40000040f000005a70270009c00000d940000c13d000005aa020000410000003f0540008c00000000050000190000000005022019000005aa04400197000000000640004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000201043b000005ab01200197000005ac0220009c0000162b0000813d000000000203043b000e00000002001d000005ab0220009c0000162b0000213d00000000001004350000000a01000039000000200010043f0000004002000039000d00000002001d00000000010000191673007b0000040f0000000e020000290000000000200435000000200010043f00000000010000190000000d020000291673007b0000040f000000000101041a000000ff0310018f00000ca70000013d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f01100039000000200300008a000000000331016f000000400100043d0000000003130019000000400030043f000000000220004c0000162b0000613d0000000001010433000005ab0210009c0000162b0000213d0000000e02000029000000000121004b0000162b0000c13d0000000c0100002900000000001004350000000401000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000000ff011001900000162b0000613d000000090100002900000000001004350000000b01000039000d00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000005c002200041000000000112004b0000162b0000413d000000090100002900000000001004350000000d01000029000000200010043f000000400200003900000000010000191673007b0000040f0000000802000029000005c002200041000000000101041a0000000001120019000000000121004b0000162b0000a13d000000090100002900000000001004350000000d01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a00000008030000290000000002320019000000000021041b000000400100043d0000000000210435000000400200043d00000000012100490000059e030000410000059e0420009c0000000002038019000000400220021000000020011000390000059e0410009c00000000010380190000006001100210000000000121019f00000000020004140000059e0420009c0000000002038019000000c002200210000000000121019f0000059f011001c70000800d020000390000000203000039000005c1040000410000000905000029167316690000040f00000001012001900000162b0000613d000000090100002900000000001004350000000d01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a00000caa0000013d0000001101000039000000000101041a000001000200008a000000000121016f0000000000140435000000400200043d0000002001000039000000000012043500000000010604330000002003200039000000000013043500000040022000390000000003000019000000000413004b00000c220000813d0000000004230019000000200330003900000000056300190000000005050433000000000054043500000c1a0000013d000000000313004b00000c260000a13d000000000321001900000000000304350000001f01100039000000200300008a000000000131016f0000000002210019000000400100043d00000000021200490000000003000019167300a40000040f000005ed0270009c0000162b0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000d00000001001d00000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000d0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000c02000029000000000121004b0000162b0000c13d0000000c01000029000005ab01100197000e00000001001d00000000001004350000000901000039000000200010043f0000004002000039000c00000002001d00000000010000191673007b0000040f0000000d02000029000000000021041b00000000002004350000000c01000039000000200010043f00000000010000190000000c020000291673007b0000040f000000400200043d000d00000002001d000000000201041a0000000103200270000c00000003001d0000000103200190000010b10000c13d000001000100008a000000000112016f0000000d0500002900000000001504350000000c060000290000007f0660018f00000000025600190000000d010000390000000000120435000000400100043d000000000212004900000020022000391673007b0000040f000000000201041a000005af022001970000000e03000029000000000232019f000000000021041b000000010300003900000ca70000013d000005d10270009c0000162b0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b00000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000005c002200041000000000112004b00000000030000190000000103004039000000000130004c0000000001000019000000010100c039000000400200043d00000000001204350000002002200039000010de0000013d000005de0270009c0000162b0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000d00000001001d00000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000d0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d000005560000013d000005b60270009c0000162b0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000e00000002001d000005ac0110009c0000162b0000813d0000000e0100002900000000001004350000000901000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000000120004c000010270000c13d000000400600043d0000002001600039000000400010043f0000000000060435000010c60000013d000005e50270009c00000e270000c13d0000000201000039000000000101041a000005ab01100197000000400200043d0000000000120435000000400100043d000000000212004900000020022000390000000003000019167300a40000040f000005c70170009c00000ee00000c13d0000000c01000029000005ab01100197000e00000001001d00000000001004350000000901000039000d00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000000120004c000000000100001900000d370000613d0000000d010000290000000e01000029000b00000002001d00000000002004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000c00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000c02000029000000000121004b0000162b0000813d0000000b0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000e02000029000000000121004b0000000b01000029000000000100c0190000000d02000029000c00000001001d0000000e0100002900000000001004350000000d01000029000000200010043f00000040020000390000000001000019000d00000002001d1673007b0000040f000000000201041a000000000120004c00000fdc0000c13d000000400600043d0000002001600039000000400010043f0000000000060435000000400200043d00000020012000390000000d0300002900000000003104350000000c01000029000000000012043500000000010604330000004003200039000000000013043500000060022000390000000003000019000000000413004b00000faf0000813d0000000004230019000000200330003900000000056300190000000005050433000000000054043500000d520000013d000005d80270009c00000ee40000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b00000000001004350000000c01000039000000200010043f000000400200003900000000010000191673007b0000040f000000010200008a000000000301041a000000000223013f0000000802200210000001000220018f000000010220008a000000000232016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f0000000000560435000000020320008c000010c60000413d000c00000005001d000d00000004001d000e00000006001d0000003f0220008c000010c00000a13d0000000000100435000000200200003900000000010000191673007b0000040f0000000d040000290000000c0200002900000000024200190000000e06000029000000000301041a000000000034043500000001011000390000002004400039000000000342004b00000d8d0000213d000010c60000013d000005a80270009c00000f210000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000e00000002001d000005ac0110009c0000162b0000813d0000000101000039000d00000001001d000000000101041a000005ab011001970000000c02000029000000000112004b0000162b0000c13d0000000e01000029000000000110004c0000162b0000613d000000400100043d0000059e0200004100000000030004140000059e0430009c00000000030280190000059e0410009c00000000010280190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000303000039000005ae040000410000000c050000290000000e06000029167316690000040f00000001012001900000162b0000613d0000000d03000029000000000103041a000005af011001970000000e02000029000000000121019f000000000013041b00000b740000013d000000400200043d000000090100002900000000001204350000000a01000029000000000101043300000040032000390000000000130435000000600420003900000000030000190000000b0b000029000000000513004b00000ddc0000813d0000000005060433000000000054043500000001033000390000002006600039000000200440003900000dd40000013d000000200140003900000000032400490000002002200039000000000032043500000000030b043300000000003404350000000502300210000000000212001900000000040100190000000005000019000000000635004b000010de0000813d000000200bb000390000000006120049000000000064043500000000070b04330000000006070433000000000062043500000020022000390000000008000019000000000968004b00000df80000813d00000000092800190000002008800039000000000a780019000000000a0a04330000000000a9043500000df00000013d000000000768004b00000dfc0000a13d000000000726001900000000000704350000001f066000390000000e07000029000000000676016f00000000022600190000000105500039000000200440003900000de60000013d0000000e0a0000290000000001a0004c00000f700000c13d000000400900043d0000004001900039000000400010043f0000002001900039000005b902000041000000000021043500000001010000390000000000190435000000400100043d00000020051000390000001002000039000000000102041a0000000106100270000000010310019000000fb80000c13d000001000200008a000000000121016f00000000001504350000007f0660018f0000000001560019000005ba020000410000000000210435000000010110003900000000020904330000000003000019000000000423004b00000f560000813d0000000004130019000000200330003900000000059300190000000005050433000000000054043500000e1f0000013d000005e60270009c0000162b0000c13d000005aa020000410000005f0540008c00000000050000190000000005022019000005aa04400197000000000740004c0000000002008019000005aa0440009c000000000205c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000d00000002001d000005ac0110009c0000162b0000813d000000000103043b000005ab02100197000700000002001d000005ab0110009c0000162b0000213d000000000306043b000000400200043d0000002001200039000600000001001d000000400010043f000500000002001d0000000000020435000900000003001d00000000003004350000000b01000039000b00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d000000090100002900000000001004350000000501000039000400000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000e00000001001d0000162b0000613d0000000c01000029000005ab01100197000300000001001d0000000e02000029000000000121004b000011540000c13d000000090100002900000000001004350000000b01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d000000090100002900000000001004350000000401000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000d02000029000000000121004b0000162b0000c13d0000000701000029000000000110004c0000162b0000613d000000090100002900000000001004350000000601000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab0110019800000e9f0000613d000000090100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000005af02200197000000000021041b0000000d0100002900000000001004350000000701000039000200000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000000000110004c0000162b0000613d0000000d0100002900000000001004350000000201000029000000200010043f0000004002000039000b00000002001d00000000010000191673007b0000040f0000000d030000290000000e02000029000000010220008a000000000021041b0000000b0200002900000008010000390000002004000039000800000004001d000e00000000001d000c00000001001d0000000000300435000000200010043f00000000010000191673007b0000040f000000000101041a0000000e02000029000000000112004b0000140f0000813d0000000d0100002900000000001004350000000c01000029000000200010043f00000000010000190000000b020000291673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000000100001900000008020000291673007b0000040f0000000e030000290000000001310019000000000101041a0000000902000029000000000121004b000013ce0000613d0000000103300039000e00000003001d0000000d030000290000000c010000290000000b0200002900000ebd0000013d000005c001000041000005c80270009c000008b10000613d0000162b0000013d000005d90270009c0000162b0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ab02100197000e00000002001d000005ac0110009c0000162b0000813d0000000e0100002900000000001004350000000901000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000000120004c000000000100001900000caa0000613d000c00000002001d00000000002004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000d00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000d02000029000000000121004b0000162b0000813d0000000c0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000e02000029000000000121004b0000000c01000029000000000100c01900000caa0000013d000005a90270009c0000162b0000c13d000005aa020000410000001f0340008c00000000030000190000000003022019000005aa04400197000000000540004c0000000002008019000005aa0440009c000000000203c019000000000220004c0000162b0000613d000000000101043b000005ab03100197000005ac0110009c0000162b0000813d0000000101000039000000000101041a000005ab011001970000000c02000029000000000112004b0000162b0000c13d000e00000003001d00000000003004350000000401000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000001000300008a000000000232016f000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000203000039000005ad040000410000000e05000029167316690000040f000000010120019000000b740000c13d0000162b0000013d0000000005120019000000000123004b00000f5a0000a13d00000000000504350000001102000039000000000102041a0000000106100270000000010310019000000fcb0000c13d000001000200008a000000000121016f00000000001504350000007f0660018f0000000001560019000000400600043d0000000002610049000000200220008a0000000000260435000000400010043f000010c60000013d0000000f01000039000000000101041a000001000200008a000000000121016f0000000000140435000010c60000013d00000000020a00190000000001000019000000000320004c00000f770000613d0000000a3220011a000000010110003900000f720000013d0000003f02100039000000200300008a000000000232016f000000400900043d00000000001904350000000002290019000000400020043f000000000210004c00000f9e0000613d0000001f0210018f000000000300003100000002043003670000002003900039000000050510027200000f8f0000613d000000000600001900000005076002100000000008730019000000000774034f000000000707043b00000000007804350000000106600039000000000756004b00000f870000413d000000000620004c00000f9e0000613d0000000505500210000000000454034f00000000035300190000000302200210000000000503043300000000052501cf000000000525022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000252019f00000000002304350000001f029000390000000003a0004c00000e0e0000613d000000010310008a0000000004090433000000000443004b0000162b0000813d00000000011200190000000a4aa0011a000000f8044002100000000005010433000005b805500197000000000454019f000005b9044001c70000000000410435000000000103001900000f9f0000013d000000000313004b00000fb30000a13d000000000321001900000000000304350000001f01100039000000200300008a000000000131016f0000000002210019000010de0000013d000000000020043500000020020000390000000001000019000e00000009001d000d00000005001d000c00000006001d1673007b0000040f0000000c060000290000000d050000290000000e090000290000000002000019000000000362004b00000e190000813d0000000003520019000000000401041a00000000004304350000002002200039000000010110003900000fc30000013d000000000020043500000020020000390000000001000019000e00000005001d000d00000006001d1673007b0000040f0000000d060000290000000e050000290000000002000019000000000362004b00000f630000813d0000000003520019000000000401041a00000000004304350000002002200039000000010110003900000fd40000013d000a00000002001d00000000002004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000b00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000b02000029000000000121004b0000162b0000813d0000000a0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000e02000029000000000121004b0000000a0100002900000d430000c13d00000000001004350000000c01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f000e00000005001d0000000000560435000000020320008c00000d470000413d000a00000004001d000b00000006001d0000003f0220008c0000117c0000a13d0000000000100435000000200200003900000000010000191673007b0000040f0000000a040000290000000e0200002900000000024200190000000b06000029000000000301041a000000000034043500000001011000390000002004400039000000000342004b000010200000213d00000d470000013d000c00000002001d00000000002004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000d00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000d02000029000000000121004b0000162b0000813d0000000c0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000e02000029000000000121004b0000000c0100002900000cf40000c13d00000000001004350000000c01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f000000200300008a00000001052002700000001f04500039000000000334016f000000400600043d00000020046000390000000003340019000000400030043f000d00000005001d0000000000560435000000020320008c000010c60000413d000c00000004001d000e00000006001d0000003f0220008c000011830000a13d0000000000100435000000200200003900000000010000191673007b0000040f0000000c040000290000000d0200002900000000024200190000000e06000029000000000301041a000000000034043500000001011000390000002004400039000000000342004b0000106b0000213d000010c60000013d0000000d030000290000000003030433000001000400008a000000000343016f0000000104500210000000000343019f0000000e04000029000000000034041b00000000030100190000000001120019000000000231004b00000b740000a13d000000000003041b00000001033000390000107c0000013d000b00000008001d0000000002210019000000000113004b000010860000a13d00000000000204350000000d010000390000000000120435000000400100043d000000000212004900000020022000391673007b0000040f000000000101041a000005ab01100198000c00000001001d0000000001000019000005560000613d0000000c0100002900000000001004350000000901000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000a00000001001d000000000110004c0000110a0000c13d000000400100043d0000002002100039000d00000002001d000000400020043f0000000002000019000a00000001001d00000000002104350000000e0100002900000000020104330000000b010000291673007b0000040f0000000a020000290000000002020433000e00000001001d0000000d010000291673007b0000040f0000000e02000029000000000121004b0000000c01000029000000000100c019000005560000013d0000000000100435000000200200003900000000010000191673007b0000040f00000000020000190000000d050000290000000c06000029000000000362004b00000c790000813d0000000003520019000000000401041a000000000043043500000020022000390000000101100039000010b80000013d000000000101041a000001000200008a000000000121016f0000000d0200002900000000001204350000000e06000029000000400200043d0000002001000039000000000012043500000000010604330000002003200039000000000013043500000040022000390000000003000019000000000413004b000010d60000813d00000000042300190000002003300039000000000563001900000000050504330000000000540435000010ce0000013d000000000313004b000010da0000a13d000000000321001900000000000304350000001f01100039000000200300008a000000000131016f0000000002210019000000400100043d00000000021200490000000003000019167300a40000040f0000000a0100002900000000001004350000000701000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000a0100002900000000001004350000000601000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001970000000c02000029000000000121004b000007b90000613d0000000e0100002900000000001004350000000a01000039000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f0000000c020000290000000000200435000000200010043f00000000010000190000000e020000291673007b0000040f000000000101041a000000ff011001900000162b0000613d000007b90000013d0000000a0100002900000000001004350000000b01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000900000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000902000029000000000121004b0000162b0000813d0000000a0100002900000000001004350000000501000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000c02000029000000000121004b0000109c0000c13d0000000a0100002900000000001004350000000c01000039000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000010300008a000000000332013f0000000803300210000001000330018f000000010330008a000000000223016f00000001062002700000001f036000390000000d04000029000000000343016f000000400500043d0000002004500039000d00000004001d0000000003340019000000400030043f000a00000005001d000900000006001d0000000000650435000000020320008c000010a30000413d0000003f0220008c000013c90000a13d0000000000100435000000200200003900000000010000191673007b0000040f0000000d0300002900000009020000290000000002320019000000000401041a000000000043043500000001011000390000002003300039000000000432004b0000114d0000213d000010a30000013d000000090100002900000000001004350000000401000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d000000090100002900000000001004350000000601000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001970000000302000029000000000121004b00000e690000613d0000000e0100002900000000001004350000000a01000039000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f00000003020000290000000000200435000000200010043f00000000010000190000000e020000291673007b0000040f000000000101041a000000ff011001900000162b0000613d00000e690000013d000000000101041a000001000200008a000000000121016f0000000a0200002900000000001204350000000b0600002900000d470000013d000000000101041a000001000200008a000000000121016f0000000c0200002900000000001204350000000e06000029000010c60000013d0000000003030433000001000500008a000000000353016f000000000343019f0000000b04000029000000000034041b00000000040100190000000001120019000000000241004b000011970000a13d000000000004041b0000000104400039000011920000013d0000000a01000029000a00000001001d00000000001004350000000c01000029000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f000005b7020000410000000000200439000d00000001001d0000800b010000390000000402000039167300920000040f000000060200002900000000012100190000000d02000029000000000012041b0000000a0100002900000000001004350000000501000039000500000001001d000000200010043f00000000010000190000000e020000291673007b0000040f000000000101041a000005ab01100198000012600000c13d0000000701000029000005ab01100198000e00000001001d0000162b0000613d0000000a0100002900000000001004350000000501000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000c13d0000000a0100002900000000001004350000000501000029000000200010043f0000004002000039000d00000002001d00000000010000191673007b0000040f000000000201041a000005af022001970000000e03000029000000000232019f000000000021041b00000000003004350000000701000039000c00000001001d000000200010043f00000000010000190000000d020000291673007b0000040f000000000201041a0000000101000029000d00000002001d000000000112004b0000162b0000613d0000000e0100002900000000001004350000000c01000029000000200010043f0000004002000039000c00000002001d00000000010000191673007b0000040f0000000d020000290000000102200039000000000021041b0000000801000039000000200010043f00000000010000190000000c020000291673007b0000040f000000000201041a000d00000002001d0000000102200039000000000021041b0000000000100435000000200200003900000000010000191673007b0000040f0000000d0200002900000000012100190000000a07000029000000000071041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000403000039000005c90400004100000000050000190000000e06000029167316690000040f00000001012001900000162b0000613d0000000801000029000005a10110009c000014910000813d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f00000006020000290000000001210019000000400200043d0000000000120435000000400100043d00000000021200490000059e030000410000059e0410009c0000000001038019000000400110021000000020022000390000059e0420009c00000000020380190000006002200210000000000112019f00000000020004140000059e0420009c0000000002038019000000c002200210000000000121019f0000059f011001c70000800d020000390000000303000039000005e8040000410000000a050000290000000e06000029167316690000040f00000001012001900000162b0000613d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000602000029000000000121001900000caa0000013d0000000d0100002900000000001004350000000901000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000d0100002900000000001004350000000601000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001970000000c02000029000000000121004b00000a160000613d0000000e0100002900000000001004350000000a01000039000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f0000000c020000290000000000200435000000200010043f00000000010000190000000e020000291673007b0000040f000000000101041a000000ff011001900000162b0000613d00000a160000013d0000000a0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000a0100002900000000001004350000000501000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000d00000001001d0000162b0000613d0000000a0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000e00000001001d000005b70100004100000000001004390000800b010000390000000402000039167300920000040f0000000e02000029000000000121004b0000162b0000813d0000000a0100002900000000001004350000000501000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d0000000d02000029000000000121004b0000162b0000c13d0000000a0100002900000000001004350000000601000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab01100198000012af0000613d0000000a0100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000005af02200197000000000021041b0000000d0100002900000000001004350000000701000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000c00000001001d000000000110004c0000162b0000613d0000000d0100002900000000001004350000000e01000029000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f0000000c02000029000000010220008a000000000021041b0000000901000039000c00000001001d000000200010043f00000000010000190000000e020000291673007b0000040f000000000101041a0000000a02000029000000000112004b000012d80000c13d0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000001041b000000080100003900000040020000390000002003000039000900000003001d000e00000000001d0000000d03000029000c00000001001d000b00000002001d0000000000300435000000200010043f00000000010000191673007b0000040f000000000101041a0000000e02000029000000000112004b0000160d0000813d0000000d0100002900000000001004350000000c01000029000000200010043f00000000010000190000000b020000291673007b0000040f000000000201041a0000000e03000029000e00000003001d000000000223004b0000162b0000813d0000000000100435000000000100001900000009020000291673007b0000040f0000000e030000290000000001310019000000000101041a0000000a02000029000000000121004b000015ce0000613d0000000103300039000e00000003001d0000000d030000290000000c010000290000000b02000029000012e00000013d0000000d0100002900000000001004350000000c01000029000000200010043f00000040020000390000000001000019000e00000003001d1673007b0000040f000000000201041a000b00000002001d000000000220004c0000162b0000613d0000000000100435000000200200003900000000010000191673007b0000040f0000000b020000290000000001120019000000010110008a000000000101041a000b00000001001d0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000200200003900000000010000191673007b0000040f0000000e0200002900000000012100190000000b02000029000000000021041b0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f0000000002010019000000000101041a000e00000001001d000000000110004c0000162b0000613d000b00000002001d0000000000200435000000200200003900000000010000191673007b0000040f0000000e02000029000000010220008a0000000001210019000000000001041b0000000b01000029000000000021041b0000000d010000290000000c010000290000000c010000290000000d0100002900000000001004350000000901000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a0000000a02000029000000000112004b0000135a0000c13d0000000d0100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000001041b000000080100002900000000001004350000000601000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000010100008a000b00000002001d000000000112004b0000162b0000613d000000080100002900000000001004350000000601000029000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f0000000b020000290000000102200039000000000021041b0000000c01000029000000200010043f00000000010000190000000e020000291673007b0000040f000000000201041a000c00000002001d0000000102200039000000000021041b0000000000100435000000200200003900000000010000191673007b0000040f0000000c0200002900000000012100190000000a02000029000000000021041b00000000002004350000000701000029000000200010043f00000000010000190000000e020000291673007b0000040f000000000201041a000005af022001970000000806000029000000000262019f000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000403000039000005c9040000410000000d050000290000000a07000029167316690000040f000000010120019000000b740000c13d0000162b0000013d000000090100002900000000001004350000000301000029000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001980000162b0000613d000000090100002900000000001004350000000601000039000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a000005ab011001970000000202000029000000000121004b00000add0000613d0000000e0100002900000000001004350000000a01000039000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f00000002020000290000000000200435000000200010043f00000000010000190000000e020000291673007b0000040f000000000101041a000000ff011001900000162b0000613d00000add0000013d000000000101041a000001000200008a000000000221016f0000000d01000029000010a20000013d0000000d0100002900000000001004350000000c01000029000000200010043f00000040020000390000000001000019000e00000003001d1673007b0000040f000000000201041a000b00000002001d000000000220004c0000162b0000613d0000000000100435000000200200003900000000010000191673007b0000040f0000000b020000290000000001120019000000010110008a000000000101041a000b00000001001d0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000200200003900000000010000191673007b0000040f0000000e0200002900000000012100190000000b02000029000000000021041b0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f0000000002010019000000000101041a000e00000001001d000000000110004c0000162b0000613d000b00000002001d0000000000200435000000200200003900000000010000191673007b0000040f0000000e02000029000000010220008a0000000001210019000000000001041b0000000b01000029000000000021041b0000000d010000290000000c010000290000000c010000290000000d0100002900000000001004350000000901000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a0000000902000029000000000112004b000014240000c13d0000000d0100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000001041b000000070100002900000000001004350000000201000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000010100008a000b00000002001d000000000112004b0000162b0000613d000000070100002900000000001004350000000201000029000000200010043f0000004002000039000e00000002001d00000000010000191673007b0000040f0000000b020000290000000102200039000000000021041b0000000c01000029000000200010043f00000000010000190000000e020000291673007b0000040f000000000201041a000c00000002001d0000000102200039000000000021041b0000000000100435000000200200003900000000010000191673007b0000040f0000000c0200002900000000012100190000000902000029000000000021041b00000000002004350000000401000029000000200010043f00000000010000190000000e020000291673007b0000040f000000000201041a000005af022001970000000706000029000000000262019f000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000403000039000005c9040000410000000d050000290000000907000029167316690000040f00000001012001900000162b0000613d000005bf0100004100000000001004390000000701000029000000040010044300008002010000390000002402000039167300920000040f000000000110004c00000b740000613d000000400100043d00000064021000390000000a03000029000000000032043500000044021000390000000903000029000000000032043500000024021000390000000d030000290000000000320435000005ca0200004100000000002104350000000402100039000000030300002900000000003204350000000502000029000000000502043300000084021000390000000000520435000000a40610003900000000010000190000000604000029000000000251004b000014ce0000813d00000000026100190000000003410019000000000303043300000000003204350000002001100039000014890000013d0000000401000029000000000101041a0000000302000029000000000202041a000000400500043d00000044035000390000000e04000029000000000043043500000024035000390000000a040000290000000000430435000005e7030000410000000000350435000c00000005001d00000004035000390000000000230435000000400200043d000b00000002001d000005bf020000410000000000200439000005ab01100197000d00000001001d000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000d02000029000000040220008c000014bb0000613d0000000c020000290000000b030000290000000002320049000000640420003900000020060000390000000d0200002900000000050300191673000e0000040f000000000110004c0000032c0000613d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f011000390000000203000029000000000131016f000000400300043d0000000001310019000000400010043f000000000120004c0000120e0000c13d0000162b0000013d000d00000006001d000e00000005001d000000000151004b000014d60000a13d0000000e010000290000000d0200002900000000012100190000000000010435000000400100043d000c00000001001d000005bf0100004100000000001004390000000701000029000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d000000200100008a000b00000001001d00000000010004140000000702000029000000040220008c000014f50000613d0000000e020000290000001f022000390000000b03000029000000000232016f0000000d0300002900000000023200190000000c0300002900000000043200490000002006000039000000070200002900000000050300191673000e0000040f000000000110004c0000032c0000613d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f011000390000000b03000029000000000331016f000000400100043d0000000003130019000000400030043f000000000220004c0000162b0000613d0000000001010433000005ca0110009c00000b740000613d0000162b0000013d0000000d0100002900000000001004350000000c01000029000000200010043f00000040020000390000000001000019000e00000003001d1673007b0000040f000000000201041a000b00000002001d000000000220004c0000162b0000613d0000000000100435000000200200003900000000010000191673007b0000040f0000000b020000290000000001120019000000010110008a000000000101041a000b00000001001d0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000200200003900000000010000191673007b0000040f0000000e0200002900000000012100190000000b02000029000000000021041b0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f0000000002010019000000000101041a000e00000001001d000000000110004c0000162b0000613d000b00000002001d0000000000200435000000200200003900000000010000191673007b0000040f0000000e02000029000000010220008a0000000001210019000000000001041b0000000b01000029000000000021041b0000000d010000290000000c010000290000000c010000290000000d0100002900000000001004350000000901000039000e00000001001d000000200010043f000000400200003900000000010000191673007b0000040f000000000101041a0000000902000029000000000112004b000015610000c13d0000000d0100002900000000001004350000000e01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000001041b000000070100002900000000001004350000000101000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000000010100008a000e00000002001d000000000112004b0000162b0000613d000000070100002900000000001004350000000101000029000000200010043f0000004002000039000b00000002001d00000000010000191673007b0000040f0000000e020000290000000102200039000000000021041b0000000c01000029000000200010043f00000000010000190000000b020000291673007b0000040f000000000201041a000e00000002001d0000000102200039000000000021041b0000000000100435000000200200003900000000010000191673007b0000040f0000000e0200002900000000012100190000000902000029000000000021041b00000000002004350000000301000029000000200010043f00000000010000190000000b020000291673007b0000040f000000000201041a000005af022001970000000706000029000000000262019f000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000403000039000005c9040000410000000d050000290000000907000029167316690000040f00000001012001900000162b0000613d000005bf0100004100000000001004390000000701000029000000040010044300008002010000390000002402000039167300920000040f000000000110004c00000b740000613d000000400100043d00000064021000390000000a03000029000000000032043500000044021000390000000903000029000000000032043500000024021000390000000d030000290000000000320435000005ca0200004100000000002104350000000402100039000000020300002900000000003204350000000602000029000000000502043300000084021000390000000000520435000000a40610003900000000010000190000000404000029000000000251004b0000162e0000813d00000000026100190000000003410019000000000303043300000000003204350000002001100039000015c60000013d0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000b00000002001d000000000220004c0000162b0000613d0000000000100435000000200200003900000000010000191673007b0000040f0000000b020000290000000001120019000000010110008a000000000101041a000b00000001001d0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a0000000e03000029000000000223004b0000162b0000813d0000000000100435000000200200003900000000010000191673007b0000040f0000000e0200002900000000012100190000000b02000029000000000021041b0000000d0100002900000000001004350000000c01000029000000200010043f000000400200003900000000010000191673007b0000040f0000000002010019000000000101041a000e00000001001d000000000110004c0000162b0000613d000c00000002001d0000000000200435000000200200003900000000010000191673007b0000040f0000000e02000029000000010220008a0000000001210019000000000001041b0000000c01000029000000000021041b0000000d010000290000000a0100002900000000001004350000000501000029000000200010043f000000400200003900000000010000191673007b0000040f000000000201041a000005af02200197000000000021041b0000059e01000041000000400200043d00000000030004140000059e0430009c00000000030180190000059e0420009c00000000010240190000004001100210000000c002300210000000000112019f0000059f011001c70000800d020000390000000403000039000005c9040000410000000d0500002900000000060000190000000a07000029167316690000040f0000000101200190000011b50000c13d00000000010000190000000002000019167300ae0000040f000d00000006001d000e00000005001d000000000151004b000016360000a13d0000000e010000290000000d0200002900000000012100190000000000010435000000400100043d000c00000001001d000005bf0100004100000000001004390000000701000029000000040010044300008002010000390000002402000039167300920000040f000000000110004c0000162b0000613d00000000010004140000000702000029000000040220008c000016530000613d0000000e020000290000001f022000390000000503000029000000000232016f0000000d0300002900000000023200190000000c0300002900000000043200490000002006000039000000070200002900000000050300191673000e0000040f000000000110004c0000032c0000613d0000000101000031000005aa020000410000001f0310008c00000000030000190000000003022019000005aa04100197000000000540004c0000000002008019000005aa0440009c000000000203c0190000001f011000390000000503000029000000000331016f000000400100043d0000000003130019000000400030043f000000000220004c0000162b0000613d0000000001010433000005ca0110009c00000b740000613d0000162b0000013d0000166c002104210000000102000039000000000001042d00000000020000190000166b0000013d00001671002104230000000102000039000000000001042d0000000002000019000016700000013d0000167300000432000016740001042e00001675000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff020000000000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000008d7714b400000000000000000000000000000000000000000000000000000000c475abff00000000000000000000000000000000000000000000000000000000da3ef23f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000da3ef23f00000000000000000000000000000000000000000000000000000000da8c229e00000000000000000000000000000000000000000000000000000000ddf7fcb000000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f6a74ed78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000001000000000000000000000000000000000000000033d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e811138be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000c475abff00000000000000000000000000000000000000000000000000000000c668286200000000000000000000000000000000000000000000000000000000c87b56dd00000000000000000000000000000000000000000000000000000000d6e4fa8600000000000000000000000000000000000000000000000000000000d72ede13796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913200ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff30000000000000000000000000000000000000000000000000000000000000002f000000000000000000000000000000000000000000000000000000000000006e6578697374656e7420746f6b656e00000000000000000000000000000000004552433732314d657461646174613a2055524920717565727920666f72206e6f08c379a00000000000000000000000000000000000000000000000000000000002571be3000000000000000000000000000000000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83000000000000000000000000000000000000000000000000000000000076a7009b87a00e30f1ac65d898f070f8a3488fe60517182d0a2098e1b4b93a54aa9bd6a22cb4650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a22cb46500000000000000000000000000000000000000000000000000000000a7fc7a0700000000000000000000000000000000000000000000000000000000b18b926200000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000bc6e71b900000000000000000000000000000000000000000000000000000000c1a287e2ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef150b7a02000000000000000000000000000000000000000000000000000000000a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d747417307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31000000000000000000000000000000000000000000000000000000008d7714b4000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000008f32d59b0000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000096e494e84cc23928000000000000000000000000000000000000000000000000000000006c0360eb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006c0360eb000000000000000000000000000000000000000000000000000000006e8f2be00000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000074b96931000000000000000000000000000000000000000000000000000000007bd4a448000000000000000000000000000000000000000000000000000000004cc23928000000000000000000000000000000000000000000000000000000004e543b260000000000000000000000000000000000000000000000000000000055f804b3000000000000000000000000000000000000000000000000000000005619fe48000000000000000000000000000000000000000000000000000000006352211e1896f70a0000000000000000000000000000000000000000000000000000000011020055000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011020055000000000000000000000000000000000000000000000000000000001a6c821b0000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000028ed4f6c000000000000000000000000000000000000000000000000000000003f15457f0000000000000000000000000000000000000000000000000000000042842e0e06ab592300000000000000000000000000000000000000000000000000000000b3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d90000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000081812fc00000000000000000000000000000000000000000000000000000000095ea7b3000000000000000000000000000000000000000000000000000000000d537e8d8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925ffffffff00000000000000000000000000000000000000000000000000000000737570706f727473496e746572666163652862797465733429000000000000002c75696e743235362c6279746573290000000000000000000000000000000000736166655472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629000000000000000000000000000000000000000000000074323536290000000000000000000000000000000000000000000000000000007472616e7366657246726f6d28616464726573732c616464726573732c75696e29000000000000000000000000000000000000000000000000000000000000006973417070726f766564466f72416c6c28616464726573732c61646472657373736574417070726f76616c466f72416c6c28616464726573732c626f6f6c2900676574417070726f7665642875696e7432353629000000000000000000000000617070726f766528616464726573732c75696e743235362900000000000000006f776e65724f662875696e74323536290000000000000000000000000000000062616c616e63654f6628616464726573732900000000000000000000000000007265636c61696d2875696e743235362c6164647265737329000000000000000068747470733a2f2f697066732e696f2f000000000000000000000000000000002e6a736f6e00000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000080ac58cd000000000000000000000000000000000000000000000000000000007a6b53796e63204e616d652053657276696365000000000000000000000000005a4e5300000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0x000000000000000000000000348b86850d41e0550e451ab70d8f171bd462663993cd3b708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae
-----Decoded View---------------
Arg [0] : _ens (address): 0x348b86850d41e0550E451Ab70D8f171bD4626639
Arg [1] : _baseNode (bytes32): 0x93cd3b708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae
-----Encoded View---------------
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.