{
  "_format": "hh-sol-artifact-1",
  "contractName": "ReputationNFT",
  "sourceName": "contracts/ReputationNFT.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_carvIdContract",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC721IncorrectOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721InsufficientApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonexistentToken",
      "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": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldScore",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newScore",
          "type": "uint256"
        }
      ],
      "name": "ContributionScoreUpdated",
      "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": "postId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "passed",
          "type": "bool"
        }
      ],
      "name": "PostExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "postId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        }
      ],
      "name": "PostVoteCast",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "contributionScore",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum ReputationNFT.Tier",
          "name": "tier",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "carvIdHash",
          "type": "bytes32"
        }
      ],
      "name": "ReputationNFTMinted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum ReputationNFT.Tier",
          "name": "currentTier",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum ReputationNFT.Tier",
          "name": "proposedTier",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        }
      ],
      "name": "TierUpgradeProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum ReputationNFT.Tier",
          "name": "oldTier",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum ReputationNFT.Tier",
          "name": "newTier",
          "type": "uint8"
        }
      ],
      "name": "TierUpgraded",
      "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": true,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "VoteCast",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MIN_VOTES_REQUIRED",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POST_VOTING_PERIOD",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VOTING_PERIOD",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": [],
      "name": "carvIdContract",
      "outputs": [
        {
          "internalType": "contract IModularCarvID",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "votingDeadline",
          "type": "uint256"
        }
      ],
      "name": "createPost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "deactivateNFT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "postId",
          "type": "uint256"
        }
      ],
      "name": "executePost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "executeTierUpgrade",
      "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": "uint256",
          "name": "postId",
          "type": "uint256"
        }
      ],
      "name": "getPostVote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "votesFor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votesAgainst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votingDeadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isExecuted",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "getProposal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum ReputationNFT.Tier",
          "name": "proposedTier",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "votesFor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votesAgainst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "proposalDeadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isExecuted",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "getReputationByWallet",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "contributionScore",
          "type": "uint256"
        },
        {
          "internalType": "enum ReputationNFT.Tier",
          "name": "tier",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "creationDate",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "carvIdHash",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "postId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "hasVotedOnPost",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "hasVotedOnProposal",
      "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": "uint256",
          "name": "contributionScore",
          "type": "uint256"
        },
        {
          "internalType": "enum ReputationNFT.Tier",
          "name": "tier",
          "type": "uint8"
        }
      ],
      "name": "mintReputationNFT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "postVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "votesFor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votesAgainst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votingDeadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isExecuted",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum ReputationNFT.Tier",
          "name": "proposedTier",
          "type": "uint8"
        }
      ],
      "name": "proposeTierUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "reputations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "contributionScore",
          "type": "uint256"
        },
        {
          "internalType": "enum ReputationNFT.Tier",
          "name": "tier",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "creationDate",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "carvIdHash",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        }
      ],
      "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": "enum ReputationNFT.Tier",
          "name": "tier",
          "type": "uint8"
        }
      ],
      "name": "tierToString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tierUpgradeProposals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum ReputationNFT.Tier",
          "name": "proposedTier",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "votesFor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votesAgainst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "proposalDeadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isExecuted",
          "type": "bool"
        }
      ],
      "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": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_carvIdContract",
          "type": "address"
        }
      ],
      "name": "updateCarvIdContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newScore",
          "type": "uint256"
        }
      ],
      "name": "updateContributionScore",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "postId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        }
      ],
      "name": "voteOnPost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "voteOnTierUpgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "walletToRepNFT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526001600d556001600e556001600f5534801561001f57600080fd5b506040516160bc3803806160bc833981810160405281019061004191906102ca565b336040518060400160405280600e81526020017f52657075746174696f6e204e46540000000000000000000000000000000000008152506040518060400160405280600681526020017f5245504e4654000000000000000000000000000000000000000000000000000081525081600090816100bd9190610547565b5080600190816100cd9190610547565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101425760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101399190610628565b60405180910390fd5b610151816101a160201b60201c565b50600160078190555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610643565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102978261026c565b9050919050565b6102a78161028c565b81146102b257600080fd5b50565b6000815190506102c48161029e565b92915050565b6000602082840312156102e0576102df610267565b5b60006102ee848285016102b5565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061037857607f821691505b60208210810361038b5761038a610331565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026103f37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103b6565b6103fd86836103b6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061044461043f61043a84610415565b61041f565b610415565b9050919050565b6000819050919050565b61045e83610429565b61047261046a8261044b565b8484546103c3565b825550505050565b600090565b61048761047a565b610492818484610455565b505050565b5b818110156104b6576104ab60008261047f565b600181019050610498565b5050565b601f8211156104fb576104cc81610391565b6104d5846103a6565b810160208510156104e4578190505b6104f86104f0856103a6565b830182610497565b50505b505050565b600082821c905092915050565b600061051e60001984600802610500565b1980831691505092915050565b6000610537838361050d565b9150826002028217905092915050565b610550826102f7565b67ffffffffffffffff81111561056957610568610302565b5b6105738254610360565b61057e8282856104ba565b600060209050601f8311600181146105b1576000841561059f578287015190505b6105a9858261052b565b865550610611565b601f1984166105bf86610391565b60005b828110156105e7578489015182556001820191506020850194506020810190506105c2565b868310156106045784890151610600601f89168261050d565b8355505b6001600288020188555050505b505050505050565b6106228161028c565b82525050565b600060208201905061063d6000830184610619565b92915050565b615a6a806106526000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806372fa9b851161013b578063a7c934ca116100b8578063c7f758a81161007c578063c7f758a814610735578063c87b56dd1461076a578063e985e9c51461079a578063f2fde38b146107ca578063f457d97f146107e657610248565b8063a7c934ca146106a5578063b1610d7e146106c1578063b88d4fde146106df578063bc7dd1ff146106fb578063c58b51291461071757610248565b80638da5cb5b116100ff5780638da5cb5b1461060157806395d89b411461061f5780639769dbd71461063d578063a22cb4651461066d578063a72479491461068957610248565b806372fa9b85146105195780637491a59a1461054d578063793d8a51146105695780638225f1851461059c5780638a1f77e3146105d157610248565b8063211b2197116101c9578063600303d81161018d578063600303d8146104635780636352211e146104935780636ccea228146104c357806370a08231146104df578063715018a61461050f57610248565b8063211b2197146103bc57806323b872dd146103da57806327fa31d1146103f657806342842e0e146104145780634b259d371461043057610248565b80630a6ffb00116102105780630a6ffb00146103035780630bfb29b714610333578063181e4157146103685780631d69bd48146103845780631f68937b146103a057610248565b806301ffc9a71461024d57806306fdde031461027d57806307d25a091461029b578063081812fc146102b7578063095ea7b3146102e7575b600080fd5b61026760048036038101906102629190613abc565b610802565b6040516102749190613b04565b60405180910390f35b6102856108e4565b6040516102929190613baf565b60405180910390f35b6102b560048036038101906102b09190613c2f565b610976565b005b6102d160048036038101906102cc9190613c92565b6109c2565b6040516102de9190613cce565b60405180910390f35b61030160048036038101906102fc9190613ce9565b6109de565b005b61031d60048036038101906103189190613c2f565b6109f4565b60405161032a9190613d38565b60405180910390f35b61034d60048036038101906103489190613c92565b610a0c565b60405161035f96959493929190613dca565b60405180910390f35b610382600480360381019061037d9190613e2b565b610a62565b005b61039e60048036038101906103999190613c92565b610bed565b005b6103ba60048036038101906103b59190613e97565b610cd7565b005b6103c4610f4f565b6040516103d19190613d38565b60405180910390f35b6103f460048036038101906103ef9190613ed7565b610f56565b005b6103fe611058565b60405161040b9190613f89565b60405180910390f35b61042e60048036038101906104299190613ed7565b61107e565b005b61044a60048036038101906104459190613c92565b61109e565b60405161045a9493929190613fa4565b60405180910390f35b61047d60048036038101906104789190613fe9565b6110db565b60405161048a9190613b04565b60405180910390f35b6104ad60048036038101906104a89190613c92565b611146565b6040516104ba9190613cce565b60405180910390f35b6104dd60048036038101906104d89190613c92565b611158565b005b6104f960048036038101906104f49190613c2f565b6112bc565b6040516105069190613d38565b60405180910390f35b610517611376565b005b610533600480360381019061052e9190613c92565b61138a565b604051610544959493929190614042565b60405180910390f35b610567600480360381019061056291906141ca565b6113da565b005b610583600480360381019061057e9190613c92565b611655565b6040516105939493929190613fa4565b60405180910390f35b6105b660048036038101906105b19190613c2f565b6116a3565b6040516105c896959493929190614239565b60405180910390f35b6105eb60048036038101906105e69190613fe9565b6117f7565b6040516105f89190613b04565b60405180910390f35b610609611862565b6040516106169190613cce565b60405180910390f35b61062761188c565b6040516106349190613baf565b60405180910390f35b610657600480360381019061065291906142bf565b61191e565b6040516106649190613baf565b60405180910390f35b610687600480360381019061068291906142ec565b611b01565b005b6106a3600480360381019061069e919061432c565b611b17565b005b6106bf60048036038101906106ba919061432c565b611e0b565b005b6106c961206f565b6040516106d69190613d38565b60405180910390f35b6106f960048036038101906106f4919061440d565b612076565b005b61071560048036038101906107109190613c92565b61209b565b005b61071f612295565b60405161072c9190613d38565b60405180910390f35b61074f600480360381019061074a9190613c92565b61229a565b60405161076196959493929190613dca565b60405180910390f35b610784600480360381019061077f9190613c92565b612308565b6040516107919190613baf565b60405180910390f35b6107b460048036038101906107af9190614490565b6125de565b6040516107c19190613b04565b60405180910390f35b6107e460048036038101906107df9190613c2f565b612672565b005b61080060048036038101906107fb9190613c92565b6126f8565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108cd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108dd57506108dc826127a9565b5b9050919050565b6060600080546108f3906144ff565b80601f016020809104026020016040519081016040528092919081815260200182805461091f906144ff565b801561096c5780601f106109415761010080835404028352916020019161096c565b820191906000526020600020905b81548152906001019060200180831161094f57829003601f168201915b5050505050905090565b61097e612813565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006109cd8261289a565b506109d782612922565b9050919050565b6109f082826109eb61295f565b612967565b5050565b60096020528060005260406000206000915090505481565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b3373ffffffffffffffffffffffffffffffffffffffff16610a8283611146565b73ffffffffffffffffffffffffffffffffffffffff161480610ad657503373ffffffffffffffffffffffffffffffffffffffff16610abe611862565b73ffffffffffffffffffffffffffffffffffffffff16145b610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061457c565b60405180910390fd5b6008600083815260200190815260200160002060040160009054906101000a900460ff16610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906145e8565b60405180910390fd5b600060086000848152602001908152602001600020600001549050816008600085815260200190815260200160002060000181905550827fd7b54992d4a5345909e4c258de7e3391a4411ada7d74a66fb854a8182b873ddc8284604051610be0929190614608565b60405180910390a2505050565b428111610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c269061467d565b60405180910390fd5b6000610c3a336112bc565b11610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061470f565b60405180910390fd5b6000600f6000815480929190610c8f9061475e565b9190505590506000600b6000838152602001908152602001600020905082816002018190555060008160030160006101000a81548160ff021916908315150217905550505050565b6000600b600084815260200190815260200160002090508060020154421115610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c906147f2565b60405180910390fd5b8060030160009054906101000a900460ff1615610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e9061485e565b60405180910390fd5b8060040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d906148ca565b60405180910390fd5b6000610e21336112bc565b11610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e589061495c565b60405180910390fd5b60018160040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115610ee057806000016000815480929190610ed69061475e565b9190505550610efb565b806001016000815480929190610ef59061475e565b91905055505b3373ffffffffffffffffffffffffffffffffffffffff16837f66483dd85d319543af5176d9e5c29584a3c8ef2a9f71061078b571b3461f74d684604051610f429190613b04565b60405180910390a3505050565b62093a8081565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc85760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610fbf9190613cce565b60405180910390fd5b6000610fdc8383610fd761295f565b612979565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611052578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016110499392919061497c565b60405180910390fd5b50505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61109983838360405180602001604052806000815250612076565b505050565b600b6020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b6000600a600084815260200190815260200160002060060160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006111518261289a565b9050919050565b6000600b60008381526020019081526020016000209050806002015442116111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906149ff565b60405180910390fd5b8060030160009054906101000a900460ff1615611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe9061485e565b60405180910390fd5b8060010154816000015411801561122357506003816000015410155b611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990614a6b565b60405180910390fd5b60018160030160006101000a81548160ff021916908315150217905550817fe833d65c71131ee1357ff57ae05918b4a25f1993df3d6b0f09e063a27d992df960016040516112b09190613b04565b60405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132f5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016113269190613cce565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61137e612813565b6113886000612b93565b565b60086020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154908060030154908060040160009054906101000a900460ff16905085565b6000600a600085815260200190815260200160002090508060040154421115611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f906147f2565b60405180910390fd5b8060050160009054906101000a900460ff161561148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190614ad7565b60405180910390fd5b8060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611510906148ca565b60405180910390fd5b6000611524336112bc565b11611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061495c565b60405180910390fd5b60018160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082156115e3578060020160008154809291906115d99061475e565b91905055506115fe565b8060030160008154809291906115f89061475e565b91905055505b3373ffffffffffffffffffffffffffffffffffffffff16847fc4ce3f0cdcc6c3a55938650ba7706e6b5d9f686f108fdce6a6bb68424fe1ed758585604051611647929190614af7565b60405180910390a350505050565b6000806000806000600b600087815260200190815260200160002090508060000154816001015482600201548360030160009054906101000a900460ff169450945094509450509193509193565b600080600080600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054955060008603611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890614b73565b60405180910390fd5b6000600860008881526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff1660038111156117805761177f613d53565b5b600381111561179257611791613d53565b5b815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581525050905086816000015182602001518360400151846060015185608001519650965096509650965096505091939550919395565b6000600b600084815260200190815260200160002060040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461189b906144ff565b80601f01602080910402602001604051908101604052809291908181526020018280546118c7906144ff565b80156119145780601f106118e957610100808354040283529160200191611914565b820191906000526020600020905b8154815290600101906020018083116118f757829003601f168201915b5050505050905090565b60606000600381111561193457611933613d53565b5b82600381111561194757611946613d53565b5b03611989576040518060400160405280600681526020017f42726f6e7a6500000000000000000000000000000000000000000000000000008152509050611afc565b6001600381111561199d5761199c613d53565b5b8260038111156119b0576119af613d53565b5b036119f2576040518060400160405280600681526020017f53696c76657200000000000000000000000000000000000000000000000000008152509050611afc565b60026003811115611a0657611a05613d53565b5b826003811115611a1957611a18613d53565b5b03611a5b576040518060400160405280600481526020017f476f6c64000000000000000000000000000000000000000000000000000000008152509050611afc565b600380811115611a6e57611a6d613d53565b5b826003811115611a8157611a80613d53565b5b03611ac3576040518060400160405280600881526020017f506c6174696e756d0000000000000000000000000000000000000000000000008152509050611afc565b6040518060400160405280600781526020017f556e6b6e6f776e0000000000000000000000000000000000000000000000000081525090505b919050565b611b13611b0c61295f565b8383612c59565b5050565b611b1f612dc8565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614bdf565b60405180910390fd5b60008060001b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637a00d3c4336040518263ffffffff1660e01b8152600401611c049190613cce565b600060405180830381865afa925050508015611c4357506040513d6000823e3d601f19601f82011682018060405250810190611c409190614cb0565b60015b15611c815760008414611c7c578282604051602001611c63929190614d54565b6040516020818303038152906040528051906020012094505b505050505b6000600d6000815480929190611c969061475e565b919050559050611ca63382612e0e565b6040518060a00160405280858152602001846003811115611cca57611cc9613d53565b5b815260200142815260200183815260200160011515815250600860008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690836003811115611d2a57611d29613d53565b5b0217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555090505080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550803373ffffffffffffffffffffffffffffffffffffffff167fbecf74f4144e0a1cc2ad6842d3c4d15f96cd50c860b3cb01fadcdd36f0e81e64868686604051611df593929190614d80565b60405180910390a35050611e07612e2c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16611e2c83612e36565b73ffffffffffffffffffffffffffffffffffffffff1603611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990614e03565b60405180910390fd5b6008600083815260200190815260200160002060040160009054906101000a900460ff16611ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edc906145e8565b60405180910390fd5b6008600083815260200190815260200160002060010160009054906101000a900460ff166003811115611f1b57611f1a613d53565b5b816003811115611f2e57611f2d613d53565b5b11611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6590614e6f565b60405180910390fd5b6000600e6000815480929190611f839061475e565b9190505590506000600a60008381526020019081526020016000209050838160000181905550828160010160006101000a81548160ff02191690836003811115611fd057611fcf613d53565b5b021790555062093a8042611fe49190614e8f565b816004018190555060008160050160006101000a81548160ff02191690831515021790555083827fc1cdca689d3668705c91e7e09315fd08f649ec6e7a56449cac4c594bf0b558556008600088815260200190815260200160002060010160009054906101000a900460ff16863360405161206193929190614ec3565b60405180910390a350505050565b62093a8081565b612081848484610f56565b61209561208c61295f565b85858585612e73565b50505050565b6000600a60008381526020019081526020016000209050806004015442116120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ef906149ff565b60405180910390fd5b8060050160009054906101000a900460ff161561214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190614ad7565b60405180910390fd5b8060030154816002015411801561216657506003816002015410155b6121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90614f46565b60405180910390fd5b60018160050160006101000a81548160ff0219169083151502179055506000600860008360000154815260200190815260200160002060010160009054906101000a900460ff1690508160010160009054906101000a900460ff16600860008460000154815260200190815260200160002060010160006101000a81548160ff0219169083600381111561223c5761223b613d53565b5b021790555081600001547f57ceb88011b120a0441a16383dc232e775510168ab27978582d21c610a6e4247828460010160009054906101000a900460ff16604051612288929190614f66565b60405180910390a2505050565b600381565b6000806000806000806000600a6000898152602001908152602001600020905080600001548160010160009054906101000a900460ff168260020154836003015484600401548560050160009054906101000a900460ff169650965096509650965096505091939550919395565b6060600073ffffffffffffffffffffffffffffffffffffffff1661232b83612e36565b73ffffffffffffffffffffffffffffffffffffffff1603612381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237890615001565b60405180910390fd5b6000600860008481526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff1660038111156123d0576123cf613d53565b5b60038111156123e2576123e1613d53565b5b815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090506000612426826020015161191e565b9050600061243385613024565b61244084602001516130f2565b60405160200161245192919061511b565b604051602081830303815290604052905060006125b161247087613024565b8361247e8760000151613024565b8661248c8960400151613024565b6000801b8a60600151036124d5576040518060400160405280600281526020017f4e6f00000000000000000000000000000000000000000000000000000000000081525061250c565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b8a60800151612550576040518060400160405280600881526020017f496e616374697665000000000000000000000000000000000000000000000000815250612587565b6040518060400160405280600681526020017f41637469766500000000000000000000000000000000000000000000000000008152505b60405160200161259d97969594939291906156ad565b6040516020818303038152906040526132d5565b9050806040516020016125c49190615824565b604051602081830303815290604052945050505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61267a612813565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126ec5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016126e39190613cce565b60405180910390fd5b6126f581612b93565b50565b612700612813565b600073ffffffffffffffffffffffffffffffffffffffff1661272182612e36565b73ffffffffffffffffffffffffffffffffffffffff1603612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614e03565b60405180910390fd5b60006008600083815260200190815260200160002060040160006101000a81548160ff02191690831515021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61281b61295f565b73ffffffffffffffffffffffffffffffffffffffff16612839611862565b73ffffffffffffffffffffffffffffffffffffffff16146128985761285c61295f565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161288f9190613cce565b60405180910390fd5b565b6000806128a683612e36565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361291957826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016129109190613d38565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6129748383836001613302565b505050565b60008061298584612e36565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146129c7576129c68184866134c7565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612a5857612a09600085600080613302565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612adb576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cca57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401612cc19190613cce565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612dbb9190613b04565b60405180910390a3505050565b600260075403612e04576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600781905550565b612e2882826040518060200160405280600081525061358b565b5050565b6001600781905550565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008373ffffffffffffffffffffffffffffffffffffffff163b111561301d578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612ed2949392919061589b565b6020604051808303816000875af1925050508015612f0e57506040513d601f19601f82011682018060405250810190612f0b91906158fc565b60015b612f92573d8060008114612f3e576040519150601f19603f3d011682016040523d82523d6000602084013e612f43565b606091505b506000815103612f8a57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612f819190613cce565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461301b57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016130129190613cce565b60405180910390fd5b505b5050505050565b606060006001613033846135af565b01905060008167ffffffffffffffff8111156130525761305161409f565b5b6040519080825280601f01601f1916602001820160405280156130845781602001600182028036833780820191505090505b509050600082602001820190505b6001156130e7578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816130db576130da615929565b5b04945060008503613092575b819350505050919050565b60606000600381111561310857613107613d53565b5b82600381111561311b5761311a613d53565b5b0361315d576040518060400160405280600681526020017f434437463332000000000000000000000000000000000000000000000000000081525090506132d0565b6001600381111561317157613170613d53565b5b82600381111561318457613183613d53565b5b036131c6576040518060400160405280600681526020017f433043304330000000000000000000000000000000000000000000000000000081525090506132d0565b600260038111156131da576131d9613d53565b5b8260038111156131ed576131ec613d53565b5b0361322f576040518060400160405280600681526020017f464644373030000000000000000000000000000000000000000000000000000081525090506132d0565b60038081111561324257613241613d53565b5b82600381111561325557613254613d53565b5b03613297576040518060400160405280600681526020017f453545344532000000000000000000000000000000000000000000000000000081525090506132d0565b6040518060400160405280600681526020017f384234353133000000000000000000000000000000000000000000000000000081525090505b919050565b60606132fb826040518060600160405280604081526020016159f5604091396001613702565b9050919050565b808061333b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561346f57600061334b8461289a565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133b657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156133c957506133c781846125de565b155b1561340b57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016134029190613cce565b60405180910390fd5b811561346d57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6134d2838383613896565b61358657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361354757806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161353e9190613d38565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161357d929190615958565b60405180910390fd5b505050565b6135958383613957565b6135aa6135a061295f565b6000858585612e73565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061360d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161360357613602615929565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061364a576d04ee2d6d415b85acef810000000083816136405761363f615929565b5b0492506020810190505b662386f26fc10000831061367957662386f26fc10000838161366f5761366e615929565b5b0492506010810190505b6305f5e10083106136a2576305f5e100838161369857613697615929565b5b0492506008810190505b61271083106136c75761271083816136bd576136bc615929565b5b0492506004810190505b606483106136ea57606483816136e0576136df615929565b5b0492506002810190505b600a83106136f9576001810190505b80915050919050565b606060008451036137245760405180602001604052806000815250905061388f565b60008261375657600360028651600461373d9190615981565b6137479190614e8f565b61375191906159c3565b61377d565b6003600286516137669190614e8f565b61377091906159c3565b600461377c9190615981565b5b905060008167ffffffffffffffff81111561379b5761379a61409f565b5b6040519080825280601f01601f1916602001820160405280156137cd5781602001600182028036833780820191505090505b50905060018501602082018788518901602081018051600082525b82841015613843576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653600186019550506137e8565b80825289156138835760038c510660018114613866576002811461387957613881565b603d6001870353603d6002870353613881565b603d60018703535b505b50505050505080925050505b9392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561394e57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061390f575061390e84846125de565b5b8061394d57508273ffffffffffffffffffffffffffffffffffffffff1661393583612922565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139c95760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016139c09190613cce565b60405180910390fd5b60006139d783836000612979565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613a4b5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401613a429190613cce565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a9981613a64565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b600060208284031215613ad257613ad1613a5a565b5b6000613ae084828501613aa7565b91505092915050565b60008115159050919050565b613afe81613ae9565b82525050565b6000602082019050613b196000830184613af5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b59578082015181840152602081019050613b3e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b8182613b1f565b613b8b8185613b2a565b9350613b9b818560208601613b3b565b613ba481613b65565b840191505092915050565b60006020820190508181036000830152613bc98184613b76565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bfc82613bd1565b9050919050565b613c0c81613bf1565b8114613c1757600080fd5b50565b600081359050613c2981613c03565b92915050565b600060208284031215613c4557613c44613a5a565b5b6000613c5384828501613c1a565b91505092915050565b6000819050919050565b613c6f81613c5c565b8114613c7a57600080fd5b50565b600081359050613c8c81613c66565b92915050565b600060208284031215613ca857613ca7613a5a565b5b6000613cb684828501613c7d565b91505092915050565b613cc881613bf1565b82525050565b6000602082019050613ce36000830184613cbf565b92915050565b60008060408385031215613d0057613cff613a5a565b5b6000613d0e85828601613c1a565b9250506020613d1f85828601613c7d565b9150509250929050565b613d3281613c5c565b82525050565b6000602082019050613d4d6000830184613d29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110613d9357613d92613d53565b5b50565b6000819050613da482613d82565b919050565b6000613db482613d96565b9050919050565b613dc481613da9565b82525050565b600060c082019050613ddf6000830189613d29565b613dec6020830188613dbb565b613df96040830187613d29565b613e066060830186613d29565b613e136080830185613d29565b613e2060a0830184613af5565b979650505050505050565b60008060408385031215613e4257613e41613a5a565b5b6000613e5085828601613c7d565b9250506020613e6185828601613c7d565b9150509250929050565b613e7481613ae9565b8114613e7f57600080fd5b50565b600081359050613e9181613e6b565b92915050565b60008060408385031215613eae57613ead613a5a565b5b6000613ebc85828601613c7d565b9250506020613ecd85828601613e82565b9150509250929050565b600080600060608486031215613ef057613eef613a5a565b5b6000613efe86828701613c1a565b9350506020613f0f86828701613c1a565b9250506040613f2086828701613c7d565b9150509250925092565b6000819050919050565b6000613f4f613f4a613f4584613bd1565b613f2a565b613bd1565b9050919050565b6000613f6182613f34565b9050919050565b6000613f7382613f56565b9050919050565b613f8381613f68565b82525050565b6000602082019050613f9e6000830184613f7a565b92915050565b6000608082019050613fb96000830187613d29565b613fc66020830186613d29565b613fd36040830185613d29565b613fe06060830184613af5565b95945050505050565b6000806040838503121561400057613fff613a5a565b5b600061400e85828601613c7d565b925050602061401f85828601613c1a565b9150509250929050565b6000819050919050565b61403c81614029565b82525050565b600060a0820190506140576000830188613d29565b6140646020830187613dbb565b6140716040830186613d29565b61407e6060830185614033565b61408b6080830184613af5565b9695505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6140d782613b65565b810181811067ffffffffffffffff821117156140f6576140f561409f565b5b80604052505050565b6000614109613a50565b905061411582826140ce565b919050565b600067ffffffffffffffff8211156141355761413461409f565b5b61413e82613b65565b9050602081019050919050565b82818337600083830152505050565b600061416d6141688461411a565b6140ff565b9050828152602081018484840111156141895761418861409a565b5b61419484828561414b565b509392505050565b600082601f8301126141b1576141b0614095565b5b81356141c184826020860161415a565b91505092915050565b6000806000606084860312156141e3576141e2613a5a565b5b60006141f186828701613c7d565b935050602061420286828701613e82565b925050604084013567ffffffffffffffff81111561422357614222613a5f565b5b61422f8682870161419c565b9150509250925092565b600060c08201905061424e6000830189613d29565b61425b6020830188613d29565b6142686040830187613dbb565b6142756060830186613d29565b6142826080830185614033565b61428f60a0830184613af5565b979650505050505050565b600481106142a757600080fd5b50565b6000813590506142b98161429a565b92915050565b6000602082840312156142d5576142d4613a5a565b5b60006142e3848285016142aa565b91505092915050565b6000806040838503121561430357614302613a5a565b5b600061431185828601613c1a565b925050602061432285828601613e82565b9150509250929050565b6000806040838503121561434357614342613a5a565b5b600061435185828601613c7d565b9250506020614362858286016142aa565b9150509250929050565b600067ffffffffffffffff8211156143875761438661409f565b5b61439082613b65565b9050602081019050919050565b60006143b06143ab8461436c565b6140ff565b9050828152602081018484840111156143cc576143cb61409a565b5b6143d784828561414b565b509392505050565b600082601f8301126143f4576143f3614095565b5b813561440484826020860161439d565b91505092915050565b6000806000806080858703121561442757614426613a5a565b5b600061443587828801613c1a565b945050602061444687828801613c1a565b935050604061445787828801613c7d565b925050606085013567ffffffffffffffff81111561447857614477613a5f565b5b614484878288016143df565b91505092959194509250565b600080604083850312156144a7576144a6613a5a565b5b60006144b585828601613c1a565b92505060206144c685828601613c1a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451757607f821691505b60208210810361452a576145296144d0565b5b50919050565b7f4e6f7420617574686f72697a656420746f207570646174652073636f72650000600082015250565b6000614566601e83613b2a565b915061457182614530565b602082019050919050565b6000602082019050818103600083015261459581614559565b9050919050565b7f4e4654206973206e6f7420616374697665000000000000000000000000000000600082015250565b60006145d2601183613b2a565b91506145dd8261459c565b602082019050919050565b60006020820190508181036000830152614601816145c5565b9050919050565b600060408201905061461d6000830185613d29565b61462a6020830184613d29565b9392505050565b7f446561646c696e65206d75737420626520696e20746865206675747572650000600082015250565b6000614667601e83613b2a565b915061467282614631565b602082019050919050565b600060208201905081810360008301526146968161465a565b9050919050565b7f4d757374206f776e20612072657075746174696f6e204e465420746f2063726560008201527f61746520706f7374730000000000000000000000000000000000000000000000602082015250565b60006146f9602983613b2a565b91506147048261469d565b604082019050919050565b60006020820190508181036000830152614728816146ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061476982613c5c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361479b5761479a61472f565b5b600182019050919050565b7f566f74696e6720706572696f6420656e64656400000000000000000000000000600082015250565b60006147dc601383613b2a565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f506f737420616c72656164792065786563757465640000000000000000000000600082015250565b6000614848601583613b2a565b915061485382614812565b602082019050919050565b600060208201905081810360008301526148778161483b565b9050919050565b7f416c726561647920766f74656400000000000000000000000000000000000000600082015250565b60006148b4600d83613b2a565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f4d757374206f776e20612072657075746174696f6e204e465420746f20766f7460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614946602183613b2a565b9150614951826148ea565b604082019050919050565b6000602082019050818103600083015261497581614939565b9050919050565b60006060820190506149916000830186613cbf565b61499e6020830185613d29565b6149ab6040830184613cbf565b949350505050565b7f566f74696e6720706572696f64206e6f7420656e646564000000000000000000600082015250565b60006149e9601783613b2a565b91506149f4826149b3565b602082019050919050565b60006020820190508181036000830152614a18816149dc565b9050919050565b7f506f737420646964206e6f742070617373000000000000000000000000000000600082015250565b6000614a55601183613b2a565b9150614a6082614a1f565b602082019050919050565b60006020820190508181036000830152614a8481614a48565b9050919050565b7f50726f706f73616c20616c726561647920657865637574656400000000000000600082015250565b6000614ac1601983613b2a565b9150614acc82614a8b565b602082019050919050565b60006020820190508181036000830152614af081614ab4565b9050919050565b6000604082019050614b0c6000830185613af5565b8181036020830152614b1e8184613b76565b90509392505050565b7f4e6f2072657075746174696f6e204e465420666f756e64000000000000000000600082015250565b6000614b5d601783613b2a565b9150614b6882614b27565b602082019050919050565b60006020820190508181036000830152614b8c81614b50565b9050919050565b7f416c7265616479206861732072657075746174696f6e204e4654000000000000600082015250565b6000614bc9601a83613b2a565b9150614bd482614b93565b602082019050919050565b60006020820190508181036000830152614bf881614bbc565b9050919050565b600081519050614c0e81613c66565b92915050565b614c1d81614029565b8114614c2857600080fd5b50565b600081519050614c3a81614c14565b92915050565b6000614c53614c4e8461411a565b6140ff565b905082815260208101848484011115614c6f57614c6e61409a565b5b614c7a848285613b3b565b509392505050565b600082601f830112614c9757614c96614095565b5b8151614ca7848260208601614c40565b91505092915050565b60008060008060808587031215614cca57614cc9613a5a565b5b6000614cd887828801614bff565b9450506020614ce987828801614c2b565b9350506040614cfa87828801614c2b565b925050606085015167ffffffffffffffff811115614d1b57614d1a613a5f565b5b614d2787828801614c82565b91505092959194509250565b6000819050919050565b614d4e614d4982614029565b614d33565b82525050565b6000614d608285614d3d565b602082019150614d708284614d3d565b6020820191508190509392505050565b6000606082019050614d956000830186613d29565b614da26020830185613dbb565b614daf6040830184614033565b949350505050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b6000614ded601483613b2a565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f43616e206f6e6c79207570677261646520746f20686967686572207469657200600082015250565b6000614e59601f83613b2a565b9150614e6482614e23565b602082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b6000614e9a82613c5c565b9150614ea583613c5c565b9250828201905080821115614ebd57614ebc61472f565b5b92915050565b6000606082019050614ed86000830186613dbb565b614ee56020830185613dbb565b614ef26040830184613cbf565b949350505050565b7f50726f706f73616c20646964206e6f7420706173730000000000000000000000600082015250565b6000614f30601583613b2a565b9150614f3b82614efa565b602082019050919050565b60006020820190508181036000830152614f5f81614f23565b9050919050565b6000604082019050614f7b6000830185613dbb565b614f886020830184613dbb565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614feb602f83613b2a565b9150614ff682614f8f565b604082019050919050565b6000602082019050818103600083015261501a81614fde565b9050919050565b600081905092915050565b7f68747470733a2f2f6170692e64696365626561722e636f6d2f372e782f73686160008201527f7065732f7376673f736565643d00000000000000000000000000000000000000602082015250565b6000615088602d83615021565b91506150938261502c565b602d82019050919050565b60006150a982613b1f565b6150b38185615021565b93506150c3818560208601613b3b565b80840191505092915050565b7f266261636b67726f756e64436f6c6f723d000000000000000000000000000000600082015250565b6000615105601183615021565b9150615110826150cf565b601182019050919050565b60006151268261507b565b9150615132828561509e565b915061513d826150f8565b9150615149828461509e565b91508190509392505050565b7f7b226e616d65223a2252657075746174696f6e204e4654202300000000000000600082015250565b600061518b601983615021565b915061519682615155565b601982019050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b60006151d7600283615021565b91506151e2826151a1565b600282019050919050565b7f226465736372697074696f6e223a22446563656e7472616c697a65642052657060008201527f75746174696f6e204e46542077697468204341525620494420496e746567726160208201527f74696f6e222c0000000000000000000000000000000000000000000000000000604082015250565b600061526f604683615021565b915061527a826151ed565b604682019050919050565b7f22696d616765223a220000000000000000000000000000000000000000000000600082015250565b60006152bb600983615021565b91506152c682615285565b600982019050919050565b7f2261747472696275746573223a5b000000000000000000000000000000000000600082015250565b6000615307600e83615021565b9150615312826152d1565b600e82019050919050565b7f7b2274726169745f74797065223a22436f6e747269627574696f6e2053636f7260008201527f65222c2276616c7565223a000000000000000000000000000000000000000000602082015250565b6000615379602b83615021565b91506153848261531d565b602b82019050919050565b7f7d2c000000000000000000000000000000000000000000000000000000000000600082015250565b60006153c5600283615021565b91506153d08261538f565b600282019050919050565b7f7b2274726169745f74797065223a2254696572222c2276616c7565223a220000600082015250565b6000615411601e83615021565b915061541c826153db565b601e82019050919050565b7f227d2c0000000000000000000000000000000000000000000000000000000000600082015250565b600061545d600383615021565b915061546882615427565b600382019050919050565b7f7b2274726169745f74797065223a224372656174696f6e2044617465222c227660008201527f616c7565223a0000000000000000000000000000000000000000000000000000602082015250565b60006154cf602683615021565b91506154da82615473565b602682019050919050565b7f7b2274726169745f74797065223a224e6574776f726b222c2276616c7565223a60008201527f22424e4220546573746e6574227d2c0000000000000000000000000000000000602082015250565b6000615541602f83615021565b915061554c826154e5565b602f82019050919050565b7f7b2274726169745f74797065223a2243415256204944204c696e6b6564222c2260008201527f76616c7565223a22000000000000000000000000000000000000000000000000602082015250565b60006155b3602883615021565b91506155be82615557565b602882019050919050565b7f7b2274726169745f74797065223a22537461747573222c2276616c7565223a22600082015250565b60006155ff602083615021565b915061560a826155c9565b602082019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b600061564b600283615021565b915061565682615615565b600282019050919050565b7f5d7d000000000000000000000000000000000000000000000000000000000000600082015250565b6000615697600283615021565b91506156a282615661565b600282019050919050565b60006156b88261517e565b91506156c4828a61509e565b91506156cf826151ca565b91506156da82615262565b91506156e5826152ae565b91506156f1828961509e565b91506156fc826151ca565b9150615707826152fa565b91506157128261536c565b915061571e828861509e565b9150615729826153b8565b915061573482615404565b9150615740828761509e565b915061574b82615450565b9150615756826154c2565b9150615762828661509e565b915061576d826153b8565b915061577882615534565b9150615783826155a6565b915061578f828561509e565b915061579a82615450565b91506157a5826155f2565b91506157b1828461509e565b91506157bc8261563e565b91506157c78261568a565b915081905098975050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b600061580e601d83615021565b9150615819826157d8565b601d82019050919050565b600061582f82615801565b915061583b828461509e565b915081905092915050565b600081519050919050565b600082825260208201905092915050565b600061586d82615846565b6158778185615851565b9350615887818560208601613b3b565b61589081613b65565b840191505092915050565b60006080820190506158b06000830187613cbf565b6158bd6020830186613cbf565b6158ca6040830185613d29565b81810360608301526158dc8184615862565b905095945050505050565b6000815190506158f681613a90565b92915050565b60006020828403121561591257615911613a5a565b5b6000615920848285016158e7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060408201905061596d6000830185613cbf565b61597a6020830184613d29565b9392505050565b600061598c82613c5c565b915061599783613c5c565b92508282026159a581613c5c565b915082820484148315176159bc576159bb61472f565b5b5092915050565b60006159ce82613c5c565b91506159d983613c5c565b9250826159e9576159e8615929565b5b82820490509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122069df908bbb0588c3904a30b32ea8c18a7d4d8bc2c0762ba7e54dc3ab59fc45a664736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102485760003560e01c806372fa9b851161013b578063a7c934ca116100b8578063c7f758a81161007c578063c7f758a814610735578063c87b56dd1461076a578063e985e9c51461079a578063f2fde38b146107ca578063f457d97f146107e657610248565b8063a7c934ca146106a5578063b1610d7e146106c1578063b88d4fde146106df578063bc7dd1ff146106fb578063c58b51291461071757610248565b80638da5cb5b116100ff5780638da5cb5b1461060157806395d89b411461061f5780639769dbd71461063d578063a22cb4651461066d578063a72479491461068957610248565b806372fa9b85146105195780637491a59a1461054d578063793d8a51146105695780638225f1851461059c5780638a1f77e3146105d157610248565b8063211b2197116101c9578063600303d81161018d578063600303d8146104635780636352211e146104935780636ccea228146104c357806370a08231146104df578063715018a61461050f57610248565b8063211b2197146103bc57806323b872dd146103da57806327fa31d1146103f657806342842e0e146104145780634b259d371461043057610248565b80630a6ffb00116102105780630a6ffb00146103035780630bfb29b714610333578063181e4157146103685780631d69bd48146103845780631f68937b146103a057610248565b806301ffc9a71461024d57806306fdde031461027d57806307d25a091461029b578063081812fc146102b7578063095ea7b3146102e7575b600080fd5b61026760048036038101906102629190613abc565b610802565b6040516102749190613b04565b60405180910390f35b6102856108e4565b6040516102929190613baf565b60405180910390f35b6102b560048036038101906102b09190613c2f565b610976565b005b6102d160048036038101906102cc9190613c92565b6109c2565b6040516102de9190613cce565b60405180910390f35b61030160048036038101906102fc9190613ce9565b6109de565b005b61031d60048036038101906103189190613c2f565b6109f4565b60405161032a9190613d38565b60405180910390f35b61034d60048036038101906103489190613c92565b610a0c565b60405161035f96959493929190613dca565b60405180910390f35b610382600480360381019061037d9190613e2b565b610a62565b005b61039e60048036038101906103999190613c92565b610bed565b005b6103ba60048036038101906103b59190613e97565b610cd7565b005b6103c4610f4f565b6040516103d19190613d38565b60405180910390f35b6103f460048036038101906103ef9190613ed7565b610f56565b005b6103fe611058565b60405161040b9190613f89565b60405180910390f35b61042e60048036038101906104299190613ed7565b61107e565b005b61044a60048036038101906104459190613c92565b61109e565b60405161045a9493929190613fa4565b60405180910390f35b61047d60048036038101906104789190613fe9565b6110db565b60405161048a9190613b04565b60405180910390f35b6104ad60048036038101906104a89190613c92565b611146565b6040516104ba9190613cce565b60405180910390f35b6104dd60048036038101906104d89190613c92565b611158565b005b6104f960048036038101906104f49190613c2f565b6112bc565b6040516105069190613d38565b60405180910390f35b610517611376565b005b610533600480360381019061052e9190613c92565b61138a565b604051610544959493929190614042565b60405180910390f35b610567600480360381019061056291906141ca565b6113da565b005b610583600480360381019061057e9190613c92565b611655565b6040516105939493929190613fa4565b60405180910390f35b6105b660048036038101906105b19190613c2f565b6116a3565b6040516105c896959493929190614239565b60405180910390f35b6105eb60048036038101906105e69190613fe9565b6117f7565b6040516105f89190613b04565b60405180910390f35b610609611862565b6040516106169190613cce565b60405180910390f35b61062761188c565b6040516106349190613baf565b60405180910390f35b610657600480360381019061065291906142bf565b61191e565b6040516106649190613baf565b60405180910390f35b610687600480360381019061068291906142ec565b611b01565b005b6106a3600480360381019061069e919061432c565b611b17565b005b6106bf60048036038101906106ba919061432c565b611e0b565b005b6106c961206f565b6040516106d69190613d38565b60405180910390f35b6106f960048036038101906106f4919061440d565b612076565b005b61071560048036038101906107109190613c92565b61209b565b005b61071f612295565b60405161072c9190613d38565b60405180910390f35b61074f600480360381019061074a9190613c92565b61229a565b60405161076196959493929190613dca565b60405180910390f35b610784600480360381019061077f9190613c92565b612308565b6040516107919190613baf565b60405180910390f35b6107b460048036038101906107af9190614490565b6125de565b6040516107c19190613b04565b60405180910390f35b6107e460048036038101906107df9190613c2f565b612672565b005b61080060048036038101906107fb9190613c92565b6126f8565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108cd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108dd57506108dc826127a9565b5b9050919050565b6060600080546108f3906144ff565b80601f016020809104026020016040519081016040528092919081815260200182805461091f906144ff565b801561096c5780601f106109415761010080835404028352916020019161096c565b820191906000526020600020905b81548152906001019060200180831161094f57829003601f168201915b5050505050905090565b61097e612813565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006109cd8261289a565b506109d782612922565b9050919050565b6109f082826109eb61295f565b612967565b5050565b60096020528060005260406000206000915090505481565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b3373ffffffffffffffffffffffffffffffffffffffff16610a8283611146565b73ffffffffffffffffffffffffffffffffffffffff161480610ad657503373ffffffffffffffffffffffffffffffffffffffff16610abe611862565b73ffffffffffffffffffffffffffffffffffffffff16145b610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c9061457c565b60405180910390fd5b6008600083815260200190815260200160002060040160009054906101000a900460ff16610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906145e8565b60405180910390fd5b600060086000848152602001908152602001600020600001549050816008600085815260200190815260200160002060000181905550827fd7b54992d4a5345909e4c258de7e3391a4411ada7d74a66fb854a8182b873ddc8284604051610be0929190614608565b60405180910390a2505050565b428111610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c269061467d565b60405180910390fd5b6000610c3a336112bc565b11610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061470f565b60405180910390fd5b6000600f6000815480929190610c8f9061475e565b9190505590506000600b6000838152602001908152602001600020905082816002018190555060008160030160006101000a81548160ff021916908315150217905550505050565b6000600b600084815260200190815260200160002090508060020154421115610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c906147f2565b60405180910390fd5b8060030160009054906101000a900460ff1615610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e9061485e565b60405180910390fd5b8060040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d906148ca565b60405180910390fd5b6000610e21336112bc565b11610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e589061495c565b60405180910390fd5b60018160040160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115610ee057806000016000815480929190610ed69061475e565b9190505550610efb565b806001016000815480929190610ef59061475e565b91905055505b3373ffffffffffffffffffffffffffffffffffffffff16837f66483dd85d319543af5176d9e5c29584a3c8ef2a9f71061078b571b3461f74d684604051610f429190613b04565b60405180910390a3505050565b62093a8081565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc85760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610fbf9190613cce565b60405180910390fd5b6000610fdc8383610fd761295f565b612979565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611052578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016110499392919061497c565b60405180910390fd5b50505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61109983838360405180602001604052806000815250612076565b505050565b600b6020528060005260406000206000915090508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b6000600a600084815260200190815260200160002060060160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006111518261289a565b9050919050565b6000600b60008381526020019081526020016000209050806002015442116111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906149ff565b60405180910390fd5b8060030160009054906101000a900460ff1615611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe9061485e565b60405180910390fd5b8060010154816000015411801561122357506003816000015410155b611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990614a6b565b60405180910390fd5b60018160030160006101000a81548160ff021916908315150217905550817fe833d65c71131ee1357ff57ae05918b4a25f1993df3d6b0f09e063a27d992df960016040516112b09190613b04565b60405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132f5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016113269190613cce565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61137e612813565b6113886000612b93565b565b60086020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154908060030154908060040160009054906101000a900460ff16905085565b6000600a600085815260200190815260200160002090508060040154421115611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f906147f2565b60405180910390fd5b8060050160009054906101000a900460ff161561148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190614ad7565b60405180910390fd5b8060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611519576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611510906148ca565b60405180910390fd5b6000611524336112bc565b11611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b9061495c565b60405180910390fd5b60018160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082156115e3578060020160008154809291906115d99061475e565b91905055506115fe565b8060030160008154809291906115f89061475e565b91905055505b3373ffffffffffffffffffffffffffffffffffffffff16847fc4ce3f0cdcc6c3a55938650ba7706e6b5d9f686f108fdce6a6bb68424fe1ed758585604051611647929190614af7565b60405180910390a350505050565b6000806000806000600b600087815260200190815260200160002090508060000154816001015482600201548360030160009054906101000a900460ff169450945094509450509193509193565b600080600080600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054955060008603611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890614b73565b60405180910390fd5b6000600860008881526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff1660038111156117805761177f613d53565b5b600381111561179257611791613d53565b5b815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581525050905086816000015182602001518360400151846060015185608001519650965096509650965096505091939550919395565b6000600b600084815260200190815260200160002060040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461189b906144ff565b80601f01602080910402602001604051908101604052809291908181526020018280546118c7906144ff565b80156119145780601f106118e957610100808354040283529160200191611914565b820191906000526020600020905b8154815290600101906020018083116118f757829003601f168201915b5050505050905090565b60606000600381111561193457611933613d53565b5b82600381111561194757611946613d53565b5b03611989576040518060400160405280600681526020017f42726f6e7a6500000000000000000000000000000000000000000000000000008152509050611afc565b6001600381111561199d5761199c613d53565b5b8260038111156119b0576119af613d53565b5b036119f2576040518060400160405280600681526020017f53696c76657200000000000000000000000000000000000000000000000000008152509050611afc565b60026003811115611a0657611a05613d53565b5b826003811115611a1957611a18613d53565b5b03611a5b576040518060400160405280600481526020017f476f6c64000000000000000000000000000000000000000000000000000000008152509050611afc565b600380811115611a6e57611a6d613d53565b5b826003811115611a8157611a80613d53565b5b03611ac3576040518060400160405280600881526020017f506c6174696e756d0000000000000000000000000000000000000000000000008152509050611afc565b6040518060400160405280600781526020017f556e6b6e6f776e0000000000000000000000000000000000000000000000000081525090505b919050565b611b13611b0c61295f565b8383612c59565b5050565b611b1f612dc8565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614bdf565b60405180910390fd5b60008060001b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637a00d3c4336040518263ffffffff1660e01b8152600401611c049190613cce565b600060405180830381865afa925050508015611c4357506040513d6000823e3d601f19601f82011682018060405250810190611c409190614cb0565b60015b15611c815760008414611c7c578282604051602001611c63929190614d54565b6040516020818303038152906040528051906020012094505b505050505b6000600d6000815480929190611c969061475e565b919050559050611ca63382612e0e565b6040518060a00160405280858152602001846003811115611cca57611cc9613d53565b5b815260200142815260200183815260200160011515815250600860008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690836003811115611d2a57611d29613d53565b5b0217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555090505080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550803373ffffffffffffffffffffffffffffffffffffffff167fbecf74f4144e0a1cc2ad6842d3c4d15f96cd50c860b3cb01fadcdd36f0e81e64868686604051611df593929190614d80565b60405180910390a35050611e07612e2c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16611e2c83612e36565b73ffffffffffffffffffffffffffffffffffffffff1603611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7990614e03565b60405180910390fd5b6008600083815260200190815260200160002060040160009054906101000a900460ff16611ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edc906145e8565b60405180910390fd5b6008600083815260200190815260200160002060010160009054906101000a900460ff166003811115611f1b57611f1a613d53565b5b816003811115611f2e57611f2d613d53565b5b11611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6590614e6f565b60405180910390fd5b6000600e6000815480929190611f839061475e565b9190505590506000600a60008381526020019081526020016000209050838160000181905550828160010160006101000a81548160ff02191690836003811115611fd057611fcf613d53565b5b021790555062093a8042611fe49190614e8f565b816004018190555060008160050160006101000a81548160ff02191690831515021790555083827fc1cdca689d3668705c91e7e09315fd08f649ec6e7a56449cac4c594bf0b558556008600088815260200190815260200160002060010160009054906101000a900460ff16863360405161206193929190614ec3565b60405180910390a350505050565b62093a8081565b612081848484610f56565b61209561208c61295f565b85858585612e73565b50505050565b6000600a60008381526020019081526020016000209050806004015442116120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ef906149ff565b60405180910390fd5b8060050160009054906101000a900460ff161561214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190614ad7565b60405180910390fd5b8060030154816002015411801561216657506003816002015410155b6121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90614f46565b60405180910390fd5b60018160050160006101000a81548160ff0219169083151502179055506000600860008360000154815260200190815260200160002060010160009054906101000a900460ff1690508160010160009054906101000a900460ff16600860008460000154815260200190815260200160002060010160006101000a81548160ff0219169083600381111561223c5761223b613d53565b5b021790555081600001547f57ceb88011b120a0441a16383dc232e775510168ab27978582d21c610a6e4247828460010160009054906101000a900460ff16604051612288929190614f66565b60405180910390a2505050565b600381565b6000806000806000806000600a6000898152602001908152602001600020905080600001548160010160009054906101000a900460ff168260020154836003015484600401548560050160009054906101000a900460ff169650965096509650965096505091939550919395565b6060600073ffffffffffffffffffffffffffffffffffffffff1661232b83612e36565b73ffffffffffffffffffffffffffffffffffffffff1603612381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237890615001565b60405180910390fd5b6000600860008481526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff1660038111156123d0576123cf613d53565b5b60038111156123e2576123e1613d53565b5b815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff16151515158152505090506000612426826020015161191e565b9050600061243385613024565b61244084602001516130f2565b60405160200161245192919061511b565b604051602081830303815290604052905060006125b161247087613024565b8361247e8760000151613024565b8661248c8960400151613024565b6000801b8a60600151036124d5576040518060400160405280600281526020017f4e6f00000000000000000000000000000000000000000000000000000000000081525061250c565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b8a60800151612550576040518060400160405280600881526020017f496e616374697665000000000000000000000000000000000000000000000000815250612587565b6040518060400160405280600681526020017f41637469766500000000000000000000000000000000000000000000000000008152505b60405160200161259d97969594939291906156ad565b6040516020818303038152906040526132d5565b9050806040516020016125c49190615824565b604051602081830303815290604052945050505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61267a612813565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126ec5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016126e39190613cce565b60405180910390fd5b6126f581612b93565b50565b612700612813565b600073ffffffffffffffffffffffffffffffffffffffff1661272182612e36565b73ffffffffffffffffffffffffffffffffffffffff1603612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614e03565b60405180910390fd5b60006008600083815260200190815260200160002060040160006101000a81548160ff02191690831515021790555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61281b61295f565b73ffffffffffffffffffffffffffffffffffffffff16612839611862565b73ffffffffffffffffffffffffffffffffffffffff16146128985761285c61295f565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161288f9190613cce565b60405180910390fd5b565b6000806128a683612e36565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361291957826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016129109190613d38565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6129748383836001613302565b505050565b60008061298584612e36565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146129c7576129c68184866134c7565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612a5857612a09600085600080613302565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612adb576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cca57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401612cc19190613cce565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612dbb9190613b04565b60405180910390a3505050565b600260075403612e04576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600781905550565b612e2882826040518060200160405280600081525061358b565b5050565b6001600781905550565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008373ffffffffffffffffffffffffffffffffffffffff163b111561301d578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612ed2949392919061589b565b6020604051808303816000875af1925050508015612f0e57506040513d601f19601f82011682018060405250810190612f0b91906158fc565b60015b612f92573d8060008114612f3e576040519150601f19603f3d011682016040523d82523d6000602084013e612f43565b606091505b506000815103612f8a57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612f819190613cce565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461301b57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016130129190613cce565b60405180910390fd5b505b5050505050565b606060006001613033846135af565b01905060008167ffffffffffffffff8111156130525761305161409f565b5b6040519080825280601f01601f1916602001820160405280156130845781602001600182028036833780820191505090505b509050600082602001820190505b6001156130e7578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816130db576130da615929565b5b04945060008503613092575b819350505050919050565b60606000600381111561310857613107613d53565b5b82600381111561311b5761311a613d53565b5b0361315d576040518060400160405280600681526020017f434437463332000000000000000000000000000000000000000000000000000081525090506132d0565b6001600381111561317157613170613d53565b5b82600381111561318457613183613d53565b5b036131c6576040518060400160405280600681526020017f433043304330000000000000000000000000000000000000000000000000000081525090506132d0565b600260038111156131da576131d9613d53565b5b8260038111156131ed576131ec613d53565b5b0361322f576040518060400160405280600681526020017f464644373030000000000000000000000000000000000000000000000000000081525090506132d0565b60038081111561324257613241613d53565b5b82600381111561325557613254613d53565b5b03613297576040518060400160405280600681526020017f453545344532000000000000000000000000000000000000000000000000000081525090506132d0565b6040518060400160405280600681526020017f384234353133000000000000000000000000000000000000000000000000000081525090505b919050565b60606132fb826040518060600160405280604081526020016159f5604091396001613702565b9050919050565b808061333b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561346f57600061334b8461289a565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133b657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156133c957506133c781846125de565b155b1561340b57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016134029190613cce565b60405180910390fd5b811561346d57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6134d2838383613896565b61358657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361354757806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161353e9190613d38565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161357d929190615958565b60405180910390fd5b505050565b6135958383613957565b6135aa6135a061295f565b6000858585612e73565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061360d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161360357613602615929565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061364a576d04ee2d6d415b85acef810000000083816136405761363f615929565b5b0492506020810190505b662386f26fc10000831061367957662386f26fc10000838161366f5761366e615929565b5b0492506010810190505b6305f5e10083106136a2576305f5e100838161369857613697615929565b5b0492506008810190505b61271083106136c75761271083816136bd576136bc615929565b5b0492506004810190505b606483106136ea57606483816136e0576136df615929565b5b0492506002810190505b600a83106136f9576001810190505b80915050919050565b606060008451036137245760405180602001604052806000815250905061388f565b60008261375657600360028651600461373d9190615981565b6137479190614e8f565b61375191906159c3565b61377d565b6003600286516137669190614e8f565b61377091906159c3565b600461377c9190615981565b5b905060008167ffffffffffffffff81111561379b5761379a61409f565b5b6040519080825280601f01601f1916602001820160405280156137cd5781602001600182028036833780820191505090505b50905060018501602082018788518901602081018051600082525b82841015613843576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653600186019550506137e8565b80825289156138835760038c510660018114613866576002811461387957613881565b603d6001870353603d6002870353613881565b603d60018703535b505b50505050505080925050505b9392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561394e57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061390f575061390e84846125de565b5b8061394d57508273ffffffffffffffffffffffffffffffffffffffff1661393583612922565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139c95760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016139c09190613cce565b60405180910390fd5b60006139d783836000612979565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613a4b5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401613a429190613cce565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a9981613a64565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b600060208284031215613ad257613ad1613a5a565b5b6000613ae084828501613aa7565b91505092915050565b60008115159050919050565b613afe81613ae9565b82525050565b6000602082019050613b196000830184613af5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b59578082015181840152602081019050613b3e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b8182613b1f565b613b8b8185613b2a565b9350613b9b818560208601613b3b565b613ba481613b65565b840191505092915050565b60006020820190508181036000830152613bc98184613b76565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bfc82613bd1565b9050919050565b613c0c81613bf1565b8114613c1757600080fd5b50565b600081359050613c2981613c03565b92915050565b600060208284031215613c4557613c44613a5a565b5b6000613c5384828501613c1a565b91505092915050565b6000819050919050565b613c6f81613c5c565b8114613c7a57600080fd5b50565b600081359050613c8c81613c66565b92915050565b600060208284031215613ca857613ca7613a5a565b5b6000613cb684828501613c7d565b91505092915050565b613cc881613bf1565b82525050565b6000602082019050613ce36000830184613cbf565b92915050565b60008060408385031215613d0057613cff613a5a565b5b6000613d0e85828601613c1a565b9250506020613d1f85828601613c7d565b9150509250929050565b613d3281613c5c565b82525050565b6000602082019050613d4d6000830184613d29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110613d9357613d92613d53565b5b50565b6000819050613da482613d82565b919050565b6000613db482613d96565b9050919050565b613dc481613da9565b82525050565b600060c082019050613ddf6000830189613d29565b613dec6020830188613dbb565b613df96040830187613d29565b613e066060830186613d29565b613e136080830185613d29565b613e2060a0830184613af5565b979650505050505050565b60008060408385031215613e4257613e41613a5a565b5b6000613e5085828601613c7d565b9250506020613e6185828601613c7d565b9150509250929050565b613e7481613ae9565b8114613e7f57600080fd5b50565b600081359050613e9181613e6b565b92915050565b60008060408385031215613eae57613ead613a5a565b5b6000613ebc85828601613c7d565b9250506020613ecd85828601613e82565b9150509250929050565b600080600060608486031215613ef057613eef613a5a565b5b6000613efe86828701613c1a565b9350506020613f0f86828701613c1a565b9250506040613f2086828701613c7d565b9150509250925092565b6000819050919050565b6000613f4f613f4a613f4584613bd1565b613f2a565b613bd1565b9050919050565b6000613f6182613f34565b9050919050565b6000613f7382613f56565b9050919050565b613f8381613f68565b82525050565b6000602082019050613f9e6000830184613f7a565b92915050565b6000608082019050613fb96000830187613d29565b613fc66020830186613d29565b613fd36040830185613d29565b613fe06060830184613af5565b95945050505050565b6000806040838503121561400057613fff613a5a565b5b600061400e85828601613c7d565b925050602061401f85828601613c1a565b9150509250929050565b6000819050919050565b61403c81614029565b82525050565b600060a0820190506140576000830188613d29565b6140646020830187613dbb565b6140716040830186613d29565b61407e6060830185614033565b61408b6080830184613af5565b9695505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6140d782613b65565b810181811067ffffffffffffffff821117156140f6576140f561409f565b5b80604052505050565b6000614109613a50565b905061411582826140ce565b919050565b600067ffffffffffffffff8211156141355761413461409f565b5b61413e82613b65565b9050602081019050919050565b82818337600083830152505050565b600061416d6141688461411a565b6140ff565b9050828152602081018484840111156141895761418861409a565b5b61419484828561414b565b509392505050565b600082601f8301126141b1576141b0614095565b5b81356141c184826020860161415a565b91505092915050565b6000806000606084860312156141e3576141e2613a5a565b5b60006141f186828701613c7d565b935050602061420286828701613e82565b925050604084013567ffffffffffffffff81111561422357614222613a5f565b5b61422f8682870161419c565b9150509250925092565b600060c08201905061424e6000830189613d29565b61425b6020830188613d29565b6142686040830187613dbb565b6142756060830186613d29565b6142826080830185614033565b61428f60a0830184613af5565b979650505050505050565b600481106142a757600080fd5b50565b6000813590506142b98161429a565b92915050565b6000602082840312156142d5576142d4613a5a565b5b60006142e3848285016142aa565b91505092915050565b6000806040838503121561430357614302613a5a565b5b600061431185828601613c1a565b925050602061432285828601613e82565b9150509250929050565b6000806040838503121561434357614342613a5a565b5b600061435185828601613c7d565b9250506020614362858286016142aa565b9150509250929050565b600067ffffffffffffffff8211156143875761438661409f565b5b61439082613b65565b9050602081019050919050565b60006143b06143ab8461436c565b6140ff565b9050828152602081018484840111156143cc576143cb61409a565b5b6143d784828561414b565b509392505050565b600082601f8301126143f4576143f3614095565b5b813561440484826020860161439d565b91505092915050565b6000806000806080858703121561442757614426613a5a565b5b600061443587828801613c1a565b945050602061444687828801613c1a565b935050604061445787828801613c7d565b925050606085013567ffffffffffffffff81111561447857614477613a5f565b5b614484878288016143df565b91505092959194509250565b600080604083850312156144a7576144a6613a5a565b5b60006144b585828601613c1a565b92505060206144c685828601613c1a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061451757607f821691505b60208210810361452a576145296144d0565b5b50919050565b7f4e6f7420617574686f72697a656420746f207570646174652073636f72650000600082015250565b6000614566601e83613b2a565b915061457182614530565b602082019050919050565b6000602082019050818103600083015261459581614559565b9050919050565b7f4e4654206973206e6f7420616374697665000000000000000000000000000000600082015250565b60006145d2601183613b2a565b91506145dd8261459c565b602082019050919050565b60006020820190508181036000830152614601816145c5565b9050919050565b600060408201905061461d6000830185613d29565b61462a6020830184613d29565b9392505050565b7f446561646c696e65206d75737420626520696e20746865206675747572650000600082015250565b6000614667601e83613b2a565b915061467282614631565b602082019050919050565b600060208201905081810360008301526146968161465a565b9050919050565b7f4d757374206f776e20612072657075746174696f6e204e465420746f2063726560008201527f61746520706f7374730000000000000000000000000000000000000000000000602082015250565b60006146f9602983613b2a565b91506147048261469d565b604082019050919050565b60006020820190508181036000830152614728816146ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061476982613c5c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361479b5761479a61472f565b5b600182019050919050565b7f566f74696e6720706572696f6420656e64656400000000000000000000000000600082015250565b60006147dc601383613b2a565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f506f737420616c72656164792065786563757465640000000000000000000000600082015250565b6000614848601583613b2a565b915061485382614812565b602082019050919050565b600060208201905081810360008301526148778161483b565b9050919050565b7f416c726561647920766f74656400000000000000000000000000000000000000600082015250565b60006148b4600d83613b2a565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f4d757374206f776e20612072657075746174696f6e204e465420746f20766f7460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614946602183613b2a565b9150614951826148ea565b604082019050919050565b6000602082019050818103600083015261497581614939565b9050919050565b60006060820190506149916000830186613cbf565b61499e6020830185613d29565b6149ab6040830184613cbf565b949350505050565b7f566f74696e6720706572696f64206e6f7420656e646564000000000000000000600082015250565b60006149e9601783613b2a565b91506149f4826149b3565b602082019050919050565b60006020820190508181036000830152614a18816149dc565b9050919050565b7f506f737420646964206e6f742070617373000000000000000000000000000000600082015250565b6000614a55601183613b2a565b9150614a6082614a1f565b602082019050919050565b60006020820190508181036000830152614a8481614a48565b9050919050565b7f50726f706f73616c20616c726561647920657865637574656400000000000000600082015250565b6000614ac1601983613b2a565b9150614acc82614a8b565b602082019050919050565b60006020820190508181036000830152614af081614ab4565b9050919050565b6000604082019050614b0c6000830185613af5565b8181036020830152614b1e8184613b76565b90509392505050565b7f4e6f2072657075746174696f6e204e465420666f756e64000000000000000000600082015250565b6000614b5d601783613b2a565b9150614b6882614b27565b602082019050919050565b60006020820190508181036000830152614b8c81614b50565b9050919050565b7f416c7265616479206861732072657075746174696f6e204e4654000000000000600082015250565b6000614bc9601a83613b2a565b9150614bd482614b93565b602082019050919050565b60006020820190508181036000830152614bf881614bbc565b9050919050565b600081519050614c0e81613c66565b92915050565b614c1d81614029565b8114614c2857600080fd5b50565b600081519050614c3a81614c14565b92915050565b6000614c53614c4e8461411a565b6140ff565b905082815260208101848484011115614c6f57614c6e61409a565b5b614c7a848285613b3b565b509392505050565b600082601f830112614c9757614c96614095565b5b8151614ca7848260208601614c40565b91505092915050565b60008060008060808587031215614cca57614cc9613a5a565b5b6000614cd887828801614bff565b9450506020614ce987828801614c2b565b9350506040614cfa87828801614c2b565b925050606085015167ffffffffffffffff811115614d1b57614d1a613a5f565b5b614d2787828801614c82565b91505092959194509250565b6000819050919050565b614d4e614d4982614029565b614d33565b82525050565b6000614d608285614d3d565b602082019150614d708284614d3d565b6020820191508190509392505050565b6000606082019050614d956000830186613d29565b614da26020830185613dbb565b614daf6040830184614033565b949350505050565b7f546f6b656e20646f6573206e6f74206578697374000000000000000000000000600082015250565b6000614ded601483613b2a565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f43616e206f6e6c79207570677261646520746f20686967686572207469657200600082015250565b6000614e59601f83613b2a565b9150614e6482614e23565b602082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b6000614e9a82613c5c565b9150614ea583613c5c565b9250828201905080821115614ebd57614ebc61472f565b5b92915050565b6000606082019050614ed86000830186613dbb565b614ee56020830185613dbb565b614ef26040830184613cbf565b949350505050565b7f50726f706f73616c20646964206e6f7420706173730000000000000000000000600082015250565b6000614f30601583613b2a565b9150614f3b82614efa565b602082019050919050565b60006020820190508181036000830152614f5f81614f23565b9050919050565b6000604082019050614f7b6000830185613dbb565b614f886020830184613dbb565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614feb602f83613b2a565b9150614ff682614f8f565b604082019050919050565b6000602082019050818103600083015261501a81614fde565b9050919050565b600081905092915050565b7f68747470733a2f2f6170692e64696365626561722e636f6d2f372e782f73686160008201527f7065732f7376673f736565643d00000000000000000000000000000000000000602082015250565b6000615088602d83615021565b91506150938261502c565b602d82019050919050565b60006150a982613b1f565b6150b38185615021565b93506150c3818560208601613b3b565b80840191505092915050565b7f266261636b67726f756e64436f6c6f723d000000000000000000000000000000600082015250565b6000615105601183615021565b9150615110826150cf565b601182019050919050565b60006151268261507b565b9150615132828561509e565b915061513d826150f8565b9150615149828461509e565b91508190509392505050565b7f7b226e616d65223a2252657075746174696f6e204e4654202300000000000000600082015250565b600061518b601983615021565b915061519682615155565b601982019050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b60006151d7600283615021565b91506151e2826151a1565b600282019050919050565b7f226465736372697074696f6e223a22446563656e7472616c697a65642052657060008201527f75746174696f6e204e46542077697468204341525620494420496e746567726160208201527f74696f6e222c0000000000000000000000000000000000000000000000000000604082015250565b600061526f604683615021565b915061527a826151ed565b604682019050919050565b7f22696d616765223a220000000000000000000000000000000000000000000000600082015250565b60006152bb600983615021565b91506152c682615285565b600982019050919050565b7f2261747472696275746573223a5b000000000000000000000000000000000000600082015250565b6000615307600e83615021565b9150615312826152d1565b600e82019050919050565b7f7b2274726169745f74797065223a22436f6e747269627574696f6e2053636f7260008201527f65222c2276616c7565223a000000000000000000000000000000000000000000602082015250565b6000615379602b83615021565b91506153848261531d565b602b82019050919050565b7f7d2c000000000000000000000000000000000000000000000000000000000000600082015250565b60006153c5600283615021565b91506153d08261538f565b600282019050919050565b7f7b2274726169745f74797065223a2254696572222c2276616c7565223a220000600082015250565b6000615411601e83615021565b915061541c826153db565b601e82019050919050565b7f227d2c0000000000000000000000000000000000000000000000000000000000600082015250565b600061545d600383615021565b915061546882615427565b600382019050919050565b7f7b2274726169745f74797065223a224372656174696f6e2044617465222c227660008201527f616c7565223a0000000000000000000000000000000000000000000000000000602082015250565b60006154cf602683615021565b91506154da82615473565b602682019050919050565b7f7b2274726169745f74797065223a224e6574776f726b222c2276616c7565223a60008201527f22424e4220546573746e6574227d2c0000000000000000000000000000000000602082015250565b6000615541602f83615021565b915061554c826154e5565b602f82019050919050565b7f7b2274726169745f74797065223a2243415256204944204c696e6b6564222c2260008201527f76616c7565223a22000000000000000000000000000000000000000000000000602082015250565b60006155b3602883615021565b91506155be82615557565b602882019050919050565b7f7b2274726169745f74797065223a22537461747573222c2276616c7565223a22600082015250565b60006155ff602083615021565b915061560a826155c9565b602082019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b600061564b600283615021565b915061565682615615565b600282019050919050565b7f5d7d000000000000000000000000000000000000000000000000000000000000600082015250565b6000615697600283615021565b91506156a282615661565b600282019050919050565b60006156b88261517e565b91506156c4828a61509e565b91506156cf826151ca565b91506156da82615262565b91506156e5826152ae565b91506156f1828961509e565b91506156fc826151ca565b9150615707826152fa565b91506157128261536c565b915061571e828861509e565b9150615729826153b8565b915061573482615404565b9150615740828761509e565b915061574b82615450565b9150615756826154c2565b9150615762828661509e565b915061576d826153b8565b915061577882615534565b9150615783826155a6565b915061578f828561509e565b915061579a82615450565b91506157a5826155f2565b91506157b1828461509e565b91506157bc8261563e565b91506157c78261568a565b915081905098975050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b600061580e601d83615021565b9150615819826157d8565b601d82019050919050565b600061582f82615801565b915061583b828461509e565b915081905092915050565b600081519050919050565b600082825260208201905092915050565b600061586d82615846565b6158778185615851565b9350615887818560208601613b3b565b61589081613b65565b840191505092915050565b60006080820190506158b06000830187613cbf565b6158bd6020830186613cbf565b6158ca6040830185613d29565b81810360608301526158dc8184615862565b905095945050505050565b6000815190506158f681613a90565b92915050565b60006020828403121561591257615911613a5a565b5b6000615920848285016158e7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060408201905061596d6000830185613cbf565b61597a6020830184613d29565b9392505050565b600061598c82613c5c565b915061599783613c5c565b92508282026159a581613c5c565b915082820484148315176159bc576159bb61472f565b5b5092915050565b60006159ce82613c5c565b91506159d983613c5c565b9250826159e9576159e8615929565b5b82820490509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122069df908bbb0588c3904a30b32ea8c18a7d4d8bc2c0762ba7e54dc3ab59fc45a664736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
