{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC1155FullBurn",
  "sourceName": "contracts/token/ERC1155/preset/ERC1155FullBurn.sol",
  "abi": [
    {
      "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"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ERC1155BalanceOfAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC1155BalanceOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC1155InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1155MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC1155NonApproved",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "ERC1155SafeBatchTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC1155SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC1155SelfApprovalForAll",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1155TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "ERC2981IncorrectRoyaltyPercentage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC2981IncorrectRoyaltyReceiver",
      "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": "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": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotMetadataResolver",
      "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": "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": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [],
      "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": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "owners",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "balances",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchBurnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "tokenURIs",
          "type": "string[]"
        }
      ],
      "name": "batchSetTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "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": "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": [],
      "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": "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": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeDeliver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "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": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "tokenURI",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "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": "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": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "metadataURI",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052346105f15761424e80380380610019816105f6565b928339810160a0828203126105f15781516001600160401b0381116105f1578161004491840161061b565b602083015190916001600160401b0382116105f15761006491840161061b565b60408301519092906001600160a01b038116908190036105f15760608201516001600160a01b03811692908390036105f15760800151926001600160a01b03841684036105f15733610592575b7fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460ff199081166001908117909255636cdb3d1360e11b6000527f55f2baa086bcadb68563d14bf0ae4964705cc6bc8fd476a834dc8cb4e83cc92a805490911690911790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3080546001600160a01b0319169094179093558051906001600160401b0382116104685760008051602061420e8339815191525490600182811c92168015610588575b60208310146104485781601f84931161050b575b50602090601f83116001146104895760009261047e575b50508160011b916000199060031b1c19161760008051602061420e833981519152555b83516001600160401b0381116104685760008051602061422e83398151915254600181811c9116801561045e575b602082101461044857601f81116103d6575b50602094601f82116001146103555794819293949560009261034a575b50508160011b916000199060031b1c19161760008051602061422e833981519152555b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a680546001600160a01b0319169190911790556303a24d0760e21b60009081526020919091526040808220805460ff199081166001908117909255631464324b60e21b84528284208054821683179055633a2ae73360e21b8452828420805482168317905563921ed8d160e01b8452828420805482168317905563152a902d60e11b84529282902080549093161790915560809190915251613b87908161068782396080518181816122b501528181612f7501526135340152f35b01519050388061024c565b601f1982169560008051602061422e833981519152600052806000209160005b8881106103be575083600195969798106103a5575b505050811b0160008051602061422e8339815191525561026f565b015160001960f88460031b161c1916905538808061038a565b91926020600181928685015181550194019201610375565b60008051602061422e8339815191526000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c8101916020841061043e575b601f0160051c01905b818110610432575061022f565b60008155600101610425565b909150819061041c565b634e487b7160e01b600052602260045260246000fd5b90607f169061021d565b634e487b7160e01b600052604160045260246000fd5b0151905038806101cc565b60008051602061420e83398151915260009081528281209350601f198516905b8181106104f357509084600195949392106104da575b505050811b0160008051602061420e833981519152556101ef565b015160001960f88460031b161c191690553880806104bf565b929360206001819287860151815501950193016104a9565b60008051602061420e8339815191526000529091507f565de0cfbb8a3f70c938db1afc5562690ff7c55773c7234a649300f58e3b30bc601f840160051c8101916020851061057e575b90601f859493920160051c01905b81811061056f57506101b5565b60008155849350600101610562565b9091508190610554565b91607f16916101a1565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36100b1565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761046857604052565b81601f820112156105f1578051906001600160401b0382116104685761064a601f8301601f19166020016105f6565b92828452602083830101116105f15760005b82811061067157505060206000918301015290565b8060208092840101518282870101520161065c56fe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e14612b2757806301ffc9a714612ac157806306fdde0314612a665780630d6a5bbb146128045780630e89341c146126ad578063114ba8ee146125ae578063124d91e514612493578063162094c4146123cc5780632a55205a146122d95780632b4c9f161461226a5780632eb2c2d614611e445780632f2ff15d14611cb85780634e1273f414611bda578063572b6c0514611b8f5780635cfa929714611ac557806361ba27da146119a95780636706467b1461184157806373c8a9581461169157806380534934146114ff5780638bb9c5bf146113905780638da5cb5b1461131f5780638dc251e3146111f257806391d148541461115a57806395d89b41146110e7578063a0c76f6214611076578063a22cb46514610f16578063b0ccc31e14610ea5578063c3666c3614610c68578063d539139314610c0f578063d547741f14610a86578063e1a8bf2c14610a4a578063e8ab9ccc1461083e578063e985e9c51461078a578063f242432a14610458578063f2fde38b146103645763f7ba94bd146101a757600080fd5b34610308576101b536612ca0565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101f661351d565b9254169116908103610337575081810361030d5760005b81811061021657005b610221818387612fbd565b3573ffffffffffffffffffffffffffffffffffffffff81168091036103085761024b828587612fbd565b35908147106102d657600080809381935af13d156102ce573d9061026e82612ea7565b9161027c6040519384612dd3565b82523d6000602084013e5b15610295575060010161020d565b8051156102a457602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b606090610287565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085761039b612b95565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc906103c561351d565b9073ffffffffffffffffffffffffffffffffffffffff808454169216828103610337575073ffffffffffffffffffffffffffffffffffffffff169182820361040957005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346103085760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085761048f612b95565b610497612bb8565b604435906064359260843567ffffffffffffffff8111610308576104bf903690600401612c72565b926104c861351d565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff82160361077a575b505073ffffffffffffffffffffffffffffffffffffffff8216947f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e861286156107505761056b828783613743565b156107065773ffffffffffffffffffffffffffffffffffffffff916105948a8a878a879661398a565b169416918583867fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518c81528d6020820152a43b6105d157005b6020926105df913691612ee1565b9261063560405194859384937ff23a6e610000000000000000000000000000000000000000000000000000000085526004850152602484015287604484015288606484015260a0608484015260a4830190612bfe565b03816000865af19081156106fa577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916106cb575b50160361069857005b7f40f39d380000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b6106ed915060203d6020116106f3575b6106e58183612dd3565b81019061370b565b8661068f565b503d6106db565b6040513d6000823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff8681847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b7fb5e890150000000000000000000000000000000000000000000000000000000060005260046000fd5b6107839161389f565b878561051f565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576107c1612b95565b73ffffffffffffffffffffffffffffffffffffffff6107de612bb8565b91166000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e861360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103085760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760043567ffffffffffffffff81116103085761088d903690600401612c41565b60243567ffffffffffffffff8111610308576108ad903690600401612c41565b929060443567ffffffffffffffff8111610308576108cf903690600401612c41565b93909160643567ffffffffffffffff8111610308576108f2903690600401612c72565b9390916108fd61351d565b97610928897fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226131fc565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86129461095381612e43565b97610961604051998a612dd3565b818952602089019160051b81019036821161030857915b818310610a1d575050509161099661099e926109a695943691612e5b565b973691612e5b565b933691612ee1565b9183519480518614801590610a12575b61030d5760005b8681106109c657005b80610a0c8673ffffffffffffffffffffffffffffffffffffffff6109ec6001958b6132be565b51166109f884876132be565b51610a0385896132be565b51918d8a61339c565b016109bd565b5081518614156109b6565b823573ffffffffffffffffffffffffffffffffffffffff8116810361030857815260209283019201610978565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576020604051620186a08152f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857600435610ac0612bb8565b610ac861351d565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361033757507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610b7a57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461030857610c7636612d44565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610cbb61351d565b92541691169081036103375750808214801590610e9b575b61030d5760005b828110610ce357005b73ffffffffffffffffffffffffffffffffffffffff610d0b610d0683858a612fbd565b61337b565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa9081156106fa57600091610e6d575b5015610e40575073ffffffffffffffffffffffffffffffffffffffff610d9a610d0683858a612fbd565b1690610daa610d06828689612fbd565b91610db682878b612fbd565b3592813b1561030857606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156106fa57600192610e2f575b5001610cda565b6000610e3a91612dd3565b88610e28565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610e8e915060203d8111610e94575b610e868183612dd3565b810190613505565b89610d70565b503d610e7c565b5082821415610cd3565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857610f4d612b95565b602435908115159182810361030857611047575b73ffffffffffffffffffffffffffffffffffffffff80610f7f61351d565b169116918183146110195760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86138252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507ffb0fdf610000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611071817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3061389f565b610f61565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576111566111427f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a56130f5565b604051918291602083526020830190612bfe565b0390f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611191612bb8565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611229612b95565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061126861351d565b925416911690810361033757507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156112f55773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226004356113eb61351d565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff60406000205416156114b75760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610c0a565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b346103085760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611536612b95565b60243567ffffffffffffffff811161030857611556903690600401612c41565b9060443567ffffffffffffffff811161030857611577903690600401612c41565b907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612936115a261351d565b9483820361030d576115b5868883613743565b156116475760005b82811061161b575050946116167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb9373ffffffffffffffffffffffffffffffffffffffff93600098856040519687961699169785613351565b0390a4005b8061164161162c600193868a612fbd565b35611638838989612fbd565b35908b866137c3565b016115bd565b73ffffffffffffffffffffffffffffffffffffffff8781887f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b346103085761169f36612d44565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806116e261351d565b92541691169081036103375750808414801590611837575b61030d5760005b84811061170a57005b611715818388612fbd565b3573ffffffffffffffffffffffffffffffffffffffff811690818103610308576000602091611748610d06868b8e612fbd565b826117b26117de61175a898d8d612fbd565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612dd3565b51925af1156106fa576000513d61182e5750803b155b6118015750600101611701565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156117f4565b50828414156116fa565b346103085761184f36612ca0565b80839492930361030d5773ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361197b57916000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301915b8581106118cb57005b8481101561194c578060051b820135838112156103085782019081359167ffffffffffffffff8311610308576020018236038113610308577f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b600193611932848b8a612fbd565b359261194360405192839283612f18565b0390a2016118c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22060671000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611a1a61351d565b925416911690810361033757507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a08111611a9857815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103085760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611afc612b95565b6064359067ffffffffffffffff821161030857611b20611b8d923690600401612c72565b611b7f611b2b61351d565b92611b56847fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226131fc565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612923691612ee1565b92604435926024359261339c565b005b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576020611bd0611bcb612b95565b612f5e565b6040519015158152f35b3461030857611be836612ca0565b9192917f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612919080850361030d57611c1e85612e43565b94611c2c6040519687612dd3565b8086527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611c5982612e43565b0136602088013760005b818110611c8057604051602080825281906111569082018a612d10565b80611ca7611c94610d06600194868b612fbd565b611c9f838789612fbd565b359088612fcd565b611cb1828a6132be565b5201611c63565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857600435611cf2612bb8565b611cfa61351d565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361033757507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff6040600020541615611dad57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610c0a565b346103085760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611e7b612b95565b611e83612bb8565b60443567ffffffffffffffff811161030857611ea3903690600401612c41565b929060643567ffffffffffffffff811161030857611ec5903690600401612c41565b9360843567ffffffffffffffff811161030857611ee6903690600401612c72565b939091611ef161351d565b957f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308773ffffffffffffffffffffffffffffffffffffffff831673ffffffffffffffffffffffffffffffffffffffff82160361225a575b505073ffffffffffffffffffffffffffffffffffffffff8216967f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612881561075057898b0361030d57611f9b828483613743565b156122105760005b8b81106121e1575050928992888a73ffffffffffffffffffffffffffffffffffffffff9897947f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a61200699169a8b92169889936040519182918d8c8b85613351565b0390a43b61201057005b60209461202561202d92612035953691612e5b565b993691612e5b565b953691612ee1565b926120e560405194859384937fbc197c810000000000000000000000000000000000000000000000000000000085526004850152602484015260a060448401526120b561208560a485018b612d10565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85820301606486015288612d10565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016084850152612bfe565b03816000875af19081156106fa577fbc197c8100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916121c2575b50160361214857005b6121be9061218e6040519485947fc287817e0000000000000000000000000000000000000000000000000000000086526004860152606060248601526064850190612d10565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016044850152612d10565b0390fd5b6121db915060203d6020116106f3576106e58183612dd3565b8661213f565b8061220a8c6122008f946121f8816001978d612fbd565b35928d612fbd565b359088888761398a565b01611fa3565b73ffffffffffffffffffffffffffffffffffffffff8381847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b6122639161389f565b8987611f48565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c90801580156123c4575b1561238e57505061115660005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b61115691620186a08210156123b1576123ab90620186a0926132d2565b0461235e565b620186a06123bf92046132d2565b61235e565b508115612351565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760243567ffffffffffffffff81116103085761241b903690600401612c72565b73ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361197b5761248e7f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b916040519182916004359583612f18565b0390a2005b346103085760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576124ca612b95565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86126024356044356124f961351d565b92612505848683613743565b156125645773ffffffffffffffffffffffffffffffffffffffff8086846125537fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62968860009b6040986137c3565b8451968752602087015216941692a4005b73ffffffffffffffffffffffffffffffffffffffff8581867f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760043573ffffffffffffffffffffffffffffffffffffffff81168103610308577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061263c61351d565b9254169116908103610337575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308577f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6546040517ff724dad700000000000000000000000000000000000000000000000000000000815230600480830191909152356024820152906000908290604490829073ffffffffffffffffffffffffffffffffffffffff165afa9081156106fa5760009161277c575b6040516020808252819061115690820185612bfe565b3d8083833e61278b8183612dd3565b8101906020818303126127fc5780519067ffffffffffffffff8211612800570181601f820112156127fc578051926127c284612ea7565b926127d06040519485612dd3565b848452602085840101116127f95750611156926127f39160208085019101612bdb565b90612766565b80fd5b8280fd5b8380fd5b346103085760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085761283b612b95565b60243567ffffffffffffffff81116103085761285b903690600401612c41565b909160443567ffffffffffffffff81116103085761287d903690600401612c41565b93909160643567ffffffffffffffff811161030857612911936128a7612919923690600401612c72565b9590916129096128b561351d565b966128e0887fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226131fc565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612993691612e5b565b983691612e5b565b943691612ee1565b9173ffffffffffffffffffffffffffffffffffffffff8216948515612a3c578651908551820361030d5760005b828110612a125750505073ffffffffffffffffffffffffffffffffffffffff1690846000837f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb60405160408152806129b36129a58d6040840190612d10565b82810360208401528b612d10565b0390a43b6129bd57005b6120e59160209160405193849283927fbc197c8100000000000000000000000000000000000000000000000000000000845260048401526000602484015260a060448401526120b561208560a485018b612d10565b80612a36612a226001938c6132be565b51612a2d838b6132be565b5190888661362e565b01612946565b7f021149bd0000000000000000000000000000000000000000000000000000000060005260046000fd5b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576111566111427f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a46130f5565b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361030857611bd0602091613046565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576020612b8d612b63612b95565b602435907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612612fcd565b604051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361030857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361030857565b60005b838110612bee5750506000910152565b8181015183820152602001612bde565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612c3a81518092818752878088019101612bdb565b0116010190565b9181601f840112156103085782359167ffffffffffffffff8311610308576020808501948460051b01011161030857565b9181601f840112156103085782359167ffffffffffffffff8311610308576020838186019501011161030857565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103085760043567ffffffffffffffff81116103085781612ce991600401612c41565b929092916024359067ffffffffffffffff821161030857612d0c91600401612c41565b9091565b906020808351928381520192019060005b818110612d2e5750505090565b8251845260209384019390920191600101612d21565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103085760043567ffffffffffffffff81116103085781612d8d91600401612c41565b9290929160243567ffffffffffffffff81116103085781612db091600401612c41565b929092916044359067ffffffffffffffff821161030857612d0c91600401612c41565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612e1457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111612e145760051b60200190565b929190612e6781612e43565b93612e756040519586612dd3565b602085838152019160051b810192831161030857905b828210612e9757505050565b8135815260209182019101612e8b565b67ffffffffffffffff8111612e1457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612eed82612ea7565b91612efb6040519384612dd3565b829481845281830111610308578281602093846000960137010152565b90601f836040947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093602086528160208701528686013760008582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115612fb65773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b919081101561194c5760051b0190565b909173ffffffffffffffffffffffffffffffffffffffff83161561301c5760005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205490565b7fca2434a50000000000000000000000000000000000000000000000000000000060005260046000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff0000000000000000000000000000000000000000000000000000000081146130ef577f01ffc9a70000000000000000000000000000000000000000000000000000000081146130e9576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b906040519160008154918260011c926001811680156131f2575b6020851081146131c557848752869392918115613185575060011461313e575b5061313c92500383612dd3565b565b90506000929192526020600020906000915b81831061316957505090602061313c928201013861312f565b6020919350806001915483858901015201910190918492613150565b6020935061313c9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013861312f565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f169361310f565b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156132565750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b805182101561194c5760209160051b010190565b818102929181159184041417156132e557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116103085760209260051b809284830137010190565b929061336a906133789593604086526040860191613314565b926020818503910152613314565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036103085790565b94919092939473ffffffffffffffffffffffffffffffffffffffff8216938415612a3c576133e187878573ffffffffffffffffffffffffffffffffffffffff9561362e565b1690836000837fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518a81528b6020820152a43b613423575b5050505050565b61347e9160209160405193849283927ff23a6e6100000000000000000000000000000000000000000000000000000000845260048401526000602484015287604484015288606484015260a0608484015260a4830190612bfe565b03816000865af19081156106fa577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916134e6575b50160361069857808061341c565b6134ff915060203d6020116106f3576106e58183612dd3565b386134d8565b90816020910312610308575180151581036103085790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561361f573233148015613624575b61361f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c908033149081156135a5575b5061337857503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa9081156106fa57600091613600575b503861359b565b613619915060203d602011610e9457610e868183612dd3565b386135f9565b503390565b5060183610613564565b90918361363c575b50505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff84166000526020526040600020549380850194808611156136b257505060005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205538808080613636565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b9081602091031261030857517fffffffff00000000000000000000000000000000000000000000000000000000811681036103085790565b73ffffffffffffffffffffffffffffffffffffffff808316908416149291831561376e575b50505090565b600192935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff60406000205416388080613768565b9091836137d05750505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260406000205493808503948086101561384657505060005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205538808080613636565b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b5473ffffffffffffffffffffffffffffffffffffffff169081151580613980575b6138c8575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa9081156106fa57600091613961575b50156139345750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61397a915060203d602011610e9457610e868183612dd3565b3861392b565b50813b15156138c0565b91929084613999575050505050565b8160005282602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054908582039180831015613af5575073ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff821603613a11575b5061341c565b8260005283602052604060002073ffffffffffffffffffffffffffffffffffffffff8616600052602052604060002054958087019680881115613a9757505060009283526020938452604080842073ffffffffffffffffffffffffffffffffffffffff928316855280865281852093909355941682529091522055388080808080613a0b565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201526024810186905260448101919091526064810191909152608490fd5b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92909216600483015260248201849052604482015260648101869052608490fdfea264697066735822122013da43c8f47a7cab8fd08c41afb1f9f7c9cc3de700d6fdf78bd308ab473ea0af64736f6c634300081e00337ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a47ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e14612b2757806301ffc9a714612ac157806306fdde0314612a665780630d6a5bbb146128045780630e89341c146126ad578063114ba8ee146125ae578063124d91e514612493578063162094c4146123cc5780632a55205a146122d95780632b4c9f161461226a5780632eb2c2d614611e445780632f2ff15d14611cb85780634e1273f414611bda578063572b6c0514611b8f5780635cfa929714611ac557806361ba27da146119a95780636706467b1461184157806373c8a9581461169157806380534934146114ff5780638bb9c5bf146113905780638da5cb5b1461131f5780638dc251e3146111f257806391d148541461115a57806395d89b41146110e7578063a0c76f6214611076578063a22cb46514610f16578063b0ccc31e14610ea5578063c3666c3614610c68578063d539139314610c0f578063d547741f14610a86578063e1a8bf2c14610a4a578063e8ab9ccc1461083e578063e985e9c51461078a578063f242432a14610458578063f2fde38b146103645763f7ba94bd146101a757600080fd5b34610308576101b536612ca0565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101f661351d565b9254169116908103610337575081810361030d5760005b81811061021657005b610221818387612fbd565b3573ffffffffffffffffffffffffffffffffffffffff81168091036103085761024b828587612fbd565b35908147106102d657600080809381935af13d156102ce573d9061026e82612ea7565b9161027c6040519384612dd3565b82523d6000602084013e5b15610295575060010161020d565b8051156102a457602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b606090610287565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085761039b612b95565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc906103c561351d565b9073ffffffffffffffffffffffffffffffffffffffff808454169216828103610337575073ffffffffffffffffffffffffffffffffffffffff169182820361040957005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346103085760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085761048f612b95565b610497612bb8565b604435906064359260843567ffffffffffffffff8111610308576104bf903690600401612c72565b926104c861351d565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff82160361077a575b505073ffffffffffffffffffffffffffffffffffffffff8216947f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e861286156107505761056b828783613743565b156107065773ffffffffffffffffffffffffffffffffffffffff916105948a8a878a879661398a565b169416918583867fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518c81528d6020820152a43b6105d157005b6020926105df913691612ee1565b9261063560405194859384937ff23a6e610000000000000000000000000000000000000000000000000000000085526004850152602484015287604484015288606484015260a0608484015260a4830190612bfe565b03816000865af19081156106fa577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916106cb575b50160361069857005b7f40f39d380000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b6106ed915060203d6020116106f3575b6106e58183612dd3565b81019061370b565b8661068f565b503d6106db565b6040513d6000823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff8681847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b7fb5e890150000000000000000000000000000000000000000000000000000000060005260046000fd5b6107839161389f565b878561051f565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576107c1612b95565b73ffffffffffffffffffffffffffffffffffffffff6107de612bb8565b91166000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e861360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103085760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760043567ffffffffffffffff81116103085761088d903690600401612c41565b60243567ffffffffffffffff8111610308576108ad903690600401612c41565b929060443567ffffffffffffffff8111610308576108cf903690600401612c41565b93909160643567ffffffffffffffff8111610308576108f2903690600401612c72565b9390916108fd61351d565b97610928897fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226131fc565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86129461095381612e43565b97610961604051998a612dd3565b818952602089019160051b81019036821161030857915b818310610a1d575050509161099661099e926109a695943691612e5b565b973691612e5b565b933691612ee1565b9183519480518614801590610a12575b61030d5760005b8681106109c657005b80610a0c8673ffffffffffffffffffffffffffffffffffffffff6109ec6001958b6132be565b51166109f884876132be565b51610a0385896132be565b51918d8a61339c565b016109bd565b5081518614156109b6565b823573ffffffffffffffffffffffffffffffffffffffff8116810361030857815260209283019201610978565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576020604051620186a08152f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857600435610ac0612bb8565b610ac861351d565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361033757507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610b7a57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461030857610c7636612d44565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610cbb61351d565b92541691169081036103375750808214801590610e9b575b61030d5760005b828110610ce357005b73ffffffffffffffffffffffffffffffffffffffff610d0b610d0683858a612fbd565b61337b565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa9081156106fa57600091610e6d575b5015610e40575073ffffffffffffffffffffffffffffffffffffffff610d9a610d0683858a612fbd565b1690610daa610d06828689612fbd565b91610db682878b612fbd565b3592813b1561030857606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156106fa57600192610e2f575b5001610cda565b6000610e3a91612dd3565b88610e28565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610e8e915060203d8111610e94575b610e868183612dd3565b810190613505565b89610d70565b503d610e7c565b5082821415610cd3565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857610f4d612b95565b602435908115159182810361030857611047575b73ffffffffffffffffffffffffffffffffffffffff80610f7f61351d565b169116918183146110195760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86138252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507ffb0fdf610000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611071817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3061389f565b610f61565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576111566111427f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a56130f5565b604051918291602083526020830190612bfe565b0390f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611191612bb8565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611229612b95565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061126861351d565b925416911690810361033757507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156112f55773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226004356113eb61351d565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff60406000205416156114b75760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610c0a565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b346103085760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611536612b95565b60243567ffffffffffffffff811161030857611556903690600401612c41565b9060443567ffffffffffffffff811161030857611577903690600401612c41565b907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612936115a261351d565b9483820361030d576115b5868883613743565b156116475760005b82811061161b575050946116167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb9373ffffffffffffffffffffffffffffffffffffffff93600098856040519687961699169785613351565b0390a4005b8061164161162c600193868a612fbd565b35611638838989612fbd565b35908b866137c3565b016115bd565b73ffffffffffffffffffffffffffffffffffffffff8781887f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b346103085761169f36612d44565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806116e261351d565b92541691169081036103375750808414801590611837575b61030d5760005b84811061170a57005b611715818388612fbd565b3573ffffffffffffffffffffffffffffffffffffffff811690818103610308576000602091611748610d06868b8e612fbd565b826117b26117de61175a898d8d612fbd565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612dd3565b51925af1156106fa576000513d61182e5750803b155b6118015750600101611701565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156117f4565b50828414156116fa565b346103085761184f36612ca0565b80839492930361030d5773ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361197b57916000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301915b8581106118cb57005b8481101561194c578060051b820135838112156103085782019081359167ffffffffffffffff8311610308576020018236038113610308577f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b600193611932848b8a612fbd565b359261194360405192839283612f18565b0390a2016118c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22060671000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611a1a61351d565b925416911690810361033757507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a08111611a9857815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103085760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611afc612b95565b6064359067ffffffffffffffff821161030857611b20611b8d923690600401612c72565b611b7f611b2b61351d565b92611b56847fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226131fc565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612923691612ee1565b92604435926024359261339c565b005b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576020611bd0611bcb612b95565b612f5e565b6040519015158152f35b3461030857611be836612ca0565b9192917f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612919080850361030d57611c1e85612e43565b94611c2c6040519687612dd3565b8086527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611c5982612e43565b0136602088013760005b818110611c8057604051602080825281906111569082018a612d10565b80611ca7611c94610d06600194868b612fbd565b611c9f838789612fbd565b359088612fcd565b611cb1828a6132be565b5201611c63565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857600435611cf2612bb8565b611cfa61351d565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361033757507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff6040600020541615611dad57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610c0a565b346103085760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857611e7b612b95565b611e83612bb8565b60443567ffffffffffffffff811161030857611ea3903690600401612c41565b929060643567ffffffffffffffff811161030857611ec5903690600401612c41565b9360843567ffffffffffffffff811161030857611ee6903690600401612c72565b939091611ef161351d565b957f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308773ffffffffffffffffffffffffffffffffffffffff831673ffffffffffffffffffffffffffffffffffffffff82160361225a575b505073ffffffffffffffffffffffffffffffffffffffff8216967f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612881561075057898b0361030d57611f9b828483613743565b156122105760005b8b81106121e1575050928992888a73ffffffffffffffffffffffffffffffffffffffff9897947f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a61200699169a8b92169889936040519182918d8c8b85613351565b0390a43b61201057005b60209461202561202d92612035953691612e5b565b993691612e5b565b953691612ee1565b926120e560405194859384937fbc197c810000000000000000000000000000000000000000000000000000000085526004850152602484015260a060448401526120b561208560a485018b612d10565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85820301606486015288612d10565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016084850152612bfe565b03816000875af19081156106fa577fbc197c8100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916121c2575b50160361214857005b6121be9061218e6040519485947fc287817e0000000000000000000000000000000000000000000000000000000086526004860152606060248601526064850190612d10565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016044850152612d10565b0390fd5b6121db915060203d6020116106f3576106e58183612dd3565b8661213f565b8061220a8c6122008f946121f8816001978d612fbd565b35928d612fbd565b359088888761398a565b01611fa3565b73ffffffffffffffffffffffffffffffffffffffff8381847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b6122639161389f565b8987611f48565b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c90801580156123c4575b1561238e57505061115660005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b61115691620186a08210156123b1576123ab90620186a0926132d2565b0461235e565b620186a06123bf92046132d2565b61235e565b508115612351565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760243567ffffffffffffffff81116103085761241b903690600401612c72565b73ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361197b5761248e7f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b916040519182916004359583612f18565b0390a2005b346103085760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576124ca612b95565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86126024356044356124f961351d565b92612505848683613743565b156125645773ffffffffffffffffffffffffffffffffffffffff8086846125537fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62968860009b6040986137c3565b8451968752602087015216941692a4005b73ffffffffffffffffffffffffffffffffffffffff8581867f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085760043573ffffffffffffffffffffffffffffffffffffffff81168103610308577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061263c61351d565b9254169116908103610337575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308577f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6546040517ff724dad700000000000000000000000000000000000000000000000000000000815230600480830191909152356024820152906000908290604490829073ffffffffffffffffffffffffffffffffffffffff165afa9081156106fa5760009161277c575b6040516020808252819061115690820185612bfe565b3d8083833e61278b8183612dd3565b8101906020818303126127fc5780519067ffffffffffffffff8211612800570181601f820112156127fc578051926127c284612ea7565b926127d06040519485612dd3565b848452602085840101116127f95750611156926127f39160208085019101612bdb565b90612766565b80fd5b8280fd5b8380fd5b346103085760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103085761283b612b95565b60243567ffffffffffffffff81116103085761285b903690600401612c41565b909160443567ffffffffffffffff81116103085761287d903690600401612c41565b93909160643567ffffffffffffffff811161030857612911936128a7612919923690600401612c72565b9590916129096128b561351d565b966128e0887fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226131fc565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612993691612e5b565b983691612e5b565b943691612ee1565b9173ffffffffffffffffffffffffffffffffffffffff8216948515612a3c578651908551820361030d5760005b828110612a125750505073ffffffffffffffffffffffffffffffffffffffff1690846000837f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb60405160408152806129b36129a58d6040840190612d10565b82810360208401528b612d10565b0390a43b6129bd57005b6120e59160209160405193849283927fbc197c8100000000000000000000000000000000000000000000000000000000845260048401526000602484015260a060448401526120b561208560a485018b612d10565b80612a36612a226001938c6132be565b51612a2d838b6132be565b5190888661362e565b01612946565b7f021149bd0000000000000000000000000000000000000000000000000000000060005260046000fd5b346103085760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576111566111427f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a46130f5565b346103085760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361030857611bd0602091613046565b346103085760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610308576020612b8d612b63612b95565b602435907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612612fcd565b604051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361030857565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361030857565b60005b838110612bee5750506000910152565b8181015183820152602001612bde565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612c3a81518092818752878088019101612bdb565b0116010190565b9181601f840112156103085782359167ffffffffffffffff8311610308576020808501948460051b01011161030857565b9181601f840112156103085782359167ffffffffffffffff8311610308576020838186019501011161030857565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103085760043567ffffffffffffffff81116103085781612ce991600401612c41565b929092916024359067ffffffffffffffff821161030857612d0c91600401612c41565b9091565b906020808351928381520192019060005b818110612d2e5750505090565b8251845260209384019390920191600101612d21565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103085760043567ffffffffffffffff81116103085781612d8d91600401612c41565b9290929160243567ffffffffffffffff81116103085781612db091600401612c41565b929092916044359067ffffffffffffffff821161030857612d0c91600401612c41565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612e1457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111612e145760051b60200190565b929190612e6781612e43565b93612e756040519586612dd3565b602085838152019160051b810192831161030857905b828210612e9757505050565b8135815260209182019101612e8b565b67ffffffffffffffff8111612e1457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612eed82612ea7565b91612efb6040519384612dd3565b829481845281830111610308578281602093846000960137010152565b90601f836040947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093602086528160208701528686013760008582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115612fb65773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b919081101561194c5760051b0190565b909173ffffffffffffffffffffffffffffffffffffffff83161561301c5760005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205490565b7fca2434a50000000000000000000000000000000000000000000000000000000060005260046000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff0000000000000000000000000000000000000000000000000000000081146130ef577f01ffc9a70000000000000000000000000000000000000000000000000000000081146130e9576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b906040519160008154918260011c926001811680156131f2575b6020851081146131c557848752869392918115613185575060011461313e575b5061313c92500383612dd3565b565b90506000929192526020600020906000915b81831061316957505090602061313c928201013861312f565b6020919350806001915483858901015201910190918492613150565b6020935061313c9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013861312f565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f169361310f565b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156132565750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b805182101561194c5760209160051b010190565b818102929181159184041417156132e557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116103085760209260051b809284830137010190565b929061336a906133789593604086526040860191613314565b926020818503910152613314565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036103085790565b94919092939473ffffffffffffffffffffffffffffffffffffffff8216938415612a3c576133e187878573ffffffffffffffffffffffffffffffffffffffff9561362e565b1690836000837fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518a81528b6020820152a43b613423575b5050505050565b61347e9160209160405193849283927ff23a6e6100000000000000000000000000000000000000000000000000000000845260048401526000602484015287604484015288606484015260a0608484015260a4830190612bfe565b03816000865af19081156106fa577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916134e6575b50160361069857808061341c565b6134ff915060203d6020116106f3576106e58183612dd3565b386134d8565b90816020910312610308575180151581036103085790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561361f573233148015613624575b61361f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c908033149081156135a5575b5061337857503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa9081156106fa57600091613600575b503861359b565b613619915060203d602011610e9457610e868183612dd3565b386135f9565b503390565b5060183610613564565b90918361363c575b50505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff84166000526020526040600020549380850194808611156136b257505060005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205538808080613636565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b9081602091031261030857517fffffffff00000000000000000000000000000000000000000000000000000000811681036103085790565b73ffffffffffffffffffffffffffffffffffffffff808316908416149291831561376e575b50505090565b600192935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff60406000205416388080613768565b9091836137d05750505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260406000205493808503948086101561384657505060005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205538808080613636565b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b5473ffffffffffffffffffffffffffffffffffffffff169081151580613980575b6138c8575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa9081156106fa57600091613961575b50156139345750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61397a915060203d602011610e9457610e868183612dd3565b3861392b565b50813b15156138c0565b91929084613999575050505050565b8160005282602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054908582039180831015613af5575073ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff821603613a11575b5061341c565b8260005283602052604060002073ffffffffffffffffffffffffffffffffffffffff8616600052602052604060002054958087019680881115613a9757505060009283526020938452604080842073ffffffffffffffffffffffffffffffffffffffff928316855280865281852093909355941682529091522055388080808080613a0b565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201526024810186905260448101919091526064810191909152608490fd5b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92909216600483015260248201849052604482015260648101869052608490fdfea264697066735822122013da43c8f47a7cab8fd08c41afb1f9f7c9cc3de700d6fdf78bd308ab473ea0af64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
