{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "initialDefaultURI",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC1155InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC1155InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "idsLength",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "valuesLength",
          "type": "uint256"
        }
      ],
      "name": "ERC1155InvalidArrayLength",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "ERC1155InvalidOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC1155InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC1155InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC1155MissingApprovalForAll",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "StringsInsufficientHexLength",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "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": "uint256",
          "name": "packTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "opener",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "mintedTokenIds",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "mintedAmounts",
          "type": "uint256[]"
        }
      ],
      "name": "BonusPackOpened",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "toWalletAddress",
          "type": "address"
        }
      ],
      "name": "CharacterMinted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ItemMinted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "userTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "targetTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "ItemUsed",
      "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": "uint256",
          "name": "scrollTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "targetCharacterId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "ScrollUsed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "burnBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "maxSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mintBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "characterTokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "walletAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mintCharacter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "newuri",
          "type": "string"
        }
      ],
      "name": "setDefaultURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        }
      ],
      "name": "setMaxSupply",
      "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": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tokenIdToWalletAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161415b38038061415b8339818101604052810190610032919061032a565b3381610043816100dc60201b60201c565b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100b65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100ad91906103b4565b60405180910390fd5b6100c5816100ef60201b60201c565b5080600690816100d591906105f0565b50506106c2565b80600290816100eb91906105f0565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61021c826101d3565b810181811067ffffffffffffffff8211171561023b5761023a6101e4565b5b80604052505050565b600061024e6101b5565b905061025a8282610213565b919050565b600067ffffffffffffffff82111561027a576102796101e4565b5b610283826101d3565b9050602081019050919050565b60005b838110156102ae578082015181840152602081019050610293565b60008484015250505050565b60006102cd6102c88461025f565b610244565b9050828152602081018484840111156102e9576102e86101ce565b5b6102f4848285610290565b509392505050565b600082601f830112610311576103106101c9565b5b81516103218482602086016102ba565b91505092915050565b6000602082840312156103405761033f6101bf565b5b600082015167ffffffffffffffff81111561035e5761035d6101c4565b5b61036a848285016102fc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061039e82610373565b9050919050565b6103ae81610393565b82525050565b60006020820190506103c960008301846103a5565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061042157607f821691505b602082108103610434576104336103da565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261049c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261045f565b6104a6868361045f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006104ed6104e86104e3846104be565b6104c8565b6104be565b9050919050565b6000819050919050565b610507836104d2565b61051b610513826104f4565b84845461046c565b825550505050565b600090565b610530610523565b61053b8184846104fe565b505050565b5b8181101561055f57610554600082610528565b600181019050610541565b5050565b601f8211156105a4576105758161043a565b61057e8461044f565b8101602085101561058d578190505b6105a16105998561044f565b830182610540565b50505b505050565b600082821c905092915050565b60006105c7600019846008026105a9565b1980831691505092915050565b60006105e083836105b6565b9150826002028217905092915050565b6105f9826103cf565b67ffffffffffffffff811115610612576106116101e4565b5b61061c8254610409565b610627828285610563565b600060209050601f83116001811461065a5760008415610648578287015190505b61065285826105d4565b8655506106ba565b601f1984166106688661043a565b60005b828110156106905784890151825560018201915060208501945060208101905061066b565b868310156106ad57848901516106a9601f8916826105b6565b8355505b6001600288020188555050505b505050505050565b613a8a806106d16000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c8063715018a6116100c3578063da1b9e081161007c578063da1b9e08146103ab578063ddd9864d146103c7578063e985e9c5146103f7578063f242432a14610427578063f2fde38b14610443578063f5298aca1461045f5761014c565b8063715018a6146102eb578063731133e9146102f5578063869f7594146103115780638da5cb5b14610341578063a22cb4651461035f578063bd85b0391461037b5761014c565b80632c650e58116101155780632c650e581461021b5780632eb2c2d61461023757806337da577c146102535780634e1273f41461026f5780634f558e791461029f5780636b20c454146102cf5761014c565b8062fdd58e1461015157806301ffc9a7146101815780630e89341c146101b157806318160ddd146101e15780631f7fdffa146101ff575b600080fd5b61016b600480360381019061016691906124a6565b61047b565b60405161017891906124f5565b60405180910390f35b61019b60048036038101906101969190612568565b6104d5565b6040516101a891906125b0565b60405180910390f35b6101cb60048036038101906101c691906125cb565b6105b7565b6040516101d89190612688565b60405180910390f35b6101e961067f565b6040516101f691906124f5565b60405180910390f35b610219600480360381019061021491906128a7565b610689565b005b61023560048036038101906102309190612962565b6107fd565b005b610251600480360381019061024c91906129e5565b6109d8565b005b61026d60048036038101906102689190612ab4565b610a80565b005b61028960048036038101906102849190612bb7565b610aef565b6040516102969190612ced565b60405180910390f35b6102b960048036038101906102b491906125cb565b610bf8565b6040516102c691906125b0565b60405180910390f35b6102e960048036038101906102e49190612d0f565b610c0c565b005b6102f3610c24565b005b61030f600480360381019061030a9190612d9a565b610c38565b005b61032b600480360381019061032691906125cb565b610d28565b60405161033891906124f5565b60405180910390f35b610349610d40565b6040516103569190612e2c565b60405180910390f35b61037960048036038101906103749190612e73565b610d6a565b005b610395600480360381019061039091906125cb565b610d80565b6040516103a291906124f5565b60405180910390f35b6103c560048036038101906103c09190612f54565b610d9d565b005b6103e160048036038101906103dc91906125cb565b610dc1565b6040516103ee9190612e2c565b60405180910390f35b610411600480360381019061040c9190612f9d565b610df4565b60405161041e91906125b0565b60405180910390f35b610441600480360381019061043c9190612fdd565b610e88565b005b61045d60048036038101906104589190613074565b610f30565b005b610479600480360381019061047491906130a1565b610fb6565b005b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105a057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105b057506105af82610fce565b5b9050919050565b606060006007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461066d576106468173ffffffffffffffffffffffffffffffffffffffff166014611038565b604051602001610656919061317c565b60405160208183030381529060405291505061067a565b6106768361127e565b9150505b919050565b6000600454905090565b610691611312565b60005b8351811015610799576000600860008684815181106106b6576106b561319e565b5b6020026020010151815260200190815260200160002054148061074d5750600860008583815181106106eb576106ea61319e565b5b60200260200101518152602001908152602001600020548382815181106107155761071461319e565b5b60200260200101516107408684815181106107335761073261319e565b5b6020026020010151610d80565b61074a91906131fc565b11155b61078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906132a2565b60405180910390fd5b8080600101915050610694565b506107a684848484611399565b8373ffffffffffffffffffffffffffffffffffffffff1660007f2b46b186672d6173d9d87edf470f2b923a363cd6b5a964c3a74fcb26e10907ee85516040516107ef91906124f5565b60405180910390a350505050565b610805611312565b600073ffffffffffffffffffffffffffffffffffffffff166007600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613334565b60405180910390fd5b6000600860008581526020019081526020016000205414806108f05750600860008481526020019081526020016000205460016108e385610d80565b6108ed91906131fc565b11155b61092f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610926906133c6565b60405180910390fd5b816007600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061098e848460018461141f565b8173ffffffffffffffffffffffffffffffffffffffff16837f0c838877f42a9545501df4094114a27b31d1ad98055acb148d01c72a3b46733760405160405180910390a350505050565b60006109e26114b8565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610a275750610a258682610df4565b155b15610a6b5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610a629291906133e6565b60405180910390fd5b610a7886868686866114c0565b505050505050565b610a88611312565b610a9182610d80565b811015610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90613481565b60405180910390fd5b8060086000848152602001908152602001600020819055505050565b60608151835114610b3b57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610b329291906134a1565b60405180910390fd5b6000835167ffffffffffffffff811115610b5857610b576126af565b5b604051908082528060200260200182016040528015610b865781602001602082028036833780820191505090505b50905060005b8451811015610bed57610bc3610bab82876115b890919063ffffffff16565b610bbe83876115cc90919063ffffffff16565b61047b565b828281518110610bd657610bd561319e565b5b602002602001018181525050806001019050610b8c565b508091505092915050565b600080610c0483610d80565b119050919050565b610c14611312565b610c1f8383836115e0565b505050565b610c2c611312565b610c366000611674565b565b610c40611312565b600060086000858152602001908152602001600020541480610c885750600860008481526020019081526020016000205482610c7b85610d80565b610c8591906131fc565b11155b610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90613516565b60405180910390fd5b610cd38484848461141f565b8373ffffffffffffffffffffffffffffffffffffffff16837f2b46b186672d6173d9d87edf470f2b923a363cd6b5a964c3a74fcb26e10907ee84604051610d1a91906124f5565b60405180910390a350505050565b60086020528060005260406000206000915090505481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d7c610d756114b8565b838361173a565b5050565b600060036000838152602001908152602001600020549050919050565b610da5611312565b610dae816118aa565b8060069081610dbd9190613742565b5050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610e926114b8565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610ed75750610ed58682610df4565b155b15610f1b5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610f129291906133e6565b60405180910390fd5b610f2886868686866118bd565b505050505050565b610f38611312565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610faa5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610fa19190612e2c565b60405180910390fd5b610fb381611674565b50565b610fbe611312565b610fc98383836119c8565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000839050600060028460026110509190613814565b61105a91906131fc565b67ffffffffffffffff811115611073576110726126af565b5b6040519080825280601f01601f1916602001820160405280156110a55781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106110dd576110dc61319e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106111415761114061319e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018560026111819190613814565b61118b91906131fc565b90505b600181111561122b577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106111cd576111cc61319e565b5b1a60f81b8282815181106111e4576111e361319e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600483901c92508061122490613856565b905061118e565b50600082146112735784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161126a9291906134a1565b60405180910390fd5b809250505092915050565b60606002805461128d90613565565b80601f01602080910402602001604051908101604052809291908181526020018280546112b990613565565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b50505050509050919050565b61131a6114b8565b73ffffffffffffffffffffffffffffffffffffffff16611338610d40565b73ffffffffffffffffffffffffffffffffffffffff16146113975761135b6114b8565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161138e9190612e2c565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361140b5760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114029190612e2c565b60405180910390fd5b611419600085858585611a6f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114915760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114889190612e2c565b60405180910390fd5b60008061149e8585611b21565b915091506114b0600087848487611a6f565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115325760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016115299190612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036115a45760006040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161159b9190612e2c565b60405180910390fd5b6115b18585858585611a6f565b5050505050565b600060208202602084010151905092915050565b600060208202602084010151905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116525760006040517f01a835140000000000000000000000000000000000000000000000000000000081526004016116499190612e2c565b60405180910390fd5b61166f836000848460405180602001604052806000815250611a6f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ac5760006040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016117a39190612e2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161189d91906125b0565b60405180910390a3505050565b80600290816118b99190613742565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361192f5760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016119269190612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036119a15760006040517f01a835140000000000000000000000000000000000000000000000000000000081526004016119989190612e2c565b60405180910390fd5b6000806119ae8585611b21565b915091506119bf8787848487611a6f565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3a5760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611a319190612e2c565b60405180910390fd5b600080611a478484611b21565b91509150611a68856000848460405180602001604052806000815250611a6f565b5050505050565b611a7b85858585611b51565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611b1a576000611ab96114b8565b90506001845103611b09576000611ada6000866115cc90919063ffffffff16565b90506000611af26000866115cc90919063ffffffff16565b9050611b02838989858589611b63565b5050611b18565b611b17818787878787611d17565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b611b5d84848484611ecb565b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611d0f578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611bc49594939291906138d4565b6020604051808303816000875af1925050508015611c0057506040513d601f19601f82011682018060405250810190611bfd9190613943565b60015b611c84573d8060008114611c30576040519150601f19603f3d011682016040523d82523d6000602084013e611c35565b606091505b506000815103611c7c57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c739190612e2c565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d0d57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611d049190612e2c565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611ec3578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611d78959493929190613970565b6020604051808303816000875af1925050508015611db457506040513d601f19601f82011682018060405250810190611db19190613943565b60015b611e38573d8060008114611de4576040519150601f19603f3d011682016040523d82523d6000602084013e611de9565b606091505b506000815103611e3057846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611e279190612e2c565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ec157846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611eb89190612e2c565b60405180910390fd5b505b505050505050565b611ed784848484612056565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fa1576000805b8351811015611f85576000611f2d82856115cc90919063ffffffff16565b90508060036000611f4785896115cc90919063ffffffff16565b81526020019081526020016000206000828254611f6491906131fc565b925050819055508083611f7791906131fc565b925050806001019050611f0f565b508060046000828254611f9891906131fc565b92505081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612050576000805b835181101561203d576000611ff782856115cc90919063ffffffff16565b9050806003600061201185896115cc90919063ffffffff16565b815260200190815260200160002060008282540392505081905550808301925050806001019050611fd9565b5080600460008282540392505081905550505b50505050565b80518251146120a057815181516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016120979291906134a1565b60405180910390fd5b60006120aa6114b8565b905060005b83518110156122b95760006120cd82866115cc90919063ffffffff16565b905060006120e483866115cc90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461221157600080600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121b957888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016121b094939291906139d8565b60405180910390fd5b81810360008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146122ac578060008084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122a491906131fc565b925050819055505b50508060010190506120af565b5060018351036123785760006122d96000856115cc90919063ffffffff16565b905060006122f16000856115cc90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516123699291906134a1565b60405180910390a450506123f7565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516123ee929190613a1d565b60405180910390a45b5050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061243d82612412565b9050919050565b61244d81612432565b811461245857600080fd5b50565b60008135905061246a81612444565b92915050565b6000819050919050565b61248381612470565b811461248e57600080fd5b50565b6000813590506124a08161247a565b92915050565b600080604083850312156124bd576124bc612408565b5b60006124cb8582860161245b565b92505060206124dc85828601612491565b9150509250929050565b6124ef81612470565b82525050565b600060208201905061250a60008301846124e6565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61254581612510565b811461255057600080fd5b50565b6000813590506125628161253c565b92915050565b60006020828403121561257e5761257d612408565b5b600061258c84828501612553565b91505092915050565b60008115159050919050565b6125aa81612595565b82525050565b60006020820190506125c560008301846125a1565b92915050565b6000602082840312156125e1576125e0612408565b5b60006125ef84828501612491565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612632578082015181840152602081019050612617565b60008484015250505050565b6000601f19601f8301169050919050565b600061265a826125f8565b6126648185612603565b9350612674818560208601612614565b61267d8161263e565b840191505092915050565b600060208201905081810360008301526126a2818461264f565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126e78261263e565b810181811067ffffffffffffffff82111715612706576127056126af565b5b80604052505050565b60006127196123fe565b905061272582826126de565b919050565b600067ffffffffffffffff821115612745576127446126af565b5b602082029050602081019050919050565b600080fd5b600061276e6127698461272a565b61270f565b9050808382526020820190506020840283018581111561279157612790612756565b5b835b818110156127ba57806127a68882612491565b845260208401935050602081019050612793565b5050509392505050565b600082601f8301126127d9576127d86126aa565b5b81356127e984826020860161275b565b91505092915050565b600080fd5b600067ffffffffffffffff821115612812576128116126af565b5b61281b8261263e565b9050602081019050919050565b82818337600083830152505050565b600061284a612845846127f7565b61270f565b905082815260208101848484011115612866576128656127f2565b5b612871848285612828565b509392505050565b600082601f83011261288e5761288d6126aa565b5b813561289e848260208601612837565b91505092915050565b600080600080608085870312156128c1576128c0612408565b5b60006128cf8782880161245b565b945050602085013567ffffffffffffffff8111156128f0576128ef61240d565b5b6128fc878288016127c4565b935050604085013567ffffffffffffffff81111561291d5761291c61240d565b5b612929878288016127c4565b925050606085013567ffffffffffffffff81111561294a5761294961240d565b5b61295687828801612879565b91505092959194509250565b6000806000806080858703121561297c5761297b612408565b5b600061298a8782880161245b565b945050602061299b87828801612491565b93505060406129ac8782880161245b565b925050606085013567ffffffffffffffff8111156129cd576129cc61240d565b5b6129d987828801612879565b91505092959194509250565b600080600080600060a08688031215612a0157612a00612408565b5b6000612a0f8882890161245b565b9550506020612a208882890161245b565b945050604086013567ffffffffffffffff811115612a4157612a4061240d565b5b612a4d888289016127c4565b935050606086013567ffffffffffffffff811115612a6e57612a6d61240d565b5b612a7a888289016127c4565b925050608086013567ffffffffffffffff811115612a9b57612a9a61240d565b5b612aa788828901612879565b9150509295509295909350565b60008060408385031215612acb57612aca612408565b5b6000612ad985828601612491565b9250506020612aea85828601612491565b9150509250929050565b600067ffffffffffffffff821115612b0f57612b0e6126af565b5b602082029050602081019050919050565b6000612b33612b2e84612af4565b61270f565b90508083825260208201905060208402830185811115612b5657612b55612756565b5b835b81811015612b7f5780612b6b888261245b565b845260208401935050602081019050612b58565b5050509392505050565b600082601f830112612b9e57612b9d6126aa565b5b8135612bae848260208601612b20565b91505092915050565b60008060408385031215612bce57612bcd612408565b5b600083013567ffffffffffffffff811115612bec57612beb61240d565b5b612bf885828601612b89565b925050602083013567ffffffffffffffff811115612c1957612c1861240d565b5b612c25858286016127c4565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c6481612470565b82525050565b6000612c768383612c5b565b60208301905092915050565b6000602082019050919050565b6000612c9a82612c2f565b612ca48185612c3a565b9350612caf83612c4b565b8060005b83811015612ce0578151612cc78882612c6a565b9750612cd283612c82565b925050600181019050612cb3565b5085935050505092915050565b60006020820190508181036000830152612d078184612c8f565b905092915050565b600080600060608486031215612d2857612d27612408565b5b6000612d368682870161245b565b935050602084013567ffffffffffffffff811115612d5757612d5661240d565b5b612d63868287016127c4565b925050604084013567ffffffffffffffff811115612d8457612d8361240d565b5b612d90868287016127c4565b9150509250925092565b60008060008060808587031215612db457612db3612408565b5b6000612dc28782880161245b565b9450506020612dd387828801612491565b9350506040612de487828801612491565b925050606085013567ffffffffffffffff811115612e0557612e0461240d565b5b612e1187828801612879565b91505092959194509250565b612e2681612432565b82525050565b6000602082019050612e416000830184612e1d565b92915050565b612e5081612595565b8114612e5b57600080fd5b50565b600081359050612e6d81612e47565b92915050565b60008060408385031215612e8a57612e89612408565b5b6000612e988582860161245b565b9250506020612ea985828601612e5e565b9150509250929050565b600067ffffffffffffffff821115612ece57612ecd6126af565b5b612ed78261263e565b9050602081019050919050565b6000612ef7612ef284612eb3565b61270f565b905082815260208101848484011115612f1357612f126127f2565b5b612f1e848285612828565b509392505050565b600082601f830112612f3b57612f3a6126aa565b5b8135612f4b848260208601612ee4565b91505092915050565b600060208284031215612f6a57612f69612408565b5b600082013567ffffffffffffffff811115612f8857612f8761240d565b5b612f9484828501612f26565b91505092915050565b60008060408385031215612fb457612fb3612408565b5b6000612fc28582860161245b565b9250506020612fd38582860161245b565b9150509250929050565b600080600080600060a08688031215612ff957612ff8612408565b5b60006130078882890161245b565b95505060206130188882890161245b565b945050604061302988828901612491565b935050606061303a88828901612491565b925050608086013567ffffffffffffffff81111561305b5761305a61240d565b5b61306788828901612879565b9150509295509295909350565b60006020828403121561308a57613089612408565b5b60006130988482850161245b565b91505092915050565b6000806000606084860312156130ba576130b9612408565b5b60006130c88682870161245b565b93505060206130d986828701612491565b92505060406130ea86828701612491565b9150509250925092565b600081905092915050565b7f687474703a2f2f6c6f63616c686f73742f63682e7068703f69643d0000000000600082015250565b6000613135601b836130f4565b9150613140826130ff565b601b82019050919050565b6000613156826125f8565b61316081856130f4565b9350613170818560208601612614565b80840191505092915050565b600061318782613128565b9150613193828461314b565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320782612470565b915061321283612470565b925082820190508082111561322a576132296131cd565b5b92915050565b7f47616d654974656d733a206d617820737570706c79207265616368656420666f60008201527f72206974656d20696e2062617463680000000000000000000000000000000000602082015250565b600061328c602f83612603565b915061329782613230565b604082019050919050565b600060208201905081810360008301526132bb8161327f565b9050919050565b7f47616d654974656d733a2063686172616374657220746f6b656e496420616c7260008201527f65616479206c696e6b656420746f20612077616c6c65742e0000000000000000602082015250565b600061331e603883612603565b9150613329826132c2565b604082019050919050565b6000602082019050818103600083015261334d81613311565b9050919050565b7f47616d654974656d733a206d617820737570706c79207265616368656420666f60008201527f7220746869732063686172616374657220746f6b656e49640000000000000000602082015250565b60006133b0603883612603565b91506133bb82613354565b604082019050919050565b600060208201905081810360008301526133df816133a3565b9050919050565b60006040820190506133fb6000830185612e1d565b6134086020830184612e1d565b9392505050565b7f47616d654974656d733a206e6577206d617820737570706c79206973206c657360008201527f73207468616e2063757272656e7420746f74616c20737570706c790000000000602082015250565b600061346b603b83612603565b91506134768261340f565b604082019050919050565b6000602082019050818103600083015261349a8161345e565b9050919050565b60006040820190506134b660008301856124e6565b6134c360208301846124e6565b9392505050565b7f47616d654974656d733a206d617820737570706c792072656163686564000000600082015250565b6000613500601d83612603565b915061350b826134ca565b602082019050919050565b6000602082019050818103600083015261352f816134f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061357d57607f821691505b6020821081036135905761358f613536565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026135f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826135bb565b61360286836135bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061363f61363a61363584612470565b61361a565b612470565b9050919050565b6000819050919050565b61365983613624565b61366d61366582613646565b8484546135c8565b825550505050565b600090565b613682613675565b61368d818484613650565b505050565b5b818110156136b1576136a660008261367a565b600181019050613693565b5050565b601f8211156136f6576136c781613596565b6136d0846135ab565b810160208510156136df578190505b6136f36136eb856135ab565b830182613692565b50505b505050565b600082821c905092915050565b6000613719600019846008026136fb565b1980831691505092915050565b60006137328383613708565b9150826002028217905092915050565b61374b826125f8565b67ffffffffffffffff811115613764576137636126af565b5b61376e8254613565565b6137798282856136b5565b600060209050601f8311600181146137ac576000841561379a578287015190505b6137a48582613726565b86555061380c565b601f1984166137ba86613596565b60005b828110156137e2578489015182556001820191506020850194506020810190506137bd565b868310156137ff57848901516137fb601f891682613708565b8355505b6001600288020188555050505b505050505050565b600061381f82612470565b915061382a83612470565b925082820261383881612470565b9150828204841483151761384f5761384e6131cd565b5b5092915050565b600061386182612470565b915060008203613874576138736131cd565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b60006138a68261387f565b6138b0818561388a565b93506138c0818560208601612614565b6138c98161263e565b840191505092915050565b600060a0820190506138e96000830188612e1d565b6138f66020830187612e1d565b61390360408301866124e6565b61391060608301856124e6565b8181036080830152613922818461389b565b90509695505050505050565b60008151905061393d8161253c565b92915050565b60006020828403121561395957613958612408565b5b60006139678482850161392e565b91505092915050565b600060a0820190506139856000830188612e1d565b6139926020830187612e1d565b81810360408301526139a48186612c8f565b905081810360608301526139b88185612c8f565b905081810360808301526139cc818461389b565b90509695505050505050565b60006080820190506139ed6000830187612e1d565b6139fa60208301866124e6565b613a0760408301856124e6565b613a1460608301846124e6565b95945050505050565b60006040820190508181036000830152613a378185612c8f565b90508181036020830152613a4b8184612c8f565b9050939250505056fea26469706673582212204f9e89bacb26460811c40635d5aa81695e449f71061271d52b0af74adcd5359c64736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014c5760003560e01c8063715018a6116100c3578063da1b9e081161007c578063da1b9e08146103ab578063ddd9864d146103c7578063e985e9c5146103f7578063f242432a14610427578063f2fde38b14610443578063f5298aca1461045f5761014c565b8063715018a6146102eb578063731133e9146102f5578063869f7594146103115780638da5cb5b14610341578063a22cb4651461035f578063bd85b0391461037b5761014c565b80632c650e58116101155780632c650e581461021b5780632eb2c2d61461023757806337da577c146102535780634e1273f41461026f5780634f558e791461029f5780636b20c454146102cf5761014c565b8062fdd58e1461015157806301ffc9a7146101815780630e89341c146101b157806318160ddd146101e15780631f7fdffa146101ff575b600080fd5b61016b600480360381019061016691906124a6565b61047b565b60405161017891906124f5565b60405180910390f35b61019b60048036038101906101969190612568565b6104d5565b6040516101a891906125b0565b60405180910390f35b6101cb60048036038101906101c691906125cb565b6105b7565b6040516101d89190612688565b60405180910390f35b6101e961067f565b6040516101f691906124f5565b60405180910390f35b610219600480360381019061021491906128a7565b610689565b005b61023560048036038101906102309190612962565b6107fd565b005b610251600480360381019061024c91906129e5565b6109d8565b005b61026d60048036038101906102689190612ab4565b610a80565b005b61028960048036038101906102849190612bb7565b610aef565b6040516102969190612ced565b60405180910390f35b6102b960048036038101906102b491906125cb565b610bf8565b6040516102c691906125b0565b60405180910390f35b6102e960048036038101906102e49190612d0f565b610c0c565b005b6102f3610c24565b005b61030f600480360381019061030a9190612d9a565b610c38565b005b61032b600480360381019061032691906125cb565b610d28565b60405161033891906124f5565b60405180910390f35b610349610d40565b6040516103569190612e2c565b60405180910390f35b61037960048036038101906103749190612e73565b610d6a565b005b610395600480360381019061039091906125cb565b610d80565b6040516103a291906124f5565b60405180910390f35b6103c560048036038101906103c09190612f54565b610d9d565b005b6103e160048036038101906103dc91906125cb565b610dc1565b6040516103ee9190612e2c565b60405180910390f35b610411600480360381019061040c9190612f9d565b610df4565b60405161041e91906125b0565b60405180910390f35b610441600480360381019061043c9190612fdd565b610e88565b005b61045d60048036038101906104589190613074565b610f30565b005b610479600480360381019061047491906130a1565b610fb6565b005b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105a057507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105b057506105af82610fce565b5b9050919050565b606060006007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461066d576106468173ffffffffffffffffffffffffffffffffffffffff166014611038565b604051602001610656919061317c565b60405160208183030381529060405291505061067a565b6106768361127e565b9150505b919050565b6000600454905090565b610691611312565b60005b8351811015610799576000600860008684815181106106b6576106b561319e565b5b6020026020010151815260200190815260200160002054148061074d5750600860008583815181106106eb576106ea61319e565b5b60200260200101518152602001908152602001600020548382815181106107155761071461319e565b5b60200260200101516107408684815181106107335761073261319e565b5b6020026020010151610d80565b61074a91906131fc565b11155b61078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906132a2565b60405180910390fd5b8080600101915050610694565b506107a684848484611399565b8373ffffffffffffffffffffffffffffffffffffffff1660007f2b46b186672d6173d9d87edf470f2b923a363cd6b5a964c3a74fcb26e10907ee85516040516107ef91906124f5565b60405180910390a350505050565b610805611312565b600073ffffffffffffffffffffffffffffffffffffffff166007600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90613334565b60405180910390fd5b6000600860008581526020019081526020016000205414806108f05750600860008481526020019081526020016000205460016108e385610d80565b6108ed91906131fc565b11155b61092f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610926906133c6565b60405180910390fd5b816007600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061098e848460018461141f565b8173ffffffffffffffffffffffffffffffffffffffff16837f0c838877f42a9545501df4094114a27b31d1ad98055acb148d01c72a3b46733760405160405180910390a350505050565b60006109e26114b8565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610a275750610a258682610df4565b155b15610a6b5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610a629291906133e6565b60405180910390fd5b610a7886868686866114c0565b505050505050565b610a88611312565b610a9182610d80565b811015610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90613481565b60405180910390fd5b8060086000848152602001908152602001600020819055505050565b60608151835114610b3b57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610b329291906134a1565b60405180910390fd5b6000835167ffffffffffffffff811115610b5857610b576126af565b5b604051908082528060200260200182016040528015610b865781602001602082028036833780820191505090505b50905060005b8451811015610bed57610bc3610bab82876115b890919063ffffffff16565b610bbe83876115cc90919063ffffffff16565b61047b565b828281518110610bd657610bd561319e565b5b602002602001018181525050806001019050610b8c565b508091505092915050565b600080610c0483610d80565b119050919050565b610c14611312565b610c1f8383836115e0565b505050565b610c2c611312565b610c366000611674565b565b610c40611312565b600060086000858152602001908152602001600020541480610c885750600860008481526020019081526020016000205482610c7b85610d80565b610c8591906131fc565b11155b610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe90613516565b60405180910390fd5b610cd38484848461141f565b8373ffffffffffffffffffffffffffffffffffffffff16837f2b46b186672d6173d9d87edf470f2b923a363cd6b5a964c3a74fcb26e10907ee84604051610d1a91906124f5565b60405180910390a350505050565b60086020528060005260406000206000915090505481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d7c610d756114b8565b838361173a565b5050565b600060036000838152602001908152602001600020549050919050565b610da5611312565b610dae816118aa565b8060069081610dbd9190613742565b5050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610e926114b8565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610ed75750610ed58682610df4565b155b15610f1b5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610f129291906133e6565b60405180910390fd5b610f2886868686866118bd565b505050505050565b610f38611312565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610faa5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610fa19190612e2c565b60405180910390fd5b610fb381611674565b50565b610fbe611312565b610fc98383836119c8565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000839050600060028460026110509190613814565b61105a91906131fc565b67ffffffffffffffff811115611073576110726126af565b5b6040519080825280601f01601f1916602001820160405280156110a55781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106110dd576110dc61319e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106111415761114061319e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018560026111819190613814565b61118b91906131fc565b90505b600181111561122b577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106111cd576111cc61319e565b5b1a60f81b8282815181106111e4576111e361319e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600483901c92508061122490613856565b905061118e565b50600082146112735784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161126a9291906134a1565b60405180910390fd5b809250505092915050565b60606002805461128d90613565565b80601f01602080910402602001604051908101604052809291908181526020018280546112b990613565565b80156113065780601f106112db57610100808354040283529160200191611306565b820191906000526020600020905b8154815290600101906020018083116112e957829003601f168201915b50505050509050919050565b61131a6114b8565b73ffffffffffffffffffffffffffffffffffffffff16611338610d40565b73ffffffffffffffffffffffffffffffffffffffff16146113975761135b6114b8565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161138e9190612e2c565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361140b5760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114029190612e2c565b60405180910390fd5b611419600085858585611a6f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114915760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114889190612e2c565b60405180910390fd5b60008061149e8585611b21565b915091506114b0600087848487611a6f565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115325760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016115299190612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036115a45760006040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161159b9190612e2c565b60405180910390fd5b6115b18585858585611a6f565b5050505050565b600060208202602084010151905092915050565b600060208202602084010151905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116525760006040517f01a835140000000000000000000000000000000000000000000000000000000081526004016116499190612e2c565b60405180910390fd5b61166f836000848460405180602001604052806000815250611a6f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ac5760006040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016117a39190612e2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161189d91906125b0565b60405180910390a3505050565b80600290816118b99190613742565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361192f5760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016119269190612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036119a15760006040517f01a835140000000000000000000000000000000000000000000000000000000081526004016119989190612e2c565b60405180910390fd5b6000806119ae8585611b21565b915091506119bf8787848487611a6f565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3a5760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611a319190612e2c565b60405180910390fd5b600080611a478484611b21565b91509150611a68856000848460405180602001604052806000815250611a6f565b5050505050565b611a7b85858585611b51565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611b1a576000611ab96114b8565b90506001845103611b09576000611ada6000866115cc90919063ffffffff16565b90506000611af26000866115cc90919063ffffffff16565b9050611b02838989858589611b63565b5050611b18565b611b17818787878787611d17565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b611b5d84848484611ecb565b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611d0f578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611bc49594939291906138d4565b6020604051808303816000875af1925050508015611c0057506040513d601f19601f82011682018060405250810190611bfd9190613943565b60015b611c84573d8060008114611c30576040519150601f19603f3d011682016040523d82523d6000602084013e611c35565b606091505b506000815103611c7c57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c739190612e2c565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d0d57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611d049190612e2c565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611ec3578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611d78959493929190613970565b6020604051808303816000875af1925050508015611db457506040513d601f19601f82011682018060405250810190611db19190613943565b60015b611e38573d8060008114611de4576040519150601f19603f3d011682016040523d82523d6000602084013e611de9565b606091505b506000815103611e3057846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611e279190612e2c565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ec157846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611eb89190612e2c565b60405180910390fd5b505b505050505050565b611ed784848484612056565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fa1576000805b8351811015611f85576000611f2d82856115cc90919063ffffffff16565b90508060036000611f4785896115cc90919063ffffffff16565b81526020019081526020016000206000828254611f6491906131fc565b925050819055508083611f7791906131fc565b925050806001019050611f0f565b508060046000828254611f9891906131fc565b92505081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612050576000805b835181101561203d576000611ff782856115cc90919063ffffffff16565b9050806003600061201185896115cc90919063ffffffff16565b815260200190815260200160002060008282540392505081905550808301925050806001019050611fd9565b5080600460008282540392505081905550505b50505050565b80518251146120a057815181516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016120979291906134a1565b60405180910390fd5b60006120aa6114b8565b905060005b83518110156122b95760006120cd82866115cc90919063ffffffff16565b905060006120e483866115cc90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461221157600080600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121b957888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016121b094939291906139d8565b60405180910390fd5b81810360008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146122ac578060008084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122a491906131fc565b925050819055505b50508060010190506120af565b5060018351036123785760006122d96000856115cc90919063ffffffff16565b905060006122f16000856115cc90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516123699291906134a1565b60405180910390a450506123f7565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516123ee929190613a1d565b60405180910390a45b5050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061243d82612412565b9050919050565b61244d81612432565b811461245857600080fd5b50565b60008135905061246a81612444565b92915050565b6000819050919050565b61248381612470565b811461248e57600080fd5b50565b6000813590506124a08161247a565b92915050565b600080604083850312156124bd576124bc612408565b5b60006124cb8582860161245b565b92505060206124dc85828601612491565b9150509250929050565b6124ef81612470565b82525050565b600060208201905061250a60008301846124e6565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61254581612510565b811461255057600080fd5b50565b6000813590506125628161253c565b92915050565b60006020828403121561257e5761257d612408565b5b600061258c84828501612553565b91505092915050565b60008115159050919050565b6125aa81612595565b82525050565b60006020820190506125c560008301846125a1565b92915050565b6000602082840312156125e1576125e0612408565b5b60006125ef84828501612491565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612632578082015181840152602081019050612617565b60008484015250505050565b6000601f19601f8301169050919050565b600061265a826125f8565b6126648185612603565b9350612674818560208601612614565b61267d8161263e565b840191505092915050565b600060208201905081810360008301526126a2818461264f565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126e78261263e565b810181811067ffffffffffffffff82111715612706576127056126af565b5b80604052505050565b60006127196123fe565b905061272582826126de565b919050565b600067ffffffffffffffff821115612745576127446126af565b5b602082029050602081019050919050565b600080fd5b600061276e6127698461272a565b61270f565b9050808382526020820190506020840283018581111561279157612790612756565b5b835b818110156127ba57806127a68882612491565b845260208401935050602081019050612793565b5050509392505050565b600082601f8301126127d9576127d86126aa565b5b81356127e984826020860161275b565b91505092915050565b600080fd5b600067ffffffffffffffff821115612812576128116126af565b5b61281b8261263e565b9050602081019050919050565b82818337600083830152505050565b600061284a612845846127f7565b61270f565b905082815260208101848484011115612866576128656127f2565b5b612871848285612828565b509392505050565b600082601f83011261288e5761288d6126aa565b5b813561289e848260208601612837565b91505092915050565b600080600080608085870312156128c1576128c0612408565b5b60006128cf8782880161245b565b945050602085013567ffffffffffffffff8111156128f0576128ef61240d565b5b6128fc878288016127c4565b935050604085013567ffffffffffffffff81111561291d5761291c61240d565b5b612929878288016127c4565b925050606085013567ffffffffffffffff81111561294a5761294961240d565b5b61295687828801612879565b91505092959194509250565b6000806000806080858703121561297c5761297b612408565b5b600061298a8782880161245b565b945050602061299b87828801612491565b93505060406129ac8782880161245b565b925050606085013567ffffffffffffffff8111156129cd576129cc61240d565b5b6129d987828801612879565b91505092959194509250565b600080600080600060a08688031215612a0157612a00612408565b5b6000612a0f8882890161245b565b9550506020612a208882890161245b565b945050604086013567ffffffffffffffff811115612a4157612a4061240d565b5b612a4d888289016127c4565b935050606086013567ffffffffffffffff811115612a6e57612a6d61240d565b5b612a7a888289016127c4565b925050608086013567ffffffffffffffff811115612a9b57612a9a61240d565b5b612aa788828901612879565b9150509295509295909350565b60008060408385031215612acb57612aca612408565b5b6000612ad985828601612491565b9250506020612aea85828601612491565b9150509250929050565b600067ffffffffffffffff821115612b0f57612b0e6126af565b5b602082029050602081019050919050565b6000612b33612b2e84612af4565b61270f565b90508083825260208201905060208402830185811115612b5657612b55612756565b5b835b81811015612b7f5780612b6b888261245b565b845260208401935050602081019050612b58565b5050509392505050565b600082601f830112612b9e57612b9d6126aa565b5b8135612bae848260208601612b20565b91505092915050565b60008060408385031215612bce57612bcd612408565b5b600083013567ffffffffffffffff811115612bec57612beb61240d565b5b612bf885828601612b89565b925050602083013567ffffffffffffffff811115612c1957612c1861240d565b5b612c25858286016127c4565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c6481612470565b82525050565b6000612c768383612c5b565b60208301905092915050565b6000602082019050919050565b6000612c9a82612c2f565b612ca48185612c3a565b9350612caf83612c4b565b8060005b83811015612ce0578151612cc78882612c6a565b9750612cd283612c82565b925050600181019050612cb3565b5085935050505092915050565b60006020820190508181036000830152612d078184612c8f565b905092915050565b600080600060608486031215612d2857612d27612408565b5b6000612d368682870161245b565b935050602084013567ffffffffffffffff811115612d5757612d5661240d565b5b612d63868287016127c4565b925050604084013567ffffffffffffffff811115612d8457612d8361240d565b5b612d90868287016127c4565b9150509250925092565b60008060008060808587031215612db457612db3612408565b5b6000612dc28782880161245b565b9450506020612dd387828801612491565b9350506040612de487828801612491565b925050606085013567ffffffffffffffff811115612e0557612e0461240d565b5b612e1187828801612879565b91505092959194509250565b612e2681612432565b82525050565b6000602082019050612e416000830184612e1d565b92915050565b612e5081612595565b8114612e5b57600080fd5b50565b600081359050612e6d81612e47565b92915050565b60008060408385031215612e8a57612e89612408565b5b6000612e988582860161245b565b9250506020612ea985828601612e5e565b9150509250929050565b600067ffffffffffffffff821115612ece57612ecd6126af565b5b612ed78261263e565b9050602081019050919050565b6000612ef7612ef284612eb3565b61270f565b905082815260208101848484011115612f1357612f126127f2565b5b612f1e848285612828565b509392505050565b600082601f830112612f3b57612f3a6126aa565b5b8135612f4b848260208601612ee4565b91505092915050565b600060208284031215612f6a57612f69612408565b5b600082013567ffffffffffffffff811115612f8857612f8761240d565b5b612f9484828501612f26565b91505092915050565b60008060408385031215612fb457612fb3612408565b5b6000612fc28582860161245b565b9250506020612fd38582860161245b565b9150509250929050565b600080600080600060a08688031215612ff957612ff8612408565b5b60006130078882890161245b565b95505060206130188882890161245b565b945050604061302988828901612491565b935050606061303a88828901612491565b925050608086013567ffffffffffffffff81111561305b5761305a61240d565b5b61306788828901612879565b9150509295509295909350565b60006020828403121561308a57613089612408565b5b60006130988482850161245b565b91505092915050565b6000806000606084860312156130ba576130b9612408565b5b60006130c88682870161245b565b93505060206130d986828701612491565b92505060406130ea86828701612491565b9150509250925092565b600081905092915050565b7f687474703a2f2f6c6f63616c686f73742f63682e7068703f69643d0000000000600082015250565b6000613135601b836130f4565b9150613140826130ff565b601b82019050919050565b6000613156826125f8565b61316081856130f4565b9350613170818560208601612614565b80840191505092915050565b600061318782613128565b9150613193828461314b565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061320782612470565b915061321283612470565b925082820190508082111561322a576132296131cd565b5b92915050565b7f47616d654974656d733a206d617820737570706c79207265616368656420666f60008201527f72206974656d20696e2062617463680000000000000000000000000000000000602082015250565b600061328c602f83612603565b915061329782613230565b604082019050919050565b600060208201905081810360008301526132bb8161327f565b9050919050565b7f47616d654974656d733a2063686172616374657220746f6b656e496420616c7260008201527f65616479206c696e6b656420746f20612077616c6c65742e0000000000000000602082015250565b600061331e603883612603565b9150613329826132c2565b604082019050919050565b6000602082019050818103600083015261334d81613311565b9050919050565b7f47616d654974656d733a206d617820737570706c79207265616368656420666f60008201527f7220746869732063686172616374657220746f6b656e49640000000000000000602082015250565b60006133b0603883612603565b91506133bb82613354565b604082019050919050565b600060208201905081810360008301526133df816133a3565b9050919050565b60006040820190506133fb6000830185612e1d565b6134086020830184612e1d565b9392505050565b7f47616d654974656d733a206e6577206d617820737570706c79206973206c657360008201527f73207468616e2063757272656e7420746f74616c20737570706c790000000000602082015250565b600061346b603b83612603565b91506134768261340f565b604082019050919050565b6000602082019050818103600083015261349a8161345e565b9050919050565b60006040820190506134b660008301856124e6565b6134c360208301846124e6565b9392505050565b7f47616d654974656d733a206d617820737570706c792072656163686564000000600082015250565b6000613500601d83612603565b915061350b826134ca565b602082019050919050565b6000602082019050818103600083015261352f816134f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061357d57607f821691505b6020821081036135905761358f613536565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026135f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826135bb565b61360286836135bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061363f61363a61363584612470565b61361a565b612470565b9050919050565b6000819050919050565b61365983613624565b61366d61366582613646565b8484546135c8565b825550505050565b600090565b613682613675565b61368d818484613650565b505050565b5b818110156136b1576136a660008261367a565b600181019050613693565b5050565b601f8211156136f6576136c781613596565b6136d0846135ab565b810160208510156136df578190505b6136f36136eb856135ab565b830182613692565b50505b505050565b600082821c905092915050565b6000613719600019846008026136fb565b1980831691505092915050565b60006137328383613708565b9150826002028217905092915050565b61374b826125f8565b67ffffffffffffffff811115613764576137636126af565b5b61376e8254613565565b6137798282856136b5565b600060209050601f8311600181146137ac576000841561379a578287015190505b6137a48582613726565b86555061380c565b601f1984166137ba86613596565b60005b828110156137e2578489015182556001820191506020850194506020810190506137bd565b868310156137ff57848901516137fb601f891682613708565b8355505b6001600288020188555050505b505050505050565b600061381f82612470565b915061382a83612470565b925082820261383881612470565b9150828204841483151761384f5761384e6131cd565b5b5092915050565b600061386182612470565b915060008203613874576138736131cd565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b60006138a68261387f565b6138b0818561388a565b93506138c0818560208601612614565b6138c98161263e565b840191505092915050565b600060a0820190506138e96000830188612e1d565b6138f66020830187612e1d565b61390360408301866124e6565b61391060608301856124e6565b8181036080830152613922818461389b565b90509695505050505050565b60008151905061393d8161253c565b92915050565b60006020828403121561395957613958612408565b5b60006139678482850161392e565b91505092915050565b600060a0820190506139856000830188612e1d565b6139926020830187612e1d565b81810360408301526139a48186612c8f565b905081810360608301526139b88185612c8f565b905081810360808301526139cc818461389b565b90509695505050505050565b60006080820190506139ed6000830187612e1d565b6139fa60208301866124e6565b613a0760408301856124e6565b613a1460608301846124e6565b95945050505050565b60006040820190508181036000830152613a378185612c8f565b90508181036020830152613a4b8184612c8f565b9050939250505056fea26469706673582212204f9e89bacb26460811c40635d5aa81695e449f71061271d52b0af74adcd5359c64736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
