Overview ERC721
Total Supply:
500 RMnft

Holders:
429
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Exact Match)
Contract Name:
ERC721PresetMinterPauserAutoId

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No

Created At:
Fri, 21 Apr 2023 05:14:58 GMT
ERC721PresetMinterPauserAutoId.sol
ERC721PresetMinterPauserAutoId.sol
ERC721PresetMinterPauserAutoId.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "baseTokenURI",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "royaltyRecipient",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "defaultRoyaltyAmount",
        "type": "uint96"
      },
      {
        "internalType": "string[]",
        "name": "discountPasswords",
        "type": "string[]"
      },
      {
        "internalType": "uint256[]",
        "name": "discountTiers",
        "type": "uint256[]"
      }
    ],
    "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": false,
        "internalType": "string",
        "name": "password",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "discountAmount",
        "type": "uint256"
      }
    ],
    "name": "PasswordAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_PER_MINT",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_SUPPLY",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MINTER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PAUSER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getRoleMember",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleMemberCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "password",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "_count",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_count",
        "type": "uint256"
      }
    ],
    "name": "reserveMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "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": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "tokensOfOwner",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "newTokenURI",
        "type": "string"
      }
    ],
    "name": "updateMetadata",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newRoyaltyReceiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "defaultRoyaltyAmount",
        "type": "uint96"
      }
    ],
    "name": "updateRoyaltiesAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b506040516200748538038062007485833981810160405281019062000037919062000c30565b868681600490816200004a919062000fbf565b5080600590816200005c919062000fbf565b5050506000600f60006101000a81548160ff0219169083151502179055508051825114620000c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000b8906200112d565b60405180910390fd5b600082511162000108576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ff906200119f565b60405180910390fd5b60005b82518110156200017757620001618382815181106200012f576200012e620011c1565b5b60200260200101518383815181106200014d576200014c620011c1565b5b60200260200101516200029e60201b60201c565b80806200016e906200121f565b9150506200010b565b50846013908162000189919062000fbf565b50620001ae6000801b620001a26200039f60201b60201c565b620003a760201b60201c565b620001ef7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001e36200039f60201b60201c565b620003a760201b60201c565b620002307f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620002246200039f60201b60201c565b620003a760201b60201c565b83601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000291846064856200028591906200126c565b620003bd60201b60201c565b505050505050506200150f565b6000601183604051620002b29190620012f4565b9081526020016040518091039020541462000304576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002fb906200135d565b60405180910390fd5b6010829080600181540180825580915050600190039060005260206000200160009091909190915090816200033a919062000fbf565b50806011836040516200034e9190620012f4565b9081526020016040518091039020819055507f2a41ca1530956d4cb04a7cf5da5ace98f8c7d84f4c627c22d930c9f1a8d16b32828260405162000393929190620013d1565b60405180910390a15050565b600033905090565b620003b982826200056060201b60201c565b5050565b620003cd620005a860201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156200042e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000425906200147b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049790620014ed565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600260008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b620005778282620005b260201b62001b471760201c565b620005a38160016000858152602001908152602001600020620006a360201b62001c271790919060201c565b505050565b6000612710905090565b620005c48282620006db60201b60201c565b6200069f57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006446200039f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620006d3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200074560201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000620007598383620007bf60201b60201c565b620007b4578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620007b9565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200084b8262000800565b810181811067ffffffffffffffff821117156200086d576200086c62000811565b5b80604052505050565b600062000882620007e2565b905062000890828262000840565b919050565b600067ffffffffffffffff821115620008b357620008b262000811565b5b620008be8262000800565b9050602081019050919050565b60005b83811015620008eb578082015181840152602081019050620008ce565b60008484015250505050565b60006200090e620009088462000895565b62000876565b9050828152602081018484840111156200092d576200092c620007fb565b5b6200093a848285620008cb565b509392505050565b600082601f8301126200095a5762000959620007f6565b5b81516200096c848260208601620008f7565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009a28262000975565b9050919050565b620009b48162000995565b8114620009c057600080fd5b50565b600081519050620009d481620009a9565b92915050565b60006bffffffffffffffffffffffff82169050919050565b620009fd81620009da565b811462000a0957600080fd5b50565b60008151905062000a1d81620009f2565b92915050565b600067ffffffffffffffff82111562000a415762000a4062000811565b5b602082029050602081019050919050565b600080fd5b600062000a6e62000a688462000a23565b62000876565b9050808382526020820190506020840283018581111562000a945762000a9362000a52565b5b835b8181101562000ae257805167ffffffffffffffff81111562000abd5762000abc620007f6565b5b80860162000acc898262000942565b8552602085019450505060208101905062000a96565b5050509392505050565b600082601f83011262000b045762000b03620007f6565b5b815162000b1684826020860162000a57565b91505092915050565b600067ffffffffffffffff82111562000b3d5762000b3c62000811565b5b602082029050602081019050919050565b6000819050919050565b62000b638162000b4e565b811462000b6f57600080fd5b50565b60008151905062000b838162000b58565b92915050565b600062000ba062000b9a8462000b1f565b62000876565b9050808382526020820190506020840283018581111562000bc65762000bc562000a52565b5b835b8181101562000bf3578062000bde888262000b72565b84526020840193505060208101905062000bc8565b5050509392505050565b600082601f83011262000c155762000c14620007f6565b5b815162000c2784826020860162000b89565b91505092915050565b600080600080600080600060e0888a03121562000c525762000c51620007ec565b5b600088015167ffffffffffffffff81111562000c735762000c72620007f1565b5b62000c818a828b0162000942565b975050602088015167ffffffffffffffff81111562000ca55762000ca4620007f1565b5b62000cb38a828b0162000942565b965050604088015167ffffffffffffffff81111562000cd75762000cd6620007f1565b5b62000ce58a828b0162000942565b955050606062000cf88a828b01620009c3565b945050608062000d0b8a828b0162000a0c565b93505060a088015167ffffffffffffffff81111562000d2f5762000d2e620007f1565b5b62000d3d8a828b0162000aec565b92505060c088015167ffffffffffffffff81111562000d615762000d60620007f1565b5b62000d6f8a828b0162000bfd565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000dd157607f821691505b60208210810362000de75762000de662000d89565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e12565b62000e5d868362000e12565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000ea062000e9a62000e948462000b4e565b62000e75565b62000b4e565b9050919050565b6000819050919050565b62000ebc8362000e7f565b62000ed462000ecb8262000ea7565b84845462000e1f565b825550505050565b600090565b62000eeb62000edc565b62000ef881848462000eb1565b505050565b5b8181101562000f205762000f1460008262000ee1565b60018101905062000efe565b5050565b601f82111562000f6f5762000f398162000ded565b62000f448462000e02565b8101602085101562000f54578190505b62000f6c62000f638562000e02565b83018262000efd565b50505b505050565b600082821c905092915050565b600062000f946000198460080262000f74565b1980831691505092915050565b600062000faf838362000f81565b9150826002028217905092915050565b62000fca8262000d7e565b67ffffffffffffffff81111562000fe65762000fe562000811565b5b62000ff2825462000db8565b62000fff82828562000f24565b600060209050601f83116001811462001037576000841562001022578287015190505b6200102e858262000fa1565b8655506200109e565b601f198416620010478662000ded565b60005b8281101562001071578489015182556001820191506020850194506020810190506200104a565b868310156200109157848901516200108d601f89168262000f81565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f446973636f756e742050617373776f72647320616e64205469657273206c656e60008201527f67746820646f6e2774206d617463682e00000000000000000000000000000000602082015250565b600062001115603083620010a6565b91506200112282620010b7565b604082019050919050565b60006020820190508181036000830152620011488162001106565b9050919050565b7f4e6f20446973636f756e74205469657273000000000000000000000000000000600082015250565b600062001187601183620010a6565b915062001194826200114f565b602082019050919050565b60006020820190508181036000830152620011ba8162001178565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200122c8262000b4e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620012615762001260620011f0565b5b600182019050919050565b60006200127982620009da565b91506200128683620009da565b92508282026200129681620009da565b9150808214620012ab57620012aa620011f0565b5b5092915050565b600081905092915050565b6000620012ca8262000d7e565b620012d68185620012b2565b9350620012e8818560208601620008cb565b80840191505092915050565b6000620013028284620012bd565b915081905092915050565b7f50617373776f726420616c7265616479206578697374732e0000000000000000600082015250565b600062001345601883620010a6565b915062001352826200130d565b602082019050919050565b60006020820190508181036000830152620013788162001336565b9050919050565b60006200138c8262000d7e565b620013988185620010a6565b9350620013aa818560208601620008cb565b620013b58162000800565b840191505092915050565b620013cb8162000b4e565b82525050565b60006040820190508181036000830152620013ed81856200137f565b9050620013fe6020830184620013c0565b9392505050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062001463602a83620010a6565b9150620014708262001405565b604082019050919050565b60006020820190508181036000830152620014968162001454565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000620014d5601983620010a6565b9150620014e2826200149d565b602082019050919050565b600060208201905081810360008301526200150881620014c6565b9050919050565b615f66806200151f6000396000f3fe60806040526004361061021a5760003560e01c806353c8388e11610123578063a22cb465116100ab578063ca15c8731161006f578063ca15c87314610812578063d53913931461084f578063d547741f1461087a578063e63ab1e9146108a3578063e985e9c5146108ce5761021a565b8063a22cb46514610731578063a373cb4b1461075a578063b0ea180214610783578063b88d4fde146107ac578063c87b56dd146107d55761021a565b80638462151c116100f25780638462151c146106245780639010d07c1461066157806391d148541461069e57806395d89b41146106db578063a217fddf146107065761021a565b806353c8388e146105565780635c975abb1461057f5780636352211e146105aa57806370a08231146105e75761021a565b80632a55205a116101a657806336568abe1161017557806336568abe146104945780633ccfd60b146104bd57806342842e0e146104c757806342966c68146104f05780634f6ccce7146105195761021a565b80632a55205a146103c55780632f2ff15d146104035780632f745c591461042c57806332cb6b0c146104695761021a565b8063095ea7b3116101ed578063095ea7b3146102e057806309d42b301461030957806318160ddd1461033457806323b872dd1461035f578063248a9ca3146103885761021a565b806301ffc9a71461021f578063056b01ce1461025c57806306fdde0314610278578063081812fc146102a3575b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190613b47565b61090b565b6040516102539190613b8f565b60405180910390f35b61027660048036038101906102719190613d26565b61091d565b005b34801561028457600080fd5b5061028d610b66565b60405161029a9190613e01565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190613e23565b610bf8565b6040516102d79190613e91565b60405180910390f35b3480156102ec57600080fd5b5061030760048036038101906103029190613ed8565b610c7d565b005b34801561031557600080fd5b5061031e610d94565b60405161032b9190613f27565b60405180910390f35b34801561034057600080fd5b50610349610d99565b6040516103569190613f27565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613f42565b610da6565b005b34801561039457600080fd5b506103af60048036038101906103aa9190613fcb565b610e06565b6040516103bc9190614007565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190614022565b610e25565b6040516103fa929190614062565b60405180910390f35b34801561040f57600080fd5b5061042a6004803603810190610425919061408b565b61100f565b005b34801561043857600080fd5b50610453600480360381019061044e9190613ed8565b611030565b6040516104609190613f27565b60405180910390f35b34801561047557600080fd5b5061047e6110d5565b60405161048b9190613f27565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b6919061408b565b6110db565b005b6104c561115e565b005b3480156104d357600080fd5b506104ee60048036038101906104e99190613f42565b61124b565b005b3480156104fc57600080fd5b5061051760048036038101906105129190613e23565b61126b565b005b34801561052557600080fd5b50610540600480360381019061053b9190613e23565b6112c7565b60405161054d9190613f27565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906140cb565b611338565b005b34801561058b57600080fd5b50610594611396565b6040516105a19190613b8f565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190613e23565b6113ad565b6040516105de9190613e91565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614127565b61145e565b60405161061b9190613f27565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190614127565b611515565b6040516106589190614212565b60405180910390f35b34801561066d57600080fd5b5061068860048036038101906106839190614234565b6115c3565b6040516106959190613e91565b60405180910390f35b3480156106aa57600080fd5b506106c560048036038101906106c0919061408b565b6115f2565b6040516106d29190613b8f565b60405180910390f35b3480156106e757600080fd5b506106f061165c565b6040516106fd9190613e01565b60405180910390f35b34801561071257600080fd5b5061071b6116ee565b6040516107289190614007565b60405180910390f35b34801561073d57600080fd5b50610758600480360381019061075391906142a0565b6116f5565b005b34801561076657600080fd5b50610781600480360381019061077c9190614324565b61170b565b005b34801561078f57600080fd5b506107aa60048036038101906107a59190613ed8565b6117d6565b005b3480156107b857600080fd5b506107d360048036038101906107ce9190614405565b6118d7565b005b3480156107e157600080fd5b506107fc60048036038101906107f79190613e23565b611939565b6040516108099190613e01565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190613fcb565b611a26565b6040516108469190613f27565b60405180910390f35b34801561085b57600080fd5b50610864611a4a565b6040516108719190614007565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c919061408b565b611a6e565b005b3480156108af57600080fd5b506108b8611a8f565b6040516108c59190614007565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f09190614488565b611ab3565b6040516109029190613b8f565b60405180910390f35b600061091682611c57565b9050919050565b60006109296012611c69565b90506000671bc16d674ec80000905060008060118660405161094b9190614504565b908152602001604051809103902054146109d75760118560405161096f9190614504565b908152602001604051809103902054606461098a919061454a565b90506109a86064671bc16d674ec80000611c7790919063ffffffff16565b91506109bd8183611c7790919063ffffffff16565b91506109d461271083611c8d90919063ffffffff16565b91505b6101f56109ed8585611ca390919063ffffffff16565b10610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a24906145ca565b60405180910390fd5b600084118015610a3e5750601e8411155b610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a749061465c565b60405180910390fd5b601e610aa185610a93610a8e611cb9565b61145e565b611ca390919063ffffffff16565b1115610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad9906146ee565b60405180910390fd5b610af58483611c7790919063ffffffff16565b341015610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e9061475a565b60405180910390fd5b60005b84811015610b5e57610b4b33611cc1565b8080610b569061477a565b915050610b3a565b505050505050565b606060048054610b75906147f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba1906147f1565b8015610bee5780601f10610bc357610100808354040283529160200191610bee565b820191906000526020600020905b815481529060010190602001808311610bd157829003601f168201915b5050505050905090565b6000610c0382611d2d565b610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990614894565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c88826113ad565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef90614926565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d17611cb9565b73ffffffffffffffffffffffffffffffffffffffff161480610d465750610d4581610d40611cb9565b611ab3565b5b610d85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7c906149b8565b60405180910390fd5b610d8f8383611d99565b505050565b601e81565b6000600d80549050905090565b610db7610db1611cb9565b82611e52565b610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90614a4a565b60405180910390fd5b610e01838383611f30565b505050565b6000806000838152602001908152602001600020600101549050919050565b6000806000600360008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610fba5760026040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610fc4612196565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610ff09190614a6a565b610ffa9190614adb565b90508160000151819350935050509250929050565b61101882610e06565b611021816121a0565b61102b83836121b4565b505050565b600061103b8361145e565b821061107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390614b7e565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6101f581565b6110e3611cb9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790614c10565b60405180910390fd5b61115a82826121e8565b5050565b61118f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661118a611cb9565b6115f2565b6111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590614cc8565b60405180910390fd5b600047905060008111611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90614d34565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611247818361221c565b5050565b611266838383604051806020016040528060008152506118d7565b505050565b61127c611276611cb9565b82611e52565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290614dc6565b60405180910390fd5b6112c481612310565b50565b60006112d1610d99565b8210611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990614e58565b60405180910390fd5b600d828154811061132657611325614e78565b5b90600052602060002001549050919050565b611349611343611cb9565b83611e52565b611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90614ef3565b60405180910390fd5b611392828261242d565b5050565b6000600f60009054906101000a900460ff16905090565b6000806006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90614f85565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590615017565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060006115228361145e565b905060008167ffffffffffffffff8111156115405761153f613bc5565b5b60405190808252806020026020018201604052801561156e5781602001602082028036833780820191505090505b50905060005b828110156115b8576115868582611030565b82828151811061159957611598614e78565b5b60200260200101818152505080806115b09061477a565b915050611574565b508092505050919050565b60006115ea826001600086815260200190815260200160002061245290919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606005805461166b906147f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611697906147f1565b80156116e45780601f106116b9576101008083540402835291602001916116e4565b820191906000526020600020905b8154815290600101906020018083116116c757829003601f168201915b5050505050905090565b6000801b81565b611707611700611cb9565b838361246c565b5050565b61173c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611737611cb9565b6115f2565b61177b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611772906150cf565b60405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117d2826064836117cd91906150ef565b6125d8565b5050565b60006117e26012611c69565b90506118157f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611810611cb9565b6115f2565b611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b906151c4565b60405180910390fd5b6101f561186a8383611ca390919063ffffffff16565b106118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a1906145ca565b60405180910390fd5b60005b828110156118d1576118be84611cc1565b80806118c99061477a565b9150506118ad565b50505050565b6118e86118e2611cb9565b83611e52565b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90614a4a565b60405180910390fd5b6119338484848461276d565b50505050565b606061194482611d2d565b611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90615256565b60405180910390fd5b600a600083815260200190815260200160002080546119a1906147f1565b80601f01602080910402602001604051908101604052809291908181526020018280546119cd906147f1565b8015611a1a5780601f106119ef57610100808354040283529160200191611a1a565b820191906000526020600020905b8154815290600101906020018083116119fd57829003601f168201915b50505050509050919050565b6000611a43600160008481526020019081526020016000206127c9565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611a7782610e06565b611a80816121a0565b611a8a83836121e8565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b5182826115f2565b611c2357600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611bc8611cb9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611c4f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6127de565b905092915050565b6000611c628261284e565b9050919050565b600081600001549050919050565b60008183611c859190614a6a565b905092915050565b60008183611c9b9190614adb565b905092915050565b60008183611cb19190615276565b905092915050565b600033905090565b611cd481611ccf6012611c69565b6128c8565b60006013611cea611ce56012611c69565b6128e6565b604051602001611cfb92919061538e565b6040516020818303038152906040529050611d1f611d196012611c69565b8261242d565b611d296012612a46565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e0c836113ad565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e5d82611d2d565b611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e939061542f565b60405180910390fd5b6000611ea7836113ad565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f1657508373ffffffffffffffffffffffffffffffffffffffff16611efe84610bf8565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f275750611f268185611ab3565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f50826113ad565b73ffffffffffffffffffffffffffffffffffffffff1614611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d906154c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200c90615553565b60405180910390fd5b612020838383612a5c565b61202b600082611d99565b6001600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461207b919061454a565b925050819055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d29190615276565b92505081905550816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612191838383612a6c565b505050565b6000612710905090565b6121b1816121ac611cb9565b612a71565b50565b6121be8282611b47565b6121e38160016000858152602001908152602001600020611c2790919063ffffffff16565b505050565b6121f28282612b0e565b6122178160016000858152602001908152602001600020612bef90919063ffffffff16565b505050565b8047101561225f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612256906155bf565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161228590615610565b60006040518083038185875af1925050503d80600081146122c2576040519150601f19603f3d011682016040523d82523d6000602084013e6122c7565b606091505b505090508061230b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230290615697565b60405180910390fd5b505050565b600061231b826113ad565b905061232981600084612a5c565b612334600083611d99565b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612384919061454a565b925050819055506006600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461242981600084612a6c565b5050565b80600a6000848152602001908152602001600020908161244d919061584e565b505050565b60006124618360000183612c1f565b60001c905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d19061596c565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125cb9190613b8f565b60405180910390a3505050565b6125e0612196565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111561263e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612635906159fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490615a6a565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600260008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b612778848484611f30565b61278484848484612c4a565b6127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90615afc565b60405180910390fd5b50505050565b60006127d782600001612dd1565b9050919050565b60006127ea8383612de2565b612843578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612848565b600090505b92915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128c157506128c082612e05565b5b9050919050565b6128e2828260405180602001604052806000815250612ee7565b5050565b60606000820361292d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a41565b600082905060005b6000821461295f5780806129489061477a565b915050600a826129589190614adb565b9150612935565b60008167ffffffffffffffff81111561297b5761297a613bc5565b5b6040519080825280601f01601f1916602001820160405280156129ad5781602001600182028036833780820191505090505b5090505b60008514612a3a576001826129c6919061454a565b9150600a856129d59190615b1c565b60306129e19190615276565b60f81b8183815181106129f7576129f6614e78565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a339190614adb565b94506129b1565b8093505050505b919050565b6001816000016000828254019250508190555050565b612a67838383612f42565b505050565b505050565b612a7b82826115f2565b612b0a57612aa08173ffffffffffffffffffffffffffffffffffffffff166014612f9a565b612aae8360001c6020612f9a565b604051602001612abf929190615be5565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b019190613e01565b60405180910390fd5b5050565b612b1882826115f2565b15612beb57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612b90611cb9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612c17836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6131d6565b905092915050565b6000826000018281548110612c3757612c36614e78565b5b9060005260206000200154905092915050565b6000612c6b8473ffffffffffffffffffffffffffffffffffffffff166132ea565b15612dc4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612c94611cb9565b8786866040518563ffffffff1660e01b8152600401612cb69493929190615c74565b6020604051808303816000875af1925050508015612cf257506040513d601f19601f82011682018060405250810190612cef9190615cd5565b60015b612d74573d8060008114612d22576040519150601f19603f3d011682016040523d82523d6000602084013e612d27565b606091505b506000815103612d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6390615afc565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612dc9565b600190505b949350505050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612ed057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612ee05750612edf8261330d565b5b9050919050565b612ef18383613387565b612efe6000848484612c4a565b612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615afc565b60405180910390fd5b505050565b612f4d838383613560565b612f55611396565b15612f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8c90615d74565b60405180910390fd5b505050565b606060006002836002612fad9190614a6a565b612fb79190615276565b67ffffffffffffffff811115612fd057612fcf613bc5565b5b6040519080825280601f01601f1916602001820160405280156130025781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061303a57613039614e78565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061309e5761309d614e78565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026130de9190614a6a565b6130e89190615276565b90505b6001811115613188577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061312a57613129614e78565b5b1a60f81b82828151811061314157613140614e78565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061318190615d94565b90506130eb565b50600084146131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c390615e09565b60405180910390fd5b8091505092915050565b600080836001016000848152602001908152602001600020549050600081146132de576000600182613208919061454a565b9050600060018660000180549050613220919061454a565b905081811461328f57600086600001828154811061324157613240614e78565b5b906000526020600020015490508087600001848154811061326557613264614e78565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806132a3576132a2615e29565b5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506132e4565b60009150505b92915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613380575061337f82613672565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ed90615ea4565b60405180910390fd5b6133ff81611d2d565b1561343f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343690615f10565b60405180910390fd5b61344b60008383612a5c565b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461349b9190615276565b92505081905550816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461355c60008383612a6c565b5050565b61356b8383836136ec565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135ad576135a8816136f1565b6135ec565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146135eb576135ea838261373a565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361362e57613629816138a7565b61366d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461366c5761366b8282613978565b5b5b505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806136e557506136e4826139f7565b5b9050919050565b505050565b600d80549050600e600083815260200190815260200160002081905550600d81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016137478461145e565b613751919061454a565b90506000600c6000848152602001908152602001600020549050818114613836576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600c600083815260200190815260200160002081905550505b600c600084815260200190815260200160002060009055600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600d805490506138bb919061454a565b90506000600e60008481526020019081526020016000205490506000600d83815481106138eb576138ea614e78565b5b9060005260206000200154905080600d838154811061390d5761390c614e78565b5b906000526020600020018190555081600e600083815260200190815260200160002081905550600e600085815260200190815260200160002060009055600d80548061395c5761395b615e29565b5b6001900381819060005260206000200160009055905550505050565b60006139838361145e565b905081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600c600084815260200190815260200160002081905550505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613a6a5750613a6982613a71565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613b2481613aef565b8114613b2f57600080fd5b50565b600081359050613b4181613b1b565b92915050565b600060208284031215613b5d57613b5c613ae5565b5b6000613b6b84828501613b32565b91505092915050565b60008115159050919050565b613b8981613b74565b82525050565b6000602082019050613ba46000830184613b80565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613bfd82613bb4565b810181811067ffffffffffffffff82111715613c1c57613c1b613bc5565b5b80604052505050565b6000613c2f613adb565b9050613c3b8282613bf4565b919050565b600067ffffffffffffffff821115613c5b57613c5a613bc5565b5b613c6482613bb4565b9050602081019050919050565b82818337600083830152505050565b6000613c93613c8e84613c40565b613c25565b905082815260208101848484011115613caf57613cae613baf565b5b613cba848285613c71565b509392505050565b600082601f830112613cd757613cd6613baa565b5b8135613ce7848260208601613c80565b91505092915050565b6000819050919050565b613d0381613cf0565b8114613d0e57600080fd5b50565b600081359050613d2081613cfa565b92915050565b60008060408385031215613d3d57613d3c613ae5565b5b600083013567ffffffffffffffff811115613d5b57613d5a613aea565b5b613d6785828601613cc2565b9250506020613d7885828601613d11565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613dbc578082015181840152602081019050613da1565b60008484015250505050565b6000613dd382613d82565b613ddd8185613d8d565b9350613ded818560208601613d9e565b613df681613bb4565b840191505092915050565b60006020820190508181036000830152613e1b8184613dc8565b905092915050565b600060208284031215613e3957613e38613ae5565b5b6000613e4784828501613d11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e7b82613e50565b9050919050565b613e8b81613e70565b82525050565b6000602082019050613ea66000830184613e82565b92915050565b613eb581613e70565b8114613ec057600080fd5b50565b600081359050613ed281613eac565b92915050565b60008060408385031215613eef57613eee613ae5565b5b6000613efd85828601613ec3565b9250506020613f0e85828601613d11565b9150509250929050565b613f2181613cf0565b82525050565b6000602082019050613f3c6000830184613f18565b92915050565b600080600060608486031215613f5b57613f5a613ae5565b5b6000613f6986828701613ec3565b9350506020613f7a86828701613ec3565b9250506040613f8b86828701613d11565b9150509250925092565b6000819050919050565b613fa881613f95565b8114613fb357600080fd5b50565b600081359050613fc581613f9f565b92915050565b600060208284031215613fe157613fe0613ae5565b5b6000613fef84828501613fb6565b91505092915050565b61400181613f95565b82525050565b600060208201905061401c6000830184613ff8565b92915050565b6000806040838503121561403957614038613ae5565b5b600061404785828601613d11565b925050602061405885828601613d11565b9150509250929050565b60006040820190506140776000830185613e82565b6140846020830184613f18565b9392505050565b600080604083850312156140a2576140a1613ae5565b5b60006140b085828601613fb6565b92505060206140c185828601613ec3565b9150509250929050565b600080604083850312156140e2576140e1613ae5565b5b60006140f085828601613d11565b925050602083013567ffffffffffffffff81111561411157614110613aea565b5b61411d85828601613cc2565b9150509250929050565b60006020828403121561413d5761413c613ae5565b5b600061414b84828501613ec3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61418981613cf0565b82525050565b600061419b8383614180565b60208301905092915050565b6000602082019050919050565b60006141bf82614154565b6141c9818561415f565b93506141d483614170565b8060005b838110156142055781516141ec888261418f565b97506141f7836141a7565b9250506001810190506141d8565b5085935050505092915050565b6000602082019050818103600083015261422c81846141b4565b905092915050565b6000806040838503121561424b5761424a613ae5565b5b600061425985828601613fb6565b925050602061426a85828601613d11565b9150509250929050565b61427d81613b74565b811461428857600080fd5b50565b60008135905061429a81614274565b92915050565b600080604083850312156142b7576142b6613ae5565b5b60006142c585828601613ec3565b92505060206142d68582860161428b565b9150509250929050565b60006bffffffffffffffffffffffff82169050919050565b614301816142e0565b811461430c57600080fd5b50565b60008135905061431e816142f8565b92915050565b6000806040838503121561433b5761433a613ae5565b5b600061434985828601613ec3565b925050602061435a8582860161430f565b9150509250929050565b600067ffffffffffffffff82111561437f5761437e613bc5565b5b61438882613bb4565b9050602081019050919050565b60006143a86143a384614364565b613c25565b9050828152602081018484840111156143c4576143c3613baf565b5b6143cf848285613c71565b509392505050565b600082601f8301126143ec576143eb613baa565b5b81356143fc848260208601614395565b91505092915050565b6000806000806080858703121561441f5761441e613ae5565b5b600061442d87828801613ec3565b945050602061443e87828801613ec3565b935050604061444f87828801613d11565b925050606085013567ffffffffffffffff8111156144705761446f613aea565b5b61447c878288016143d7565b91505092959194509250565b6000806040838503121561449f5761449e613ae5565b5b60006144ad85828601613ec3565b92505060206144be85828601613ec3565b9150509250929050565b600081905092915050565b60006144de82613d82565b6144e881856144c8565b93506144f8818560208601613d9e565b80840191505092915050565b600061451082846144d3565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455582613cf0565b915061456083613cf0565b92508282039050818111156145785761457761451b565b5b92915050565b7f4e6f7420656e6f756768204e465473206c656674210000000000000000000000600082015250565b60006145b4601583613d8d565b91506145bf8261457e565b602082019050919050565b600060208201905081810360008301526145e3816145a7565b9050919050565b7f43616e6e6f74206d696e7420737065636966696564206e756d626572206f662060008201527f4e4654732e000000000000000000000000000000000000000000000000000000602082015250565b6000614646602583613d8d565b9150614651826145ea565b604082019050919050565b6000602082019050818103600083015261467581614639565b9050919050565b7f57616c6c65742063616e206f6e6c792068617665203330204e656b6f2046726960008201527f656e64732e000000000000000000000000000000000000000000000000000000602082015250565b60006146d8602583613d8d565b91506146e38261467c565b604082019050919050565b60006020820190508181036000830152614707816146cb565b9050919050565b7f4e6f7420656e6f756768206176617820746f207075726368617365204e46542e600082015250565b6000614744602083613d8d565b915061474f8261470e565b602082019050919050565b6000602082019050818103600083015261477381614737565b9050919050565b600061478582613cf0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147b7576147b661451b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061480957607f821691505b60208210810361481c5761481b6147c2565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061487e602c83613d8d565b915061488982614822565b604082019050919050565b600060208201905081810360008301526148ad81614871565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614910602183613d8d565b915061491b826148b4565b604082019050919050565b6000602082019050818103600083015261493f81614903565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006149a2603883613d8d565b91506149ad82614946565b604082019050919050565b600060208201905081810360008301526149d181614995565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614a34603183613d8d565b9150614a3f826149d8565b604082019050919050565b60006020820190508181036000830152614a6381614a27565b9050919050565b6000614a7582613cf0565b9150614a8083613cf0565b9250828202614a8e81613cf0565b91508282048414831517614aa557614aa461451b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ae682613cf0565b9150614af183613cf0565b925082614b0157614b00614aac565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614b68602b83613d8d565b9150614b7382614b0c565b604082019050919050565b60006020820190508181036000830152614b9781614b5b565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614bfa602f83613d8d565b9150614c0582614b9e565b604082019050919050565b60006020820190508181036000830152614c2981614bed565b9050919050565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d7573742068617665206d696e74657220726f6c6520746f207769746864726160208201527f77207061796d656e740000000000000000000000000000000000000000000000604082015250565b6000614cb2604983613d8d565b9150614cbd82614c30565b606082019050919050565b60006020820190508181036000830152614ce181614ca5565b9050919050565b7f4e6f2061766178206c65667420746f2077697468647261770000000000000000600082015250565b6000614d1e601883613d8d565b9150614d2982614ce8565b602082019050919050565b60006020820190508181036000830152614d4d81614d11565b9050919050565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b6000614db0603083613d8d565b9150614dbb82614d54565b604082019050919050565b60006020820190508181036000830152614ddf81614da3565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614e42602c83613d8d565b9150614e4d82614de6565b604082019050919050565b60006020820190508181036000830152614e7181614e35565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b6000614edd602083613d8d565b9150614ee882614ea7565b602082019050919050565b60006020820190508181036000830152614f0c81614ed0565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614f6f602983613d8d565b9150614f7a82614f13565b604082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000615001602a83613d8d565b915061500c82614fa5565b604082019050919050565b6000602082019050818103600083015261503081614ff4565b9050919050565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d7573742068617665206d696e74657220726f6c6520746f206368616e67652060208201527f726f79616c746965732061646472657373000000000000000000000000000000604082015250565b60006150b9605183613d8d565b91506150c482615037565b606082019050919050565b600060208201905081810360008301526150e8816150ac565b9050919050565b60006150fa826142e0565b9150615105836142e0565b9250828202615113816142e0565b91508082146151255761512461451b565b5b5092915050565b7f4552433732315072657365744d696e7465725061757365724175746f49643a2060008201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7472657360208201527f6572766500000000000000000000000000000000000000000000000000000000604082015250565b60006151ae604483613d8d565b91506151b98261512c565b606082019050919050565b600060208201905081810360008301526151dd816151a1565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000615240602f83613d8d565b915061524b826151e4565b604082019050919050565b6000602082019050818103600083015261526f81615233565b9050919050565b600061528182613cf0565b915061528c83613cf0565b92508282019050808211156152a4576152a361451b565b5b92915050565b60008190508160005260206000209050919050565b600081546152cc816147f1565b6152d681866144c8565b945060018216600081146152f1576001811461530657615339565b60ff1983168652811515820286019350615339565b61530f856152aa565b60005b8381101561533157815481890152600182019150602081019050615312565b838801955050505b50505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006153786005836144c8565b915061538382615342565b600582019050919050565b600061539a82856152bf565b91506153a682846144d3565b91506153b18261536b565b91508190509392505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000615419602c83613d8d565b9150615424826153bd565b604082019050919050565b600060208201905081810360008301526154488161540c565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006154ab602583613d8d565b91506154b68261544f565b604082019050919050565b600060208201905081810360008301526154da8161549e565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061553d602483613d8d565b9150615548826154e1565b604082019050919050565b6000602082019050818103600083015261556c81615530565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006155a9601d83613d8d565b91506155b482615573565b602082019050919050565b600060208201905081810360008301526155d88161559c565b9050919050565b600081905092915050565b50565b60006155fa6000836155df565b9150615605826155ea565b600082019050919050565b600061561b826155ed565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615681603a83613d8d565b915061568c82615625565b604082019050919050565b600060208201905081810360008301526156b081615674565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026157047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826156c7565b61570e86836156c7565b95508019841693508086168417925050509392505050565b6000819050919050565b600061574b61574661574184613cf0565b615726565b613cf0565b9050919050565b6000819050919050565b61576583615730565b61577961577182615752565b8484546156d4565b825550505050565b600090565b61578e615781565b61579981848461575c565b505050565b5b818110156157bd576157b2600082615786565b60018101905061579f565b5050565b601f821115615802576157d3816152aa565b6157dc846156b7565b810160208510156157eb578190505b6157ff6157f7856156b7565b83018261579e565b50505b505050565b600082821c905092915050565b600061582560001984600802615807565b1980831691505092915050565b600061583e8383615814565b9150826002028217905092915050565b61585782613d82565b67ffffffffffffffff8111156158705761586f613bc5565b5b61587a82546147f1565b6158858282856157c1565b600060209050601f8311600181146158b857600084156158a6578287015190505b6158b08582615832565b865550615918565b601f1984166158c6866152aa565b60005b828110156158ee578489015182556001820191506020850194506020810190506158c9565b8683101561590b5784890151615907601f891682615814565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615956601983613d8d565b915061596182615920565b602082019050919050565b6000602082019050818103600083015261598581615949565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b60006159e8602a83613d8d565b91506159f38261598c565b604082019050919050565b60006020820190508181036000830152615a17816159db565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000615a54601983613d8d565b9150615a5f82615a1e565b602082019050919050565b60006020820190508181036000830152615a8381615a47565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615ae6603283613d8d565b9150615af182615a8a565b604082019050919050565b60006020820190508181036000830152615b1581615ad9565b9050919050565b6000615b2782613cf0565b9150615b3283613cf0565b925082615b4257615b41614aac565b5b828206905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000615b836017836144c8565b9150615b8e82615b4d565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000615bcf6011836144c8565b9150615bda82615b99565b601182019050919050565b6000615bf082615b76565b9150615bfc82856144d3565b9150615c0782615bc2565b9150615c1382846144d3565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000615c4682615c1f565b615c508185615c2a565b9350615c60818560208601613d9e565b615c6981613bb4565b840191505092915050565b6000608082019050615c896000830187613e82565b615c966020830186613e82565b615ca36040830185613f18565b8181036060830152615cb58184615c3b565b905095945050505050565b600081519050615ccf81613b1b565b92915050565b600060208284031215615ceb57615cea613ae5565b5b6000615cf984828501615cc0565b91505092915050565b7f4552433732315061757361626c653a20746f6b656e207472616e73666572207760008201527f68696c6520706175736564000000000000000000000000000000000000000000602082015250565b6000615d5e602b83613d8d565b9150615d6982615d02565b604082019050919050565b60006020820190508181036000830152615d8d81615d51565b9050919050565b6000615d9f82613cf0565b915060008203615db257615db161451b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615df3602083613d8d565b9150615dfe82615dbd565b602082019050919050565b60006020820190508181036000830152615e2281615de6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615e8e602083613d8d565b9150615e9982615e58565b602082019050919050565b60006020820190508181036000830152615ebd81615e81565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615efa601c83613d8d565b9150615f0582615ec4565b602082019050919050565b60006020820190508181036000830152615f2981615eed565b905091905056fea2646970667358221220173fc508aa3e683bfb80018b4f60801040f655e9da71477beaaf065fd7b5790564736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000002f1e4aff1a629d402616cec2e23e3d2a1a760e4c000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000012526565666572204d61646e657373204e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005524d6e6674000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005568747470733a2f2f75726b656c6c6162732e6d7970696e6174612e636c6f75642f697066732f516d514a577353353971593963466d574e3848433262554c37533574537365536d316e6b4572386953356b4439502f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004746573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000