{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721FullMintOnceBurnProxiedMock",
  "sourceName": "contracts/mocks/token/ERC721/preset/proxied/ERC721FullMintOnceBurnProxiedMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "ERC2981IncorrectRoyaltyPercentage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC2981IncorrectRoyaltyReceiver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721BalanceOfAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721BurntToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721ExistingToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonApprovedForApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonApprovedForTransfer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonExistingToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonOwnedToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC721SelfApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC721SelfApprovalForAll",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentPhase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPhase",
          "type": "uint256"
        }
      ],
      "name": "InitializationPhaseAlreadyReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotRoleHolder",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "OperatorNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "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": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ROYALTY_FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "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": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchBurnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "deliver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "approved",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "hasRole_",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "contract ITokenMetadataResolver",
          "name": "metadataResolver",
          "type": "address"
        },
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "filterRegistry",
          "type": "address"
        }
      ],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "approvedForAll",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metadataResolver",
      "outputs": [
        {
          "internalType": "contract ITokenMetadataResolver",
          "name": "tokenMetadataResolver",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "operatorFilterRegistry",
      "outputs": [
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "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": "tokenOwner",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "salePrice",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "royaltyAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setRoyaltyPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "setRoyaltyReceiver",
      "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": "tokenSymbol",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "uri",
          "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": "contract IOperatorFilterRegistry",
          "name": "registry",
          "type": "address"
        }
      ],
      "name": "updateOperatorFilterRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "wasBurnt",
      "outputs": [
        {
          "internalType": "bool",
          "name": "tokenWasBurnt",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a03461007f57601f614b0f38819003918201601f19168301916001600160401b038311848410176100845780849260209460405283398101031261007f57516001600160a01b038116810361007f57608052604051614a74908161009b8239608051818181612a5201528181613d510152818161461301526147be0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461392757806306fdde03146138cc578063081812fc1461386f578063095ea7b3146135db5780630e07f85414612cf8578063114ba8ee14612c1157806323b872dd14612b695780632a55205a14612a765780632b4c9f1614612a075780632f2ff15d1461287b57806331e66e1e146127f857806340c10f191461276857806342842e0e146126985780634684d7e9146124d4578063572b6c051461248957806361ba27da1461236d5780636352211e146122f257806370a082311461222857806373c8a9581461207857806379cc679014611dda5780638832e6e314611b8c5780638bb9c5bf14611a1d5780638da5cb5b146119ac5780638dc251e31461187f57806391d14854146117e757806395d89b41146117785780639da5e832146114f7578063a0c76f6214611486578063a22cb46514611326578063b0ccc31e146112b5578063b88d4fde14611193578063c3666c3614610f56578063c77c695514610ecb578063c87b56dd14610d18578063d539139314610cbf578063d547741f14610b36578063e1a8bf2c14610afa578063e985e9c514610a46578063f247296514610821578063f2fde38b1461072d578063f3993d11146103a75763f7ba94bd146101ea57600080fd5b3461034b576101f836613c29565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806102396145fc565b925416911690810361037a57508181036103505760005b81811061025957005b610264818387614406565b3573ffffffffffffffffffffffffffffffffffffffff811680910361034b5761028e828587614406565b359081471061031957600080809381935af13d15610311573d906102b182613d99565b916102bf6040519384613c95565b82523d6000602084013e5b156102d85750600101610250565b8051156102e757602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b6060906102ca565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576103de613a14565b6103e6613a37565b9060443567ffffffffffffffff811161034b57610407903690600401613afa565b926104106145fc565b907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308273ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff82160361071d575b505073ffffffffffffffffffffffffffffffffffffffff7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c091169384156106f3576104b58382849694614727565b9373ffffffffffffffffffffffffffffffffffffffff600095159216945b87811061053857878787818114158061052f575b6104ed57005b60009081527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040808220805485900390559181522080549091019055005b508215156104e7565b610543818986614406565b35806000528260205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106c557880361069357846105bc575b509081600192600052836020528860406000205588887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4016104d3565b7401000000000000000000000000000000000000000016158015610630575b6105e5578961057b565b8673ffffffffffffffffffffffffffffffffffffffff877fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff871614156105db565b50867f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b827fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f86c870670000000000000000000000000000000000000000000000000000000060005260046000fd5b61072691614511565b8582610467565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610764613a14565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc9061078e6145fc565b9073ffffffffffffffffffffffffffffffffffffffff80845416921682810361037a575073ffffffffffffffffffffffffffffffffffffffff16918282036107d257005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b3461034b5761082f36613b2b565b917fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09161085a6145fc565b92610866848483614727565b9373ffffffffffffffffffffffffffffffffffffffff600095159416945b8681106108cb5786868161089457005b6000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154039055600080f35b6108d6818886614406565b35806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106c5578803610693578661096f575b509081600192600052846020527fdead0000000000000000000000000000000000000000000000000000000000006040600020556000887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a401610884565b74010000000000000000000000000000000000000000161580156109e3575b610998578861090e565b8673ffffffffffffffffffffffffffffffffffffffff847fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff8416141561098e565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610a7d613a14565b73ffffffffffffffffffffffffffffffffffffffff610a9a613a37565b91166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576020604051620186a08152f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57600435610b70613a37565b610b786145fc565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361037a57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610c2a57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610e0a6000600435610d79817fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06143ab565b5073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6541660405180809581947ff724dad700000000000000000000000000000000000000000000000000000000835230600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa908115610ebf57600091610e37575b60405160208082528190610e33908201856139d1565b0390f35b3d8083833e610e468183613c95565b810190602081830312610eb75780519067ffffffffffffffff8211610ebb570181601f82011215610eb757805192610e7d84613d99565b92610e8b6040519485613c95565b84845260208584010111610eb45750610e3392610eae91602080850191016139ae565b90610e1d565b80fd5b8280fd5b8380fd5b6040513d6000823e3d90fd5b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c060043560005260205260207fdead00000000000000000000000000000000000000000000000000000000000060406000205414604051908152f35b3461034b57610f6436613b9a565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610fa96145fc565b925416911690810361037a5750808214801590611189575b6103505760005b828110610fd157005b73ffffffffffffffffffffffffffffffffffffffff610ff9610ff483858a614406565b614416565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610ebf5760009161115b575b501561112e575073ffffffffffffffffffffffffffffffffffffffff611088610ff483858a614406565b1690611098610ff4828689614406565b916110a482878b614406565b3592813b1561034b57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610ebf5760019261111d575b5001610fc8565b600061112891613c95565b88611116565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61117c915060203d8111611182575b6111748183613c95565b810190614437565b8961105e565b503d61116a565b5082821415610fc1565b3461034b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576111ca613a14565b6111d2613a37565b60443560643567ffffffffffffffff811161034b576111f5903690600401613a5a565b9290936112006145fc565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8216036112a5575b5050611286848484887fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613f56565b823b61128e57005b6112a39561129d913691613dd3565b936148ed565b005b6112ae91614511565b8685611257565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5761135d613a14565b602435908115159182810361034b57611457575b73ffffffffffffffffffffffffffffffffffffffff8061138f6145fc565b169116918183146114295760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c38252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507fe4215c6a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611481817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30614511565b611371565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b3461034b5761150536613c29565b91929161153a7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b9061418f565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09361156581613cd6565b936115736040519586613c95565b818552602085019160051b81019036821161034b57915b81831061174b57505050906115a0913691613cee565b9181519280518403610350577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1939260005b8481106115db57005b73ffffffffffffffffffffffffffffffffffffffff6115fa8284614368565b511680156117215761160c8285614368565b5190816000528560205260406000205473ffffffffffffffffffffffffffffffffffffffff81166116f3577fdead000000000000000000000000000000000000000000000000000000000000146116c55790600192918160005286602052806040600020556040600073ffffffffffffffffffffffffffffffffffffffff831681528a6020522084815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4016115d2565b507f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b827f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7851b9cd0000000000000000000000000000000000000000000000000000000060005260046000fd5b823573ffffffffffffffffffffffffffffffffffffffff8116810361034b5781526020928301920161158a565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610e336117d37f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a561444f565b6040519182916020835260208301906139d1565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5761181e613a37565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576118b6613a14565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806118f56145fc565b925416911690810361037a57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156119825773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435611a786145fc565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615611b445760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610cba565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b3461034b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57611bc3613a14565b6024359060443567ffffffffffffffff811161034b57611be7903690600401613a5a565b91611c147fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b611c548482611c4e7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c095611c466145fc565b973691613dd3565b94614251565b803b611c5c57005b73ffffffffffffffffffffffffffffffffffffffff806020921693611cc960405194859384937f150b7a02000000000000000000000000000000000000000000000000000000008552166004840152600060248401528760448401526080606484015260848301906139d1565b03816000865af1908115610ebf57600091611d5b575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d2b57005b7fc215a7a10000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d602011611dd2575b81611d7460209383613c95565b81010312611dce5751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610eb457507fffffffff00000000000000000000000000000000000000000000000000000000611cdf565b5080fd5b3d9150611d67565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57611e11613a14565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0611e3e6145fc565b836000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff811693841561204a5773ffffffffffffffffffffffffffffffffffffffff81168095036120185782611e939185614727565b15611f41575b84600085858383526020527fdead00000000000000000000000000000000000000000000000000000000000060408320558082527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4005b7401000000000000000000000000000000000000000016158015611fb5575b611f6a5780611e99565b73ffffffffffffffffffffffffffffffffffffffff91507fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415611f60565b85857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b857fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b5761208636613b9a565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806120c96145fc565b925416911690810361037a575080841480159061221e575b6103505760005b8481106120f157005b6120fc818388614406565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361034b57600060209161212f610ff4868b8e614406565b826121996121c5612141898d8d614406565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613c95565b51925af115610ebf576000513d6122155750803b155b6121e857506001016120e8565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156121db565b50828414156120e1565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5761225f613a14565b73ffffffffffffffffffffffffffffffffffffffff8116156122c85773ffffffffffffffffffffffffffffffffffffffff166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526020604060002054604051908152f35b7faefbce4e0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602061234f6004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06143ab565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806123de6145fc565b925416911690810361037a57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a0811161245c57815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760206124ca6124c5613a14565b613d3a565b6040519015158152f35b3461034b5761255373ffffffffffffffffffffffffffffffffffffffff6124fa36613b2b565b9291939061252a7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0933691613cee565b92169081156117215782519260005b8481106125a3575050506000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154019055600080f35b6125ad8183614368565b51806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811661266a577fdead0000000000000000000000000000000000000000000000000000000000001461263d57908160019260005284602052856040600020558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a401612562565b7f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b576126a636613a88565b6126ae6145fc565b917f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308373ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff821603612758575b5050612734828286867fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613f56565b803b61273c57005b6112a3936040519361274f602086613c95565b600085526148ed565b61276191614511565b8483612705565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576112a36127a2613a14565b6127ce7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0614251565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760406128316147a7565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576004356128b5613a37565b6128bd6145fc565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361037a57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054161561297057005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610cba565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c9080158015612b61575b15612b2b575050610e3360005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b610e3391620186a0821015612b4e57612b4890620186a09261414d565b04612afb565b620186a0612b5c920461414d565b612afb565b508115612aee565b3461034b576112a3612b7a36613a88565b91612b836145fc565b7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308173ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603612c01575b50507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613f56565b612c0a91614511565b8581612bd9565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57612c48613a14565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80612c876145fc565b925416911690810361037a575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b3461034b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760043567ffffffffffffffff811161034b57612d47903690600401613a5a565b60243567ffffffffffffffff811161034b57612d67903690600401613a5a565b6044939193359173ffffffffffffffffffffffffffffffffffffffff8316830361034b576064359373ffffffffffffffffffffffffffffffffffffffff8516850361034b577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc612dd56145fc565b7f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb8354600181101561329a575060017f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb835573ffffffffffffffffffffffffffffffffffffffff169081613586575b50507fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f8ed2355fc3f859d445b81332ba1875c675be71b9fe1bab0a25be6436696b0ec780548216831790557f98ea984a1dd4b0fbb2764a2a70a93d7e6137ea3c70db196cc96460f50c0d1a1f80548216831790557f70a1033a668c0b93d699f00f1cf02b517801b7285ead3ea5fa8d9b43f89ed57180548216831790557f4f521d2bc326c534847f496e961505200b8e61c57a75e48fd6b97dc560e2c5a480548216831790557f0845b122e17f0ee9a0d1d2feeec009013976e8c85c80079e88858099492b187280548216831790557f3f01c033909a538299eeb8bb8b7a2d8e5ca8f4a58a90fe96d157768ed92ef21780548216831790557f2a55205a000000000000000000000000000000000000000000000000000000006000527f2d8b44ae6eaa7ac3b154622dbcfc94b3609ce793bb4cffd595b15ac18d28e5208054909116821790557f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf58547f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4939181101561329a575060017f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf585567ffffffffffffffff82116134575781906130868454613f03565b601f8111613533575b50600090601f831160011461349157600092613486575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b67ffffffffffffffff8111613457576131117f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a554613f03565b601f81116133d3575b506000601f82116001146132d757819293946000926132cc575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5555b73ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a691167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30907f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d54600181101561329a575073ffffffffffffffffffffffffffffffffffffffff9060017f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d55167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b013590508480613134565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a581527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216947fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a191805b8781106133bb575083600195969710613383575b505050811b017f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a555613186565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055848080613356565b90926020600181928686013581550194019101613342565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a56000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c8101916020841061344d575b601f0160051c01905b818110613441575061311a565b60008155600101613434565b909150819061342b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b0135905087806130a6565b90917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016918481526020812092815b81811061351b57509084600195949392106134e3575b505050811b0190556130d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690558780806134d6565b919360206001819287870135815501950192016134c0565b909150836000526020600020601f840160051c8101916020851061357c575b90601f859493920160051c01905b81811061356d575061308f565b60008155849350600101613560565b9091508190613552565b817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a38680612e42565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57613612613a14565b6024359073ffffffffffffffffffffffffffffffffffffffff811690811590811561383f575b507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06136626145fc565b9184600052816020526040600020549073ffffffffffffffffffffffffffffffffffffffff8216938415613811578486146137e3576136a2818686614727565b156137975750156137065774010000000000000000000000000000000000000000166136f2575b505b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b8360005260205280604060002055836136c9565b90740100000000000000000000000000000000000000008217809203613783575b5050826000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c26020526040600020827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556136cb565b846000526020526040600020558380613727565b8473ffffffffffffffffffffffffffffffffffffffff88927fc7563a18000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b847fb7fdc0100000000000000000000000000000000000000000000000000000000060005260045260246000fd5b867fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613869907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30614511565b83613638565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602061234f6004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613e94565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610e336117d37f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a461444f565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361034b576124ca6020917fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d613e0a565b60005b8381106139c15750506000910152565b81810151838201526020016139b1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093613a0d815180928187528780880191016139ae565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361034b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361034b57565b9181601f8401121561034b5782359167ffffffffffffffff831161034b576020838186019501011161034b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261034b5760043573ffffffffffffffffffffffffffffffffffffffff8116810361034b579060243573ffffffffffffffffffffffffffffffffffffffff8116810361034b579060443590565b9181601f8401121561034b5782359167ffffffffffffffff831161034b576020808501948460051b01011161034b57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261034b5760043573ffffffffffffffffffffffffffffffffffffffff8116810361034b57916024359067ffffffffffffffff821161034b57613b9691600401613afa565b9091565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261034b5760043567ffffffffffffffff811161034b5781613be391600401613afa565b9290929160243567ffffffffffffffff811161034b5781613c0691600401613afa565b929092916044359067ffffffffffffffff821161034b57613b9691600401613afa565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261034b5760043567ffffffffffffffff811161034b5781613c7291600401613afa565b929092916024359067ffffffffffffffff821161034b57613b9691600401613afa565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761345757604052565b67ffffffffffffffff81116134575760051b60200190565b929190613cfa81613cd6565b93613d086040519586613c95565b602085838152019160051b810192831161034b57905b828210613d2a57505050565b8135815260209182019101613d1e565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115613d925773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b67ffffffffffffffff811161345757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192613ddf82613d99565b91613ded6040519384613c95565b82948184528183011161034b578281602093846000960137010152565b907fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114613d92577f01ffc9a7000000000000000000000000000000000000000000000000000000008114613e8d5760005260205260ff6040600020541690565b5050600190565b816000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116156106c557740100000000000000000000000000000000000000001615613d92576002916000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b90600182811c92168015613f4c575b6020831014613f1d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691613f12565b909273ffffffffffffffffffffffffffffffffffffffff169283156106f357846000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff81169384156138115773ffffffffffffffffffffffffffffffffffffffff811680950361411b5782613fca9185614727565b15614060575b5050836000528060205282604060002055828203614011575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b600101816000528060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190558260005260205260406000206001815401905538613fe9565b74010000000000000000000000000000000000000000161580156140d5575b6140895780613fd0565b8273ffffffffffffffffffffffffffffffffffffffff86927fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50846000526002820160205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff8216141561407f565b86857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b8181029291811591840414171561416057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156141e95750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b9073ffffffffffffffffffffffffffffffffffffffff1690811561172157826000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff811661433a577fdead0000000000000000000000000000000000000000000000000000000000001461430c57600190836000528060205282604060002055826000520160205260406000206001815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4565b827f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b805182101561437c5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8160005260205273ffffffffffffffffffffffffffffffffffffffff604060002054169081156143d9575090565b7fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b919081101561437c5760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361034b5790565b9081602091031261034b5751801515810361034b5790565b906040519182600082549261446384613f03565b80845293600181169081156144d1575060011461448a575b5061448892500383613c95565b565b90506000929192526020600020906000915b8183106144b5575050906020614488928201013861447b565b602091935080600191548385890101520191019091849261449c565b602093506144889592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013861447b565b5473ffffffffffffffffffffffffffffffffffffffff1690811515806145f2575b61453a575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610ebf576000916145d3575b50156145a65750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6145ec915060203d602011611182576111748183613c95565b3861459d565b50813b1515614532565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561471857323314801561471d575b614718577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115614687575b5061468457503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa908115610ebf576000916146f9575b503861467a565b614712915060203d602011611182576111748183613c95565b386146f2565b503390565b5060183610614643565b73ffffffffffffffffffffffffffffffffffffffff8083169084161492918315614752575b50505090565b600392935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff6040600020541638808061474c565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156148db5732331480156148e3575b6148db5780331490811561483a575b50614809576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161034b5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa908115610ebf576000916148bc575b50386147fd565b6148d5915060203d602011611182576111748183613c95565b386148b5565b506000903690565b50601836106147ee565b73ffffffffffffffffffffffffffffffffffffffff9061495f826020949597969716958360405196879586957f150b7a020000000000000000000000000000000000000000000000000000000087521660048601521660248401528760448401526080606484015260848301906139d1565b03816000865af1908115610ebf576000916149c3575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d2b575050565b6020813d602011614a36575b816149dc60209383613c95565b81010312611dce5751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610eb457507fffffffff00000000000000000000000000000000000000000000000000000000614975565b3d91506149cf56fea2646970667358221220f6116f7c0511610c9644b036eb2a9296af0341cc7edfab5e2ef45f87407f92ed64736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461392757806306fdde03146138cc578063081812fc1461386f578063095ea7b3146135db5780630e07f85414612cf8578063114ba8ee14612c1157806323b872dd14612b695780632a55205a14612a765780632b4c9f1614612a075780632f2ff15d1461287b57806331e66e1e146127f857806340c10f191461276857806342842e0e146126985780634684d7e9146124d4578063572b6c051461248957806361ba27da1461236d5780636352211e146122f257806370a082311461222857806373c8a9581461207857806379cc679014611dda5780638832e6e314611b8c5780638bb9c5bf14611a1d5780638da5cb5b146119ac5780638dc251e31461187f57806391d14854146117e757806395d89b41146117785780639da5e832146114f7578063a0c76f6214611486578063a22cb46514611326578063b0ccc31e146112b5578063b88d4fde14611193578063c3666c3614610f56578063c77c695514610ecb578063c87b56dd14610d18578063d539139314610cbf578063d547741f14610b36578063e1a8bf2c14610afa578063e985e9c514610a46578063f247296514610821578063f2fde38b1461072d578063f3993d11146103a75763f7ba94bd146101ea57600080fd5b3461034b576101f836613c29565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806102396145fc565b925416911690810361037a57508181036103505760005b81811061025957005b610264818387614406565b3573ffffffffffffffffffffffffffffffffffffffff811680910361034b5761028e828587614406565b359081471061031957600080809381935af13d15610311573d906102b182613d99565b916102bf6040519384613c95565b82523d6000602084013e5b156102d85750600101610250565b8051156102e757602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b6060906102ca565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576103de613a14565b6103e6613a37565b9060443567ffffffffffffffff811161034b57610407903690600401613afa565b926104106145fc565b907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308273ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff82160361071d575b505073ffffffffffffffffffffffffffffffffffffffff7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c091169384156106f3576104b58382849694614727565b9373ffffffffffffffffffffffffffffffffffffffff600095159216945b87811061053857878787818114158061052f575b6104ed57005b60009081527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040808220805485900390559181522080549091019055005b508215156104e7565b610543818986614406565b35806000528260205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106c557880361069357846105bc575b509081600192600052836020528860406000205588887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4016104d3565b7401000000000000000000000000000000000000000016158015610630575b6105e5578961057b565b8673ffffffffffffffffffffffffffffffffffffffff877fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff871614156105db565b50867f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b827fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f86c870670000000000000000000000000000000000000000000000000000000060005260046000fd5b61072691614511565b8582610467565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610764613a14565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc9061078e6145fc565b9073ffffffffffffffffffffffffffffffffffffffff80845416921682810361037a575073ffffffffffffffffffffffffffffffffffffffff16918282036107d257005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b3461034b5761082f36613b2b565b917fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09161085a6145fc565b92610866848483614727565b9373ffffffffffffffffffffffffffffffffffffffff600095159416945b8681106108cb5786868161089457005b6000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154039055600080f35b6108d6818886614406565b35806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106c5578803610693578661096f575b509081600192600052846020527fdead0000000000000000000000000000000000000000000000000000000000006040600020556000887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a401610884565b74010000000000000000000000000000000000000000161580156109e3575b610998578861090e565b8673ffffffffffffffffffffffffffffffffffffffff847fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff8416141561098e565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610a7d613a14565b73ffffffffffffffffffffffffffffffffffffffff610a9a613a37565b91166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576020604051620186a08152f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57600435610b70613a37565b610b786145fc565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361037a57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610c2a57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610e0a6000600435610d79817fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06143ab565b5073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6541660405180809581947ff724dad700000000000000000000000000000000000000000000000000000000835230600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa908115610ebf57600091610e37575b60405160208082528190610e33908201856139d1565b0390f35b3d8083833e610e468183613c95565b810190602081830312610eb75780519067ffffffffffffffff8211610ebb570181601f82011215610eb757805192610e7d84613d99565b92610e8b6040519485613c95565b84845260208584010111610eb45750610e3392610eae91602080850191016139ae565b90610e1d565b80fd5b8280fd5b8380fd5b6040513d6000823e3d90fd5b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c060043560005260205260207fdead00000000000000000000000000000000000000000000000000000000000060406000205414604051908152f35b3461034b57610f6436613b9a565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610fa96145fc565b925416911690810361037a5750808214801590611189575b6103505760005b828110610fd157005b73ffffffffffffffffffffffffffffffffffffffff610ff9610ff483858a614406565b614416565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610ebf5760009161115b575b501561112e575073ffffffffffffffffffffffffffffffffffffffff611088610ff483858a614406565b1690611098610ff4828689614406565b916110a482878b614406565b3592813b1561034b57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610ebf5760019261111d575b5001610fc8565b600061112891613c95565b88611116565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61117c915060203d8111611182575b6111748183613c95565b810190614437565b8961105e565b503d61116a565b5082821415610fc1565b3461034b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576111ca613a14565b6111d2613a37565b60443560643567ffffffffffffffff811161034b576111f5903690600401613a5a565b9290936112006145fc565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8216036112a5575b5050611286848484887fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613f56565b823b61128e57005b6112a39561129d913691613dd3565b936148ed565b005b6112ae91614511565b8685611257565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5761135d613a14565b602435908115159182810361034b57611457575b73ffffffffffffffffffffffffffffffffffffffff8061138f6145fc565b169116918183146114295760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c38252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507fe4215c6a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611481817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30614511565b611371565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b3461034b5761150536613c29565b91929161153a7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b9061418f565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09361156581613cd6565b936115736040519586613c95565b818552602085019160051b81019036821161034b57915b81831061174b57505050906115a0913691613cee565b9181519280518403610350577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1939260005b8481106115db57005b73ffffffffffffffffffffffffffffffffffffffff6115fa8284614368565b511680156117215761160c8285614368565b5190816000528560205260406000205473ffffffffffffffffffffffffffffffffffffffff81166116f3577fdead000000000000000000000000000000000000000000000000000000000000146116c55790600192918160005286602052806040600020556040600073ffffffffffffffffffffffffffffffffffffffff831681528a6020522084815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4016115d2565b507f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b827f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7851b9cd0000000000000000000000000000000000000000000000000000000060005260046000fd5b823573ffffffffffffffffffffffffffffffffffffffff8116810361034b5781526020928301920161158a565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610e336117d37f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a561444f565b6040519182916020835260208301906139d1565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5761181e613a37565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576118b6613a14565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806118f56145fc565b925416911690810361037a57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156119825773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435611a786145fc565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615611b445760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610cba565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b3461034b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57611bc3613a14565b6024359060443567ffffffffffffffff811161034b57611be7903690600401613a5a565b91611c147fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b611c548482611c4e7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c095611c466145fc565b973691613dd3565b94614251565b803b611c5c57005b73ffffffffffffffffffffffffffffffffffffffff806020921693611cc960405194859384937f150b7a02000000000000000000000000000000000000000000000000000000008552166004840152600060248401528760448401526080606484015260848301906139d1565b03816000865af1908115610ebf57600091611d5b575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d2b57005b7fc215a7a10000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d602011611dd2575b81611d7460209383613c95565b81010312611dce5751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610eb457507fffffffff00000000000000000000000000000000000000000000000000000000611cdf565b5080fd5b3d9150611d67565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57611e11613a14565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0611e3e6145fc565b836000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff811693841561204a5773ffffffffffffffffffffffffffffffffffffffff81168095036120185782611e939185614727565b15611f41575b84600085858383526020527fdead00000000000000000000000000000000000000000000000000000000000060408320558082527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4005b7401000000000000000000000000000000000000000016158015611fb5575b611f6a5780611e99565b73ffffffffffffffffffffffffffffffffffffffff91507fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415611f60565b85857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b857fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b5761208636613b9a565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806120c96145fc565b925416911690810361037a575080841480159061221e575b6103505760005b8481106120f157005b6120fc818388614406565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361034b57600060209161212f610ff4868b8e614406565b826121996121c5612141898d8d614406565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613c95565b51925af115610ebf576000513d6122155750803b155b6121e857506001016120e8565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156121db565b50828414156120e1565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5761225f613a14565b73ffffffffffffffffffffffffffffffffffffffff8116156122c85773ffffffffffffffffffffffffffffffffffffffff166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526020604060002054604051908152f35b7faefbce4e0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602061234f6004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06143ab565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806123de6145fc565b925416911690810361037a57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a0811161245c57815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760206124ca6124c5613a14565b613d3a565b6040519015158152f35b3461034b5761255373ffffffffffffffffffffffffffffffffffffffff6124fa36613b2b565b9291939061252a7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0933691613cee565b92169081156117215782519260005b8481106125a3575050506000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154019055600080f35b6125ad8183614368565b51806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811661266a577fdead0000000000000000000000000000000000000000000000000000000000001461263d57908160019260005284602052856040600020558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a401612562565b7f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461034b576126a636613a88565b6126ae6145fc565b917f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308373ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff821603612758575b5050612734828286867fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613f56565b803b61273c57005b6112a3936040519361274f602086613c95565b600085526148ed565b61276191614511565b8483612705565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576112a36127a2613a14565b6127ce7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226115346145fc565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0614251565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760406128316147a7565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576004356128b5613a37565b6128bd6145fc565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361037a57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054161561297057005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610cba565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c9080158015612b61575b15612b2b575050610e3360005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b610e3391620186a0821015612b4e57612b4890620186a09261414d565b04612afb565b620186a0612b5c920461414d565b612afb565b508115612aee565b3461034b576112a3612b7a36613a88565b91612b836145fc565b7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308173ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603612c01575b50507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613f56565b612c0a91614511565b8581612bd9565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57612c48613a14565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80612c876145fc565b925416911690810361037a575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b3461034b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b5760043567ffffffffffffffff811161034b57612d47903690600401613a5a565b60243567ffffffffffffffff811161034b57612d67903690600401613a5a565b6044939193359173ffffffffffffffffffffffffffffffffffffffff8316830361034b576064359373ffffffffffffffffffffffffffffffffffffffff8516850361034b577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc612dd56145fc565b7f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb8354600181101561329a575060017f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb835573ffffffffffffffffffffffffffffffffffffffff169081613586575b50507fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f8ed2355fc3f859d445b81332ba1875c675be71b9fe1bab0a25be6436696b0ec780548216831790557f98ea984a1dd4b0fbb2764a2a70a93d7e6137ea3c70db196cc96460f50c0d1a1f80548216831790557f70a1033a668c0b93d699f00f1cf02b517801b7285ead3ea5fa8d9b43f89ed57180548216831790557f4f521d2bc326c534847f496e961505200b8e61c57a75e48fd6b97dc560e2c5a480548216831790557f0845b122e17f0ee9a0d1d2feeec009013976e8c85c80079e88858099492b187280548216831790557f3f01c033909a538299eeb8bb8b7a2d8e5ca8f4a58a90fe96d157768ed92ef21780548216831790557f2a55205a000000000000000000000000000000000000000000000000000000006000527f2d8b44ae6eaa7ac3b154622dbcfc94b3609ce793bb4cffd595b15ac18d28e5208054909116821790557f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf58547f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4939181101561329a575060017f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf585567ffffffffffffffff82116134575781906130868454613f03565b601f8111613533575b50600090601f831160011461349157600092613486575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b67ffffffffffffffff8111613457576131117f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a554613f03565b601f81116133d3575b506000601f82116001146132d757819293946000926132cc575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5555b73ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a691167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30907f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d54600181101561329a575073ffffffffffffffffffffffffffffffffffffffff9060017f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d55167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b013590508480613134565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a581527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216947fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a191805b8781106133bb575083600195969710613383575b505050811b017f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a555613186565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055848080613356565b90926020600181928686013581550194019101613342565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a56000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c8101916020841061344d575b601f0160051c01905b818110613441575061311a565b60008155600101613434565b909150819061342b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b0135905087806130a6565b90917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016918481526020812092815b81811061351b57509084600195949392106134e3575b505050811b0190556130d8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690558780806134d6565b919360206001819287870135815501950192016134c0565b909150836000526020600020601f840160051c8101916020851061357c575b90601f859493920160051c01905b81811061356d575061308f565b60008155849350600101613560565b9091508190613552565b817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a38680612e42565b3461034b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57613612613a14565b6024359073ffffffffffffffffffffffffffffffffffffffff811690811590811561383f575b507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06136626145fc565b9184600052816020526040600020549073ffffffffffffffffffffffffffffffffffffffff8216938415613811578486146137e3576136a2818686614727565b156137975750156137065774010000000000000000000000000000000000000000166136f2575b505b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b8360005260205280604060002055836136c9565b90740100000000000000000000000000000000000000008217809203613783575b5050826000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c26020526040600020827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556136cb565b846000526020526040600020558380613727565b8473ffffffffffffffffffffffffffffffffffffffff88927fc7563a18000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b847fb7fdc0100000000000000000000000000000000000000000000000000000000060005260045260246000fd5b867fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613869907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30614511565b83613638565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57602061234f6004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613e94565b3461034b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b57610e336117d37f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a461444f565b3461034b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034b576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361034b576124ca6020917fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d613e0a565b60005b8381106139c15750506000910152565b81810151838201526020016139b1565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093613a0d815180928187528780880191016139ae565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361034b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361034b57565b9181601f8401121561034b5782359167ffffffffffffffff831161034b576020838186019501011161034b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261034b5760043573ffffffffffffffffffffffffffffffffffffffff8116810361034b579060243573ffffffffffffffffffffffffffffffffffffffff8116810361034b579060443590565b9181601f8401121561034b5782359167ffffffffffffffff831161034b576020808501948460051b01011161034b57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261034b5760043573ffffffffffffffffffffffffffffffffffffffff8116810361034b57916024359067ffffffffffffffff821161034b57613b9691600401613afa565b9091565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261034b5760043567ffffffffffffffff811161034b5781613be391600401613afa565b9290929160243567ffffffffffffffff811161034b5781613c0691600401613afa565b929092916044359067ffffffffffffffff821161034b57613b9691600401613afa565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261034b5760043567ffffffffffffffff811161034b5781613c7291600401613afa565b929092916024359067ffffffffffffffff821161034b57613b9691600401613afa565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761345757604052565b67ffffffffffffffff81116134575760051b60200190565b929190613cfa81613cd6565b93613d086040519586613c95565b602085838152019160051b810192831161034b57905b828210613d2a57505050565b8135815260209182019101613d1e565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115613d925773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b67ffffffffffffffff811161345757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192613ddf82613d99565b91613ded6040519384613c95565b82948184528183011161034b578281602093846000960137010152565b907fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114613d92577f01ffc9a7000000000000000000000000000000000000000000000000000000008114613e8d5760005260205260ff6040600020541690565b5050600190565b816000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116156106c557740100000000000000000000000000000000000000001615613d92576002916000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b90600182811c92168015613f4c575b6020831014613f1d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691613f12565b909273ffffffffffffffffffffffffffffffffffffffff169283156106f357846000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff81169384156138115773ffffffffffffffffffffffffffffffffffffffff811680950361411b5782613fca9185614727565b15614060575b5050836000528060205282604060002055828203614011575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b600101816000528060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190558260005260205260406000206001815401905538613fe9565b74010000000000000000000000000000000000000000161580156140d5575b6140895780613fd0565b8273ffffffffffffffffffffffffffffffffffffffff86927fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50846000526002820160205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff8216141561407f565b86857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b8181029291811591840414171561416057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156141e95750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b9073ffffffffffffffffffffffffffffffffffffffff1690811561172157826000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff811661433a577fdead0000000000000000000000000000000000000000000000000000000000001461430c57600190836000528060205282604060002055826000520160205260406000206001815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4565b827f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b805182101561437c5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8160005260205273ffffffffffffffffffffffffffffffffffffffff604060002054169081156143d9575090565b7fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b919081101561437c5760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361034b5790565b9081602091031261034b5751801515810361034b5790565b906040519182600082549261446384613f03565b80845293600181169081156144d1575060011461448a575b5061448892500383613c95565b565b90506000929192526020600020906000915b8183106144b5575050906020614488928201013861447b565b602091935080600191548385890101520191019091849261449c565b602093506144889592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013861447b565b5473ffffffffffffffffffffffffffffffffffffffff1690811515806145f2575b61453a575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610ebf576000916145d3575b50156145a65750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6145ec915060203d602011611182576111748183613c95565b3861459d565b50813b1515614532565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561471857323314801561471d575b614718577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115614687575b5061468457503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa908115610ebf576000916146f9575b503861467a565b614712915060203d602011611182576111748183613c95565b386146f2565b503390565b5060183610614643565b73ffffffffffffffffffffffffffffffffffffffff8083169084161492918315614752575b50505090565b600392935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff6040600020541638808061474c565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156148db5732331480156148e3575b6148db5780331490811561483a575b50614809576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161034b5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa908115610ebf576000916148bc575b50386147fd565b6148d5915060203d602011611182576111748183613c95565b386148b5565b506000903690565b50601836106147ee565b73ffffffffffffffffffffffffffffffffffffffff9061495f826020949597969716958360405196879586957f150b7a020000000000000000000000000000000000000000000000000000000087521660048601521660248401528760448401526080606484015260848301906139d1565b03816000865af1908115610ebf576000916149c3575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d2b575050565b6020813d602011614a36575b816149dc60209383613c95565b81010312611dce5751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610eb457507fffffffff00000000000000000000000000000000000000000000000000000000614975565b3d91506149cf56fea2646970667358221220f6116f7c0511610c9644b036eb2a9296af0341cc7edfab5e2ef45f87407f92ed64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
