Overview ERC721
Total Supply:
7,715 P2E

Holders:
4,669
Profile Summary
Blockchain:
Holesky (17000)

Contract Source Code Verified (Partial Match)
Contract Name:
N2MERC721

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 17766 runs

Created At:
Fri, 06 Oct 2023 08:49:24 GMT
README.sol
@nfts2me
contracts
important
README.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "libraryAddress",
        "type": "address"
      },
      {
        "internalType": "address payable",
        "name": "factoryAddress",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "filtered",
        "type": "address"
      }
    ],
    "name": "AddressFiltered",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CantLowerCurrentPercentages",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CantRevealYetWaitABitToBeAbleToRedeem",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CantSetBaseURIAndPlaceholderAtTheSameTime",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CollectionSoldOut",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ContractMetadataURIAlreadyFixed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InputSizeMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidAmount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidDropDate",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidInputSizesDontMatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidMintFee",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidMintFeeForFreeMinting",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidMintingType",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidPercentageOrDiscountValues",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidPhaseWithoutDate",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidRevenuePercentage",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidTokenId",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaxPerAddressExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MetadataAlreadyFixed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NewBaseURICantBeEmpty",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NewPlaceholderCantBeEmpty",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoBaseURINorPlaceholderSet",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NonTransferrableSoulboundNFT",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotEnoughAmountToMint",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NothingToRedeem",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyAffiliateOrN2M",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyOwnerOrN2M",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PresaleInvalidMintingType",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PresaleNotOpen",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PublicSaleNotOpen",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ReentrancyGuard",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "RoyaltyFeeTooHigh",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SaleFinished",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SignatureExpired",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SignatureMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenAlreadyMinted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TotalSupplyMustBeGreaterThanZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "WaitUntilDropDate",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "AffiliateSell",
    "type": "event"
  },
  {
    "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": "delegator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fromDelegate",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "toDelegate",
        "type": "address"
      }
    ],
    "name": "DelegateChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "delegate",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "previousBalance",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "newBalance",
        "type": "uint256"
      }
    ],
    "name": "DelegateVotesChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "EIP712DomainChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "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"
  },
  {
    "stateMutability": "payable",
    "type": "fallback"
  },
  {
    "inputs": [],
    "name": "CLOCK_MODE",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "to",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "soulbound",
        "type": "bool"
      }
    ],
    "name": "airdropRandom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "to",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "soulbound",
        "type": "bool"
      }
    ],
    "name": "airdropSequential",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "to",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "tokenIds",
        "type": "uint256[]"
      },
      {
        "internalType": "bool",
        "name": "soulbound",
        "type": "bool"
      }
    ],
    "name": "airdropSpecify",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "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": [],
    "name": "clock",
    "outputs": [
      {
        "internalType": "uint48",
        "name": "",
        "type": "uint48"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatee",
        "type": "address"
      }
    ],
    "name": "delegate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatee",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "nonce",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "expiry",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "delegateBySig",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "delegates",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "eip712Domain",
    "outputs": [
      {
        "internalType": "bytes1",
        "name": "fields",
        "type": "bytes1"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "version",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "chainId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "verifyingContract",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint256[]",
        "name": "extensions",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "timepoint",
        "type": "uint256"
      }
    ],
    "name": "getPastTotalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "timepoint",
        "type": "uint256"
      }
    ],
    "name": "getPastVotes",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "getVotes",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "tokenName",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "tokenSymbol",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "iMintPrice",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "baseURICIDHash",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "placeholderImageCIDHash",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint16",
            "name": "percentage",
            "type": "uint16"
          }
        ],
        "internalType": "struct IN2M_ERCStorage.RevenueAddress[]",
        "name": "revenueAddresses",
        "type": "tuple[]"
      },
      {
        "internalType": "address",
        "name": "iErc20PaymentAddress",
        "type": "address"
      },
      {
        "internalType": "uint32",
        "name": "iTotalSupply",
        "type": "uint32"
      },
      {
        "internalType": "uint16",
        "name": "iRoyaltyFee",
        "type": "uint16"
      },
      {
        "internalType": "bool",
        "name": "soulboundCollection",
        "type": "bool"
      },
      {
        "internalType": "enum IN2M_ERCStorage.MintingType",
        "name": "iMintingType",
        "type": "uint8"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isMetadataFixed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxPerAddress",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "customURICIDHash",
        "type": "bytes32"
      },
      {
        "internalType": "bool",
        "name": "soulbound",
        "type": "bool"
      }
    ],
    "name": "mintCustomURITo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "tokenIds",
        "type": "uint256[]"
      },
      {
        "internalType": "bool",
        "name": "freeMinting",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "customFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "soulbound",
        "type": "bool"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "mintPresale",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintPrice",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintRandomTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "mintRandomTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "tokenIds",
        "type": "uint256[]"
      }
    ],
    "name": "mintSpecifyTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "tokenIds",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "mintSpecifyTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "affiliate",
        "type": "address"
      }
    ],
    "name": "mintTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintTo",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "n2mVersion",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "nonces",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "collectionOwner",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "redeemRandom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "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": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60c0346200013f57601f62005d8b38819003918201601f19168301916001600160401b03831184841017620001435780849260409485528339810103126200013f578051906001600160a01b039081831683036200013f576020015190811681036200013f576080525f5460ff8160081c16620000ea5760ff80821603620000af575b5060a052604051615c3390816200015882396080518181816133ec0152614e77015260a05181615bcb0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f62000082565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610015575b36615bc057005b5f3560e01c806301ffc9a71461030457806306fdde03146102ff578063081812fc146102fa578063095ea7b3146102f55780630de77eb8146102f05780631249c58b146102eb57806318160ddd146102e65780631d7df191146102e15780631ff4cc7d146102dc57806323b872dd146102d75780632a55205a146102d25780633644e515146102cd5780633a46b1a8146102c857806342842e0e146102c3578063438b1b4b146102be5780634402d254146102b9578063449a52f8146102b45780634a50aa85146102af5780634bf5d7e9146102aa5780635066e5c2146102a5578063587cde1e146102a05780635c19a95c1461029b5780636352211e14610296578063639814e0146102915780636817c76c1461028c57806368fdda33146102875780636ad542401461028257806370a082311461027d57806371e6775f146102785780637ecebe001461027357806384b0196e1461026e5780638da5cb5b146102695780638e539e8c1461026457806391ddadf41461025f57806394bf804d1461025a57806395d89b41146102555780639ab24eb0146102505780639d13a5ba1461024b578063a0712d6814610246578063a22cb46514610241578063b88d4fde1461023c578063be172edf14610237578063c3cda52014610232578063c87b56dd1461022d578063cb93c48f14610228578063e985e9c5146102235763fefa5d720361000e5761216d565b61212f565b612113565b611ffb565b611ea8565b611dd9565b611d6d565b611c59565b611c3b565b611ba0565b611b3f565b611a98565b611a6b565b611a40565b611939565b61191f565b611858565b61177c565b611577565b611550565b611479565b61134c565b61128f565b61126b565b61124d565b611227565b6111e9565b61114a565b610f89565b610f36565b610f0b565b610ebb565b610d41565b610c51565b610b3a565b610b18565b610adf565b610aad565b6108ac565b61087c565b610859565b610797565b61074f565b610608565b6105b9565b6104be565b610337565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361033357565b5f80fd5b346103335760206003193601126103335760207fffffffff0000000000000000000000000000000000000000000000000000000060043561037781610309565b167f2a55205a0000000000000000000000000000000000000000000000000000000081149081156103ae575b506040519015158152f35b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491508115610412575b81156103e8575b505f6103a3565b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150145f6103e1565b7f5b5e139f00000000000000000000000000000000000000000000000000000000811491506103da565b5f91031261033357565b5f5b8381106104575750505f910152565b8181015183820152602001610448565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936104a381518092818752878088019101610446565b0116010190565b9060206104bb928181520190610467565b90565b34610333575f806003193601126105b657604051816078546104df81613c94565b9081845260209260019182811690815f14610576575060011461051d575b6105198561050d81890382610df7565b604051918291826104aa565b0390f35b929450607883527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac45b82841061056357505050816105199361050d92820101935f6104fd565b8054858501870152928501928101610546565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686860152505050151560051b820101915061050d816105195f6104fd565b80fd5b346103335760206003193601126103335760206105d7600435612745565b6001600160a01b0360405191168152f35b6001600160a01b0381160361033357565b60c43590610606826105e8565b565b3461033357604060031936011261033357600435610625816105e8565b602435610631826159de565b61063a81612725565b6001600160a01b0380821680918516146106e55733149081156106d3575b50156106695761066791613fc6565b005b608460405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b6106df91503390614045565b5f610658565b608460405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152fd5b34610333575f6003193601126103335760335415801590610778575b6020906040519015158152f35b506020600360ff60455460301c1661078f81613452565b14905061076b565b5f600319360112610333576107ad603a54615730565b6107b561561a565b60455460ff8160301c166107c881613452565b61082f576045805463ffffffff191663ffffffff92831660010183169081179091559060455491818360581c161061080557610667911633614738565b60046040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b60046040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b34610333575f60031936011261033357602063ffffffff60455416604051908152f35b604060031936011261033357610667600435610897816105e8565b602435906108a782603a546157a9565b6149b7565b5f806003193601126105b65760016108d5336001600160a01b03165f52604160205260405f2090565b0154335f908152604160205260409020548015610a57576001610909336001600160a01b03165f52604160205260405f2090565b0154431115610a2d5761099f826109dc93409081156109df575b50846001610942336001600160a01b03165f52604160205260405f2090565b015584610960336001600160a01b03165f52604160205260405f2090565b5560455460481c61ffff16926109997fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff60455416604555565b33614a88565b7fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff6affff0000000000000000006045549260481b16911617604555565b80f35b610a0f915060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0043166127c7565b43811015610a1f575b405f610923565b610a289061277e565b610a18565b60046040517f93c4a003000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9890af60000000000000000000000000000000000000000000000000000000008152fd5b600319606091011261033357600435610a99816105e8565b90602435610aa6816105e8565b9060443590565b3461033357610667610abe36610a81565b91610ac8336159de565b610ada610ad58433614136565b6140c5565b614203565b34610333576040600319360112610333576040612710610b0a61ffff60455460381c1660243561364d565b048151903082526020820152f35b34610333575f600319360112610333576020610b32612f1a565b604051908152f35b3461033357604060031936011261033357600435610b57816105e8565b60243590610b7665ffffffffffff610b6e436132a1565b16831061217c565b6001600160a01b035f9116815260df602052610b95604082209261331e565b91805482938160058111610bfa575b5090602094610bb39284612c9b565b80610be15750505b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b91610bed8492936127ab565b928152200154811c610bbb565b94610c04866130be565b8603958611610c4c57602095610bb39385875263ffffffff80838a8a20015416908516105f14610c3a5750915b91925094610ba4565b929150610c46906127b9565b90610c31565b6126ad565b3461033357610ca2610c6236610a81565b90610c6c336159de565b60405192610c7984610da3565b5f8452610c85336159de565b610c92610ad58433614136565b610c9d838383614203565b6145b2565b15610ca957005b60405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b0390fd5b600319606091011261033357600435610d30816105e8565b90602435906044356104bb816105e8565b610667610d58610d5036610d18565b819391615495565b61483b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111610d9e57604052565b610d5d565b6020810190811067ffffffffffffffff821117610d9e57604052565b6040810190811067ffffffffffffffff821117610d9e57604052565b60a0810190811067ffffffffffffffff821117610d9e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610d9e57604052565b6040519061060682610dbf565b67ffffffffffffffff8111610d9e5760051b60200190565b9080601f83011215610333576020908235610e7781610e45565b93610e856040519586610df7565b818552838086019260051b820101928311610333578301905b828210610eac575050505090565b81358152908301908301610e9e565b604060031936011261033357600435610ed3816105e8565b6024359067ffffffffffffffff821161033357610ef7610667923690600401610e5d565b90610f06603a548351906157a9565b614cf9565b604060031936011261033357610667600435610f26816105e8565b60243590610d5882603a546157a9565b606060031936011261033357600435610f4e816105e8565b6024359067ffffffffffffffff821161033357610f72610667923690600401610e5d565b90610f06604435610f82816105e8565b8351615495565b34610333575f600319360112610333574365ffffffffffff610faa436132a1565b1603610ff557610519604051610fbf81610dbf565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c740000006020820152604051918291826104aa565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f646500000000000000006044820152fd5b67ffffffffffffffff8111610d9e57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261107f82611039565b9161108d6040519384610df7565b829481845281830111610333578281602093845f960137010152565b9080601f83011215610333578160206104bb93359101611073565b9181601f840112156103335782359167ffffffffffffffff8311610333576020808501948460061b01011161033357565b60e4359063ffffffff8216820361033357565b61ffff81160361033357565b610104359061060682611108565b8015150361033357565b610124359061060682611122565b6101443590600482101561033357565b6101606003193601126103335767ffffffffffffffff600435818111610333576111789036906004016110a9565b602435828111610333576111909036906004016110a9565b9060a435928311610333576111ac6106679336906004016110c4565b6111b46105f9565b6111bc6110f5565b916111c5611114565b936111ce61112c565b956111d761113a565b9760843591606435916044359161345c565b34610333576020600319360112610333576020600435611208816105e8565b6001600160a01b038091165f5260de825260405f205416604051908152f35b3461033357602060031936011261033357610667600435611247816105e8565b33612212565b346103335760206003193601126103335760206105d7600435612725565b34610333575f60031936011261033357602061ffff60455460481c16604051908152f35b34610333575f600319360112610333576020603a54604051908152f35b9080601f830112156103335760209082356112c681610e45565b936112d46040519586610df7565b818552838086019260051b820101928311610333578301905b8282106112fb575050505090565b8380918335611309816105e8565b8152019101906112ed565b6040600319820112610333576004359067ffffffffffffffff82116103335761133f916004016112ac565b906024356104bb81611122565b61135536611314565b90611371611361614e39565b6001600160a01b03163314614dee565b604580549260ff8460301c1661138681613452565b61082f5763ffffffff938461139e85518284166127c7565b9160581c1610610805578251925f5b8481106113b657005b80836114166113d76113ca60019587614d42565b516001600160a01b031690565b896113f56113e98a5463ffffffff1690565b60010163ffffffff1690565b61140f8163ffffffff1663ffffffff196045541617604555565b1690614738565b611421575b016113ad565b611474611449611435875463ffffffff1690565b63ffffffff165f52604360205260405f2090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b61141b565b606060031936011261033357600435611491816105e8565b6044359061149e82611122565b6114a9603a54615730565b6114b161561a565b60455490600360ff8360301c166114c781613452565b0361082f576045805463ffffffff191663ffffffff93841660010184169081179091559160455492818460581c161061080557611505921690614738565b611536575b60243561153361151f60455463ffffffff1690565b63ffffffff165f52604460205260405f2090565b55005b61154b61144961143560455463ffffffff1690565b61150a565b34610333576020600319360112610333576020610b32600435611572816105e8565b613ec2565b60606003193601126103335767ffffffffffffffff60048035828111610333576115a490369083016112ac565b91602435908111610333576115bc9036908301610e5d565b604435926115c984611122565b6115d1614ea8565b80519260458054600260ff8260301c166115ea81613452565b036117535763ffffffff9081811690826116058851846127c7565b9160581c161061172a5785518703611701579061163791818816011663ffffffff1663ffffffff196045541617604555565b5f5b85811061164257005b61164c8186614d42565b511580156116d6575b6116ad57808761167e61166d6113ca60019589614d42565b611677848a614d42565b5190614738565b611689575b01611639565b6116a86114496116998389614d42565b515f52604360205260405f2090565b611683565b826040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b506116e18186614d42565b5182546116fb9060581c63ffffffff165b63ffffffff1690565b10611655565b836040517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b836040517f5fd48f91000000000000000000000000000000000000000000000000000000008152fd5b826040517f64151c75000000000000000000000000000000000000000000000000000000008152fd5b34610333576020600319360112610333576001600160a01b036004356117a1816105e8565b165f5260e1602052602060405f2054604051908152f35b919361180e6001600160a01b0392957f0f00000000000000000000000000000000000000000000000000000000000000855261180060209760e08988015260e0870190610467565b908582036040870152610467565b9360608401521660808201525f60a082015260c08183039101528180845192838152019301915f5b828110611844575050505090565b835185529381019392810192600101611836565b34610333575f6003193601126103335760aa541580611915575b156118d15760405161188381610dbf565b600781527f4e465473324d650000000000000000000000000000000000000000000000000060208201526118b5613f8d565b906105196118c161306c565b60405193849330914691866117b8565b606460405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b5060ab5415611872565b34610333575f6003193601126103335760206105d76133ae565b346103335760206003193601126103335761197060043561196b65ffffffffffff611963436132a1565b16821061217c565b61331e565b60e054905f8291600584116119d6575b61198a9350612c21565b5f8161199d5750506040515f8152602090f35b60e06119aa6020936127ab565b91527f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f0154811c610bbb565b91926119e1816130be565b8103908111610c4c5761198a9360e0835263ffffffff80837f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f015416908516105f14611a2e575091611980565b929150611a3a906127b9565b90611980565b34610333575f600319360112610333576020611a5b436132a1565b65ffffffffffff60405191168152f35b604060031936011261033357610667600435611a92602435611a8c816105e8565b82615495565b3361483b565b34610333575f806003193601126105b65760405181607954611ab981613c94565b9081845260209260019182811690815f146105765750600114611ae6576105198561050d81890382610df7565b929450607983527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d7915b828410611b2c57505050816105199361050d92820101935f6104fd565b8054858501870152928501928101611b0f565b34610333576020600319360112610333576001600160a01b03600435611b64816105e8565b165f5260df60205260207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff611b9760405f2061281b565b16604051908152f35b61010060031936011261033357600435611bb9816105e8565b67ffffffffffffffff60243581811161033357611bda903690600401610e5d565b91604435611be781611122565b60c43590611bf482611122565b60e43594848611610333573660238701121561033357856004013594851161033357366024868801011161033357602461066796019360a435926084359260643592614ef1565b602060031936011261033357610667600435611a9281603a546157a9565b3461033357604060031936011261033357600435611c76816105e8565b602435611c8281611122565b611c8b826159de565b6001600160a01b03821691823314611d295781611cc7611cf792335f52607d60205260405f20906001600160a01b03165f5260205260405f2090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b606460405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b3461033357608060031936011261033357600435611d8a816105e8565b60243590611d97826105e8565b6044356064359267ffffffffffffffff8411610333573660238501121561033357611dcf610ca2943690602481600401359101611073565b92610c85336159de565b611de236611314565b90611deb614ea8565b8051906045549260ff8460301c1693611e0385613452565b600180950361082f5763ffffffff8082169181611e2087856127c7565b9160581c161061080557611e4991818616011663ffffffff1663ffffffff196045541617604555565b611e52436127ab565b405f5b848110611e5e57005b80611e6a879284614c6e565b84611e8182611e7c6113ca868b614d42565b614738565b611e8d575b5001611e55565b611449611ea2915f52604360205260405f2090565b5f611e86565b346103335760c060031936011261033357600435611ec5816105e8565b6064359060243560443560ff8416840361033357804211611fb757611f87611fb2916106679560405190611f6f82611f436020820195898b886060919493926001600160a01b0360808301967fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845216602083015260408201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610df7565b611f8260a435936084359351902061302b565b612d01565b91611fac836001600160a01b03165f5260e160205260405f2090815491600183019055565b146121c7565b612212565b606460405162461bcd60e51b815260206004820152601860248201527f566f7465733a207369676e6174757265206578706972656400000000000000006044820152fd5b3461033357602060031936011261033357600435612035612030825f52607a6020526001600160a01b0360405f205416151590565b6126da565b604051907f01284a4600000000000000000000000000000000000000000000000000000000825260048201525f908181602481305afa90811561210e578291612087575b6040518061051984826104aa565b90503d8083833e6120988183610df7565b8101906020818303126121065780519067ffffffffffffffff821161210a570181601f82011215612106578051926120cf84611039565b926120dd6040519485610df7565b848452602085840101116105b65750610519926121009160208085019101610446565b5f612079565b8280fd5b8380fd5b612e8f565b34610333575f6003193601126103335760206040516103e88152f35b34610333576040600319360112610333576020612163600435612151816105e8565b6024359061215e826105e8565b614045565b6040519015158152f35b6106676108a7610d5036610d18565b1561218357565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20667574757265206c6f6f6b75700000000000000000000000006044820152fd5b156121ce57565b606460405162461bcd60e51b815260206004820152601460248201527f566f7465733a20696e76616c6964206e6f6e63650000000000000000000000006044820152fd5b8161229a6001600160a01b0392838116805f5260de60205260405f209461226c81875416978897906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b84169586917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f5f80a4613ec2565b91838114158061240e575b6122b0575b50505050565b8061234a575b50826122c3575b806122aa565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249161230c612306612312936001600160a01b03165f5260df60205260405f2090565b9161320e565b906125c2565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a25f80806122bd565b612365816001600160a01b03165f5260df60205260405f2090565b61236e8461320e565b61238765ffffffffffff612381436132a1565b1661331e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182806123b08661281b565b169116900392828411610c4c577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72493612405926123ec92612b16565b6040805192851683529316602082015291829190820190565b0390a25f6122b6565b508215156122a5565b906001600160a01b0391828216928116908382141580612567575b61243c5750505050565b816124cc575b505081612451575b80806122aa565b6124956124907fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724926001600160a01b03165f5260df60205260405f2090565b61256f565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a25f8061244a565b6124e7906001600160a01b03165f5260df60205260405f2090565b6124fa65ffffffffffff612381436132a1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905f19826125248561281b565b160192828411610c4c577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361255d926123ec92612b16565b0390a25f80612442565b506001612432565b61258265ffffffffffff612381436132a1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff906001826125ac8561281b565b1601918211610c4c576125be92612b16565b9091565b906125d665ffffffffffff612381436132a1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182806125ff8661281b565b16911601918211610c4c576125be92612b16565b61262665ffffffffffff612381436132a1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018161264e6127d4565b1601908111610c4c576125be916129af565b61267365ffffffffffff612381436132a1565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f198161269b6127d4565b16019081116126ad576125be916129af565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b156126e157565b606460405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152fd5b5f52607a6020526001600160a01b0360405f2054166104bb8115156126da565b612766612030825f52607a6020526001600160a01b0360405f205416151590565b5f52607c6020526001600160a01b0360405f20541690565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008201918211610c4c57565b905f198201918211610c4c57565b9060018201809211610c4c57565b91908201809211610c4c57565b60e0545f90806127e45750505f90565b805f19810111610c4c5760e07f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4e9252015460201c90565b80545f918161282b575050505f90565b5f19928284810111610c4c5760209181522001015460201c90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60e0549068010000000000000000821015610d9e57600182018060e0558210156128de5760e05f52805160209182015190911b63ffffffff191663ffffffff91909116177f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f90910155565b612846565b90815468010000000000000000811015610d9e57600181018084558110156128de575f92835260209283902082519284015190931b63ffffffff191663ffffffff9290921691909117910155565b906040516040810181811067ffffffffffffffff821117610d9e57604052602081935463ffffffff81168352811c910152565b1561296b57565b606460405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152fd5b60e0549192918015612ad857612a89918185612a006129fb6129d26020966127ab565b60e05f527f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f0190565b612931565b92612a0f845163ffffffff1690565b612a2663ffffffff91828416928391161115612964565b612a376116f2865163ffffffff1690565b03612a8d5750612a4c6129d2612a66936127ab565b9063ffffffff63ffffffff1983549260201b169116179055565b01517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b9050612ad39150612aab612a9f610e38565b63ffffffff9092168252565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff871681850152612873565b612a66565b50612b1190612ae8612a9f610e38565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84166020820152612873565b5f9190565b909291928382548015155f14612be757926020929184612b496129fb612b3e612a89986127ab565b855f5260205f200190565b93612b58855163ffffffff1690565b612b6f63ffffffff91828416928391161115612964565b612b806116f2875163ffffffff1690565b03612ba15750612a6692612b96612a4c926127ab565b905f5260205f200190565b915050612ad391612bbf612bb3610e38565b63ffffffff9093168352565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8816828601526128e3565b5050612b1191612bf8612bb3610e38565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660208301526128e3565b905b828110612c2f57505090565b9091808216906001818418811c8301809311610c4c5760e05f5263ffffffff80847f8b43726243eeaf8325404568abece3264b546cf9d88671f09c24c87045fccb4f015416908616105f14612c88575050915b90612c23565b909392508101809111610c4c5790612c82565b91905b838210612cab5750505090565b909192808316906001818518811c8301809311610c4c575f8681526020902083015463ffffffff9081169085161015612ce9575050925b9190612c9e565b909493508101809111610c4c5791612ce2565b603a55565b916104bb9391612d1093612e9a565b919091612d54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60051115612d4f57565b612d18565b612d5d81612d45565b80612d655750565b612d6e81612d45565b60018103612dbb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b612dc481612d45565b60028103612e115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80612e1d600392612d45565b14612e2457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608490fd5b6040513d5f823e3d90fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311612f0f5791608094939160ff6020946040519485521684840152604083015260608201525f93849182805260015afa1561210e5781516001600160a01b03811615612f09579190565b50600190565b505050505f90600390565b7f4e465473324d65000000000000000000000000000000000000000000000000006020604051612f4981610dbf565b6007815201527f31000000000000000000000000000000000000000000000000000000000000006020604051612f7e81610dbf565b60018152015260405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527ff63dd8159b098696ebb81a400cea3c4ffba1938921072285df391c19c71dce6160408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610d9e5760405251902090565b604290613036612f1a565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b60405161307881610da3565b5f8152905f368137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b81156130b9570490565b613082565b80156131f7578061319061318961317f61317561316b61316161315761314d60016104bb9a5f908b60801c806131eb575b508060401c806131de575b508060201c806131d1575b508060101c806131c4575b508060081c806131b7575b508060041c806131aa575b508060021c8061319d575b50821c613196575b811c1b613146818b6130af565b0160011c90565b613146818a6130af565b61314681896130af565b61314681886130af565b61314681876130af565b61314681866130af565b61314681856130af565b80926130af565b906131fc565b8101613139565b600291509101905f613131565b600491509101905f613126565b600891509101905f61311b565b601091509101905f613110565b602091509101905f613105565b604091509101905f6130fa565b9150506080905f6130ef565b505f90565b9080821015613209575090565b905090565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818111613237571690565b608460405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152fd5b65ffffffffffff908181116132b4571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f38206269747300000000000000000000000000000000000000000000000000006064820152fd5b63ffffffff9081811161332f571690565b608460405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152fd5b9081602091031261033357516104bb816105e8565b5f906040517f6352211e0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa5f9181613422575b5061341e5750565b9150565b61344491925060203d811161344b575b61343c8183610df7565b810190613399565b905f613416565b503d613432565b60041115612d4f57565b99979593919a98969492909a5f549b60ff8d60081c1615809d819e6135e3575b81156135c3575b5015613559576134c59b8d6134bc60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff005f5416175f55565b613525576137ae565b6134cb57565b6134f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6135546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff5f5416175f55565b6137ae565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b159150816135d5575b505f613483565b6001915060ff16145f6135ce565b600160ff821610915061347c565b6135fa81613452565b7fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000006045549260301b16911617604555565b91908110156128de5760061b0190565b356104bb81611108565b81810292918115918404141715610c4c57565b906020906136a68135613672816105e8565b84906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b01356136b181611108565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff000000000000000000000000000000000000000083549260a01b169116179055565b680100000000000000008211610d9e5760385482603855808310613768575b5060385f527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561995f915b83831061374c5750505050565b600160408261375c839486613660565b0192019201919061373f565b5f60388152837f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619992830192015b8281106137a3575050613716565b818155600101613795565b906137c2919c9b979892969c999599613b66565b63ffffffff811615613acb57811590811580613ac2575b613a985761138861ffff861611613a6e5761382f907fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff6effffffff00000000000000000000006045549260581b16911617604555565b15613a5d575080613a4d575061384483613452565b60038303613a235761385861389392603a55565b7fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff68ffff000000000000006045549260381b16911617604555565b61389c81613452565b80613a14575b506001600160a01b038116613997575b5060018092151514613952575b836138cb575b50509050565b5f9182905b85821061391e57505061251c92936138e7916136f7565b116138f457805f806138c5565b60046040517ffe0c06b7000000000000000000000000000000000000000000000000000000008152fd5b61394a829461394461393d602061393786978c8a613633565b01613643565b61ffff1690565b906127c7565b9301906138d0565b6139927001000000000000000000000000000000007fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff6045541617604555565b6138bf565b613a0e906139da6f010000000000000000000000000000007fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff6045541617604555565b6001600160a01b03167fffffffffffffffffffffffff00000000000000000000000000000000000000006040541617604055565b5f6138b2565b613a1d906135f1565b5f6138a2565b60046040517f27bfeafe000000000000000000000000000000000000000000000000000000008152fd5b61389392612cfc61385892603455565b603355506138939161385890603a55565b60046040517f44b93ba4000000000000000000000000000000000000000000000000000000008152fd5b60046040517f04cff63b000000000000000000000000000000000000000000000000000000008152fd5b508315156137d9565b60046040517fb8a9effe000000000000000000000000000000000000000000000000000000008152fd5b15613afc57565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b613b7f60ff5f5460081c16613b7a81613af5565b613af5565b80519067ffffffffffffffff8211610d9e57613ba582613ba0607854613c94565b613ce5565b60209081601f8411600114613bed57509180613bda9261060695945f92613be2575b50505f198260011b9260031b1c19161790565b607855613dc5565b015190505f80613bc7565b60785f5291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084167f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac4935f905b828210613c7c57505091600193918561060697969410613c64575b505050811b01607855613dc5565b01515f1960f88460031b161c191690555f8080613c56565b80600186978294978701518155019601940190613c3b565b90600182811c92168015613cdb575b6020831014613cae57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613ca3565b601f8111613cf1575050565b5f90607882527f8dc6fb69531d98d70dc0420e638d2dfd04e09e1ec783ede9aac77da9c5a0dac4906020601f850160051c83019410613d4b575b601f0160051c01915b828110613d4057505050565b818155600101613d34565b9092508290613d2b565b601f8111613d61575050565b5f90607982527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d791906020601f850160051c83019410613dbb575b601f0160051c01915b828110613db057505050565b818155600101613da4565b9092508290613d9b565b90815167ffffffffffffffff8111610d9e57613deb81613de6607954613c94565b613d55565b602080601f8311600114613e1f57508190613e1a93945f92613be25750505f198260011b9260031b1c19161790565b607955565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831694613e6f60795f527f957bbdc7fad0dec56e7c96af4a3ab63aa9daf934a52ffce891945b7fb622d79190565b925f905b878210613eaa575050836001959610613e92575b505050811b01607955565b01515f1960f88460031b161c191690555f8080613e87565b80600185968294968601518155019501930190613e73565b906001600160a01b0382168015613f23575f52607b60205260405f205491600160ff60455460301c16613ef481613452565b14613efc5750565b91613f1c6104bb92936001600160a01b03165f52604160205260405f2090565b54906127c7565b608460405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152fd5b60405190613f9a82610dbf565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152565b815f52607c6020526140098160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6001600160a01b038061401b84612725565b169116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b6001600160a01b03918281167388899dc0b84c6e726840e00dfb94abc6248825ec81146140bc57731e0049783f008a0085193e00003d00cd54003c71146140b45760ff926140af92165f52607d60205260405f20906001600160a01b03165f5260205260405f2090565b541690565b505050600190565b50505050600190565b156140cc57565b608460405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152fd5b61413f82612725565b916001600160a01b039081831692828516841494851561417f575b50508315614169575b50505090565b61417591929350612745565b16145f8080614163565b61418a929550614045565b925f8061415a565b1561419957565b608460405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152fd5b6142279261421081612725565b6001600160a01b0383811695909182168614614192565b83168015614352576106069461423d83856143bb565b61425f8161425961424d86612725565b6001600160a01b031690565b14614192565b61429c614274845f52607c60205260405f2090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b6142b7846001600160a01b03165f52607b60205260405f2090565b5f1981540190556142d9856001600160a01b03165f52607b60205260405f2090565b60018154019055614329856142f6855f52607a60205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a461442b565b608460405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0316151590816143fe575b506143d457565b60046040517f765c862b000000000000000000000000000000000000000000000000000000008152fd5b90505f52604360205260ff60405f205416801561441c575b5f6143cd565b5060ff60455460801c16614416565b61446a906001600160a01b038091169081156144c7575b8084169182156144b8575b5f5260de6020528060405f205416915f5260405f20541690612417565b61ffff60455460481c16908161447e575050565b61448790613ec2565b1161448e57565b60046040517f550ffa9c000000000000000000000000000000000000000000000000000000008152fd5b6144c0612660565b505061444d565b6144cf612613565b5050614442565b6144de612613565b505061446a6001600160a01b03808316908115614530575b60de6020527f7feac6ef4894db443b6046f934d8dffe8af4812f9f4b307224f533cf30c9fb62545f92835260409092205481169116612417565b614538612660565b50506144f6565b9081602091031261033357516104bb81610309565b90926104bb94936080936001600160a01b03809216845216602083015260408201528160608201520190610467565b3d156145ad573d9061459482611039565b916145a26040519384610df7565b82523d5f602084013e565b606090565b92909190823b156140bc57614605926020925f6001600160a01b036040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c85523360048601614554565b0393165af15f91816146bd575b506146975761461f614583565b805190816146925760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608490fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b6146df91925060203d81116146e6575b6146d78183610df7565b81019061453f565b905f614612565b503d6146cd565b156146f457565b606460405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152fd5b6001600160a01b0381169182156147f7576106069261477461476e835f52607a6020526001600160a01b0360405f205416151590565b156146ed565b61479561476e835f52607a6020526001600160a01b0360405f205416151590565b6147b0836001600160a01b03165f52607b60205260405f2090565b600181540190556147cd836142f6845f52607a60205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46144d6565b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b9061484461561a565b604580549260ff8460301c1661485981613452565b61082f5763ffffffff9384811690848201809211610c4c5760581c851610610805575f91825b84811061488e57505050505050565b81549063ffffffff1960019288848183160116918291161784556001600160a01b0385168015614974576148e56148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b1590565b6146ed565b6149096148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b614924866001600160a01b03165f52607b60205260405f2090565b848154019055614940866142f6845f52607a60205260405f2090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461496e846144d6565b0161487f565b606460405162461bcd60e51b8152602080600483015260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b906149c061561a565b60455490600160ff8360301c166149d681613452565b0361082f5763ffffffff91826149ee838284166127c7565b9160581c161061080557614a7491614a5e91600243016001614a21876001600160a01b03165f52604160205260405f2090565b0155614a3e856001600160a01b03165f52604160205260405f2090565b81815401905516614a5460455463ffffffff1690565b0163ffffffff1690565b63ffffffff1663ffffffff196045541617604555565b60455460481c61ffff16908161447e575050565b9190805b614a9557505050565b614a9f8183614c6e565b906001600160a01b038416918215614974575f1992614ad86148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b614afc6148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b614b17866001600160a01b03165f52607b60205260405f2090565b60018154019055614b34866142f6845f52607a60205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4614b62846144d6565b0180614a8c565b9290805b614b775750505050565b614b818184614c6e565b906001600160a01b03851691821561497457805f1993614bbb6148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b614bdf6148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b614bfa886001600160a01b03165f52607b60205260405f2090565b60018154019055614c17886142f6845f52607a60205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a483614c46876144d6565b614c53575b500180614b6d565b611449614c68915f52604360205260405f2090565b5f614c4b565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610d9e5760405251902063ffffffff60455460581c1690811590816130b95782614cc091066127b9565b614cde815f52607a6020526001600160a01b0360405f205416151590565b15614cf357816130b957826001910601614cc0565b92915050565b90614d0261561a565b604554600260ff8260301c16614d1781613452565b0361082f5763ffffffff8082169183518301809311610c4c5760581c16106108055761060691614d56565b80518210156128de5760209160051b010190565b81516045805463ffffffff19811663ffffffff918216828516018216178255939192915f5b848110614d8a57505050505050565b614d948183614d42565b519081158015614ddf575b614db557614daf60019286614738565b01614d7b565b60046040517f3f6cc768000000000000000000000000000000000000000000000000000000008152fd5b5086845460581c168211614d9f565b15614df557565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b5f906040517f713562fe0000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa5f9181613422575061341e5750565b6106066113616133ae565b908092918237015f815290565b6020908260405193849283378101604281520301902090565b91909163ffffffff80809416911601918211610c4c57565b949390959698979198841561529957614f0a8382614ec0565b614f158682546127c7565b905581614f228483614ec0565b541161526f576045549363ffffffff94614f3e878783166127c7565b868260581c16106108055760201c60ff16614f5881612d45565b156152455760409a8b519384898c6020830193868646943095614ffe968995939192608e9795937f9d13a5ba0000000000000000000000000000000000000000000000000000000088527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000809360601b166004890152601888015260601b166038860152151560f81b604c850152604d840152606d830152151560f81b608d8201520190565b03947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09586810182526150319082610df7565b519020615065907f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f52601c52603c5f2090565b615070368786611073565b615079916152c3565b6001600160a01b031673c0ffee06ce3d6689305035601a055a96acd619c68114159081615230575b5061520757156151e75750346151be575b60455460301c60ff166150c481613452565b6002810361510c5750505050508251036150e357610606939450615413565b600485517f991f339f000000000000000000000000000000000000000000000000000000008152fd5b90919293965061511e81969596613452565b6001810361517657509161514b615157614a5e93615171956106069b9c5193849160208301968791614eb3565b03908101835282610df7565b51902094841661516c60455463ffffffff1690565b614ed9565b614b69565b9394955050505061518681613452565b615195576106069394506152fa565b600485517f3f886819000000000000000000000000000000000000000000000000000000008152fd5b60048a517f122d34a8000000000000000000000000000000000000000000000000000000008152fd5b8581156151fd575b6151f8916157a9565b6150b2565b603a5491506151ef565b60048c517f73a8ee18000000000000000000000000000000000000000000000000000000008152fd5b905061523d61424d6133ae565b14155f6150a1565b60046040517f7963e2b5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f9a89c66a000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2c5211c6000000000000000000000000000000000000000000000000000000008152fd5b81516104bb92612d1092916041036152f1576125be91602082015190606060408401519301515f1a90612e9a565b50505f90600290565b915f90815b83811061530d575050505050565b60459081549163ffffffff1963ffffffff93600194858183160116918291161782556001600160a01b0388168015614974576153636148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b6153876148e06148dc845f52607a6020526001600160a01b0360405f205416151590565b6153a2896001600160a01b03165f52607b60205260405f2090565b8581540190556153be896142f6845f52607a60205260405f2090565b867fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4836153ed886144d6565b6153f9575b50016152ff565b61144961143561540d925463ffffffff1690565b5f6153f2565b8161541d91614d56565b805191615428575050565b5f90815b8381106154395750505050565b6154438183614d42565b51835260436020526040832090600191827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790550161542c565b9061ffff80921661271003918211610c4c57565b9060ff6154b3826001600160a01b03165f52603960205260405f2090565b5416156155d9576154e36154d8826001600160a01b03165f52603960205260405f2090565b5460181c61ffff1690565b91615516615510615505846001600160a01b03165f52603960205260405f2090565b5460081c61ffff1690565b93615481565b9261553361552b603a5461ffff80971661364d565b612710900490565b61553d83826157a9565b6001600160a01b0384169485615556575b505050505050565b6155a89361556f6155749361552b936155a0961661364d565b61364d565b92615589615584856037546127c7565b603755565b6001600160a01b03165f52603660205260405f2090565b9182546127c7565b90557ff2f90295cdb5dafd392bfc62d7868bcc79e8c6164c820c7cc195d6c8cda8e6745f80a25f808080808061554e565b5f805260396020527f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f7098f805460181c61ffff1692906155169061551090615505565b60455460201c60ff1661562c81612d45565b600281036156375750565b61564081612d45565b600381036156b95750603d54421061568f576156866402000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff6045541617604555565b6106065f603d55565b60046040517fb3c03577000000000000000000000000000000000000000000000000000000008152fd5b806156c5600492612d45565b0361570657603d54421061568f57603e5442106106065760046040517f0734f1ad000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63a2de0f000000000000000000000000000000000000000000000000000000008152fd5b60455460781c60ff1661577d5780800460011481151715610c4c57340361575357565b60046040517fc288bf8f000000000000000000000000000000000000000000000000000000008152fd5b80156157a657808004600103610c4c57610606906001600160a01b0360405416309033906157f4565b50565b60455460781c60ff166157c857906157c09161364d565b340361575357565b80156157f057610606916157db9161364d565b6001600160a01b0360405416309033906157f4565b5050565b905f8061589e9460405194602097888701957f23b872dd0000000000000000000000000000000000000000000000000000000087526001600160a01b03938480921660248a015216604488015260648701526064865261585386610ddb565b16926040519461586286610dbf565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1615898614583565b9161594e565b805190828215928315615921575b505050156158b75750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6159319350820181019101615939565b5f82816158ac565b9081602091031261033357516104bb81611122565b919290156159af5750815115615962575090565b3b1561596b5790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156159c25750805190602001fd5b610d149060405191829162461bcd60e51b8352600483016104aa565b60455460281c60ff166159f081613452565b60018103615a8157506040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039190911660248201526020816044816daaeb6d7670e522a718067333cd4e5afa801561210e57615a5a5750565b6157a69060203d8111615a7a575b615a728183610df7565b810190615939565b503d615a68565b615a8a81613452565b15615a925750565b6daaeb6d7670e522a718067333cd4e803b615aab575050565b803b15610333576040517f7d3e3dbe000000000000000000000000000000000000000000000000000000008152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb660248201525f8160448183865af19081615ba7575b50156157f057615b9691602091615b4a650100000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff6045541617604555565b6040517fc61711340000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0390921660248301529092839190829081906044820190565b03915afa801561210e57615a5a5750565b80615bb4615bba92610d8a565b8061043c565b5f615b08565b5f36818037808036817f00000000000000000000000000000000000000000000000000000000000000005af43d82803e15615bf9573d90f35b3d90fdfea26469706673582212200438a91a6d42d2b19ccd86cc6318ab11399ad13859541328d5557ceecfa7e71a64736f6c63430008150033000000000000000000000000ce8ede9c1aac0b9629b3bd9aaf52099d3ed80b4d0000000000000000000000002269bceb3f4e0aa53d2fc43b1b7c5c5d13b119a5