{
  "_format": "hh-sol-artifact-1",
  "contractName": "AdventureERC721CWithMinterCreatorSharedRoyalties",
  "sourceName": "contracts/examples/adventure-erc721c/AdventureERC721CWithMinterCreatorSharedRoyalties.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "royaltyFeeNumerator_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minterShares_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "creatorShares_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "creator_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "paymentSplitterReference_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxSimultaneousQuests_",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__AdventureApprovalToCaller",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__AlreadyOnQuest",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__AnActiveQuestIsPreventingTransfers",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__CallerNotApprovedForAdventure",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__CallerNotTokenOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__MaxSimultaneousQuestsCannotBeZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__MaxSimultaneousQuestsExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__NotOnQuest",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__QuestIdOutOfRange",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureERC721__TooManyActiveQuests",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__AdventureIsStillWhitelisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__AlreadyWhitelisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__ArrayIndexOverflowsUint128",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__CallerNotAWhitelistedAdventure",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__InvalidAdventureContract",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AdventureWhitelist__NotWhitelisted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CreatorTokenBase__InvalidTransferValidatorContract",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CreatorTokenBase__SetTransferValidatorFirst",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__CreatorCannotBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__CreatorSharesCannotBeZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__MinterCannotBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__MinterHasAlreadyBeenAssignedToTokenId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__MinterSharesCannotBeZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__PaymentSplitterDoesNotExistForSpecifiedTokenId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__PaymentSplitterReferenceCannotBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinterCreatorSharedRoyalties__RoyaltyFeeWillExceedSalePrice",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ShouldNotMintToBurnAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "AdventureApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "whitelisted",
          "type": "bool"
        }
      ],
      "name": "AdventureWhitelistUpdated",
      "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": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "booted",
          "type": "bool"
        }
      ],
      "name": "QuestUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldValidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newValidator",
          "type": "address"
        }
      ],
      "name": "TransferValidatorUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_OPERATOR_WHITELIST_ID",
      "outputs": [
        {
          "internalType": "uint120",
          "name": "",
          "type": "uint120"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_TRANSFER_SECURITY_LEVEL",
      "outputs": [
        {
          "internalType": "enum TransferSecurityLevels",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_TRANSFER_VALIDATOR",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "activeQuestList",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "activeQuestLookup",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        },
        {
          "internalType": "uint32",
          "name": "questId",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "startTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint32",
          "name": "arrayIndex",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "adventureBurn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "adventureSafeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "adventureTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "areAdventuresApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "bootFromAllQuests",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "creator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "creatorShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "enterQuest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "exitQuest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "getActiveQuests",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "isActive",
              "type": "bool"
            },
            {
              "internalType": "uint32",
              "name": "questId",
              "type": "uint32"
            },
            {
              "internalType": "uint64",
              "name": "startTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "uint32",
              "name": "arrayIndex",
              "type": "uint32"
            }
          ],
          "internalType": "struct Quest[]",
          "name": "activeQuests",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPermittedContractReceivers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "getQuestCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSecurityPolicy",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum TransferSecurityLevels",
              "name": "transferSecurityLevel",
              "type": "uint8"
            },
            {
              "internalType": "uint120",
              "name": "operatorWhitelistId",
              "type": "uint120"
            },
            {
              "internalType": "uint120",
              "name": "permittedContractReceiversId",
              "type": "uint120"
            }
          ],
          "internalType": "struct CollectionSecurityPolicy",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "getTimeOnQuest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTransferValidator",
      "outputs": [
        {
          "internalType": "contract ICreatorTokenTransferValidator",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWhitelistedOperators",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isAdventureWhitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "isContractReceiverPermitted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isOperatorWhitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "isParticipatingInQuest",
      "outputs": [
        {
          "internalType": "bool",
          "name": "participatingInQuest",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "startTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "isTransferAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxSimultaneousQuests",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "minterOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minterShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "paymentSplitterOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paymentSplitterReference",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        }
      ],
      "name": "paymentSplittersOfMinter",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "coin",
          "type": "address"
        },
        {
          "internalType": "enum MinterCreatorSharedRoyaltiesBase.ReleaseTo",
          "name": "releaseTo",
          "type": "uint8"
        }
      ],
      "name": "releasableERC20Funds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum MinterCreatorSharedRoyaltiesBase.ReleaseTo",
          "name": "releaseTo",
          "type": "uint8"
        }
      ],
      "name": "releasableNativeFunds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "coin",
          "type": "address"
        },
        {
          "internalType": "enum MinterCreatorSharedRoyaltiesBase.ReleaseTo",
          "name": "releaseTo",
          "type": "uint8"
        }
      ],
      "name": "releaseERC20Funds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "enum MinterCreatorSharedRoyaltiesBase.ReleaseTo",
          "name": "releaseTo",
          "type": "uint8"
        }
      ],
      "name": "releaseNativeFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "royaltyFeeNumerator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "salePrice",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setAdventuresApprovedForAll",
      "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": "enum TransferSecurityLevels",
          "name": "level",
          "type": "uint8"
        },
        {
          "internalType": "uint120",
          "name": "operatorWhitelistId",
          "type": "uint120"
        },
        {
          "internalType": "uint120",
          "name": "permittedContractReceiversAllowlistId",
          "type": "uint120"
        }
      ],
      "name": "setToCustomSecurityPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "validator",
          "type": "address"
        },
        {
          "internalType": "enum TransferSecurityLevels",
          "name": "level",
          "type": "uint8"
        },
        {
          "internalType": "uint120",
          "name": "operatorWhitelistId",
          "type": "uint120"
        },
        {
          "internalType": "uint120",
          "name": "permittedContractReceiversAllowlistId",
          "type": "uint120"
        }
      ],
      "name": "setToCustomValidatorAndSecurityPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setToDefaultSecurityPolicy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "transferValidator_",
          "type": "address"
        }
      ],
      "name": "setTransferValidator",
      "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": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "unwhitelistAdventure",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "userExitAllQuests",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "questId",
          "type": "uint256"
        }
      ],
      "name": "userExitQuest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "adventure",
          "type": "address"
        }
      ],
      "name": "whitelistAdventure",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "whitelistedAdventureList",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "whitelistedAdventures",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isWhitelisted",
          "type": "bool"
        },
        {
          "internalType": "uint128",
          "name": "arrayIndex",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101406040523480156200001257600080fd5b5060405162005a4338038062005a43833981016040819052620000359162000466565b8787878787878787604051806020016040528060008152506040518060200160405280600081525062000077620000716200010960201b60201c565b6200010d565b81516200008c906009906020850190620002d6565b508051620000a290600a906020840190620002d6565b505050620000b782826200015d60201b60201c565b50620000c59050816200018d565b608052620000d78585858585620001a2565b60a09490945260c09290925260e0526001600160a01b03908116610100521661012052506200055a9650505050505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81516200017290600f906020850190620002d6565b50805162000188906010906020840190620002d6565b505050565b620001988162000291565b6003556001600455565b612710851115620001c657604051633eca614760e01b815260040160405180910390fd5b83620001e55760405163774439b360e01b815260040160405180910390fd5b826200020457604051632a3ccc4960e01b815260040160405180910390fd5b6001600160a01b0382166200022c576040516382d6f02560e01b815260040160405180910390fd5b6001600160a01b03811662000254576040516322ca44ff60e11b815260040160405180910390fd5b601294909455601392909255601455601580546001600160a01b039283166001600160a01b03199182161790915560168054929093169116179055565b80620002b05760405163ed21f5e560e01b815260040160405180910390fd5b6064811115620002d35760405163dbb0ece360e01b815260040160405180910390fd5b50565b828054620002e4906200051d565b90600052602060002090601f01602090048101928262000308576000855562000353565b82601f106200032357805160ff191683800117855562000353565b8280016001018555821562000353579182015b828111156200035357825182559160200191906001019062000336565b506200036192915062000365565b5090565b5b8082111562000361576000815560010162000366565b80516001600160a01b03811681146200039457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003c157600080fd5b81516001600160401b0380821115620003de57620003de62000399565b604051601f8301601f19908116603f0116810190828211818310171562000409576200040962000399565b816040528381526020925086838588010111156200042657600080fd5b600091505b838210156200044a57858201830151818301840152908201906200042b565b838211156200045c5760008385830101525b9695505050505050565b600080600080600080600080610100898b0312156200048457600080fd5b885197506020890151965060408901519550620004a460608a016200037c565b9450620004b460808a016200037c565b60a08a015160c08b015191955093506001600160401b0380821115620004d957600080fd5b620004e78c838d01620003af565b935060e08b0151915080821115620004fe57600080fd5b506200050d8b828c01620003af565b9150509295985092959890939650565b600181811c908216806200053257607f821691505b602082108114156200055457634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051615445620005fe6000396000818161095b01526145460152600081816104b70152818161147d015281816117450152818161185e01528181611f7401526145250152600081816109c80152818161460001526147b401526000818161070e01528181614621015261477501526000818161090f015261150b015260008181610935015261379001526154456000f3fe608060405234801561001057600080fd5b50600436106104575760003560e01c8063703fa92911610250578063a144819411610150578063d007af5c116100c8578063e985e9c511610097578063f1e923c51161007c578063f1e923c514610bc7578063f2fde38b14610bda578063fd762d9214610bed57600080fd5b8063e985e9c514610b78578063ee62ad6314610bb457600080fd5b8063d007af5c14610b41578063d73792a914610b49578063e2989f4c14610b52578063e370ab4614610b6557600080fd5b8063aca139f71161011f578063be537f4311610104578063be537f4314610b06578063c05e2f4414610b1b578063c87b56dd14610b2e57600080fd5b8063aca139f714610ae0578063b88d4fde14610af357600080fd5b8063a144819414610a43578063a22cb46514610a56578063a9fc664e14610a69578063aa6cab5a14610a7c57600080fd5b8063869f9110116101e3578063939a6c1c116101b25780639bc17ea4116101975780639bc17ea4146109f45780639d645a4414610a075780639e942ace14610a1a57600080fd5b8063939a6c1c146109c657806395d89b41146109ec57600080fd5b8063869f91101461093357806386c24508146109595780638da5cb5b1461097f578063916237181461099057600080fd5b80637e10b35b1161021f5780637e10b35b146108ab5780637f1a5ce1146108be578063816a1501146108fa57806381ddcc1f1461090d57600080fd5b8063703fa9291461084d57806370a082311461087d578063715018a61461089057806377f33fe91461089857600080fd5b80632ebb386a1161035b578063495c8bf9116102ee5780635d4c1d46116102bd5780636352211e116102a25780636352211e146108095780636b6b3c631461081c5780636c3b86991461084557600080fd5b80635d4c1d46146107ce57806361347162146107f657600080fd5b8063495c8bf91461076b5780634e02c0781461078057806351dadc281461079357806353401df9146107bb57600080fd5b80633bdec33e1161032a5780633bdec33e1461070c57806340c10f191461073257806342842e0e1461074557806342966c681461075857600080fd5b80632ebb386a14610699578063301be740146106ac57806333c93f58146106d857806336d396f4146106eb57600080fd5b80630f3d911c116103ee5780631c33b328116103bd578063261a2f30116103a2578063261a2f30146106415780632a55205a146106545780632e8da8291461068657600080fd5b80631c33b3281461061957806323b872dd1461062e57600080fd5b80630f3d911c1461053c578063113405571461055c57806311ad4081146105f35780631b25b0771461060657600080fd5b8063070cba171161042a578063070cba17146104f0578063081812fc14610505578063095ea7b314610518578063098144d41461052b57600080fd5b8063014635461461045c57806301ffc9a71461049257806302d05d3f146104b557806306fdde03146104db575b600080fd5b61047571721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b6104a56104a0366004614a52565b610c00565b6040519015158152602001610489565b7f0000000000000000000000000000000000000000000000000000000000000000610475565b6104e3610c11565b6040516104899190614ac7565b6105036104fe366004614aef565b610ca3565b005b610475610513366004614b0c565b610f06565b610503610526366004614b25565b610f2d565b6011546001600160a01b0316610475565b61054f61054a366004614b51565b611064565b6040516104899190614b81565b6105bc61056a366004614bfa565b600860209081526000938452604080852082529284528284209052825290205460ff81169063ffffffff610100820481169167ffffffffffffffff6501000000000082041691600160681b9091041684565b60408051941515855263ffffffff938416602086015267ffffffffffffffff90921691840191909152166060820152608001610489565b610503610601366004614c45565b61127e565b6104a5610614366004614c67565b61129e565b610621600181565b6040516104899190614cdf565b61050361063c366004614ced565b611337565b61050361064f366004614d3d565b6113be565b610667610662366004614c45565b6114e9565b604080516001600160a01b039093168352602083019190915201610489565b6104a5610694366004614aef565b611545565b6105036106a7366004614b51565b611677565b6104a56106ba366004614aef565b6001600160a01b031660009081526002602052604090205460ff1690565b6105036106e6366004614d7b565b611695565b6106fe6106f9366004614d3d565b61177c565b604051908152602001610489565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b610503610740366004614b25565b611895565b610503610753366004614ced565b61189f565b610503610766366004614b0c565b6118ba565b6107736118c6565b6040516104899190614deb565b61050361078e366004614dfe565b6119fd565b6107a66107a1366004614dfe565b611a1a565b60405163ffffffff9091168152602001610489565b6105036107c9366004614c45565b611a70565b6107d6600181565b6040516effffffffffffffffffffffffffffff9091168152602001610489565b610503610804366004614e4f565b611a8c565b610475610817366004614b0c565b611bfd565b61047561082a366004614b0c565b6000908152601860205260409020546001600160a01b031690565b610503611c62565b61086061085b366004614dfe565b611d54565b604080519315158452602084019290925290820152606001610489565b6106fe61088b366004614aef565b611df4565b610503611e8e565b6106fe6108a6366004614d7b565b611ea2565b6105036108b9366004614aef565b611fab565b6104a56108cc366004614e8f565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6106fe610908366004614dfe565b6121e4565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b7f0000000000000000000000000000000000000000000000000000000000000000610475565b6000546001600160a01b0316610475565b6106fe61099e366004614b51565b60009182526007602090815260408084206001600160a01b0393909316845291905290205490565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b6104e3612219565b610503610a02366004614b0c565b612228565b6104a5610a15366004614aef565b61224f565b610475610a28366004614b0c565b6000908152601760205260409020546001600160a01b031690565b610503610a51366004614b25565b61232e565b610503610a64366004614ecb565b612338565b610503610a77366004614aef565b612343565b610ab8610a8a366004614aef565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b6040805192151583526fffffffffffffffffffffffffffffffff909116602083015201610489565b610503610aee366004614ced565b612490565b610503610b01366004614f40565b6124ce565b610b0e612556565b6040516104899190615004565b610503610b29366004614ecb565b612620565b6104e3610b3c366004614b0c565b6126d2565b610773612745565b6106fe61271081565b610475610b60366004614b0c565b612815565b610503610b73366004614ced565b61283f565b6104a5610b86366004614e8f565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205460ff1690565b610773610bc2366004614aef565b612860565b610503610bd5366004614b51565b6128d6565b610503610be8366004614aef565b6128f3565b610503610bfb366004615048565b612980565b6000610c0b82612aa4565b92915050565b6060600f8054610c20906150a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4c906150a4565b8015610c995780601f10610c6e57610100808354040283529160200191610c99565b820191906000526020600020905b815481529060010190602001808311610c7c57829003601f168201915b5050505050905090565b610cab612ae2565b6001600160a01b03811660009081526002602052604090205460ff16610cfd576040517f385f0cec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812054600180546101009092046fffffffffffffffffffffffffffffffff169291610d3e91906150f5565b905080826fffffffffffffffffffffffffffffffff1614610e6c5760018181548110610d6c57610d6c61510c565b600091825260209091200154600180546001600160a01b03909216916fffffffffffffffffffffffffffffffff8516908110610daa57610daa61510c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600260006001856fffffffffffffffffffffffffffffffff1681548110610e0257610e0261510c565b60009182526020808320909101546001600160a01b03168352820192909252604001902080546fffffffffffffffffffffffffffffffff92909216610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9092169190911790555b6001805480610e7d57610e7d615122565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352600282526040808420805470ffffffffffffffffffffffffffffffffff1916905551928352917fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a2505050565b6000610f1182612aea565b506000908152600d60205260409020546001600160a01b031690565b6000610f3882611bfd565b9050806001600160a01b0316836001600160a01b03161415610fc75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b0382161480610fe35750610fe38133610b86565b6110555760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610fbe565b61105f8383612b4e565b505050565b60008281526007602090815260408083206001600160a01b03851684529091529020546060908067ffffffffffffffff8111156110a3576110a3614ef9565b6040519080825280602002602001820160405280156110f557816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816110c15790505b5060008581526007602090815260408083206001600160a01b038816845282528083208054825181850281018501909352808352949650929390929183018282801561118c57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161114f5790505b5050505050905060005b828110156112755760008681526008602090815260408083206001600160a01b0389168452909152812083519091908490849081106111d7576111d761510c565b60209081029190910181015163ffffffff90811683528282019390935260409182016000208251608081018452905460ff811615158252610100810485169282019290925267ffffffffffffffff6501000000000083041692810192909252600160681b9004909116606082015284518590839081106112595761125961510c565b60200260200101819052508061126e90615138565b9050611196565b50505092915050565b611286612bbc565b61128f82612bfb565b61129a823383612c43565b5050565b6011546000906001600160a01b03161561132c5760115460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b15801561130757600080fd5b505afa925050508015611318575060015b61132457506000611330565b506001611330565b5060015b9392505050565b611341338261306e565b6113b35760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610fbe565b61105f8383836130ed565b60006113c9846132fb565b905060008260018111156113df576113df614ca7565b141561145e576000848152601760205260409081902054905163122dd41160e21b81526001600160a01b0385811660048301529182166024820152908216906348b7504490604401600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b505050506114e3565b60405163122dd41160e21b81526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301528216906348b75044906044015b600060405180830381600087803b1580156114ca57600080fd5b505af11580156114de573d6000803e3d6000fd5b505050505b50505050565b60008281526018602052604081205481906001600160a01b03166127106115307f000000000000000000000000000000000000000000000000000000000000000086615153565b61153a9190615172565b915091509250929050565b6011546000906001600160a01b03161561166f57601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b95545529060240160606040518083038186803b1580156115a457600080fd5b505afa1580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc9190615194565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b03851660248201526044015b60206040518083038186803b15801561163757600080fd5b505afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190615206565b506000919050565b6116808161334a565b6116898261339d565b61129a828260006133e7565b60006116a0836132fb565b905060008260018111156116b6576116b6614ca7565b141561172e5760008381526017602052604090819020549051631916558760e01b81526001600160a01b039182166004820152908216906319165587906024015b600060405180830381600087803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b50505050505050565b604051631916558760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528216906319165587906024016116f7565b600080611788856132fb565b9050600083600181111561179e5761179e614ca7565b141561183f5760008581526017602052604090819020549051630c45ac0560e41b81526001600160a01b03868116600483015291821660248201529082169063c45ac050906044015b60206040518083038186803b1580156117ff57600080fd5b505afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190615223565b915050611330565b604051630c45ac0560e41b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015282169063c45ac050906044016117e7565b61129a82826136d2565b61105f838383604051806020016040528060008152506124ce565b6118c3816136e6565b50565b6011546060906001600160a01b0316156119ea57601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b95545529060240160606040518083038186803b15801561192557600080fd5b505afa158015611939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195d9190615194565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526024015b60006040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119e5919081019061523c565b905090565b5060408051600081526020810190915290565b611a068261334a565b611a0f8361339d565b61105f838383612c43565b60076020528260005260406000206020528160005260406000208181548110611a4257600080fd5b906000526020600020906008918282040191900660040292509250509054906101000a900463ffffffff1681565b611a78612bbc565b611a8182612bfb565b61129a823383613722565b611a94612ae2565b6000611aa86011546001600160a01b031690565b90506001600160a01b038116611aea576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c090611b1890309088906004016152ee565b600060405180830381600087803b158015611b3257600080fd5b505af1158015611b46573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff861660248201526001600160a01b0384169250632304aa029150604401600060405180830381600087803b158015611ba257600080fd5b505af1158015611bb6573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0384169250638d74431491506044016114b0565b6000818152600b60205260408120546001600160a01b031680610c0b5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610fbe565b611c6a612ae2565b611c8571721c310194ccfc01e523fc93c9cccfa2a0ac612343565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c090611cbd9030906001906004016152ee565b600060405180830381600087803b158015611cd757600080fd5b505af1158015611ceb573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526001602482015271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa029150604401600060405180830381600087803b158015611d4057600080fd5b505af11580156114e3573d6000803e3d6000fd5b6000808063ffffffff841115611d96576040517f0b2530f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060009283526008602090815260408085206001600160a01b0394909416855292815282842063ffffffff9283168552905291205460ff81169265010000000000820467ffffffffffffffff1692600160681b90920490911690565b60006001600160a01b038216611e725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610fbe565b506001600160a01b03166000908152600c602052604090205490565b611e96613a5f565b611ea06000613ab9565b565b600080611eae846132fb565b90506000836001811115611ec457611ec4614ca7565b1415611f5d57600084815260176020526040908190205490516351fc756760e11b81526001600160a01b0391821660048201529082169063a3f8eace906024015b60206040518083038186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190615223565b915050610c0b565b6040516351fc756760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015282169063a3f8eace90602401611f05565b611fb3612ae2565b6001600160a01b03811660009081526002602052604090205460ff1615612006576040517fd8110a5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516301ffc9a760e01b81527f977e0c1c0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561206557600080fd5b505afa158015612079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209d9190615206565b6120d3576040517fb50e580c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546fffffffffffffffffffffffffffffffff811115612120576040517f6daf72d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526002602090815260408083208054600170ffffffffffffffffffffffffffffffffff199091166101006fffffffffffffffffffffffffffffffff89160217811790915580548082018255938190527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180546001600160a01b03191685179055519182527fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a25050565b60008060006121f4868686611d54565b50915091508161220557600061220f565b61220f81426150f5565b9695505050505050565b606060108054610c20906150a4565b612230612bbc565b61223981612bfb565b6002600455612247816118ba565b506001600455565b6011546000906001600160a01b03161561166f57601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b95545529060240160606040518083038186803b1580156122ae57600080fd5b505afa1580156122c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e69190615194565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b038516602482015260440161161f565b61129a8282613b09565b61129a338383613b23565b61234b612ae2565b60006001600160a01b0382163b156123d9576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a79060240160206040518083038186803b15801561239d57600080fd5b505afa9250505080156123cd575060408051601f3d908101601f191682019092526123ca91810190615206565b60015b6123d6576123d9565b90505b6001600160a01b038216158015906123ef575080155b15612426576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601154604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150601180546001600160a01b0319166001600160a01b0392909216919091179055565b612498612bbc565b6124a181612bfb565b60026004819055506124c48383836040518060200160405280600081525061254a565b5050600160045550565b6124d8338361306e565b61254a5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610fbe565b6114e384848484613bea565b60408051606081018252600080825260208201819052918101919091526011546001600160a01b0316156125ff57601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063b95545529060240160606040518083038186803b1580156125c757600080fd5b505afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e59190615194565b50604080516060810182526000808252602082018190529181019190915290565b336001600160a01b038316811415612664576040517fc934974800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03818116600081815260066020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f83347dcc77580bb841ae3bac834b5b8ac5ccd2326276d265e638987eb6b2c05691015b60405180910390a3505050565b60606126dd82612aea565b60006126f460408051602081019091526000815290565b905060008151116127145760405180602001604052806000815250611330565b8061271e84613c73565b60405160200161272f92919061530b565b6040516020818303038152906040529392505050565b6011546060906001600160a01b0316156119ea57601154604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b95545529060240160606040518083038186803b1580156127a457600080fd5b505afa1580156127b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dc9190615194565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff9091166004820152602401611991565b6001818154811061282557600080fd5b6000918252602090912001546001600160a01b0316905081565b612847612bbc565b61285081612bfb565b60026004556124c48383836113b3565b6001600160a01b0381166000908152601960209081526040918290208054835181840281018401909452808452606093928301828280156128ca57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116128ac575b50505050509050919050565b6128de612ae2565b6128e78161334a565b61129a828260016133e7565b6128fb613a5f565b6001600160a01b0381166129775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610fbe565b6118c381613ab9565b612988612ae2565b61299184612343565b604051630368065360e61b81526001600160a01b0385169063da0194c0906129bf90309087906004016152ee565b600060405180830381600087803b1580156129d957600080fd5b505af11580156129ed573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0387169250632304aa029150604401600060405180830381600087803b158015612a4957600080fd5b505af1158015612a5d573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff841660248201526001600160a01b0387169250638d74431491506044016114b0565b60006001600160e01b031982167f2a55205a000000000000000000000000000000000000000000000000000000001480610c0b5750610c0b82613d1d565b611ea0613a5f565b6000818152600b60205260409020546001600160a01b03166118c35760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610fbe565b6000818152600d6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612b8382611bfd565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612bc5336106ba565b611ea0576040517ff4b8028800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c0d612c0782613d5b565b336108cc565b6118c3576040517fdb07237500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000612c53868686611d54565b92509250925082612c90576040517f85fceded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526007602090815260408083206001600160a01b0389168452909152812054859190612cc2906001906150f5565b9050808314612e475760008881526007602090815260408083206001600160a01b038b1684529091529020805482908110612cff57612cff61510c565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16600760008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000208481548110612d6c57612d6c61510c565b600091825260208083206008808404909101805463ffffffff96871660046007968716026101000a90810297021916959095179094558b835292835260408083206001600160a01b038c168085529085528184208d85529285528184209084529093529181208054869392919085908110612de957612de961510c565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff90811684529083019390935260409091019020805470ffffffff000000000000000000000000001916600160681b93909216929092021790555b60008881526007602090815260408083206001600160a01b038b1684529091529020805480612e7857612e78615122565b600082815260208082206008600019909401848104909101805463ffffffff600460078516026101000a81021990911690915594558b825291825260408082206001600160a01b038c1683528352808220938616825292909152908120805470ffffffffffffffffffffffffffffffffff19169055612ef689613d5b565b9050876001600160a01b0316816001600160a01b03168a7f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee8a600080604051612f549392919092835290151560208301521515604082015260600190565b60405180910390a4876001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9557600080fd5b505afa158015612fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcd9190615206565b15612ff35760008981526005602052604081208054909190612fee9061533a565b909155505b604051636d4229c960e01b81526001600160a01b038281166004830152602482018b90526044820189905260648201879052891690636d4229c990608401600060405180830381600087803b15801561304b57600080fd5b505af115801561305f573d6000803e3d6000fd5b50505050505050505050505050565b60008061307a83611bfd565b9050806001600160a01b0316846001600160a01b031614806130c157506001600160a01b038082166000908152600e602090815260408083209388168352929052205460ff165b806130e55750836001600160a01b03166130da84610f06565b6001600160a01b0316145b949350505050565b826001600160a01b031661310082611bfd565b6001600160a01b0316146131645760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610fbe565b6001600160a01b0382166131df5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610fbe565b6131ec8383836001613d66565b826001600160a01b03166131ff82611bfd565b6001600160a01b0316146132635760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610fbe565b6000818152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600c8552838620805460001901905590871680865283862080546001019055868652600b90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461105f8383836001613deb565b6000818152601860205260408120546001600160a01b031680610c0b576040517f219f780400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526002602052604090205460ff16156118c3576040517fb6708d9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336133a782613d5b565b6001600160a01b0316146118c3576040517fb1160e7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006133f284613d5b565b60008581526007602090815260408083206001600160a01b038816845290915281205491925050836001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561345257600080fd5b505afa158015613466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348a9190615206565b156134b357600085815260056020526040812080548392906134ad9084906150f5565b90915550505b60005b8181101561369f5760008681526007602090815260408083206001600160a01b038916845290915281208054839081106134f2576134f261510c565b600091825260208083206008808404909101548b855290825260408085206001600160a01b038c8116808852918552828720600790961660040261010090810a90940463ffffffff9081168089529686528388208451608081018652905460ff81161515825295860482168188015265010000000000860467ffffffffffffffff16818601819052600160681b9096049091166060808301919091528451888152968701989098528c151593860193909352949650909491939092908916918c917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee910160405180910390a460008981526008602090815260408083206001600160a01b038c811680865291845282852063ffffffff8916808752945293829020805470ffffffffffffffffffffffffffffffffff191690559051636d4229c960e01b81529289166004840152602483018c905260448301919091526064820183905290636d4229c990608401600060405180830381600087803b15801561367957600080fd5b505af115801561368d573d6000803e3d6000fd5b505050508360010193505050506134b6565b5060008581526007602090815260408083206001600160a01b038816845290915281206136cb91614a03565b5050505050565b6136dc8282613e12565b61129a8282613f1b565b6136ef816140be565b600090815260186020908152604080832080546001600160a01b0319908116909155601790925290912080549091169055565b600061372f848484611d54565b50509050801561376b576040517fbf2bc3b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526007602090815260408083206001600160a01b03871684529091529020547f000000000000000000000000000000000000000000000000000000000000000081106137e7576040517f026a381300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526007602081815260408084206001600160a01b038916808652908352818520805460018082018355918752848720600880830490910180549290971660040261010090810a63ffffffff818102199094168d8516918202179098558d895290865284882093885292855283872086885290945291852080547fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff0016650100000000004267ffffffffffffffff1602179092177fffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ff16930270ffffffff00000000000000000000000000191692909217600160681b9185169190910217905583906138f387613d5b565b604080518781526001602082015260008183015290519192506001600160a01b0388811692908416918a917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee9181900360600190a4856001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561398157600080fd5b505afa158015613995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b99190615206565b156139d4576000878152600560205260409020805460010190555b6040517f688a37410000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018990526044820187905287169063688a374190606401600060405180830381600087803b158015613a3e57600080fd5b505af1158015613a52573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b03163314611ea05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fbe565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61129a82826040518060200160405280600081525061416b565b816001600160a01b0316836001600160a01b03161415613b855760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610fbe565b6001600160a01b038381166000818152600e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016126c5565b613bf58484846130ed565b613c01848484846141f4565b6114e35760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610fbe565b60606000613c8083614357565b600101905060008167ffffffffffffffff811115613ca057613ca0614ef9565b6040519080825280601f01601f191660200182016040528015613cca576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084613d1057613d15565b613cd4565b509392505050565b60006001600160e01b031982167f86455d28000000000000000000000000000000000000000000000000000000001480610c0b5750610c0b82614439565b6000610c0b82611bfd565b6000805b82811015613de357613d7c8185615351565b60008181526005602052604090205490925015613dc5576040517fe49dac6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016004541415613ddb57613ddb868684614477565b600101613d6a565b505050505050565b60005b818110156136cb57613e0a8585613e058487615351565b6144d3565b600101613dee565b6001600160a01b038216613e52576040517f022432f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601760205260409020546001600160a01b031615613ea1576040517fcb756a3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613eac83614521565b600083815260186020908152604080832080546001600160a01b039586166001600160a01b031991821681179092559790941680845260198352818420805460018101825590855283852001805489169095179094559482526017905292909220805490931690911790915550565b6001600160a01b038216613f715760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610fbe565b6000818152600b60205260409020546001600160a01b031615613fd65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fbe565b613fe4600083836001613d66565b6000818152600b60205260409020546001600160a01b0316156140495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fbe565b6001600160a01b0382166000818152600c6020908152604080832080546001019055848352600b90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461129a600083836001613deb565b60006140c982611bfd565b90506140d9816000846001613d66565b6140e282611bfd565b6000838152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600c84528285208054600019019055878552600b909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461129a816000846001613deb565b61417583836136d2565b61418260008484846141f4565b61105f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610fbe565b60006001600160a01b0384163b1561434c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614238903390899088908890600401615369565b602060405180830381600087803b15801561425257600080fd5b505af1925050508015614282575060408051601f3d908101601f1916820190925261427f9181019061539b565b60015b614332573d8080156142b0576040519150601f19603f3d011682016040523d82523d6000602084013e6142b5565b606091505b50805161432a5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610fbe565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506130e5565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106143a0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106143cc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106143ea57662386f26fc10000830492506010015b6305f5e1008310614402576305f5e100830492506008015b612710831061441657612710830492506004015b60648310614428576064830492506002015b600a8310610c0b5760010192915050565b60006001600160e01b031982167ff9f7ab41000000000000000000000000000000000000000000000000000000001480610c0b5750610c0b8261485b565b6001600160a01b0383811615908316158180156144915750805b156144af57604051635cbd944160e01b815260040160405180910390fd5b81156144bb575b6136cb565b80156144c6576144b6565b6136cb33868686346148dd565b6001600160a01b0383811615908316158180156144ed5750805b1561450b57604051635cbd944160e01b815260040160405180910390fd5b8115614516576144b6565b80156144b6576144b6565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008261456f82614962565b9050826001600160a01b0316856001600160a01b031614156146cf576040805160018082528183019092526000916020808301908036833701905050905083816000815181106145c1576145c161510c565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526000918160200160208202803683370190505090507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061464a9190615351565b8160008151811061465d5761465d61510c565b6020908102919091010152604051633713060f60e11b81526001600160a01b03841690636e260c1e9061469690859085906004016153b8565b600060405180830381600087803b1580156146b057600080fd5b505af11580156146c4573d6000803e3d6000fd5b5050505050506130e5565b60408051600280825260608201835260009260208301908036833701905050905085816000815181106147045761470461510c565b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106147385761473861510c565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106147a7576147a761510c565b60209081029190910101527f0000000000000000000000000000000000000000000000000000000000000000816001815181106147e6576147e661510c565b6020908102919091010152604051633713060f60e11b81526001600160a01b03841690636e260c1e9061481f90859085906004016153b8565b600060405180830381600087803b15801561483957600080fd5b505af115801561484d573d6000803e3d6000fd5b505050505050949350505050565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806148be57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610c0b57506301ffc9a760e01b6001600160e01b0319831614610c0b565b6011546001600160a01b0316156136cb5760115460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b15801561494357600080fd5b505afa158015614957573d6000803e3d6000fd5b505050505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166149fe5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c6564000000000000000000006044820152606401610fbe565b919050565b5080546000825560070160089004906000526020600020908101906118c391905b80821115614a385760008155600101614a24565b5090565b6001600160e01b0319811681146118c357600080fd5b600060208284031215614a6457600080fd5b813561133081614a3c565b60005b83811015614a8a578181015183820152602001614a72565b838111156114e35750506000910152565b60008151808452614ab3816020860160208601614a6f565b601f01601f19169290920160200192915050565b6020815260006113306020830184614a9b565b6001600160a01b03811681146118c357600080fd5b600060208284031215614b0157600080fd5b813561133081614ada565b600060208284031215614b1e57600080fd5b5035919050565b60008060408385031215614b3857600080fd5b8235614b4381614ada565b946020939093013593505050565b60008060408385031215614b6457600080fd5b823591506020830135614b7681614ada565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b82811015614bed5781518051151585528681015163ffffffff908116888701528682015167ffffffffffffffff1687870152606091820151169085015260809093019290850190600101614b9e565b5091979650505050505050565b600080600060608486031215614c0f57600080fd5b833592506020840135614c2181614ada565b9150604084013563ffffffff81168114614c3a57600080fd5b809150509250925092565b60008060408385031215614c5857600080fd5b50508035926020909101359150565b600080600060608486031215614c7c57600080fd5b8335614c8781614ada565b92506020840135614c9781614ada565b91506040840135614c3a81614ada565b634e487b7160e01b600052602160045260246000fd5b60078110614cdb57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c0b8284614cbd565b600080600060608486031215614d0257600080fd5b8335614d0d81614ada565b92506020840135614d1d81614ada565b929592945050506040919091013590565b8035600281106149fe57600080fd5b600080600060608486031215614d5257600080fd5b833592506020840135614d6481614ada565b9150614d7260408501614d2e565b90509250925092565b60008060408385031215614d8e57600080fd5b82359150614d9e60208401614d2e565b90509250929050565b600081518084526020808501945080840160005b83811015614de05781516001600160a01b031687529582019590820190600101614dbb565b509495945050505050565b6020815260006113306020830184614da7565b600080600060608486031215614e1357600080fd5b833592506020840135614d1d81614ada565b600781106118c357600080fd5b6effffffffffffffffffffffffffffff811681146118c357600080fd5b600080600060608486031215614e6457600080fd5b8335614e6f81614e25565b92506020840135614e7f81614e32565b91506040840135614c3a81614e32565b60008060408385031215614ea257600080fd5b8235614ead81614ada565b91506020830135614b7681614ada565b80151581146118c357600080fd5b60008060408385031215614ede57600080fd5b8235614ee981614ada565b91506020830135614b7681614ebd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614f3857614f38614ef9565b604052919050565b60008060008060808587031215614f5657600080fd5b8435614f6181614ada565b9350602085810135614f7281614ada565b935060408601359250606086013567ffffffffffffffff80821115614f9657600080fd5b818801915088601f830112614faa57600080fd5b813581811115614fbc57614fbc614ef9565b614fce601f8201601f19168501614f0f565b91508082528984828501011115614fe457600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000606082019050615017828451614cbd565b60208301516effffffffffffffffffffffffffffff8082166020850152806040860151166040850152505092915050565b6000806000806080858703121561505e57600080fd5b843561506981614ada565b9350602085013561507981614e25565b9250604085013561508981614e32565b9150606085013561509981614e32565b939692955090935050565b600181811c908216806150b857607f821691505b602082108114156150d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015615107576151076150df565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141561514c5761514c6150df565b5060010190565b600081600019048311821515161561516d5761516d6150df565b500290565b60008261518f57634e487b7160e01b600052601260045260246000fd5b500490565b6000606082840312156151a657600080fd5b6040516060810181811067ffffffffffffffff821117156151c9576151c9614ef9565b60405282516151d781614e25565b815260208301516151e781614e32565b602082015260408301516151fa81614e32565b60408201529392505050565b60006020828403121561521857600080fd5b815161133081614ebd565b60006020828403121561523557600080fd5b5051919050565b6000602080838503121561524f57600080fd5b825167ffffffffffffffff8082111561526757600080fd5b818501915085601f83011261527b57600080fd5b81518181111561528d5761528d614ef9565b8060051b915061529e848301614f0f565b81815291830184019184810190888411156152b857600080fd5b938501935b838510156152e257845192506152d283614ada565b82825293850193908501906152bd565b98975050505050505050565b6001600160a01b0383168152604081016113306020830184614cbd565b6000835161531d818460208801614a6f565b835190830190615331818360208801614a6f565b01949350505050565b600081615349576153496150df565b506000190190565b60008219821115615364576153646150df565b500190565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261220f6080830184614a9b565b6000602082840312156153ad57600080fd5b815161133081614a3c565b6040815260006153cb6040830185614da7565b82810360208481019190915284518083528582019282019060005b81811015615402578451835293830193918301916001016153e6565b509097965050505050505056fea264697066735822122021b3bf446b9c22c746c78afebf6b52c6693166735278efb6d896eed2f8d5ff4164736f6c63430008090033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104575760003560e01c8063703fa92911610250578063a144819411610150578063d007af5c116100c8578063e985e9c511610097578063f1e923c51161007c578063f1e923c514610bc7578063f2fde38b14610bda578063fd762d9214610bed57600080fd5b8063e985e9c514610b78578063ee62ad6314610bb457600080fd5b8063d007af5c14610b41578063d73792a914610b49578063e2989f4c14610b52578063e370ab4614610b6557600080fd5b8063aca139f71161011f578063be537f4311610104578063be537f4314610b06578063c05e2f4414610b1b578063c87b56dd14610b2e57600080fd5b8063aca139f714610ae0578063b88d4fde14610af357600080fd5b8063a144819414610a43578063a22cb46514610a56578063a9fc664e14610a69578063aa6cab5a14610a7c57600080fd5b8063869f9110116101e3578063939a6c1c116101b25780639bc17ea4116101975780639bc17ea4146109f45780639d645a4414610a075780639e942ace14610a1a57600080fd5b8063939a6c1c146109c657806395d89b41146109ec57600080fd5b8063869f91101461093357806386c24508146109595780638da5cb5b1461097f578063916237181461099057600080fd5b80637e10b35b1161021f5780637e10b35b146108ab5780637f1a5ce1146108be578063816a1501146108fa57806381ddcc1f1461090d57600080fd5b8063703fa9291461084d57806370a082311461087d578063715018a61461089057806377f33fe91461089857600080fd5b80632ebb386a1161035b578063495c8bf9116102ee5780635d4c1d46116102bd5780636352211e116102a25780636352211e146108095780636b6b3c631461081c5780636c3b86991461084557600080fd5b80635d4c1d46146107ce57806361347162146107f657600080fd5b8063495c8bf91461076b5780634e02c0781461078057806351dadc281461079357806353401df9146107bb57600080fd5b80633bdec33e1161032a5780633bdec33e1461070c57806340c10f191461073257806342842e0e1461074557806342966c681461075857600080fd5b80632ebb386a14610699578063301be740146106ac57806333c93f58146106d857806336d396f4146106eb57600080fd5b80630f3d911c116103ee5780631c33b328116103bd578063261a2f30116103a2578063261a2f30146106415780632a55205a146106545780632e8da8291461068657600080fd5b80631c33b3281461061957806323b872dd1461062e57600080fd5b80630f3d911c1461053c578063113405571461055c57806311ad4081146105f35780631b25b0771461060657600080fd5b8063070cba171161042a578063070cba17146104f0578063081812fc14610505578063095ea7b314610518578063098144d41461052b57600080fd5b8063014635461461045c57806301ffc9a71461049257806302d05d3f146104b557806306fdde03146104db575b600080fd5b61047571721c310194ccfc01e523fc93c9cccfa2a0ac81565b6040516001600160a01b0390911681526020015b60405180910390f35b6104a56104a0366004614a52565b610c00565b6040519015158152602001610489565b7f0000000000000000000000000000000000000000000000000000000000000000610475565b6104e3610c11565b6040516104899190614ac7565b6105036104fe366004614aef565b610ca3565b005b610475610513366004614b0c565b610f06565b610503610526366004614b25565b610f2d565b6011546001600160a01b0316610475565b61054f61054a366004614b51565b611064565b6040516104899190614b81565b6105bc61056a366004614bfa565b600860209081526000938452604080852082529284528284209052825290205460ff81169063ffffffff610100820481169167ffffffffffffffff6501000000000082041691600160681b9091041684565b60408051941515855263ffffffff938416602086015267ffffffffffffffff90921691840191909152166060820152608001610489565b610503610601366004614c45565b61127e565b6104a5610614366004614c67565b61129e565b610621600181565b6040516104899190614cdf565b61050361063c366004614ced565b611337565b61050361064f366004614d3d565b6113be565b610667610662366004614c45565b6114e9565b604080516001600160a01b039093168352602083019190915201610489565b6104a5610694366004614aef565b611545565b6105036106a7366004614b51565b611677565b6104a56106ba366004614aef565b6001600160a01b031660009081526002602052604090205460ff1690565b6105036106e6366004614d7b565b611695565b6106fe6106f9366004614d3d565b61177c565b604051908152602001610489565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b610503610740366004614b25565b611895565b610503610753366004614ced565b61189f565b610503610766366004614b0c565b6118ba565b6107736118c6565b6040516104899190614deb565b61050361078e366004614dfe565b6119fd565b6107a66107a1366004614dfe565b611a1a565b60405163ffffffff9091168152602001610489565b6105036107c9366004614c45565b611a70565b6107d6600181565b6040516effffffffffffffffffffffffffffff9091168152602001610489565b610503610804366004614e4f565b611a8c565b610475610817366004614b0c565b611bfd565b61047561082a366004614b0c565b6000908152601860205260409020546001600160a01b031690565b610503611c62565b61086061085b366004614dfe565b611d54565b604080519315158452602084019290925290820152606001610489565b6106fe61088b366004614aef565b611df4565b610503611e8e565b6106fe6108a6366004614d7b565b611ea2565b6105036108b9366004614aef565b611fab565b6104a56108cc366004614e8f565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6106fe610908366004614dfe565b6121e4565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b7f0000000000000000000000000000000000000000000000000000000000000000610475565b6000546001600160a01b0316610475565b6106fe61099e366004614b51565b60009182526007602090815260408084206001600160a01b0393909316845291905290205490565b7f00000000000000000000000000000000000000000000000000000000000000006106fe565b6104e3612219565b610503610a02366004614b0c565b612228565b6104a5610a15366004614aef565b61224f565b610475610a28366004614b0c565b6000908152601760205260409020546001600160a01b031690565b610503610a51366004614b25565b61232e565b610503610a64366004614ecb565b612338565b610503610a77366004614aef565b612343565b610ab8610a8a366004614aef565b60026020526000908152604090205460ff81169061010090046fffffffffffffffffffffffffffffffff1682565b6040805192151583526fffffffffffffffffffffffffffffffff909116602083015201610489565b610503610aee366004614ced565b612490565b610503610b01366004614f40565b6124ce565b610b0e612556565b6040516104899190615004565b610503610b29366004614ecb565b612620565b6104e3610b3c366004614b0c565b6126d2565b610773612745565b6106fe61271081565b610475610b60366004614b0c565b612815565b610503610b73366004614ced565b61283f565b6104a5610b86366004614e8f565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205460ff1690565b610773610bc2366004614aef565b612860565b610503610bd5366004614b51565b6128d6565b610503610be8366004614aef565b6128f3565b610503610bfb366004615048565b612980565b6000610c0b82612aa4565b92915050565b6060600f8054610c20906150a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4c906150a4565b8015610c995780601f10610c6e57610100808354040283529160200191610c99565b820191906000526020600020905b815481529060010190602001808311610c7c57829003601f168201915b5050505050905090565b610cab612ae2565b6001600160a01b03811660009081526002602052604090205460ff16610cfd576040517f385f0cec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812054600180546101009092046fffffffffffffffffffffffffffffffff169291610d3e91906150f5565b905080826fffffffffffffffffffffffffffffffff1614610e6c5760018181548110610d6c57610d6c61510c565b600091825260209091200154600180546001600160a01b03909216916fffffffffffffffffffffffffffffffff8516908110610daa57610daa61510c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600260006001856fffffffffffffffffffffffffffffffff1681548110610e0257610e0261510c565b60009182526020808320909101546001600160a01b03168352820192909252604001902080546fffffffffffffffffffffffffffffffff92909216610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9092169190911790555b6001805480610e7d57610e7d615122565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352600282526040808420805470ffffffffffffffffffffffffffffffffff1916905551928352917fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a2505050565b6000610f1182612aea565b506000908152600d60205260409020546001600160a01b031690565b6000610f3882611bfd565b9050806001600160a01b0316836001600160a01b03161415610fc75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b0382161480610fe35750610fe38133610b86565b6110555760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610fbe565b61105f8383612b4e565b505050565b60008281526007602090815260408083206001600160a01b03851684529091529020546060908067ffffffffffffffff8111156110a3576110a3614ef9565b6040519080825280602002602001820160405280156110f557816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816110c15790505b5060008581526007602090815260408083206001600160a01b038816845282528083208054825181850281018501909352808352949650929390929183018282801561118c57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161114f5790505b5050505050905060005b828110156112755760008681526008602090815260408083206001600160a01b0389168452909152812083519091908490849081106111d7576111d761510c565b60209081029190910181015163ffffffff90811683528282019390935260409182016000208251608081018452905460ff811615158252610100810485169282019290925267ffffffffffffffff6501000000000083041692810192909252600160681b9004909116606082015284518590839081106112595761125961510c565b60200260200101819052508061126e90615138565b9050611196565b50505092915050565b611286612bbc565b61128f82612bfb565b61129a823383612c43565b5050565b6011546000906001600160a01b03161561132c5760115460405163050bf71960e31b81526001600160a01b038681166004830152858116602483015284811660448301529091169063285fb8c89060640160006040518083038186803b15801561130757600080fd5b505afa925050508015611318575060015b61132457506000611330565b506001611330565b5060015b9392505050565b611341338261306e565b6113b35760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610fbe565b61105f8383836130ed565b60006113c9846132fb565b905060008260018111156113df576113df614ca7565b141561145e576000848152601760205260409081902054905163122dd41160e21b81526001600160a01b0385811660048301529182166024820152908216906348b7504490604401600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b505050506114e3565b60405163122dd41160e21b81526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301528216906348b75044906044015b600060405180830381600087803b1580156114ca57600080fd5b505af11580156114de573d6000803e3d6000fd5b505050505b50505050565b60008281526018602052604081205481906001600160a01b03166127106115307f000000000000000000000000000000000000000000000000000000000000000086615153565b61153a9190615172565b915091509250929050565b6011546000906001600160a01b03161561166f57601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063d72dde5e90829063b95545529060240160606040518083038186803b1580156115a457600080fd5b505afa1580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc9190615194565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b03851660248201526044015b60206040518083038186803b15801561163757600080fd5b505afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190615206565b506000919050565b6116808161334a565b6116898261339d565b61129a828260006133e7565b60006116a0836132fb565b905060008260018111156116b6576116b6614ca7565b141561172e5760008381526017602052604090819020549051631916558760e01b81526001600160a01b039182166004820152908216906319165587906024015b600060405180830381600087803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b50505050505050565b604051631916558760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301528216906319165587906024016116f7565b600080611788856132fb565b9050600083600181111561179e5761179e614ca7565b141561183f5760008581526017602052604090819020549051630c45ac0560e41b81526001600160a01b03868116600483015291821660248201529082169063c45ac050906044015b60206040518083038186803b1580156117ff57600080fd5b505afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190615223565b915050611330565b604051630c45ac0560e41b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015282169063c45ac050906044016117e7565b61129a82826136d2565b61105f838383604051806020016040528060008152506124ce565b6118c3816136e6565b50565b6011546060906001600160a01b0316156119ea57601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690633fe5df9990829063b95545529060240160606040518083038186803b15801561192557600080fd5b505afa158015611939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195d9190615194565b602001516040516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526024015b60006040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119e5919081019061523c565b905090565b5060408051600081526020810190915290565b611a068261334a565b611a0f8361339d565b61105f838383612c43565b60076020528260005260406000206020528160005260406000208181548110611a4257600080fd5b906000526020600020906008918282040191900660040292509250509054906101000a900463ffffffff1681565b611a78612bbc565b611a8182612bfb565b61129a823383613722565b611a94612ae2565b6000611aa86011546001600160a01b031690565b90506001600160a01b038116611aea576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051630368065360e61b81526001600160a01b0382169063da0194c090611b1890309088906004016152ee565b600060405180830381600087803b158015611b3257600080fd5b505af1158015611b46573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff861660248201526001600160a01b0384169250632304aa029150604401600060405180830381600087803b158015611ba257600080fd5b505af1158015611bb6573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0384169250638d74431491506044016114b0565b6000818152600b60205260408120546001600160a01b031680610c0b5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610fbe565b611c6a612ae2565b611c8571721c310194ccfc01e523fc93c9cccfa2a0ac612343565b604051630368065360e61b815271721c310194ccfc01e523fc93c9cccfa2a0ac9063da0194c090611cbd9030906001906004016152ee565b600060405180830381600087803b158015611cd757600080fd5b505af1158015611ceb573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526001602482015271721c310194ccfc01e523fc93c9cccfa2a0ac9250632304aa029150604401600060405180830381600087803b158015611d4057600080fd5b505af11580156114e3573d6000803e3d6000fd5b6000808063ffffffff841115611d96576040517f0b2530f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505060009283526008602090815260408085206001600160a01b0394909416855292815282842063ffffffff9283168552905291205460ff81169265010000000000820467ffffffffffffffff1692600160681b90920490911690565b60006001600160a01b038216611e725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610fbe565b506001600160a01b03166000908152600c602052604090205490565b611e96613a5f565b611ea06000613ab9565b565b600080611eae846132fb565b90506000836001811115611ec457611ec4614ca7565b1415611f5d57600084815260176020526040908190205490516351fc756760e11b81526001600160a01b0391821660048201529082169063a3f8eace906024015b60206040518083038186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f559190615223565b915050610c0b565b6040516351fc756760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015282169063a3f8eace90602401611f05565b611fb3612ae2565b6001600160a01b03811660009081526002602052604090205460ff1615612006576040517fd8110a5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516301ffc9a760e01b81527f977e0c1c0000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b15801561206557600080fd5b505afa158015612079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209d9190615206565b6120d3576040517fb50e580c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546fffffffffffffffffffffffffffffffff811115612120576040517f6daf72d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660008181526002602090815260408083208054600170ffffffffffffffffffffffffffffffffff199091166101006fffffffffffffffffffffffffffffffff89160217811790915580548082018255938190527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690930180546001600160a01b03191685179055519182527fe152843d7324c2cb58e95865f2b78d38f2dab6ce9eadf09438ec2c41e78c705e910160405180910390a25050565b60008060006121f4868686611d54565b50915091508161220557600061220f565b61220f81426150f5565b9695505050505050565b606060108054610c20906150a4565b612230612bbc565b61223981612bfb565b6002600455612247816118ba565b506001600455565b6011546000906001600160a01b03161561166f57601154604051635caaa2a960e11b81523060048201526001600160a01b0390911690639445f53090829063b95545529060240160606040518083038186803b1580156122ae57600080fd5b505afa1580156122c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e69190615194565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff90911660048201526001600160a01b038516602482015260440161161f565b61129a8282613b09565b61129a338383613b23565b61234b612ae2565b60006001600160a01b0382163b156123d9576040516301ffc9a760e01b8152600060048201526001600160a01b038316906301ffc9a79060240160206040518083038186803b15801561239d57600080fd5b505afa9250505080156123cd575060408051601f3d908101601f191682019092526123ca91810190615206565b60015b6123d6576123d9565b90505b6001600160a01b038216158015906123ef575080155b15612426576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601154604080516001600160a01b03928316815291841660208301527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac910160405180910390a150601180546001600160a01b0319166001600160a01b0392909216919091179055565b612498612bbc565b6124a181612bfb565b60026004819055506124c48383836040518060200160405280600081525061254a565b5050600160045550565b6124d8338361306e565b61254a5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610fbe565b6114e384848484613bea565b60408051606081018252600080825260208201819052918101919091526011546001600160a01b0316156125ff57601154604051635caaa2a960e11b81523060048201526001600160a01b039091169063b95545529060240160606040518083038186803b1580156125c757600080fd5b505afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e59190615194565b50604080516060810182526000808252602082018190529181019190915290565b336001600160a01b038316811415612664576040517fc934974800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03818116600081815260066020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f83347dcc77580bb841ae3bac834b5b8ac5ccd2326276d265e638987eb6b2c05691015b60405180910390a3505050565b60606126dd82612aea565b60006126f460408051602081019091526000815290565b905060008151116127145760405180602001604052806000815250611330565b8061271e84613c73565b60405160200161272f92919061530b565b6040516020818303038152906040529392505050565b6011546060906001600160a01b0316156119ea57601154604051635caaa2a960e11b81523060048201526001600160a01b03909116906317e94a6c90829063b95545529060240160606040518083038186803b1580156127a457600080fd5b505afa1580156127b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dc9190615194565b60409081015190516001600160e01b031960e084901b1681526effffffffffffffffffffffffffffff9091166004820152602401611991565b6001818154811061282557600080fd5b6000918252602090912001546001600160a01b0316905081565b612847612bbc565b61285081612bfb565b60026004556124c48383836113b3565b6001600160a01b0381166000908152601960209081526040918290208054835181840281018401909452808452606093928301828280156128ca57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116128ac575b50505050509050919050565b6128de612ae2565b6128e78161334a565b61129a828260016133e7565b6128fb613a5f565b6001600160a01b0381166129775760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610fbe565b6118c381613ab9565b612988612ae2565b61299184612343565b604051630368065360e61b81526001600160a01b0385169063da0194c0906129bf90309087906004016152ee565b600060405180830381600087803b1580156129d957600080fd5b505af11580156129ed573d6000803e3d6000fd5b5050604051631182550160e11b81523060048201526effffffffffffffffffffffffffffff851660248201526001600160a01b0387169250632304aa029150604401600060405180830381600087803b158015612a4957600080fd5b505af1158015612a5d573d6000803e3d6000fd5b505060405163235d10c560e21b81523060048201526effffffffffffffffffffffffffffff841660248201526001600160a01b0387169250638d74431491506044016114b0565b60006001600160e01b031982167f2a55205a000000000000000000000000000000000000000000000000000000001480610c0b5750610c0b82613d1d565b611ea0613a5f565b6000818152600b60205260409020546001600160a01b03166118c35760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610fbe565b6000818152600d6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612b8382611bfd565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612bc5336106ba565b611ea0576040517ff4b8028800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c0d612c0782613d5b565b336108cc565b6118c3576040517fdb07237500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000612c53868686611d54565b92509250925082612c90576040517f85fceded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008681526007602090815260408083206001600160a01b0389168452909152812054859190612cc2906001906150f5565b9050808314612e475760008881526007602090815260408083206001600160a01b038b1684529091529020805482908110612cff57612cff61510c565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16600760008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000208481548110612d6c57612d6c61510c565b600091825260208083206008808404909101805463ffffffff96871660046007968716026101000a90810297021916959095179094558b835292835260408083206001600160a01b038c168085529085528184208d85529285528184209084529093529181208054869392919085908110612de957612de961510c565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff90811684529083019390935260409091019020805470ffffffff000000000000000000000000001916600160681b93909216929092021790555b60008881526007602090815260408083206001600160a01b038b1684529091529020805480612e7857612e78615122565b600082815260208082206008600019909401848104909101805463ffffffff600460078516026101000a81021990911690915594558b825291825260408082206001600160a01b038c1683528352808220938616825292909152908120805470ffffffffffffffffffffffffffffffffff19169055612ef689613d5b565b9050876001600160a01b0316816001600160a01b03168a7f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee8a600080604051612f549392919092835290151560208301521515604082015260600190565b60405180910390a4876001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9557600080fd5b505afa158015612fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcd9190615206565b15612ff35760008981526005602052604081208054909190612fee9061533a565b909155505b604051636d4229c960e01b81526001600160a01b038281166004830152602482018b90526044820189905260648201879052891690636d4229c990608401600060405180830381600087803b15801561304b57600080fd5b505af115801561305f573d6000803e3d6000fd5b50505050505050505050505050565b60008061307a83611bfd565b9050806001600160a01b0316846001600160a01b031614806130c157506001600160a01b038082166000908152600e602090815260408083209388168352929052205460ff165b806130e55750836001600160a01b03166130da84610f06565b6001600160a01b0316145b949350505050565b826001600160a01b031661310082611bfd565b6001600160a01b0316146131645760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610fbe565b6001600160a01b0382166131df5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610fbe565b6131ec8383836001613d66565b826001600160a01b03166131ff82611bfd565b6001600160a01b0316146132635760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610fbe565b6000818152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600c8552838620805460001901905590871680865283862080546001019055868652600b90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461105f8383836001613deb565b6000818152601860205260408120546001600160a01b031680610c0b576040517f219f780400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526002602052604090205460ff16156118c3576040517fb6708d9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336133a782613d5b565b6001600160a01b0316146118c3576040517fb1160e7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006133f284613d5b565b60008581526007602090815260408083206001600160a01b038816845290915281205491925050836001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561345257600080fd5b505afa158015613466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348a9190615206565b156134b357600085815260056020526040812080548392906134ad9084906150f5565b90915550505b60005b8181101561369f5760008681526007602090815260408083206001600160a01b038916845290915281208054839081106134f2576134f261510c565b600091825260208083206008808404909101548b855290825260408085206001600160a01b038c8116808852918552828720600790961660040261010090810a90940463ffffffff9081168089529686528388208451608081018652905460ff81161515825295860482168188015265010000000000860467ffffffffffffffff16818601819052600160681b9096049091166060808301919091528451888152968701989098528c151593860193909352949650909491939092908916918c917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee910160405180910390a460008981526008602090815260408083206001600160a01b038c811680865291845282852063ffffffff8916808752945293829020805470ffffffffffffffffffffffffffffffffff191690559051636d4229c960e01b81529289166004840152602483018c905260448301919091526064820183905290636d4229c990608401600060405180830381600087803b15801561367957600080fd5b505af115801561368d573d6000803e3d6000fd5b505050508360010193505050506134b6565b5060008581526007602090815260408083206001600160a01b038816845290915281206136cb91614a03565b5050505050565b6136dc8282613e12565b61129a8282613f1b565b6136ef816140be565b600090815260186020908152604080832080546001600160a01b0319908116909155601790925290912080549091169055565b600061372f848484611d54565b50509050801561376b576040517fbf2bc3b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526007602090815260408083206001600160a01b03871684529091529020547f000000000000000000000000000000000000000000000000000000000000000081106137e7576040517f026a381300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008581526007602081815260408084206001600160a01b038916808652908352818520805460018082018355918752848720600880830490910180549290971660040261010090810a63ffffffff818102199094168d8516918202179098558d895290865284882093885292855283872086885290945291852080547fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff0016650100000000004267ffffffffffffffff1602179092177fffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000ff16930270ffffffff00000000000000000000000000191692909217600160681b9185169190910217905583906138f387613d5b565b604080518781526001602082015260008183015290519192506001600160a01b0388811692908416918a917f1171d71105bda3fa01f863317a96e01684416ccb1e5416de7c09510bdfbe6aee9181900360600190a4856001600160a01b03166392b612946040518163ffffffff1660e01b815260040160206040518083038186803b15801561398157600080fd5b505afa158015613995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b99190615206565b156139d4576000878152600560205260409020805460010190555b6040517f688a37410000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018990526044820187905287169063688a374190606401600060405180830381600087803b158015613a3e57600080fd5b505af1158015613a52573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b03163314611ea05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610fbe565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61129a82826040518060200160405280600081525061416b565b816001600160a01b0316836001600160a01b03161415613b855760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610fbe565b6001600160a01b038381166000818152600e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016126c5565b613bf58484846130ed565b613c01848484846141f4565b6114e35760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610fbe565b60606000613c8083614357565b600101905060008167ffffffffffffffff811115613ca057613ca0614ef9565b6040519080825280601f01601f191660200182016040528015613cca576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084613d1057613d15565b613cd4565b509392505050565b60006001600160e01b031982167f86455d28000000000000000000000000000000000000000000000000000000001480610c0b5750610c0b82614439565b6000610c0b82611bfd565b6000805b82811015613de357613d7c8185615351565b60008181526005602052604090205490925015613dc5576040517fe49dac6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016004541415613ddb57613ddb868684614477565b600101613d6a565b505050505050565b60005b818110156136cb57613e0a8585613e058487615351565b6144d3565b600101613dee565b6001600160a01b038216613e52576040517f022432f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601760205260409020546001600160a01b031615613ea1576040517fcb756a3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613eac83614521565b600083815260186020908152604080832080546001600160a01b039586166001600160a01b031991821681179092559790941680845260198352818420805460018101825590855283852001805489169095179094559482526017905292909220805490931690911790915550565b6001600160a01b038216613f715760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610fbe565b6000818152600b60205260409020546001600160a01b031615613fd65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fbe565b613fe4600083836001613d66565b6000818152600b60205260409020546001600160a01b0316156140495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610fbe565b6001600160a01b0382166000818152600c6020908152604080832080546001019055848352600b90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461129a600083836001613deb565b60006140c982611bfd565b90506140d9816000846001613d66565b6140e282611bfd565b6000838152600d6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600c84528285208054600019019055878552600b909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461129a816000846001613deb565b61417583836136d2565b61418260008484846141f4565b61105f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610fbe565b60006001600160a01b0384163b1561434c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614238903390899088908890600401615369565b602060405180830381600087803b15801561425257600080fd5b505af1925050508015614282575060408051601f3d908101601f1916820190925261427f9181019061539b565b60015b614332573d8080156142b0576040519150601f19603f3d011682016040523d82523d6000602084013e6142b5565b606091505b50805161432a5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610fbe565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506130e5565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106143a0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106143cc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106143ea57662386f26fc10000830492506010015b6305f5e1008310614402576305f5e100830492506008015b612710831061441657612710830492506004015b60648310614428576064830492506002015b600a8310610c0b5760010192915050565b60006001600160e01b031982167ff9f7ab41000000000000000000000000000000000000000000000000000000001480610c0b5750610c0b8261485b565b6001600160a01b0383811615908316158180156144915750805b156144af57604051635cbd944160e01b815260040160405180910390fd5b81156144bb575b6136cb565b80156144c6576144b6565b6136cb33868686346148dd565b6001600160a01b0383811615908316158180156144ed5750805b1561450b57604051635cbd944160e01b815260040160405180910390fd5b8115614516576144b6565b80156144b6576144b6565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008261456f82614962565b9050826001600160a01b0316856001600160a01b031614156146cf576040805160018082528183019092526000916020808301908036833701905050905083816000815181106145c1576145c161510c565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526000918160200160208202803683370190505090507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061464a9190615351565b8160008151811061465d5761465d61510c565b6020908102919091010152604051633713060f60e11b81526001600160a01b03841690636e260c1e9061469690859085906004016153b8565b600060405180830381600087803b1580156146b057600080fd5b505af11580156146c4573d6000803e3d6000fd5b5050505050506130e5565b60408051600280825260608201835260009260208301908036833701905050905085816000815181106147045761470461510c565b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106147385761473861510c565b6001600160a01b039290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106147a7576147a761510c565b60209081029190910101527f0000000000000000000000000000000000000000000000000000000000000000816001815181106147e6576147e661510c565b6020908102919091010152604051633713060f60e11b81526001600160a01b03841690636e260c1e9061481f90859085906004016153b8565b600060405180830381600087803b15801561483957600080fd5b505af115801561484d573d6000803e3d6000fd5b505050505050949350505050565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806148be57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610c0b57506301ffc9a760e01b6001600160e01b0319831614610c0b565b6011546001600160a01b0316156136cb5760115460405163050bf71960e31b81526001600160a01b038781166004830152868116602483015285811660448301529091169063285fb8c89060640160006040518083038186803b15801561494357600080fd5b505afa158015614957573d6000803e3d6000fd5b505050505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166149fe5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c6564000000000000000000006044820152606401610fbe565b919050565b5080546000825560070160089004906000526020600020908101906118c391905b80821115614a385760008155600101614a24565b5090565b6001600160e01b0319811681146118c357600080fd5b600060208284031215614a6457600080fd5b813561133081614a3c565b60005b83811015614a8a578181015183820152602001614a72565b838111156114e35750506000910152565b60008151808452614ab3816020860160208601614a6f565b601f01601f19169290920160200192915050565b6020815260006113306020830184614a9b565b6001600160a01b03811681146118c357600080fd5b600060208284031215614b0157600080fd5b813561133081614ada565b600060208284031215614b1e57600080fd5b5035919050565b60008060408385031215614b3857600080fd5b8235614b4381614ada565b946020939093013593505050565b60008060408385031215614b6457600080fd5b823591506020830135614b7681614ada565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b82811015614bed5781518051151585528681015163ffffffff908116888701528682015167ffffffffffffffff1687870152606091820151169085015260809093019290850190600101614b9e565b5091979650505050505050565b600080600060608486031215614c0f57600080fd5b833592506020840135614c2181614ada565b9150604084013563ffffffff81168114614c3a57600080fd5b809150509250925092565b60008060408385031215614c5857600080fd5b50508035926020909101359150565b600080600060608486031215614c7c57600080fd5b8335614c8781614ada565b92506020840135614c9781614ada565b91506040840135614c3a81614ada565b634e487b7160e01b600052602160045260246000fd5b60078110614cdb57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c0b8284614cbd565b600080600060608486031215614d0257600080fd5b8335614d0d81614ada565b92506020840135614d1d81614ada565b929592945050506040919091013590565b8035600281106149fe57600080fd5b600080600060608486031215614d5257600080fd5b833592506020840135614d6481614ada565b9150614d7260408501614d2e565b90509250925092565b60008060408385031215614d8e57600080fd5b82359150614d9e60208401614d2e565b90509250929050565b600081518084526020808501945080840160005b83811015614de05781516001600160a01b031687529582019590820190600101614dbb565b509495945050505050565b6020815260006113306020830184614da7565b600080600060608486031215614e1357600080fd5b833592506020840135614d1d81614ada565b600781106118c357600080fd5b6effffffffffffffffffffffffffffff811681146118c357600080fd5b600080600060608486031215614e6457600080fd5b8335614e6f81614e25565b92506020840135614e7f81614e32565b91506040840135614c3a81614e32565b60008060408385031215614ea257600080fd5b8235614ead81614ada565b91506020830135614b7681614ada565b80151581146118c357600080fd5b60008060408385031215614ede57600080fd5b8235614ee981614ada565b91506020830135614b7681614ebd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614f3857614f38614ef9565b604052919050565b60008060008060808587031215614f5657600080fd5b8435614f6181614ada565b9350602085810135614f7281614ada565b935060408601359250606086013567ffffffffffffffff80821115614f9657600080fd5b818801915088601f830112614faa57600080fd5b813581811115614fbc57614fbc614ef9565b614fce601f8201601f19168501614f0f565b91508082528984828501011115614fe457600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000606082019050615017828451614cbd565b60208301516effffffffffffffffffffffffffffff8082166020850152806040860151166040850152505092915050565b6000806000806080858703121561505e57600080fd5b843561506981614ada565b9350602085013561507981614e25565b9250604085013561508981614e32565b9150606085013561509981614e32565b939692955090935050565b600181811c908216806150b857607f821691505b602082108114156150d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015615107576151076150df565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141561514c5761514c6150df565b5060010190565b600081600019048311821515161561516d5761516d6150df565b500290565b60008261518f57634e487b7160e01b600052601260045260246000fd5b500490565b6000606082840312156151a657600080fd5b6040516060810181811067ffffffffffffffff821117156151c9576151c9614ef9565b60405282516151d781614e25565b815260208301516151e781614e32565b602082015260408301516151fa81614e32565b60408201529392505050565b60006020828403121561521857600080fd5b815161133081614ebd565b60006020828403121561523557600080fd5b5051919050565b6000602080838503121561524f57600080fd5b825167ffffffffffffffff8082111561526757600080fd5b818501915085601f83011261527b57600080fd5b81518181111561528d5761528d614ef9565b8060051b915061529e848301614f0f565b81815291830184019184810190888411156152b857600080fd5b938501935b838510156152e257845192506152d283614ada565b82825293850193908501906152bd565b98975050505050505050565b6001600160a01b0383168152604081016113306020830184614cbd565b6000835161531d818460208801614a6f565b835190830190615331818360208801614a6f565b01949350505050565b600081615349576153496150df565b506000190190565b60008219821115615364576153646150df565b500190565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261220f6080830184614a9b565b6000602082840312156153ad57600080fd5b815161133081614a3c565b6040815260006153cb6040830185614da7565b82810360208481019190915284518083528582019282019060005b81811015615402578451835293830193918301916001016153e6565b509097965050505050505056fea264697066735822122021b3bf446b9c22c746c78afebf6b52c6693166735278efb6d896eed2f8d5ff4164736f6c63430008090033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
